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

ratioSentimentScores | tokenizedDocument | vaderSentimentScores