如何修改tidytext get_sentiments()中特定词汇的情感倾向?
问题需求
需修正数据框sentiment_words中特定词汇的情感标签:"talent"和"prefer"在当前语境下属于负面,但被bing情感词典标记为正面,需手动调整以贴合实际语境。
解决方案
提供两种可行的实现方式,可根据实际流程选择:
方法一:自定义情感词典(推荐)
在匹配情感标签前,先复制并修改bing词典的指定词汇标签,再用自定义词典完成分析,避免后续重复修正:
# 加载所需包 library(dplyr) library(tidytext) # 复制bing词典,修改目标词汇的情感标签 custom_bing <- tidytext::get_sentiments("bing") %>% mutate(sentiment = case_when( word == "talent" ~ "negative", word == "prefer" ~ "negative", TRUE ~ sentiment # 其他词汇保持原标签 )) # 使用自定义词典重新生成情感分析结果 sentiment_words <- df |> tidytext::unnest_tokens(output = "word", input = "post") |> dplyr::anti_join(tidytext::stop_words) |> dplyr::inner_join(custom_bing) # 查看词频与情感标签统计 sentiment_words %>% count(word, sentiment, sort = TRUE)
方法二:直接修改现有数据框
若已生成sentiment_words数据框,可直接修改其中的情感列:
# 修正指定词汇的情感标签 sentiment_words <- sentiment_words %>% mutate(sentiment = case_when( word == "talent" ~ "negative", word == "prefer" ~ "negative", TRUE ~ sentiment )) # 重新生成词频统计(可选) bing_word_counts <- sentiment_words %>% count(word, sentiment, sort = TRUE)
验证修正结果
执行以下代码确认目标词汇的情感标签已更新:
sentiment_words %>% filter(word %in% c("talent", "prefer")) %>% select(word, sentiment, count) %>% distinct()
内容的提问来源于stack exchange,提问作者nesta1990
相关产品推荐
相关产品推荐

