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

В этом примере показано, как использовать словарь Valence Aware и алгоритм sEntiment 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.

См. также

| |

Похожие темы