Я просмотрел пару ответов, но они всегда отвечают только на часть моей проблемы. У меня есть вектор отрицательных слов и столбец фрейма данных с отзывами клиентов. Конечная цель - определить тональность каждого обзора, назначив тональность составляющим его словам. Как и в примере, обзор "I was happy with the product" будет иметь нейтральное отношение ко всем словам, кроме "happy", которое в данном случае имеет положительную коннотацию. Теперь мне нужно справиться с отрицаниями, поскольку они почти всегда меняют настроение, поэтому предыдущий отзыв, но с отрицательным настроением, будет "I was not happy with the product". Очевидно, что это может быть более сложным, чем это.

Предполагая, что у меня есть вектор отрицательных слов negations и вектор (столбец фрейма данных) reviews, как я могу просмотреть отзывы и заменить все отрицательные слова их отрицанием, подчеркиванием и следующим словом , поэтому приведенный выше пример будет "I was not_happy with the product". Это позволило бы мне рассматривать отрицаемое слово как единое целое (конечно, мне нужно соответствующим образом скорректировать корпус моих эмоциональных слов. Обратите внимание, что фактический язык не английский. Я предполагаю, что мне нужно какое-то сложное регулярное выражение, которое может ссылаться на совпадающее отрицание, но я '' м не профессионал регулярных выражений.

пример

negations <- c("not", "without", "never")
reviews <- c("I was happy", "I never asked", "I came without hope", "He did not help")

Результат должен быть

c("I was happy", "I never_asked", "I came without_hope", "He did not_help")
0
Triamus 12 Дек 2017 в 11:54

1 ответ

Лучший ответ

Вы можете попробовать это из пакета stringi:

stringi::stri_replace_all_fixed(reviews,
  paste0(negations, " "),
  paste0(negations, "_"), vectorize_all = F)
2
minem 12 Дек 2017 в 09:03