更改 bing 词典中单词的值

Change value of words in bing lexicon

我正在使用 R Studio 分析一项调查。我正在使用 tidytext 包中的 Bing 情感词典来做到这一点。

有些词在我的调查中没有正确的含义,特别是 'tender' 被编码为积极的,但我的受访者的意思是 'tender' 是消极的(痛苦)。我知道如何从 bing tibble 中删除一个词并添加一个新词,但我怎样才能简单地改变该词的含义?

例如:

structure(list(word = c("pain", "tender", "sensitive", "headaches", 
"like", "anxiety"), sentiment = c("negative", "positive", "positive", 
"negative", "positive", "negative"), n = c(351L, 305L, 279L, 
220L, 200L, 196L)), row.names = c(NA, 6L), class = "data.frame")

我希望它看起来像:

structure(list(word = c("pain", "tender", "sensitive", "headaches", 
"like", "anxiety"), sentiment = c("negative", "negative", "positive", 
"negative", "positive", "negative"), n = c(351L, 305L, 279L, 
220L, 200L, 196L)), row.names = c(NA, 6L), class = "data.frame")

谢谢!

运行 行

df$sentiment <- ifelse(df$word == "tender", "positive", df$sentiment)

将有效地改变 sentiment 向量的任何实例,其中 word 向量是“温柔的”,因此它显示为“积极的”。任何其他实例将保持原样。

请注意,如果您还想将其他词的情绪更改为正面,您可以这样做:

df$sentiment <- ifelse(df$word %in% c("tender", "anotherword", "etc"), "positive", df$sentiment)

tidyversetidytext 构建)中进行这种重新编码的方法通常是:

library(tidyverse)
  
df %>% 
  mutate(sentiment = case_when(
    word == "tender" ~ "negative",
    TRUE ~ sentiment # means leave if none of the conditions are met
  ))
#>        word sentiment   n
#> 1      pain  negative 351
#> 2    tender  negative 305
#> 3 sensitive  positive 279
#> 4 headaches  negative 220
#> 5      like  positive 200
#> 6   anxiety  negative 196

case_when 遵循与 ifelse 相同的逻辑,但您可以根据需要评估任意多个条件,因此非常适合重新编码多个值。 ~ 的左侧评估条件,右侧表示满足此条件时的值。您可以设置默认值,如 case_when.

中最后一行所示