Эмоциональная интроспекция
В этом упражнении вы выйдете за рамки разделения текста на положительный и отрицательный. Вместо этого вы будете разбивать текст по каждой из 8 эмоций колеса эмоций Плутчика, чтобы построить визуализацию. Такой подход даёт более чёткое представление об использовании слов, поскольку каждое слово привязывается к конкретной эмоции, а не просто к позитивной или негативной окраске.
Используя субъективный лексикон tidytext — "nrc", — вы выполняете inner_join() с вашим текстом. Лексикон "nrc" содержит 8 эмоций, а также классы слов «positive» и «negative». Поэтому после выполнения inner_join() необходимо удалить слова с этими метками. Один из способов — использовать отрицание ! вместе с grepl().
Функция grepl() ("Global Regular Expression Print Logical") возвращает TRUE или FALSE в зависимости от того, найден ли шаблон строки в каждой строке. В этом упражнении вы будете искать positive ИЛИ negative с помощью оператора |, обозначающего «или», как показано ниже. Обычно эта вертикальная черта находится над клавишей Enter на клавиатуре. Поскольку перед grepl() стоит отрицание !, значения TRUE и FALSE меняются местами — в результате строки с "positive|negative" исключаются, а не сохраняются.
Object <- tibble %>%
filter(!grepl("positive|negative", column_name))
Далее вы применяете count() к найденным словам, а затем pivot_wider() для организации датафрейма.
comparison.cloud() требует, чтобы входные данные имели имена строк, поэтому вам нужно преобразовать результат в базовый data.frame из R, вызвав 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)