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

Анализ настроений

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

Важность анализа настроений

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

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

Пример анализа тональности

Существуют различные варианты использования анализа настроений. Один из них может быть основан на ответах покупателей и клиентов. Например: «Мне очень нравится этот продукт!» вызовет «позитивное настроение». И наоборот, фраза «Этот продукт ужасен» вызовет «негативное настроение». Другой формой чувства может быть «нейтральное чувство». Например: «Я не могу решить, нравится мне этот продукт или нет».

В рамках этой программы мы не будем тестировать «нейтральные настроения». Это связано с тем, что большинство слов по умолчанию являются нейтральными. Например, книга, дом, машина и т. д.

Анализ с использованием Jupyter Notebooks

Введение —

  • Первым шагом в этом анализе будет импорт и загрузка библиотеки «случайных слов».
  • Затем необходимо импортировать и применить «Natural Language Toolkit».
  • Последняя необходимая библиотека — «Вейдеровские настроения», которая используется для проверки тональности слова или фразы.

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

pip install random-word

Затем нужно импортировать RandomWords, и это видно по следующему.

from random_word import RandomWords

Затем мы должны сделать то же самое с «Natural Language ToolKit» (nltk).

pip install nltk

Точно так же теперь мы должны импортировать инструментарий.

import nltk

Метод, в котором слова могут быть сгенерированы случайным образом, заключается в следующем:

r = RandomWords()
randomOne = r.get_random_word()
randomTwo = r.get_random_word()
randomThree = r.get_random_word()
print(randomOne, randomTwo, randomThree + ".")

В этом примере печать вернет 'Ничего калорийного'.

Далее нам нужно установить «Вейдеровское настроение». Это будет сделано аналогично предыдущим двум.

pip install vadersentiment

Затем нам нужно импортировать «настроение Вейдера».

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer

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

Эти две функции — «positiveRandom» и «negativeRandom».

Они записываются, как показано ниже.

def positiveRandom(running):
        
    while (running == "True"):
        
        randomValue = r.get_random_word()
        print(randomValue)
        sentence = randomValue
        vs = SentimentIntensityAnalyzer().polarity_scores(sentence)
        for i in vs:
           if (i == "pos"):
              if (vs[i] > 0):
                 print("\nPositive Word: " + sentence)
                    
                 return(sentence)
                 running = "False"
def negativeRandom(running):
    
    while(running == "True"):
    
       randomValue = r.get_random_word()
       print(randomValue)
       sentence = randomValue
       vs = SentimentIntensityAnalyzer().polarity_scores(sentence)
       for i in vs:
       if (i == "neg"):
          if (vs[i] > 0):
             print("\nNegative Word: " + sentence)
                    
             return(sentence)               
                    
             running = "False"

В приведенных выше двух функциях структура обеих функций аналогична.

Цель цикла while состоит в том, что он будет продолжать цикл до тех пор, пока не будет найдено положительное или отрицательное слово — в зависимости от функции.

Инициализация слова «vs» будет использоваться для хранения тональности случайно сгенерированного слова.

При инициализации «vs» будет содержать более одного значения. Таким образом, нам нужно найти «поз» или «нег» в соответствии с тем, что мы ищем.

По умолчанию «pos» и «neg» равны 0. Таким образом, если слово вернет значение больше 0, тональность можно определить как отрицательную или положительную.

  • Когда он будет найден, цикл while прекратит выполнение, а затем будет возвращено слово.
#Take it out step further, randomly generate words until it's positive or negative based on the user's choice!
value = ""
running = "True"
userInput = input("Would you rather generate a word with positive or negative sentiment? Type 'P' or 'N'. ") 
    
if (userInput.lower() == "p"):
    
    value = positiveRandom("True")
    
elif (userInput.lower() == "n"):
    
    value = negativeRandom("True")

Приведенная выше функция используется, чтобы спросить пользователя, хотят ли они сгенерировать «положительное» или «отрицательное» слово.

Заключение

В рамках данной статьи было применено применение метода анализа настроений. Как видно, анализ настроений имеет множество применений. Тем не менее, в этой статье использовалось «настроение Вейдера», которое не требовало набора данных «поезд» и «тест». Обычно для выполнения функции анализа настроений нужны оба. Однако, как можно видеть, хотя и не идеальное, «настроение Вейдера» было подходящим ярлыком.

Гитхаб

Ссылка на файл GitHub выглядит следующим образом:

"Ссылка на сайт".