Настроения авиакомпаний США в Твиттере

Использование анализа тональности для понимания отзывов пользователей

Мотивация:

Цифровая связь дает покупателям огромную возможность озвучивать свои мысли, мнения и отзывы о бренде. Мнения клиентов, выраженные в Twitter, Facebook и других онлайн-форумах, формируют основу клиентской стратегии брендов по всему миру.

Авиакомпании могут использовать анализ настроений или интеллектуальный анализ мнений постов, размещенных на различных платформах социальных сетей, чтобы получить информацию о пользователях и разработать стратегию своих брендов.

Проблема :

В текущем наборе данных (который можно найти здесь на Kaggle) у нас есть твиты для 6 авиакомпаний США.

Нам необходимо проанализировать, как путешественники в феврале 2015 года выражали свои чувства в Твиттере, т. е. были ли твиты положительными, отрицательными или нейтральными.

Обработка данных:

Первоначальная очистка

После очистки неуникальных столбцов и столбцов с более чем 90% пропущенных значений у нас будут следующие столбцы:

tweet_id 
airline_sentiment
airline_sentiment_confidence
negativereason
negativereason_confidence
airline
name
retweet_count
text
tweet_created
tweet_location
user_timezone

Давайте посмотрим, как выглядит наш набор данных:

Исследовательский анализ данных

Давайте посмотрим на распределение положительных, нейтральных и отрицательных твитов в нашем наборе данных.

Обратите внимание, что более 60 % твитов являются негативными.

Ниже представлено распределение авиакомпаний по твитам:

Тенденция положительных, нейтральных и отрицательных твитов авиакомпаний:

Из графика выше мы видим, что

1. United, US Airways и American имеют существенно негативные твиты, они также превзошли все остальные твиты

2. Твиты компаний Virgin America, Delta и Southwest довольно сбалансированы

Теперь давайте посмотрим на тенденцию количества негативных твитов по сравнению с датами:

Следует отметить, что американцы начали получать твиты с 22 февраля 2015 года.

Давайте рассмотрим негативные причины, отмеченные клиентами в своих отзывах:

Как видно, в большинстве твитов указана причина

  1. Проблема со службой поддержки
  2. Опоздание на рейс

Давайте теперь проанализируем частоту появления слов в негативных твитах с помощью WordCloud:

Обратите внимание, что рейс, час, помощь, время, удержание, сумка, самолет чаще встречаются в отрицательных утверждениях.

Точно так же давайте проанализируем частоту слов, появляющихся в положительных твитах:

Обратите внимание, что спасибо, полет, здорово, воля, офигенно и любовь чаще присутствуют в положительных высказываниях.

Давайте теперь начнем анализировать твиты

Теперь мы очистим текстовые данные, для этого выполним следующие шаги:

  1. Удалить все специальные символы
  2. перевести все буквы в нижний регистр
  3. отфильтровать английские стоп-слова
  4. стеммер/лемметизация (по желанию)

Далее мы будем векторизовать текст твита, используя TF-IDF, который является мерой для оценки того, насколько важно слово для документа в корпусе.

Теперь мы применим следующие модели для прогнозирования настроений на основе текстовых данных твитов:

  1. Логистическая регрессия
  2. МногочленNB
  3. Дерево решенийКлассификатор
  4. Случайный ЛесКлассификатор
  5. KNeighboursClassifier

Оценка точности для каждой модели:

LogisticRegression  Accuracy Score : with accuar79.1%
              precision    recall  f1-score   support    negative       0.93      0.81      0.87      3232
     neutral       0.48      0.66      0.56       648
    positive       0.60      0.81      0.69       512    accuracy                           0.79      4392
   macro avg       0.67      0.76      0.71      4392
weighted avg       0.83      0.79      0.80      4392MultinomialNB  Accuracy Score : 69.69%
              precision    recall  f1-score   support    negative       0.99      0.69      0.81      4081
     neutral       0.15      0.78      0.26       174
    positive       0.18      0.93      0.31       137    accuracy                           0.70      4392
   macro avg       0.44      0.80      0.46      4392
weighted avg       0.94      0.70      0.77      4392DecisionTreeClassifier  Accuracy Score : 67.42%
              precision    recall  f1-score   support    negative       0.79      0.78      0.79      2841
     neutral       0.40      0.41      0.40       879
    positive       0.55      0.57      0.56       672    accuracy                           0.67      4392
   macro avg       0.58      0.58      0.58      4392
weighted avg       0.68      0.67      0.67      4392RandomForestClassifier  Accuracy Score : 76.78%
              precision    recall  f1-score   support    negative       0.94      0.79      0.86      3378
     neutral       0.38      0.63      0.48       535
    positive       0.54      0.79      0.64       479    accuracy                           0.77      4392
   macro avg       0.62      0.74      0.66      4392
weighted avg       0.83      0.77      0.79      4392KNeighborsClassifier  Accuracy Score : 69.83%
              precision    recall  f1-score   support    negative       0.82      0.80      0.81      2866
     neutral       0.46      0.42      0.44       960
    positive       0.53      0.65      0.58       566    accuracy                           0.70      4392
   macro avg       0.60      0.62      0.61      4392weighted avg       0.70      0.70      0.70      4392

График для каждой модели и оценки точности:

Вывод

Логистическая регрессия — лучшая модель для прогнозирования результатов с точностью 79,1%.

Нажмите здесь, чтобы просмотреть мою записную книжку по Python на Kaggle, и здесь, чтобы просмотреть статью в Linkedin.