在此先感谢您的帮助。 我有一个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。 这是比较列中文本变量的最佳方法,还是我应该生成两个不同的语料库(一个代表好,另一个代表不好),然后以这种方式进行比较?
谢谢
答案 0 :(得分:0)
如果您希望在 quanteda 中执行此操作,则可以:
corpus()
创建语料库。docvar <-
),以将每个文档与情感类别(好坏)相关联。 (现阶段无需合并它们。)groups =
参数将输出分组,并将其值命名为分组docvar。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"))
在此示例中,语料库在其文档变量President
上被子集化,仅选择奥巴马和特朗普;然后创建dfm,删除停用词和标点符号,并根据总裁分组。然后删除频率小于3的单词。然后将dfm发送到textplot_wordcloud()
,并将比较标志设置为TRUE,并绘制最多100个单词。颜色也已设置。