如何从wordcloud R包中删除单词,以便它们可以包含在输出中?

时间:2016-10-07 16:07:43

标签: r word-cloud r-package

我使用的是" wordcloud"描述"词云"来自R Packages存储库。当我从一些随机文本创建wordcloud时,会自动省略一些单词,因为它们不应该是wordcloud的一部分。

代码:

library(RColorBrewer)
library(NLP)
library(wordcloud)
library(tm)


wordcloud("foo bar oh oh by by bye bingo hell no", scale=c(3,1), colors=brewer.pal(6,"Dark2"),random.order=FALSE)

输出:

Output of the above mentioned code

我想保留像"哦" " by"在wordcloud。怎么样?

编辑:我更喜欢这样做,方法是从wordcloud包中删除一组停用词,而不是使用频率。

2 个答案:

答案 0 :(得分:2)

以这种方式:

library(wordcloud)
library(tm)
txt <- "foo bar oh oh by by bye bingo hell no"
corp <- Corpus(VectorSource(txt))
tdm <- TermDocumentMatrix(corp, control = list(wordLengths = c(-Inf, Inf)))
m <- as.matrix(tdm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
wordcloud(d$word,d$freq,min.freq=1)

答案 1 :(得分:2)

有两种方法可以使用wordcloud():

  • 一个字符串,其中所有单词都是主要参数:你现在做什么
  • 一个带有向量的单词和相应的频率向量

第一个输入强制wordcloud()调用tm,构成语料库,删除停用词,这是你丢失两个字母单词的步骤。

一种简单的方法是恢复使用不需要tm包的wordcloud,在将其提供给wordcloud()之前处理你的字符串:

library(stringr)
library(wordcloud)
library(RColorBrewer)

## The initial string
mystring <- "foo bar oh oh by by bye bingo hell no"
## Split it and count frequencies
tabl <- table(str_split(mystring,pattern=" "))
## Make the wordcloud: all words are there!
wordcloud(names(tabl),tabl,scale=c(3,1), colors=brewer.pal(6,"Dark2"),random.order=FALSE)