ПочатиПочніть безкоштовно

Емоційна інтрoспекція

У цій вправі ви підете далі за просте виділення позитивної та негативної лексики. Ви відфільтруєте текст за кожною з 8 емоцій із колеса емоцій Плучика, щоб побудувати візуалізацію. Такий підхід дає більше ясності у вживанні слів, адже ви прив'язуєте їх до конкретної емоції, а не лише до позитиву чи негативу.

Використовуючи лексикон суб'єктивності пакета tidytext — «nrc», ви виконаєте inner_join() зі своїм текстом. Лексикон «nrc» містить 8 емоцій, а також класи позитивних і негативних термінів. Тож після inner_join() вам потрібно буде відкинути позитивні й негативні слова. Один зі способів — використати заперечення ! і функцію grepl().

Функція «Global Regular Expression Print Logical» — grepl() — повертає True або False залежно від того, чи в кожному рядку знайдено відповідний шаблон. У цій вправі ви шукатимете positive АБО negative за допомогою оператора |, який означає «or», як показано нижче. Зазвичай ця вертикальна риска розташована над клавішею Enter на клавіатурі. Оскільки заперечення ! стоїть перед grepl(), значення T або F інвертується, тож "positive|negative" буде відкинуто, а не збережено.

Object <- tibble %>%
  filter(!grepl("positive|negative", column_name))

Далі застосуйте count() до знайдених слів і використайте pivot_wider(), щоб упорядкувати датафрейм.

comparison.cloud() потребує, щоб вхідні дані мали назви рядків, тому вам слід перетворити об'єкт на базовий data.frame, викликавши 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)
Редагувати та запускати код