Под давлением!
В этом упражнении вы скорректируете список отрицательных слов с учётом специфики текста и сравните базовые и пользовательские оценки 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 = ___)