exponenta event banner

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

В этом примере показано, как использовать алгоритм Valence Aware Dictionary and Sentement Reasoner (VADER) для анализа настроений.

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

  • Бустеры - слова или n-граммы, которые усиливают настроение идущих токенов. Например, такие слова, как «абсолютно» и «поразительно».

  • Гасители - слова или n-граммы, которые гасят настроения идущих жетонов. Например, такие слова, как «вряд ли» и «несколько».

  • Отрицания - слова, которые сводят на нет настроения идущих токенов. Например, такие слова, как «нет» и «нет».

Чтобы оценить настроения в тексте, используйте vaderSentimentScores функция.

Загрузить данные

Извлечение текстовых данных из файла weekendUpdates.xlsx использование readtable. Файл weekendUpdates.xlsx содержит обновления состояния, содержащие хэштеги "#weekend" и "#vacation".

filename = "weekendUpdates.xlsx";
tbl = readtable(filename,'TextType','string');
head(tbl)
ans=8×2 table
    ID                                        TextData                                     
    __    _________________________________________________________________________________

    1     "Happy anniversary! ❤ Next stop: Paris! ✈ #vacation"                             
    2     "Haha, BBQ on the beach, engage smug mode!   ❤  #vacation"                 
    3     "getting ready for Saturday night  #yum #weekend "                           
    4     "Say it with me - I NEED A #VACATION!!! ☹"                                       
    5     " Chilling  at home for the first time in ages…This is the life!  #weekend"
    6     "My last #weekend before the exam  ."                                        
    7     "can’t believe my #vacation is over  so unfair"                                
    8     "Can’t wait for tennis this #weekend  "                                  

Создайте массив маркированных документов из текстовых данных и просмотрите первые несколько документов.

str = tbl.TextData;
documents = tokenizedDocument(str);
documents(1:5)
ans = 
  5x1 tokenizedDocument:

    11 tokens: Happy anniversary ! ❤ Next stop : Paris ! ✈ #vacation
    16 tokens: Haha , BBQ on the beach , engage smug mode !   ❤  #vacation
     9 tokens: getting ready for Saturday night  #yum #weekend 
    13 tokens: Say it with me - I NEED A #VACATION ! ! ! ☹
    19 tokens:  Chilling  at home for the first time in ages … This is the life !  #weekend

Оценка настроений

Оцените настроение токенизированных документов с помощью vaderSentimentLexicon функция. Баллы, близкие к 1, указывают на положительные настроения, баллы, близкие к -1, указывают на отрицательные настроения, а баллы, близкие к 0, указывают на нейтральные настроения.

compoundScores = vaderSentimentScores(documents);

Просмотрите десятки первых нескольких документов.

compoundScores(1:5)
ans = 5×1

    0.4738
    0.9348
    0.6705
   -0.5067
    0.7345

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

idx = compoundScores > 0;
strPositive = str(idx);
strNegative = str(~idx);

figure
subplot(1,2,1)
wordcloud(strPositive);
title("Positive Sentiment")

subplot(1,2,2)
wordcloud(strNegative);
title("Negative Sentiment")

Figure contains objects of type wordcloud. The chart of type wordcloud has title Positive Sentiment. The chart of type wordcloud has title Negative Sentiment.

См. также

| |

Связанные темы