2017-04-24 31 views
0

我試圖創建一個雙向克(大的n克)詞雲使用下面的代碼 -無法得到n個克詞雲中的R

text_input <- scan("Path/Wordcloud.txt") 
corpus <- Corpus(VectorSource(text_input)) 
corpus.ng = tm_map(corpus,removeWords,c(stopwords(),"s","ve")) 
corpus.ng = tm_map(corpus.ng,removePunctuation) 
corpus.ng = tm_map(corpus.ng,removeNumbers) 
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2)) 
tdm.bigram = TermDocumentMatrix(corpus.ng,control = list(tokenize = BigramTokenizer)) 
tdm.bigram 
freq = sort(rowSums(as.matrix(tdm.bigram)),decreasing = TRUE) 
freq.df = data.frame(word=names(freq), freq=freq) 
head(freq.df, 20) 
pal=brewer.pal(8,"Blues") 
pal=pal[-(1:3)] 
wordcloud(freq.df$word,freq.df$freq,max.words=100,random.order = F, colors=pal) 

我看到的幾個網站類似的代碼被用於生成n克,但我在我的輸出中只有單個字組合。

Plot

的代碼不響應在最小和最大的改變被設置爲不同的值(2,3,4等)先後在NGramTokenizer功能。 我在代碼中丟失了什麼,或者有可能我在代碼中調用的庫(tm,ggplot2,wordcloud,RWeka)或它們的依賴項(如rJava)沒有響應?如果有人能夠就這個問題提出一些建議,或者建議修改上述代碼,我將非常感激。

感謝, Saibal

+0

其他有問題。最近在R-Bloggers上的一些項目分析了美國總統的就職演說,並最終使用了用於bigrams的quanteda軟件包。 – lawyeR

回答

0

您在mentioning the token delimiter錯過了。

token_delim <- " \\t\\r\\n.!?,;\"()" 
BigramTokenizer <- NGramTokenizer(mycorpus, Weka_control(min=2,max=2, delimiters = token_delim)) 

這應該有效。

如果你需要工作的例子,你可以檢查這5分鐘的視頻: https://youtu.be/HellsQ2JF2k

希望這有助於。

0

另外,其他一些人在使用語料庫功能時遇到了問題。 嘗試使用揮發性語料庫 語料庫< - VCorpus(VectorSource(TEXT_INPUT))

相關問題