使用 R 的 quanteda 的情绪词云?
Sentiment wordcloud using R's quanteda?
我有一组评论(文字评论+评分从0-10),我想在R中创建一个情感词云,其中:
- 单词的大小代表它的出现频率
- 一个词的颜色代表出现它的所有评论的平均评分(最好是颜色渐变绿-黄-红)
我使用 quanteda 创建了 dfm
个评论。现在我想我想使用 textplot_wordcloud
函数,我想我需要执行以下操作:
- 对于每个单词,获取它出现在
中的所有评论
- 计算这部分评论的平均评分
- 除以 10 缩放到 0-1 并将这个值赋给这个词
- 按平均评分对单词进行排序(以便正确分配颜色?)
- 使用
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)
我有一组评论(文字评论+评分从0-10),我想在R中创建一个情感词云,其中:
- 单词的大小代表它的出现频率
- 一个词的颜色代表出现它的所有评论的平均评分(最好是颜色渐变绿-黄-红)
我使用 quanteda 创建了 dfm
个评论。现在我想我想使用 textplot_wordcloud
函数,我想我需要执行以下操作:
- 对于每个单词,获取它出现在 中的所有评论
- 计算这部分评论的平均评分
- 除以 10 缩放到 0-1 并将这个值赋给这个词
- 按平均评分对单词进行排序(以便正确分配颜色?)
- 使用
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)