使用 R 的 quanteda 的情绪词云?

Sentiment wordcloud using R's quanteda?

我有一组评论(文字评论+评分从0-10),我想在R中创建一个情感词云,其中:

我使用 quanteda 创建了 dfm 个评论。现在我想我想使用 textplot_wordcloud 函数,我想我需要执行以下操作:

  1. 对于每个单词,获取它出现在
  2. 中的所有评论
  3. 计算这部分评论的平均评分
  4. 除以 10 缩放到 0-1 并将这个值赋给这个词
  5. 按平均评分对单词进行排序(以便正确分配颜色?)
  6. 使用color=RColorBrewer::brewer.pal(11, "RdYlGn")根据平均评分计算颜色

我在执行第 1 步和第 4 步时遇到了问题。其余的应该是可行的。有人可以解释如何轻松读取 dfm 吗?

我找到了一种使用矩阵乘法来执行此操作的有效方法:基本上功能是 sw = sd * C / Nw,其中:

  • sw = 每个词的情绪
  • sd = 每个文档的评分
  • C = 每个文档的词频矩阵
  • Nw = 每个单词出现的次数

在代码中:

# create the necessary variables
sd <- as.integer(df$rating)
C <- as.matrix(my_dfm)
Nw <- as.integer(colSums(C))

# calculate the word sentiment
sw <- as.integer(s_d %*% C) / n_w

# normalize the word sentiment to values between 0 and 1
sw <- (sw - min(sw)) / (max(sw) - min(sw)

# make a function that converts a sentiment value to a color
num_to_color <- seq_gradient_pal(low="#FF0000", high="#00FF00")

# apply the function to the sentiment values
word_colors <- num_to_color(sw)

# create a new window; 
# before executing the next command, manually maximize in order to get a better readable wordcloud
dev.new()

# create the wordcloud with the calculated color values
textplot_wordcloud(my_dfm, color=word_colors)