使用词云比较R比较两组

时间:2018-10-14 15:53:17

标签: r corpus word-cloud quanteda

在此先感谢您的帮助。 我有一个CSV文件,其中每一行都是一个响应者(n = 612),我想比较由两列之间的句子响应组成的文本,其中一个使用比较词云描述了良好的体验与不良的体验。

 ##First I merged my response columns
 mydata2= mydata%>% 
 gather(response, text, Good, Bad)

mydata2$text <- sapply(mydata2$text,function(row) iconv(row, "latin1","ASCII", sub=""))

mydata2<-data.frame(mydata2)

## Calculate Corpus
docs<-Corpus(VectorSource(mydata2$text)) %>%
tm_map(removePunctuation) %>%
tm_map(removeNumbers) %>%
tm_map(tolower)  %>%
tm_map(removeWords, stopwords("english")) %>%
tm_map(stripWhitespace) %>%
tm_map(PlainTextDocument)

inspect(docs)

tdm <- TermDocumentMatrix(docs)  

但是,这不会让我生成tdm。 这是比较列中文本变量的最佳方法,还是我应该生成两个不同的语料库(一个代表好,另一个代表不好),然后以这种方式进行比较?

谢谢

1 个答案:

答案 0 :(得分:0)

如果您希望在 quanteda 中执行此操作,则可以:

  1. 使用corpus()创建语料库。
  2. 确保它包含一个文档变量(使用docvar <-),以将每个文档与情感类别(好坏)相关联。 (现阶段无需合并它们。)
  3. 创建dfm,然后使用groups =参数将输出分组,并将其值命名为分组docvar。
  4. 在上一步中创建的dfm上调用textplot_wordcloud(yourdfm, comparison = TRUE)

使用内置的data_corpus_inaugural语料库对象在可重现的示例中对此进行演示:

library("quanteda")
obama_trump_dfm <- data_corpus_inaugural %>%
    corpus_subset(President %in% c("Obama", "Trump")) %>%
    dfm(remove = stopwords("english"), remove_punct = TRUE, groups = "President") %>%
    dfm_trim(min_termfreq = 3)

textplot_wordcloud(obama_trump_dfm, comparison = TRUE, 
                   max_words = 100, color = c("blue", "red"))

enter image description here

在此示例中,语料库在其文档变量President上被子集化,仅选择奥巴马和特朗普;然后创建dfm,删除停用词和标点符号,并根据总裁分组。然后删除频率小于3的单词。然后将dfm发送到textplot_wordcloud(),并将比较标志设置为TRUE,并绘制最多100个单词。颜色也已设置。