R中具有多个单词和特殊字符的词云

时间:2018-11-19 14:08:30

标签: r word-cloud

我想用R创建一个词云。我想可视化变量名的出现,变量名可能包含多个单词以及特殊字符和数字,例如,一个变量名是“ S&P 500股息收益”。 “。

变量名在文本文件中,没有进一步分开。文本文件的每一行都包含一个新的变量名。

我尝试了以下代码,但是变量名称被拆分为不同的字符:

library(tm)
library(SnowballC)
library(wordcloud)
library(RColorBrewer)


# load the text:
text <- readLines("./Overview_used_series.txt")
docs <- Corpus(VectorSource(text))
inspect(docs)

# build a term-document matrix:
tdm <- TermDocumentMatrix(docs)
m <- as.matrix(tdm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
head(d, 10)


# generate the wordcloud:
pdf("Word cloud.pdf")
wordcloud(words = d$word, freq = d$freq, min.freq = 1,
      max.words=200, random.order=FALSE, rot.per=0.35, 
      colors=brewer.pal(8, "Dark2"))
dev.off()

我该如何对待变量名称,以便它们在单词云中以原始名称的形式显示在文本文件中?

1 个答案:

答案 0 :(得分:0)

如果您有一个指定的文件,且每行都有一个变量名,则无需使用tm。您可以轻松创建自己的词频表以用作输入。使用tm时,它将基于空格分割单词,并且不会尊重您的变量名。

从加载文本开始,只需创建一个频率设置为1的data.frame,然后就可以汇总所有内容。 wordcloud也接受像这样的data.frame,您可以由此创建一个wordcloud。请注意,我稍微调整了比例,因为当变量名较长时,它们可能不会被打印出来。发生这种情况时,您将收到一条警告消息。

我不会插入生成的图片。

#text <- readLines("./Overview_used_series.txt")
text <- c("S & P 500 dividend yield", "S & P 500 dividend yield", "S & P 500 dividend yield", 
          "visualize ", "occurence ", "variable names", "visualize ", "occurence ", 
          "variable names")

# freq = 1 adds a columns with just 1's for every value.
my_data <- data.frame(text = text, freq = 1, stringsAsFactors = FALSE)

# aggregate the data.    
my_agr <- aggregate(freq ~ ., data = my_data, sum)

wordcloud(words = my_agr$text, freq = my_agr$freq, min.freq = 1,
          max.words=200, random.order=FALSE, rot.per=0.35, 
          colors=brewer.pal(8, "Dark2"), scale = c(2, .5))