В этом посте более доступным образом объясняется наша статья о переносе стилей «Преобразование метода удаления, извлечения и генерации контролируемого переноса стилей текста» (представленная на EMNLP 2019).

Статью можно найти здесь. Наше репо на Github содержит код и инструкции по воспроизводимости.

Что

В нашей статье предлагается метод выполнения переноса стиля текста. «Стиль» текста - это термин, который сообщество по обработке естественного языка (NLP) заимствовало из социолингвистики и использует довольно свободно. Перенос стиля включает в себя переписывание текста определенного стиля в новый целевой стиль, так что изменяется только стиль текста с сохранением его основного значения (или независимого от стиля содержимого). В статье мы показываем следующие типы переноса стиля: а) переписывание отзывов с положительных настроений на отрицательные и наоборот (наборы данных YELP и AMAZON), б) переписывание фактических предложений на юмористические и романтические (набор данных CAPTIONS), c) переписывание политических постов в социальных сетях, написанных демократами, на написание республиканских и наоборот (ПОЛИТИЧЕСКИЙ набор данных), и d) переписывание рецензий, написанных женщинами, на написанные мужчинами и наоборот (набор данных ГЕНДЕР). Таким образом, в нашей работе понятие стиля варьируется от сантимента до юмора и романтики, до политического уклона и гендерной принадлежности.

Почему (исследование точки зрения)

Почему сообщество НЛП заинтересовано в переносе стилей?

Сообщество исследователей НЛП интересуется методами передачи стилей для множества приложений. Один набор из них нацелен на анонимность личности в Интернете, например, путем скрытия пола автора в сообщениях в социальных сетях. Это может предотвратить таргетированную рекламу на гендерной основе, нарушение конфиденциальности и дискриминацию. Тот же подход может быть распространен на другие атрибуты пользователя - возраст, раса, география и т. Д. Другой набор приложений находится в генерации диалогов для разговоров. Чтобы передать одно и то же сообщение во время разговора, люди вводят вариации в зависимости от контекста. Это моделируется как перенос стиля из сообщения в его соответствующую вариацию. В других работах используется перенос стиля для создания стихов и преобразования формальных текстов в неформальные и наоборот.

Почему (Агара, точка зрения)

Почему нас в Агара интересует передача стиля?

Мы создаем диалоговые системы, которые поддерживают разговоры на различные темы, связанные со службой поддержки клиентов, в различных контекстах звонков. Передача стиля важна для нас по двум причинам.

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

Мы задаемся вопросом: действительно ли нашим моделям разговора нужно генерировать высказывания с нуля? Что, если бы мы могли а) «извлечь» высказывание, произнесенное в аналогичном контексте агент-человек, аналогичный тому, что мы собираемся создать, и б) переписать (также известный как перенос стиля!) полученное высказывание в желаемое высказывание?

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

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

Данные

Вернемся к бумаге.

Поскольку нет доступного набора данных, который объединяет одни и те же предложения, но разных стилей друг с другом, то есть параллельный корпус, в нашей статье мы подходим к этой задаче неконтролируемым образом. Однако у нас есть наборы данных, которые содержат набор примеров предложений для каждого стиля. Мы используем эти наборы данных.

Как

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

  • Исходное предложение: пицца была вкусной
  • Содержание: пицца была.
  • Атрибут (ы): вкусно

Мы моделируем перенос стилей в фреймворке Delete-Retrieve-Generate (Li et al., 2018). Эта структура:

  1. Удаляет только набор слов атрибутов из исходного предложения, чтобы передать содержание (пицца была ̶t̶a̶s̶t̶y̶)
  2. Извлекает атрибуты из целевого корпуса стилей (ужасно) и
  3. Создает выходное предложение из содержимого и полученных атрибутов (пицца была ужасной)

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

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

Для 3. мы предлагаем и обучаем Преобразователь генеративного стиля (GST). GST изначально имеет ту же архитектуру и предварительное обучение, что и GPT, и, таким образом, изначально представляет собой мощную языковую модель, основанную только на декодере.

Модели

Затем GST обучается в двух вариантах - B-GST (слепой GST) и G-GST (управляемый GST) - 2 отдельные модели, которые обучаются независимо и результаты которых сравниваются. друг с другом. Оба принимают в качестве входных данных содержание исходного предложения (пицца была) и генерируют выходные данные с переносом стиля (пицца была ужасной). Они различаются дополнительными входами, которые каждый из них принимает, помимо содержания источника:

  1. B-GST дополнительно принимает в качестве входных данных: целевой стиль (‹негативный›).
  2. G-GST дополнительно принимает в качестве входных данных: полученные атрибуты (ужасно).

На рисунке ниже показана генерация с использованием G-GST. B-GST аналогичен, за исключением того, что у него нет компонента извлечения. [ATTRS] - это специальный токен, представляющий начало раздела атрибутов, [CONT_START] представляет начало раздела содержимого, а [START] указывает модели, что она должна начать генерировать выходные данные.

Почему именно эти варианты?

B-GST - это модель, которая генерирует выходные данные, помещая наиболее подходящие целевые атрибуты в данный контент, который она узнает самостоятельно из распределения набора данных. Этот вариант полезен, когда в целевом стиле недостаточно примеров или достаточного покрытия атрибутов, чтобы найти наиболее близкое соответствие, из которого можно «извлечь» атрибуты.

G-GST, с другой стороны, представляет собой модель, которая генерирует выходные данные, помещая данные атрибуты в данный контент. Этот вариант полезен, когда требуется явный контроль над атрибутами, которые будут использоваться в выходных данных, и когда хороший механизм «извлечения» может упростить для GST создание хороших выходных данных.

Как обучаются GST, если нет параллельного корпуса?

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

Примеры выходных данных

Ниже приведены примеры выходов из статьи. SRC - исходное предложение. SE, D и D&R - это предыдущие современные модели, описанные в статье. B-GST и G-GST - наши модели. YELP, AMAZON, CAPTIONS, POLITICAL и GENDER - это наборы данных, каждый из которых используется для разных задач передачи стилей.

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

Что заставляет GST работать лучше, чем предыдущие модели?

Уроки и выводы.

Во-первых, с использованием архитектуры и предварительного обучения GPT, который сочетает в себе мощь как преобразователя, так и массивно предварительно обученных языковых моделей. Предыдущие модели, которые использовали LSTM (например), не могли генерировать более длинные и сложные предложения.

Во-вторых, использование весов внимания BERT для удаления слов атрибутов работает лучше, чем предыдущие методы, которые пытались использовать подход, основанный на удалении. Это может быть связано с тем, что BERT также сочетает в себе мощь трансформаторов и массовое предварительное обучение (как модель маскированного языка).

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

Что дальше?

Куда мы в Агаре движемся с этим направлением работы?

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

Больше обновлений по всему вышеперечисленному будет в наших будущих публикациях в блоге.

Ознакомьтесь с нашей статьей для более подробного объяснения нашей работы!