Twitterパッケージを使用してTwitterからツイートを抽出し、テキストファイルに保存しました。
コーパスに対して以下を実行しました
xx<-tm_map(xx,removeNumbers, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,stripWhitespace, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,removePunctuation, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,strip_retweets, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,removeWords,stopwords(english), lazy=TRUE, 'mc.cores=1')
(mc.cores = 1とlazy = Trueを使用します。そうしないと、MacのRでエラーが発生します)
tdm<-TermDocumentMatrix(xx)
しかし、この用語のドキュメントマトリックスには、多くの奇妙な記号、無意味な単語などが含まれています。ツイートが
RT @Foxtel: One man stands between us and annihilation: @IanZiering.
Sharknado‚Äã 3: OH HELL NO! - July 23 on Foxtel @SyfyAU
ツイートを削除した後、適切な完全な英語の単語だけを残します。つまり、他のすべて(ユーザー名、短縮された単語、URL)を含まない文章/フレーズです。
例:
One man stands between us and annihilation oh hell no on
(注:tmパッケージの変換コマンドは、ストップワード、句読点の空白、および小文字への変換のみを削除できます)
Gsubと
ストリンガーパッケージ
リツイート、スクリーン名への参照、ハッシュタグ、スペース、数字、句読点、URLを削除するためのソリューションの一部を理解しました。
_ clean_Tweet = gsub("&", "", unclean_Tweet)
clean_Tweet = gsub("(RT|via)((?:\\b\\W*@\\w+)+)", "", clean_Tweet)
clean_Tweet = gsub("@\\w+", "", clean_Tweet)
clean_Tweet = gsub("[[:punct:]]", "", clean_Tweet)
clean_Tweet = gsub("[[:digit:]]", "", clean_Tweet)
clean_Tweet = gsub("http\\w+", "", clean_Tweet)
clean_Tweet = gsub("[ \t]{2,}", "", clean_Tweet)
clean_Tweet = gsub("^\\s+|\\s+$", "", clean_Tweet)
_
ref:(Hicks、2014)上記の後、私は以下を行いました。
_ #get rid of unnecessary spaces
clean_Tweet <- str_replace_all(clean_Tweet," "," ")
# Get rid of URLs
clean_Tweet <- str_replace_all(clean_Tweet, "http://t.co/[a-z,A-Z,0-9]*{8}","")
# Take out retweet header, there is only one
clean_Tweet <- str_replace(clean_Tweet,"RT @[a-z,A-Z]*: ","")
# Get rid of hashtags
clean_Tweet <- str_replace_all(clean_Tweet,"#[a-z,A-Z]*","")
# Get rid of references to other screennames
clean_Tweet <- str_replace_all(clean_Tweet,"@[a-z,A-Z]*","")
_
参照:(スタントン2013)
上記のいずれかを行う前に、以下を使用して文字列全体を単一の長い文字に折りたたみました。
paste(mytweets, collapse=" ")
このクリーニングプロセスは、tm_map変換とは対照的に、私にとって非常にうまく機能しています。
私が今残されているのは、適切な単語のセットとごく少数の不適切な単語だけです。今、私は不適切な英語の単語を削除する方法を理解する必要があります。おそらく、単語の辞書から単語のセットを差し引く必要があります。
URLを削除するには、次の方法を試してください。
removeURL <- function(x) gsub("http[[:alnum:]]*", "", x)
xx <- tm_map(xx, removeURL)
おそらく、同様の関数を定義して、テキストをさらに変換できます。
私にとって、このコードは何らかの理由で機能しませんでした-
# Get rid of URLs
clean_Tweet <- str_replace_all(clean_Tweet, "http://t.co/[a-z,A-Z,0-9]*{8}","")
エラーは-
Error in stri_replace_all_regex(string, pattern, fix_replacement(replacement), :
Syntax error in regexp pattern. (U_REGEX_RULE_SYNTAX)
代わりに、私は代わりに
clean_Tweet4 <- str_replace_all(clean_Tweet3, "https://t.co/[a-z,A-Z,0-9]*","")
clean_Tweet5 <- str_replace_all(clean_Tweet4, "http://t.co/[a-z,A-Z,0-9]*","")
uRLを取り除く
library(tidyverse)
clean_tweets <- function(x) {
x %>%
str_remove_all(" ?(f|ht)(tp)(s?)(://)(.*)[.|/](.*)") %>%
str_replace_all("&", "and") %>%
str_remove_all("[[:punct:]]") %>%
str_remove_all("^RT:? ") %>%
str_remove_all("@[[:alnum:]]+") %>%
str_remove_all("#[[:alnum:]]+") %>%
str_replace_all("\\\n", " ") %>%
str_to_lower() %>%
str_trim("both")
}
tweets %>% clean_tweets
コードはいくつかの基本的なクリーニングを行います
df <- tm_map(df, tolower)
df <- tm_map(df, removePunctuation)
df <- tm_map(df, removeNumbers)
df <- tm_map(df, removeWords, stopwords('english'))
removeURL <- function(x) gsub('http[[:alnum;]]*', '', x)