Использование трансформерных языковых моделей для анализа настроений

Как легко превзойти современные модели настроений

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

Чтобы иметь возможность автоматически выполнять крупномасштабный анализ настроений, нам необходимо обучать модели на аннотированных наборах данных. В этой статье будет показано, как превзойти текущие эталоны со значительным отрывом (улучшение примерно на 5 процентных пунктов) за счет быстрой и простой адаптации современных моделей трансформаторов к анализу настроений с использованием фреймворка с открытым исходным кодом FARM. .

Наборы данных

Как уже упоминалось, нам нужны аннотированные данные, чтобы иметь возможность обучать модель с учителем. Для этой цели я использовал наборы данных двух общих задач: SemEval 2017 и Germeval 2017.
В то время как набор данных SemEval состоит из английских твитов, набор данных GermEval содержит немецкие тексты из разных социальных сетей и веб-источников о Deutsche Bahn (немецкая железнодорожная компания). Тексты обоих сборников данных помечены с учетом их полярности (т. Е. Положительной, отрицательной или нейтральной).

Точная настройка моделей трансформаторов с помощью FARM

Модели-трансформеры, такие как BERT, представляют собой современное состояние, когда речь идет о различных задачах НЛП, таких как классификация текста, распознавание именованных сущностей и ответы на вопросы. Существует множество различных предварительно обученных моделей. Для набора данных Germeval 2017 использовался Deepset GermanBERT, так как он показал высокую производительность в целом ряде задач.
Однако для набора данных SemEval-2017, поскольку обучающие данные состоят из текстов на английском языке, но цель полученного результата Модель предназначена для оценки настроения к текстам от немецких клиентов, была предпринята попытка беспроблемного обучения, и поэтому потребовалась многоязычная модель. По этой причине был использован XLM-RoBERTa-large, который обучается на 100 различных языках. Если вы хотите узнать больше о XLM-RoBERTa, я настоятельно рекомендую эту статью в блоге.

Поскольку предварительно обученные модели обучаются только для общего понимания языка, а не нюансов конкретных последующих задач НЛП, нам необходимо адаптировать эти модели для нашей конкретной цели. Для этого была использована Структура для адаптации моделей представления (FARM). FARM позволяет легко адаптировать модели трансформаторов к различным задачам НЛП. Чтобы достичь цели создания надежного классификатора настроений, я последовал примеру FARM doc_classification. Следующие фрагменты кода показывают, как я адаптировал GermanBERT к задаче анализа тональности за несколько шагов:

Обработка данных

Чтобы иметь возможность загружать обучающие экземпляры, набор данных должен находиться в csv-файле, где каждая строка состоит из обучающего примера вместе с его меткой. TextClassificationProcessor загружает и преобразует данные таким образом, чтобы они могли использоваться компонентами моделирования. Для этого нам нужно указать набор возможных меток, каталог данных, содержащий набор обучающих и тестовых данных, а также имя столбца, содержащего метку для каждого обучающего экземпляра. Здесь мы также должны указать максимальную длину последовательности, которая используется в нашей модели.
Преобразованные данные затем передаются в DataSilo. Его цель - хранить данные и предоставлять их модели пакет за пакетом. Следовательно, на этом этапе необходимо указать размер партии.

Моделирование

Следующим шагом является определение архитектуры модели. Во-первых, нам нужно решить, какую языковую модель мы хотим настроить. В этом случае мы используем bert-base-german-cased. Затем мы должны выбрать правильную головку предсказания для нашей конкретной задачи. Поскольку мы хотим классифицировать тексты в соответствии с их настроением, используя дискретные значения, нам нужно выбрать TextClassificationHead. Последним шагом является наложение головы предсказания поверх языковой модели, что выполняется AdaptiveModel.

Обучение

Теперь, когда данные загружены и архитектура модели определена, мы можем начать обучение модели. Во-первых, мы должны инициализировать оптимизатор. Здесь мы устанавливаем скорость обучения и количество эпох, на которых мы хотим обучать нашу модель. initialize_optimizer инициализирует не только оптимизатор, но и планировщик скорости обучения. По умолчанию это линейная разминка скорости обучения для первых 10% всех шагов обучения.
Наконец, мы можем передать все компоненты в Trainer, начать обучение и сохранить полученную модель для дальнейшего использования. Тонкая настройка GermanBERT на наборе данных Germeval-17 заняла менее 16 минут на графическом процессоре Tesla V100 16 ГБ; Для настройки XLM-RoBERTa на данных SemEval-17 потребовалось чуть больше 28 минут.

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

Для совместной задачи Germeval 2017 производительность представленных моделей оценивалась с помощью микро-усредненного F1-балла. Было предоставлено два разных набора тестов: один содержит твиты за тот же период, что и набор обучающих данных (набор синхронных тестов), другой набор тестов содержит твиты из более позднего периода времени (набор диахронических тестов).
Лучшая отправка ( Naderalvojoud et al.2017) достигли микро-усредненного F1-балла 74,9% на наборе синхронных тестов и 73,6% на наборе диахронических тестов. Модель, обученная с использованием GermanBERT и FARM, превосходит эти показатели более чем на 5%, достигая микро-усредненного F1-балла 80,1% на наборе синхронных тестов и 80,2% на наборе диахронических тестов.

Однако эффективность заявок на участие в общей задаче SemEval 2017 оценивалась по макро-усредненному отзыву. Там лучшие материалы (Cliche 2017, Baziotis et al. 2017) достигли макро-среднего отзыва 68,1%. Опять же, модель, обученная с использованием XLM-RoBERTa-large и FARM, превосходит эти заявки более чем на 5%, достигая макро-усредненного отзыва 73,6%.

Поскольку причиной использования XLM-RoBERTa вместо одноязычной модели было применение модели к немецким данным, модель настроений XLM-RoBERTa также оценивалась на тестовых наборах Germeval-17. Здесь мы достигли микро-усредненного F1-балла 59,1% на наборе синхронных тестов и 57,5% на наборе диахронических тестов. Эта производительность хуже, чем у базового базового уровня большинства классов с оценками 65,6% и 67,2% соответственно.
Одной из причин этого может быть то, что распределение классов обоих наборов данных сильно различается. В то время как большинство экземпляров в наборе данных Germeval помечены как нейтральные, и почти нет случаев, содержащих положительные отзывы, большинство классов набора данных SemEval является положительным.
Другая проблема может Но оба набора данных состоят из тематически разных текстов. Набор данных Germeval в отношении своих тем очень ограничен и содержит в основном тексты из различных социальных сетей и веб-источников о Deutsche Bahn. Набор данных SemEval, напротив, не имеет тематических ограничений.

Все вышеупомянутые результаты были достигнуты с использованием следующих гиперпараметров:

Заключение

В этой статье блога показано, как мы можем обучать наши собственные модели настроений с помощью моделей-трансформеров. Мы увидели, что точную настройку предварительно обученной модели можно легко выполнить с помощью фреймворка FARM, и что мы даже можем превзойти таблицу лидеров по различным общим задачам. Если вы хотите самостоятельно опробовать модель тональности GermanBERT, вы можете получить к ней доступ через центр моделей huggingface.