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

Https://github.com/cjhutto/vaderSentiment

По многим причинам президентские выборы в США в 2016 году имели решающее значение. Помимо политического аспекта, большое внимание уделялось широкому использованию аналитики на протяжении всего периода агитации. Миллионы информационных пунктов Twitter, принадлежащих Клинтону и Трампу, были оценены и классифицированы во время выборов с чувством положительного, нейтрального или отрицательного характера. Вот некоторые из интересных результатов, полученных в результате оценки:

- Твитов с упоминанием «@realDonaldTrump» было больше, чем со ссылкой на «@HillaryClinton», что свидетельствует о том, что большинство твитов писали о Трампе.
- Отрицательные твиты совпали с положительными для обоих кандидатов.
- Трамп. соотношение положительных и отрицательных твитов было лучше, чем у Клинтона.

Это та сила, которую дает оценка настроений, и на выборах в США это было совершенно очевидно.

Что такое анализ настроений?

Анализ настроений или анализ мнений - это подполе обработки естественного языка (NLP), которое пытается определить и извлечь представления в пределах указанного текста. Цель анализа настроений - оценить отношение, чувства, оценки, отношения и чувства говорящего / писателя на основе вычислительной терапии субъективности в тексте.

Почему так важен анализ чувств?

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

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

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

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

Почему сложно выполнить анализ настроений?

Хотя на бумаге это может показаться простым, на самом деле анализ настроений - сложный предмет. Этому есть множество объяснений:

- Не всегда просто понять чувства через текст. Иногда даже людей могут ввести в заблуждение, так что это все равно, что просить Луну ожидать от ноутбука стопроцентной точности!
- Текст может одновременно вызывать различные чувства.

Например, «Цель фильма была фантастической, но могло быть и лучше».

Вышеупомянутая фраза состоит из двух полярностей: положительной и отрицательной. Итак, как мы пришли к выводу, что оценка была положительной или отрицательной?

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

«Лучшее, что я могу сказать о фильме, это то, что он был интересным».

Здесь слово «интересный» не обязательно выражает положительные эмоции и может сбивать с толку алгоритмы.

В текстах социальных сетей, таких как Twitter и Facebook, интенсивное использование смайлов и сленгов с эмоциональной ценностью также затрудняет оценку текста. Например, «:)» указывает на смайлик и обычно относится к благоприятным настроениям, в то время как на другой стороне «:(» обозначает неблагоприятные настроения. Кроме того, такие аббревиатуры, как «LOL», «OMG» и часто используемые сленги, такие как «Не-а», «Мех», «хихикает» и т. Д. Также являются мощными индикаторами какого-то настроения в фразе.

Вейдер расшифровывается как «Словарь с пониманием валентности и разумный разум»). Это инструмент анализа настроений на основе лексики и правил, специально адаптированный к настроениям, выражаемым в социальных сетях. VADER использует смесь тональности лексики в качестве списка лексических характеристик (например, слов), которые обычно помечаются как положительные или отрицательные в соответствии с их семантической ориентацией.

В отношении текстов в социальных сетях, редакционных статей NY Times, обзоров фильмов и продуктов VADER оказался весьма эффективным. Это потому, что VADER не только информирует нас о количестве положительных и отрицательных эмоций, но также сообщает нам, насколько положительными или отрицательными являются чувства. Дизайнеры VADER использовали Amazon Mechanical Turk для получения большей части своих оценок, полную информацию можно найти на их странице Github.

Преимущества использования VADER VADER по сравнению с традиционными методами анализа настроений, в том числе:

- он очень хорошо работает с текстом в социальных сетях, но легко распространяется на различные области

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

Хватит разговоров! Давайте теперь посмотрим на практике, как работает оценка VADER, для которой сначала будет установлена ​​библиотека.

Установка

Самый простой способ выполнить настройку из [PyPI] с помощью pip - использовать командную строку. Ознакомьтесь с подробным описанием вашего репозитория Github.

> pip install vaderSentiment

После установки VADER вызовем объект SentimentIntensityAnalyser,

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzeranalyser = SentimentIntensityAnalyzer()

Работа и оценка

Давайте сейчас проверим наши первые настроения с помощью VADER. Мы будем использовать метод polarity_scores (), чтобы получить индексы полярности для данного предложения.

def sentiment_analyzer_scores(sentence):
    score = analyser.polarity_scores(sentence)
    print("{:-<40} {}".format(sentence, str(score)))

Давайте проверим, как VADER работает с данным обзором:

sentiment_analyzer_scores("The phone is super cool.")The phone is super cool----------------- {'neg': 0.0, 'neu': 0.326, 'pos': 0.674, 'compound': 0.7351}

Выведем в табличной форме:

  • Положительные, отрицательные и нейтральные оценки отражают долю текста, попадающего в эти категории. Это означает, что наше предложение было оценено как 67% положительных, 33% нейтральных и 0% отрицательных. Следовательно, все это должно составлять 1.
  • Составной балл - это показатель, который вычисляет сумму всех лексических рейтингов, которые были нормализованы между -1 (крайнее отрицательное значение) и +1 (крайнее положительное значение). В приведенном выше случае рейтинг лексики для andsupercool равен 2.9и соответственно1.3. Суммарная оценка оказывается равной 6_, что означает очень высокое положительное настроение.

Прочтите здесь для получения более подробной информации о методологии оценки VADER.

VADER анализирует настроения в первую очередь на основе определенных ключевых моментов:

  • Пунктуация: использование восклицательного знака (!) увеличивает интенсивность без изменения смысловой ориентации. Например, «Еда здесь хорошая!» более интенсивный, чем «Еда здесь хорошая». и увеличение количества (!) соответственно увеличивает величину.

Посмотрите, как увеличивается общий составной балл с увеличением количества восклицательных знаков.

  • Использование заглавных букв: использование заглавных букв для выделения релевантного тональности слова в присутствии других слов без заглавной буквы, увеличивает интенсивность тональности. Например, «Еда здесь ОТЛИЧНАЯ!» передает больше интенсивности, чем «Еда здесь отличная!»

  • Модификаторы степени: также называемые усилителями, они влияют на интенсивность настроения, увеличивая или уменьшая интенсивность. Например, «Обслуживание здесь очень хорошее» более интенсивное, чем «Обслуживание здесь хорошее», тогда как «Обслуживание здесь незначительно хорошее» снижает интенсивность.

  • Союзы: использование союзов, таких как «но», сигнализирует о смене полярности настроений, при этом тональность текста, следующего за союзом, является доминирующей. «Еда здесь отличная, но обслуживание ужасное» вызывает смешанные чувства, а вторая половина определяет общую оценку.

  • Предшествующая триграмме: исследуя триграмму, предшествующую лексической характеристике, насыщенной сантиментами, мы улавливаем почти 90% случаев, когда отрицание меняет полярность текста. Отрицательное предложение звучало бы так: «Еда здесь не такая уж и хорошая».

Работа с эмодзи, сленгом и смайликами.

VADER отлично справляется со смайликами, сленгами и аббревиатурами в предложениях. Давайте посмотрим на каждого на примере.

  • Emojis
print(sentiment_analyzer_scores('I am 😄 today'))
print(sentiment_analyzer_scores('😊'))
print(sentiment_analyzer_scores('😥'))
print(sentiment_analyzer_scores('☹️'))#OutputI am 😄 today---------------------------- {'neg': 0.0, 'neu': 0.476, 'pos': 0.524, 'compound': 0.6705}😊--------------------------------------- {'neg': 0.0, 'neu': 0.333, 'pos': 0.667, 'compound': 0.7184}😥--------------------------------------- {'neg': 0.275, 'neu': 0.268, 'pos': 0.456, 'compound': 0.3291}☹️-------------------------------------- {'neg': 0.706, 'neu': 0.294, 'pos': 0.0, 'compound': -0.34}💘--------------------------------------- {'neg': 0.0, 'neu': 1.0, 'pos': 0.0, 'compound': 0.0}
  • Сленги
print(sentiment_analyzer_scores("Today SUX!"))
print(sentiment_analyzer_scores("Today only kinda sux! But I'll get by, lol"))#outputToday SUX!------------------------------ {'neg': 0.779, 'neu': 0.221, 'pos': 0.0, 'compound': -0.5461}Today only kinda sux! But I'll get by, lol {'neg': 0.127, 'neu': 0.556, 'pos': 0.317, 'compound': 0.5249}
  • Смайлики
print(sentiment_analyzer_scores("Make sure you :) or :D today!"))Make sure you :) or :D today!----------- {'neg': 0.0, 'neu': 0.294, 'pos': 0.706, 'compound': 0.8633}

Теперь, когда мы видим, как Вейдер может работать в целом, рассмотрим этот пример на GitHub, чтобы увидеть, как его можно применить специально для прогнозирования цен на акции, проанализировав настроения в сообщениях в социальных сетях, связанных с данным тикером компании https: // github. com / dineshdaultani / Прогнозы акций