Сравнение столбчатых диаграмм с накоплением
Ещё один способ проанализировать текст — понять, какую долю документа(ов) составляют положительные или отрицательные слова. Например, отзыв о ресторане может содержать позитивные моменты, такие как «еда была хорошей», но затем продолжиться словами «ресторан был грязным, персонал — грубым, а парковка — ужасной». В таком случае полезно понять, какая часть документа посвящена положительным, а какая — отрицательным высказываниям. В приведённом примере доля отрицательных оценок будет выше, чем положительных.
Один из способов это сделать — применить count() для подсчёта положительных и отрицательных слов, а затем разделить результат на общее количество выявленных субъективных слов. В примере с рестораном слово «хорошей» засчитывается как 1 положительное, а «грязным», «грубым» и «ужасной» — как 3 отрицательных. Простой подсчёт показывает, что отзыв на 25% положительный и на 75% отрицательный, поскольку всего найдено 4 субъективных слова.
Для начала выполните inner_join() на едином аккуратном фрейме данных, содержащем 4 книги: «Агамемнон», «Волшебник страны Оз», «Приключения Гекльберри Финна» и «Моби Дик». Как и в предыдущем упражнении, используйте filter() и grepl().
Чтобы применить count(), необходимо сгруппировать данные по книге и тональности. Например, все положительные слова для «Агамемнона» нужно сгруппировать и подсчитать отдельно, чтобы не смешивать их с положительными словами из других книг. К счастью, в count() можно передать несколько переменных напрямую.
Это упражнение является частью курса
Анализ тональности в R
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Review tail of all_books
tail(all_books)
# Count by book & sentiment
books_sent_count <- all_books %>%
# Inner join to nrc lexicon
___(___, by = c("term" = "word")) %>%
# Keep only positive or negative
___(__("___", sentiment)) %>%
# Count by book and by sentiment
___(___, ___)
# Review entire object
books_sent_count