Это четвертый (и последний) пост в серии Анализ настроений. Вы можете найти другие сообщения в блогах из этой серии по следующим ссылкам: Анализ настроений, часть 1 — Дружественное руководство по анализу настроений, Анализ настроений, часть 2 — Как выбрать предварительно аннотированные наборы данных для анализа настроений?, и Анализ настроений, Часть 3 — Аннотации данных. Этот пост в блоге призван показать вам другие методы, которые вы можете использовать при изучении анализа настроений. Мы также попробовали некоторые из них, чтобы показать, чему мы научились.

Напоминаем, что целью любого исследования анализа тональности является создание модели, которая может предсказать тональность текста. В Besedo мы используем эту информацию для двух целей: модерации контента и предоставления информации нашим клиентам. Существуют разные способы предсказать настроение: лингвистический подход с использованием правил и шаблонов и подход, основанный на науке о данных. В этом сообщении в блоге будет показан только подход к науке о данных с использованием методов машинного обучения и глубокого обучения, включая трансформаторы.

Наши разные подходы

Мы начали наше исследование со старых подходов и постепенно перешли к тому, что в настоящее время используется в современном состоянии.

Предварительная обработка

Если вы используете автоматический подход, первым шагом будет предварительная обработка ваших данных. Действительно, предварительная обработка является одним из наиболее важных шагов, поскольку она может реально повлиять на характеристики модели. Предварительная обработка может означать много вещей, и вам решать, что именно вы хотите выполнить. Это может быть удаление знаков препинания, нормализация слов, перевод текста в нижний регистр, удаление смайликов, удаление URL-адресов.

Любая предварительная обработка может привести к некоторой потере информации. Например, если мы напишем текст строчными буквами, мы потеряем информацию о том, что человек упоминал имена («Париж» вместо «Париж»), или если мы удалим пунктуацию, это может повлиять на эмоциональное поведение текста («Не могу дождаться завтрашнего дня!!!!!!!!!!!», «Не могу дождаться завтрашнего дня»).

Несмотря на это, предварительная обработка является неотъемлемой частью, потому что некоторые алгоритмы/модели не будут работать очень хорошо с более обширным пространством функций, особенно если данных не так много. Вот почему мы пытаемся сделать информацию более плотной и помочь моделям лучше учиться.

Подход к машинному обучению

Для машинного обучения (ML) нам сначала нужно преобразовать данные, чтобы представить текст с помощью векторов. Это преобразование может быть выполнено с использованием различных методов, и мы даем неисчерпывающий их список в следующей таблице. Мы также связали несколько сообщений в блогах о различных векторизаторах, так что посмотрите, если вам интересно узнать о каком-либо из них!

Среди методов векторизации вы можете использовать Word Embeddings. Встраивание слов — это статистический подход, который представляет слово в соответствии с его частым контекстом. Например, «кошка» и «собака» появляются в похожем контексте («Я накормил свою кошку/собаку»), а «кошка» и «шляпа» — нет («Я накормил свою кошка/шляпа»). Поскольку слова, встречающиеся в сходном контексте, семантически схожи, этот метод достаточно силен, чтобы представить семантическое значение слов. Вот небольшое введение в некоторые библиотеки, основанные на Word Embeddings:

  • GloVe: решение Стэнфорда. Он вычисляет вектор для каждого слова, используя модель прогнозирования.
  • Word2Vec: решение Google. Он вычисляет вектор для каждого слова, используя модель на основе подсчета.
  • FastText: решение Facebook. Он вычисляет вектор для каждого символа n-граммы и складывает их, чтобы получить вектор слова. Это означает, что это решение может дать вектор даже для слов вне словарного запаса (слов, которых нет в модели встраивания).
Vectorizer name                 Blog post                  Library
----------------- ---------------------------------------- ---------
CountVectorizer   Basics of CountVectorizer                Sklearn
TF-IDF            (...) TF-IDF explained                   Sklearn
GloVe             Intuitive Guide (...) GloVe Embeddings   GloVe
Word2Vec          Introduction to (...) Word2Vec           Gensim
FastText          A Visual Guide to FastText (...)         FastText

После преобразования данных мы можем обучать модели. Здесь мы представляем модели машинного обучения, которые мы использовали во время нашего исследования, так что это не эксклюзивный список, но они являются наиболее часто используемыми моделями. Вы можете найти больше информации о каждом методе в связанных блогах. Мы начинаем наш список с трех моделей машинного обучения, которые вы можете использовать с библиотекой sklearn.

  • Наивный байесовский метод: вероятностная модель, основанная на теореме Байеса (найти вероятность того, что произойдет А, если произошло Б) — Наивный байесовский классификатор
  • Логистическая регрессия: модель линейной классификации с использованием логистической модели — Логистическая регрессия — подробный обзор
  • Случайный лес: метод ансамбля, который использует прогноз n различных деревьев решений, наиболее повторяющийся прогноз в конечном итоге становится нашим прогнозом. Эта идея заключается в том, что большой набор моделей будет лучше отдельных — Понимание случайного леса.

Мы также использовали метод усиления под названием LightGBM (Light Gradient Boosting Machine). Методы повышения также являются методами ансамбля, похожими на модель случайного леса, и они также работают с деревьями решений. Разница между ними в том, что методы бустинга присваивают веса неправильным прогнозам, чтобы получить лучшие результаты (Что такое LightGBM, как его реализовать? как настроить параметры?).

Последний метод, который мы представим здесь, — это FastText, о котором мы уже говорили как о методе вычисления вложений. Тем не менее, в FastText также есть метод-классификатор (fastText for Text Classification).

Подход к глубокому обучению

Методы глубокого обучения являются более современными и превзошли результаты, полученные с помощью машинного обучения в последние годы. Эти модели более сложны, поскольку они не требуют преобразования данных, как упоминалось ранее, за исключением токенизации (процесс разделения текста на токены, также известные как слова).

Мы исследовали методы, обычно используемые для анализа настроений, которые показали наилучшие результаты во время нашего исследования. Это привело нас к использованию следующих методов:

  • CNN (Сверточная нейронная сеть) — это модель нейронной сети, часто используемая для распознавания изображений, но она хорошо работает в задаче анализа тональности. Вы можете найти больше информации об этом в следующем сообщении в блоге: Объяснение сверточных нейронных сетей
  • LSTM – это усовершенствованный метод, основанный на рекуррентных нейронных сетях (RNN). Они могут сохранять информацию о предыдущих данных, и это делает их особенно хорошими при обработке текста (Сети LSTM | Подробное объяснение)
  • Берт (представления двунаправленного кодировщика от трансформеров) – это основанный на трансформерах метод, созданный в 2018 году и революционизировавший область НЛП, поскольку он достиг самых современных результатов во многих задачах. Этот метод применяет двунаправленное обучение Transformers к языковому моделированию. Если вы хотите узнать об этом больше, мы предлагаем вам посмотреть этот пост в блоге: Иллюстрированный BERT, ELMo и Ко. (Как НЛП взломало трансферное обучение)

Машинное обучение против глубокого обучения

После перечисления различных подходов мы хотели бы указать на возможные преимущества и недостатки.

Полученные результаты

Мы обучили наши разные методы для обоих подходов на одних и тех же данных, чтобы сравнить результаты и выбрать лучший подход для нашего исследования. Вместо использования гиперпараметров по умолчанию мы настроили и оптимизировали их для каждого метода, чтобы получить наилучшие результаты. Например, при использовании подходов машинного обучения мы использовали библиотеку Оптуна, которая осуществляет поиск оптимального набора гиперпараметров. Выбор гиперпараметров важен, особенно при использовании Bert, поскольку Transformers чувствителен к ним. Неправильный выбор гиперпараметров может привести к переоснащению (когда модель слишком хорошо обучена и не может предсказать результат на новых данных) или явлению, называемому катастрофическим забыванием (когда модель внезапно забывает все, что она узнала, когда сталкивается с новыми данными).

Мы представим результаты с использованием Fscore Macro для двух предварительно аннотированных наборов данных для анализа настроений: Amazon Fine Food Reviews и Apple Twitter Sentiment.

Как видно из таблицы, наилучшие результаты для нас были получены при использовании Bert. Это имеет смысл, потому что у нас были крошечные наборы данных, а Берт уже предварительно обучен на большом количестве данных. Лучшие F-показатели составляют 76,04 и 73,31 и имеют на 8 и 6 баллов больше, чем 2-е место среди лучших F-показателей для каждого набора данных.

Кроме того, мы видим, что, даже если предполагается, что методы глубокого обучения работают лучше, чем методы машинного обучения, в этом исследовании разница между ними не очевидна. Например, методы глубокого обучения имеют только 45 (CNN) и 61,69 (LSTM) Fscore для Apple Twitter Sentiment, тогда как NaiveBayes имеет Fscore 64,54. Это означает, что нам не всегда нужно использовать большие модели для достижения хороших результатов.

Эта таблица также показывает, что у нас будут очень разные результаты, если мы выберем другое преобразование наших данных. Например, мы использовали вложения TF-IDF и FastText для преобразования данных в сочетании с NaiveBayes; у нас разница в 13 очков в наших Fscores.

В этом сообщении в блоге представлены различные методы, которые мы использовали в нашем исследовании анализа настроений, и полученные нами результаты. Мы видим, что Трансформеры и, в частности, Берт работают на нас лучше всего. Вот почему мы продолжили сравнительный анализ различных методов с разными трансформерами, такими как Roberta и DistillBert.

В нашей серии статей об анализе настроений и в этом посте в блоге мы объяснили шаги, которые мы сделали во время нашего исследования, а также различные советы и вещи, которые мы узнали. Мы надеемся, что эти записи в блоге были вам полезны! :)