vaderSentimentScores

Счета настроения с алгоритмом VADER

Описание

Использовать vaderSentimentScores для оценки настроений в токенизированном тексте с помощью алгоритма Valence Aware Dictionary и sEntiment Reasoner (VADER). vaderSentimentScores функция использует, по умолчанию, лексикон настроений VADER и списки слов-модификаторов.

Функция поддерживает только текст на английском языке.

пример

compoundScores = vaderSentimentScores(documents) возвращает счета настроений для токенизированных документов. Функция вычисляет составные счета путем агрегирования отдельных счетов маркеров, скорректированных в соответствии с правилами алгоритма, а затем нормализованных между -1 и 1. Функция отбрасывает все лексемы с одним символом, не присутствующим в лексиконе настроений.

compoundScores = vaderSentimentScores(documents,Name,Value) задает дополнительные опции, используя одну или несколько пары "имя-значение".

пример

[compoundScores,positiveScores,negativeScores,neutralScores] = vaderSentimentScores(___) также возвращает коэффициенты для пропорций документов, которые положительны, отрицательны и нейтральны, соответственно, используя любой из предыдущих синтаксисов.

Примеры

свернуть все

Создайте токенизированный документ.

str = [
    "The book was VERY good!!!!"
    "The book was not very good."];
documents = tokenizedDocument(str);

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

compoundScores = vaderSentimentScores(documents)
compoundScores = 2×1

    0.7264
   -0.3865

Алгоритмы анализа настроений, такие как VADER, полагаются на аннотированные списки слов, называемые лексиконами настроений. Например, VADER использует лексикон настроений со словами, аннотированными с счетом настроения в диапазоне от -1 до 1, где счета, близкие к 1, указывают на сильные положительные настроения, счета, близкие к -1, указывают на сильные отрицательные настроения и счета, близкие к нулю, указывают на нейтральные настроения.

Чтобы проанализировать настроения текста с помощью алгоритма VADER, используйте vaderSentimentScores функция. Если лексикон настроения, используемый vaderSentimentScores функция не подходит для данных, которые вы анализируете, например, если у вас есть набор данных для конкретной области, такой как медицинские или инженерные данные, то вы можете использовать свой собственный пользовательский лексикон настроений. Для примера, показывающего, как сгенерировать лексикон настроений конкретной области, смотрите Generate Domain Specific Sentiment Lexicon.

Создайте токенизированный массив документов, содержащий текстовые данные для анализа.

textData = [ 
    "This company is showing extremely strong growth."
    "This other company is accused of misleading consumers."];
documents = tokenizedDocument(textData);

Загрузите пример специфичного для области лексикона для финансовых данных.

filename = "financeSentimentLexicon.csv";
tbl = readtable(filename);
head(tbl)
ans=8×2 table
          Token          SentimentScore
    _________________    ______________

    {'opportunities'}       0.95633    
    {'innovative'   }       0.89635    
    {'success'      }       0.84362    
    {'focused'      }       0.83768    
    {'strong'       }       0.81042    
    {'capabilities' }       0.79174    
    {'innovation'   }       0.77698    
    {'improved'     }       0.77176    

Оцените настроение с помощью vaderSentimentScores и задайте пользовательский лексикон настроений, используя 'SentimentLexicon' опция. Счета, близкие к 1, указывают на положительные настроения, счета, близкие к -1, указывают на отрицательные настроения и счета, близкие к 0, указывают на нейтральные настроения.

compoundScores = vaderSentimentScores(documents,'SentimentLexicon',tbl)
compoundScores = 2×1

    0.2740
   -0.1112

Входные параметры

свернуть все

Входные документы, заданные как tokenizedDocument массив.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Boosters',["verry" "verrry"] задает использование бустеров «verry» и «verrrry».

Лексикон настроения, заданный как таблица со следующими столбцами:

  • Token - Лексема, заданный как строковый скаляр. Лексемы должны быть строчными.

  • SentimentScore - счет настроения лексемы, заданная в виде числа.

При оценке настроения программное обеспечение по умолчанию игнорирует лексемы с одним символом и заменяет emojis эквивалентным текстовым описанием перед вычислением счетов настроений. Например, программа заменяет образцы эмодзи «» текстом «ухмыляющееся лицо», а затем оценивает счета настроений. Если вы предоставляете лексемы с одним символом или emojis с соответствующими счетами настроений в SentimentLexicon, тогда функция не удаляет или не заменяет эти лексемы.

Лексикон настроений по умолчанию является лексиконом настроений VADER.

Типы данных: table

Список бустерных слов или n-граммов, заданный как строковые массивы.

Функция использует бустер n-граммы, чтобы повысить настроение последующих лексем. Для примера слова типа «абсолютно» и «удивительно».

Для списка слов список должен быть вектором-столбцом. Для списка n-граммов список имеет размер NumNgrams-by- maxN , где NumNgrams количество n-граммов и maxN - длина наибольшего n-грамма. The (i,j)Первый элемент списка - это jвторое слово in-грамм. Если количество слов в in-грамм меньше maxN, затем оставшиеся записи iпервая строка списка пуста.

Усилитель n-граммов должен быть строчным.

Список бустеров n-граммов по умолчанию является списком бустеров VADER.

Типы данных: string

Список слов демпфирующего устройства или n-граммов, заданный как строковые массивы.

Функция использует демпфирующий n-грамм, чтобы ослабить настроение последующих лексем. Для примера слова типа «вряд ли» и «несколько».

Для списка слов список должен быть вектором-столбцом. Для списка n-граммов список имеет размер NumNgrams-by- maxN , где NumNgrams количество n-граммов и maxN - длина наибольшего n-грамма. The (i,j)Первый элемент списка - это jвторое слово in-грамм. Если количество слов в in-грамм меньше maxN, затем оставшиеся записи iпервая строка списка пуста.

Демпферный n-грамм должен быть строчным.

Список демпфирующих n-граммов по умолчанию является списком усилителей VADER.

Типы данных: string

Список слов отрицания, заданный как строковые массивы.

Функция использует слова отрицания, чтобы свести на нет настроения последующих лексем. Для примера такие слова, как «нет» и «нет».

Слова отрицания должны быть строчными.

Список слов отрицания по умолчанию является списком отрицания VADER.

Типы данных: string

Выходные аргументы

свернуть все

Составные счета настроения, возвращенные как числовой вектор. Функция возвращает один счет для каждого входного документа. Значение compoundScores(i) соответствует составному счету настроения documents(i).

Функция определяет составные счета путем агрегирования отдельных счетов маркеров, корректирует их согласно правилам алгоритма VADER, а затем нормализует их между -1 и 1.

Положительные счета настроения, возвращенные как числовой вектор. Функция возвращает один счет для каждого входного документа. Значение positiveScores(i) соответствует положительному счету настроения documents(i).

Отрицательные счета настроения, возвращенные как числовой вектор. Функция возвращает один счет для каждого входного документа. Значение negativeScores(i) соответствует отрицательному счету настроения documents(i).

Нейтральные счета настроения, возвращенные как числовой вектор. Функция возвращает один счет для каждого входного документа. Значение neutralScores(i) соответствует нейтральному счету настроения documents(i).

Ссылки

[1] Хатто, Клейтон Дж., и Эрик Гилберт. «Vader: A parsimonious rule based model for sentiment analysis of social media text». Восьмая международная конференция AAAI по веблогам и социальным сетям. 2014.

Введенный в R2019b