Анализ тональности - это вычислительный процесс оценки отношения к тексту в зависимости от того, насколько он положительный, нейтральный или отрицательный. Этот процесс стал очень актуальной темой в электронной коммерции и в приложениях машинного обучения, потому что компании могут понять чувства своих клиентов по заголовку или тексту.

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

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

В этом сообщении в блоге я хочу сосредоточиться на быстрой настройке приложения для анализа настроений. Это не будет исчерпывающий обзор анализа настроений или использования Twitter API. Просто краткое практическое руководство.

Сбор данных Twitter (о чемпионате мира!)

Первым шагом процесса является сбор твитов из Twitter с помощью Search API. Обратите внимание, что с бесплатной учетной записью Standard API вы ограничены 480 запросами за 15 минут для приложений, и вы можете выполнять поиск только за последнюю неделю. Платные версии помогают ослабить некоторые из этих ограничений для корпоративных решений.

Для начала мы должны настроить учетные данные для аутентификации на странице приложений Twitter (https://apps.twitter.com/) для доступа к API. Следуй этим шагам:

  1. Войдите, используя свои учетные данные Twitter
  2. Создайте новое приложение и заполните данные вашего приложения
  3. Перейдите на вкладку «Ключи и токены доступа» и создайте свой токен доступа.
  4. Держите под рукой свой потребительский ключ и секрет, а также токен доступа и секрет.

Теперь давайте запустим Python для сбора наших данных. Чтобы упростить себе жизнь, мы используем библиотеку Tweepy, которая позволяет очень просто делать вызовы API Twitter. Большим преимуществом здесь является вызов Tweepy Cursor, который заботится о разбиении на страницы, что может раздражать, поскольку каждый запрос API поиска возвращает максимум 100 твитов.

Взгляните на приведенный ниже код, в котором мы ищем твиты со словом «World Cup». Обязательно замените ранее полученные значения для CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN и ACCESS_TOKEN_SECRET.

Обратите внимание на строки 20–21, где ретвиты собираются не так, как обычные сообщения в строке 23. Причина в том, что ретвиты обрезаются в «полнотекстовом» виде даже с параметром tweet_mode = « расширенный ».

Окончательный вывод кода вернет список текстов твитов по переменной tweet_text.

Анализ настроений с использованием VADER

Создание собственной модели анализа настроений с нуля может быть очень трудным и утомительным по нескольким причинам. Вам нужно найти данные, соответствующие вашей проблеме, создать МНОГО помеченных данных для обучения, а также выполнить очистку данных и предварительную обработку NLP. К счастью для нас, VADER - это доступный предварительно обученный анализ настроений, который опирается на данные социальных сетей. Некоторые из больших преимуществ включают в себя:

  1. Анализ полярности (положительное или отрицательное настроение), а также валентности (интенсивность настроения - т.е. «отлично» имеет более высокую интенсивность, чем «хорошо»).
  2. Обрабатывает сленг (‘lol’, ‘sux’) и смайлы, которые распространены в твитах.
  3. Учитываются заглавные буквы и знаки препинания (т. Е. «ХОРОШО !!» более положительно, чем «хорошо»).

Для получения дополнительной информации о VADER вы можете получить доступ к репозиторию github или статье, написанной авторами. Чтобы узнать о других инструментах анализа настроений, посетите эту страницу на github.

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

VADER возвращает 4 типа оценок полярности для каждого звонка: положительный, отрицательный, нейтральный или сложный. В нашем коде мы рассматриваем только составную оценку (см. Строку 5), которая представляет собой комбинацию трех других плюс некоторые дополнительные правила и нормализацию между -1 и 1. Из нашей гистограммы следует отметить одну вещь: многие твиты имеют нейтральный забивает, но положительных результатов больше, чем отрицательных, чего можно было бы ожидать от чемпионата мира по футболу!

Другой анализ, который вы можете попробовать, - это распечатать наиболее распространенные твиты в вашем наборе данных вместе с настроением каждого из них:

TOP TWEETS WITH SENTIMENT SCORE:
1) **** a SuperBowl, World Series, NBA Finals and others... nothing compares to a World Cup ⚽️ https://t.co/FtIHrv1ljB : -0.5423 

2) Iceland goalkeeper Halldorsson produced this video for the world cup and it’s amazing. https://t.co/MhHsMKTIwi : 0.5859 

3) i asked my 3 year old son who he wanted to win the world cup and he said "whichever country played the most significant geopolitical role in resisting western imperalism 🤔" i'm a proud mummy! 😚🙈😭 : 0.893 

4) Ochoa is not human when it comes to a World Cup 😭 https://t.co/73CGOxOeza : -0.4767 

5) NEW: Agency that monitors earthquakes in Mexico said an “artificial quake” was registered in Mexico City, possibly caused by “massive jumps during the goal from the Mexico national soccer team.”

Mexico upset reigning World Cup champion Germany 1-0. https://t.co/drF68B9A0d https://t.co/BW0fI8bBD4 : 0.3182

Обратите внимание на то, что анализ настроений не всегда идеален и имеет свои подводные камни. Например, в нашем четвертом примере «Очоа - не человек, когда дело касается чемпионата мира 😭», вы можете возразить, что Очоа (который является стартовым мексиканским голкипером и провел отличную игру накануне), возможно, получит положительный комплимент: но в целом настроения отрицательные. Даже человеку всегда очень сложно определить, каковы были настоящие намерения человека без какого-либо дополнительного контекста.

Вывод

В этом посте мы демонстрируем быстрый и простой способ настроить анализ тональности данных Twitter с помощью Tweepy и VADER. Это не всесторонний анализ данных Twitter или анализа настроений, но он поможет вам начать свой путь!