Изменить значение слов в лексиконе Bing - PullRequest
0 голосов
/ 05 августа 2020

Я анализирую опрос с помощью R Studio. Для этого я использую лексику Bing Sentiment из пакета tidytext.

Некоторые слова не имеют правильного значения для моего опроса, в частности «нежный» кодируется как положительный, но мои респонденты имеют в виду «нежный» как отрицательный (боль). Я знаю, как удалить слово из таблицы bing и добавить новое, но как я могу просто изменить значение слова?

Например:

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")

Спасибо!

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

Способ выполнения такого перекодирования в tidyverse (на котором строится tidytext) обычно:

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 следует тем же logi c, что и ifelse но вы можете оценить столько условий, сколько захотите, что делает его идеальным для перекодирования ряда значений. В левой части ~ оценивается условие, а в правой части указывается значение, если это условие выполняется. Вы можете установить значение по умолчанию, как показано в последней строке внутри case_when.

2 голосов
/ 05 августа 2020

Запуск строки

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

эффективно изменит вектор sentiment для любого экземпляра, в котором вектор word является «нежным», так что он будет отображаться как «положительный». Любой другой экземпляр останется как есть.

Обратите внимание, что если есть другие слова, которые вы также хотели бы изменить их настроение на положительное, вы можете сделать:

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