В этом примере показано, как использовать Валентность Осведомленный Словарь и чувство 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