【问题标题】:Comparison of two groups using word cloud comparison R使用词云比较R比较两组
【发布时间】:2018-10-14 15:53:17
【问题描述】:

提前感谢您的帮助。 我有一个 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。 这是比较列中文本变量的最佳方法,还是我应该生成两个不同的语料库(一个好一个坏)并以这种方式比较它们?

谢谢

【问题讨论】:

    标签: r corpus word-cloud quanteda


    【解决方案1】:

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

    1. 创建语料库,使用corpus()
    2. 确保它包含一个文档变量(使用docvar &lt;-)将每个文档与情绪类别(好或坏)相关联。 (现阶段无需合并它们。)
    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"))
    

    在此示例中,语料库在其 docvar President 上进行子集化,以仅选择 Obama 和 Trump;然后创建 dfm,删除停用词和标点符号,并根据总统分组;然后删除频率小于 3 的单词。然后将该 dfm 发送到textplot_wordcloud(),并将比较标志设置为 TRUE,并且最多绘制 100 个单词。颜色也设置好了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多