情绪自省
在本练习中,您将不再只根据正面或负面用语来筛选文本,而是根据 Plutchik 情绪之轮中的 8 种情绪分别筛选文本并构建可视化。通过这种方式,您可以将词语映射到具体情绪,而不仅仅是正负极性,从而更清晰地理解用词。
使用 tidytext 的主观性词典 "nrc",对您的文本执行一次 inner_join()。"nrc" 词典包含 8 种情绪以及正面与负面两类词。因此在完成 inner_join() 后,您需要去掉正面和负面词。一种做法是结合取反符号 ! 与 grepl()。
全局正则表达式匹配逻辑函数 grepl() 会在每一行中检测是否匹配到给定的字符串模式,返回 True 或 False。在本练习中,您将使用 | 运算符搜索 positive 或 negative(表示"或"),如下所示。这个竖线通常位于键盘回车键上方。由于在 grepl() 前加了取反 !,返回的 T 或 F 被反转,从而会丢弃匹配 "positive|negative" 的项,而不是保留它们。
Object <- tibble %>%
filter(!grepl("positive|negative", column_name))
接着,您对识别到的词使用 count() 计数,并结合 pivot_wider() 整理数据框的结构。
comparison.cloud() 要求输入含有行名,因此您需要将对象转换为基础 R 的 data.frame,调用 data.frame() 并设置 row.names 参数。
本练习是课程的一部分
R 中的情感分析
交互式实操练习
通过完成这段示例代码来试试这个练习。
moby_tidy <- moby %>%
# Inner join to nrc lexicon
___(___, by = c("term" = "word")) %>%
# Drop positive or negative
___(!___("___", sentiment)) %>%
# Count by sentiment and term
___(___, ___) %>%
# Pivot sentiment, using n for values
___(names_from = ___, values_from = ___, values_fill = ___) %>%
# Convert to data.frame, making term the row names
data.frame(row.names = "___")
# Examine
head(moby_tidy)