Разработка приложения анализа настроений для отзывов TripAdvisor на языке Python

Анализ настроения позволяет количественно оценить субъективность и полярность текста – отзыва, комментария и т. п.

Субъективность оценивает фразу между фактом и мнением, а полярность – от негативного до позитивного контекста.

В этой статье я покажу вам, как использовать этот метод для оценки отзывов TripAdvisor, подчеркивая реальную пользу для бизнеса, которую он может принести.

Для проведения такого анализа английского (и французского, немецкого с помощью плагинов) текста мы можем использовать пакет textblob. Это очень просто:

from textblob import TextBlob

TextBlob("This is very good!").sentiment
TextBlob("This is very bad!").sentiment
TextBlob("This isn't that bad!").sentiment
Войти в полноэкранный режим Выйти из полноэкранного режима

Свойство TextBlob “sentiment” возвращает кортеж, содержащий полярность и субъективность. Полярность – это число из диапазона [-1.0, 1.0], где 1 – положительная оценка, -1 – отрицательная. Субъективность – это число из диапазона [0.0, 1.0], где 0 – факт, 1 – мнение.

>>> TextBlob("This is very good!").sentiment
Sentiment(polarity=1.0, subjectivity=0.7800000000000001)

Полярность 1, поэтому оценка была очень положительной, а при высокой субъективности она рассматривалась скорее как мнение, чем как факт.

>>> TextBlob("This is very bad!").sentiment
Sentiment(polarity=-1.0, subjectivity=0.8666666666666667)

В данном случае мы получили -1, что очень плохо.

>>> TextBlob("This isn't that bad!").sentiment
Sentiment(polarity=-0.8749999999999998, subjectivity=0.6666666666666666)

Без контекста TextBlob все равно оценил его отрицательно. Что на самом деле означает “не так уж плохо”? Лучше, чем ожидалось? Хуже, чем ожидалось? Трудно сказать, и чтобы получить более полезную количественную оценку, нам нужны предложения с достаточным контекстом.

Отзывы на Tripadvisor

Отзыв – это хороший кусок текста для опробования TextBlob. Предварительно я собрал набор отзывов о нескольких заведениях на TripAdvisor с помощью сторонних скрапперов. Это дало мне список текстов отзывов, которые я мог бы ввести в библиотеку и посмотреть, какие результаты я получу. Для визуализации полярности я назначил красный/зеленый цвета для -1/1 и интенсивность для промежуточных значений:

Первый отмеченный отзыв отрицательный, и пользователь оставил отзыв с 1 звездой. Последний отзыв также 1-звездочный, но его полярность намного выше. Несмотря на то, что клиент был недоволен, он использовал меньше негативных выражений в своем отзыве. Что интересно, так это отзыв о среднем рынке. Это 5-звездочный отзыв, но он имеет низкую полярность – клиент был доволен, но нашел вещи, о которых он не был доволен – такие вещи могут быть ценным отзывом для заведения, в то время как они могут затеряться среди положительных отзывов (при средней оценке 4,5 вы внимательно смотрите на отрицательные отзывы, в то время как положительный отзыв может затеряться среди других положительных отзывов).

Код находится на Github:

https://github.com/riklaunim/sentiment-analysis-example

Полная статья с комментариями к коду:

https://rk.edu.pl/en/designing-sentiment-analysis-application-tripadvisor-reviews-python/

Оцените статью
Procodings.ru
Добавить комментарий