НачатьНачать бесплатно

Под давлением!

В этом упражнении вы скорректируете список отрицательных слов с учётом специфики текста и сравните базовые и пользовательские оценки polarity().

Популярная песня группы Twenty One Pilots называется "Stressed Out". Если вы просмотрите текст песни, то заметите, что она посвящена юношеской ностальгии. В целом большинство людей сочтёт тональность песни негативной: в тексте постоянно упоминаются стресс, страхи и притворство.

Давайте сравним текст песни, используя стандартный субъективный лексикон и пользовательский.

Для начала нужно убедиться, что термин, который вы хотите добавить, ещё не присутствует в субъективном лексиконе key.pol. Один из способов проверки — функция grep(). Она возвращает строки, содержащие символы, соответствующие шаблону поиска. Пример использования при индексации:

data_frame[grep("search_pattern", data_frame$column), ]

Убедившись, что сленговое или новое слово отсутствует в лексиконе key.pol, его нужно добавить. В приведённом ниже коде функция sentiment_frame() создаёт новый лексикон. Она принимает исходный вектор положительных слов positive.words, а исходные negative.words объединяются с «smh» и «kappa» — словами, считающимися негативным сленгом. Хотя положительные и отрицательные веса можно задавать явно, по умолчанию они равны 1 и -1, поэтому в примере не указываются.

custom_pol <- sentiment_frame(positive.words, c(negative.words, "hate", "pain"))

Теперь можно применить функцию polarity — она будет использовать пользовательский субъективный лексикон!

Это упражнение является частью курса

Анализ тональности в R

Посмотреть курс

Инструкции к упражнению

Переменная stressed_out уже создана и содержит текст песни "Stressed Out" группы Twenty One Pilots.

  • Примените polarity() к stressed_out, чтобы получить оценку по умолчанию.
  • Проверьте key.pol на наличие слов, содержащих «stress». Используйте grep() для индексации фрейма данных по столбцу x.
  • Создайте custom_pol — новый фрейм данных тональности.
    • Вызовите sentiment_frame() и передайте positive.words первым аргументом без добавления новых слов.
    • Затем с помощью c() объедините negative.words с новыми словами "stressed" и "turn back".
  • Повторно примените polarity() к stressed_out, добавив параметр polarity.frame = custom_pol, чтобы сравнить, как новые слова изменят оценку и сделают её более точным отражением тональности песни.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# stressed_out has been pre-defined
head(stressed_out)

# Basic lexicon score
___(___)

# Check the subjectivity lexicon
___[___("stress", x)]

# New lexicon
custom_pol <- ___(___, c(negative.words, "___", "___"))

# Compare new score
___(___, polarity.frame = ___)
Редактировать и запускать код