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

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

Вызов end-to-end (e2e) NLG 2017 года является хорошей иллюстрацией энтузиазма NLG seq2seq. Сама базовая линия представляет собой подход seq2seq, и многие из систем, представленных на конкурс или предложенных впоследствии, основаны на этой модели. Хороший синтез этих подходов вместе с подробным анализом набора данных и оценкой можно найти здесь.

В этой статье я сначала представлю ключевые элементы этой задачи, то есть ее набор данных, исходный уровень, оценку и некоторые стратегии seq2seq, предложенные для улучшения исходного уровня. Затем я представляю реализацию базового seq2seq NLG с использованием кода Fastai, предоставленного для нейронного машинного перевода в Fastai курсе по НЛП, который дает лучшие результаты, чем базовый уровень, по некоторым словесным метрикам. Код Fastai имеет то преимущество, что он готов к использованию и реализует некоторые современные решения проблемы обучения seq2seq. Таким образом, можно сосредоточиться на экспериментировании с различными идеями.

Код и блокноты для этой модели FastAai seq2seq NLG и для предварительной обработки результатов для оценки доступны на github здесь.

Набор данных

Набор данных соревнований e2e NLG состоит примерно из 50 000 пар представлений значений (MR) и кратких описаний ресторанов на естественном языке (NL), менее 10 % из которых составляют проверочные наборы. +6k MR уникальны, что означает, что один MR может быть реализован по-разному. Набор данных был организован таким образом, чтобы входные данные не повторялись в проверочных и тестовых наборах даже после удаления названий мест проведения.

Вот пример MR с его возможными 6 различными вербализациями:

MR:

название[The Eagle],
eatType[кофейня],
food[на английском],
priceRange[более £30],
customerRating[high],< br />район[набережная],
дружелюбный к детям[да],
рядом с[Burger King]

NL:

(1) The Eagle — это кофейня с высоким рейтингом, ориентированная на детей, недалеко от Burger King на берегу реки. Здесь есть английская еда, и диапазон цен составляет более 30 фунтов стерлингов.

(2) The Eagle — дорогая семейная кофейня, в которой подают блюда британской кухни. Находится рядом с бургер кингом.

(3) Существует детская кофейня под названием The Eagle, расположенная рядом с Burger King в районе Риверсайд, она имеет высокие рейтинги клиентов и умеренные цены, около 30 фунтов стерлингов.

(4) Высоко оцененная английская кофейня The Eagle расположена на берегу реки недалеко от Burger King и имеет ценовой диапазон более 30 фунтов стерлингов.

(5) Есть английская кофейня The Eagle. Он находится недалеко от Burger King в прибрежной зоне. Это подходит для детей и находится в диапазоне цен выше 30 фунтов стерлингов.

(6) Орел находится в северном центре города, на южной стороне реки, недалеко от Burger King.

Представление значения для этого примера выражает все 8 возможных атрибутов, которые может иметь MR. Два из этих атрибутов являются произвольным текстом (name и near), а остальные имеют от двух до шести возможных значений.

Приведенные выше справочные тексты имеют очень богатый словарный запас и структуру, от одного до трех предложений. Кроме того, многие не озвучивают все содержание. На самом деле предложение (6) представляет информацию, которой нет даже в MR.

В связи с этим интересно понять, как были получены данные, как объяснили организаторы челленджа: они были получены с помощью краудсорсинга, при этом 80% случаев были представлены с использованием MR в скобках, как указано выше (в случайном порядке, чтобы не влиять на порядок в какая информация представлена ​​в тексте) и 20% случаев с использованием графических карт MR (см. рисунок ниже). Таким образом, дополнительная информация в предложении (6) выглядит так, как будто она могла быть получена из изображения/карты. Действительно, используя предварительное исследование, в котором они сравнивают графические и текстовые МР, авторы показывают, что графические МР выявляют тексты, которые значительно менее похожи на основной МР с точки зрения семантического сходства текста, и что по сравнению с текстовыми MR графические MR выявляют тексты, которые значительно менее похожи на основной MR с точки зрения семантического сходства текста.

По мнению авторов, эти изменения вносят шум, с которым должны справляться системы NLG. Однако существует ли критерий для принятия решения о том, следует ли вербализовать какое-либо значение? Например, цена выше 30 фунтов стерлингов упоминается в 5 из 6 текстов выше, близость к Burger King во всех текстах, а высокий рейтинг клиентов только в 3 текстах. Кроме того, происхождение различных текстов (авторский и иллюстрированный против текстового MR) не указано, что затрудняет использование этой информации.

Оценка

Чтобы сравнить системы, организаторы соревнований e2e NLG предоставляют базовый уровень, который представляет собой модель seq2seq, основанную на внимании, которая выполняет увеличение данных и поиск луча с переранжированием с использованием классификатора, который наказывает выходные данные, которые отклоняются от входных данных. Так что их базовая линия сама по себе довольно сильна.

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

Метрики перекрытия слов

Для оценки выходных текстов по сравнению с справочными текстами доступен сценарий оценки, который вычисляет ряд показателей перекрытия слов, а именно BLEU, Meteor, Rouge-L, CIDEr и Nist. Вот краткое объяснение того, что они из себя представляют:

  • BLEU: вычисляет среднее гармоническое с точностью до n-грамм (где n равно 4), уменьшенное на штраф за краткость, если вывод короче эталонного. Сопоставление n-грамм выполняется с любым из эталонных текстов.
  • CIDEr: вычисляет среднее косинусное сходство между выходными данными системы и эталонными предложениями на уровне n-грамм, n∈{1,…,4}, взвешенное по показателю tf*idf.
  • Метеор: измеряет точность и полноту униграмм относительно каждого из сгенерированных человеком результатов данного MR, выбирая наиболее подходящий. Помимо точного совпадения слов, он использует нечеткое сопоставление, основанное на выделении корней и синонимах WordNet.
  • Rouge-L: измеряет f-показатель на основе точности и отзыва самой длинной общей подпоследовательности по сравнению с любыми человеческими ссылками.
  • Nist: это версия BLEU, в которой больший вес придается более редким n-граммам и меньший штраф за краткость.

Таким образом, некоторые метрики, такие как BLEU, Meteor или Rouge-L, учитывают множественные справочные тексты данного представления значения.

Метрики текстовой сложности и разнообразия

Измерения лексической и синтаксической сложности справочных текстов показывают, что эти тексты демонстрируют высокую лексическую и синтаксическую сложность и разнообразие. Лексические показатели, такие как отношение типа к токену и энтропия, были рассчитаны с использованием Анализатора лексической сложности. Степени синтаксической сложности измерялись с помощью D-Level Analyzer, который присваивает предложениям значение по 8-балльной шкале синтаксической сложности. Результаты показали, что в то время как 46% предложений простые, 15% имеют два самых высоких уровня сложности. С другой стороны, было показано, что системы seq2seq обычно имеют низкую синтаксическую сложность и слабое лексическое разнообразие.

Человеческое суждение

Количественная оценка имеет свои ограничения и обычно рекомендуется для сравнения систем друг с другом. Однако для оценки качества вывода системы генерации текста человеческое суждение необходимо, хотя и дорого и не без трудностей. Чтобы получить более полное представление, пожалуйста, прочитайте статью в блоге Эхуда Райтера Как провести оценку NLG: метрики.

Для этого конкурса на краудсорсинге были выполнены две отдельные задачи по оценке качества текста. С одной стороны, их попросили оценить естественность текстов, представленных вместе с входными MR, ответив на следующий вопрос: Как вы оцениваете общее качество высказывания с точки зрения его грамматической правильности, беглости, адекватности и других важных факторов?»». С другой стороны, краудсорсерам было предложено оценить качество выходных текстов без их MR, ответив на вопрос: «Могло ли высказывание быть произведено носителем языка?

Коробка инструментов и хитростей

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

Настройка ввода

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

Другой распространенный подход, применяемый во многих системах, заключается в выполнении дополнения данных, которое принимает различные формы, такие как:

Настройка архитектуры

Было предложено много подходов, таких как:

Настройка вывода

Обычно это делается с помощью поиска луча для получения k-лучших выходных данных, а затем применяется повторное ранжирование с помощью классификатор или штраф за длинуи штраф за покрытие которые наказывают те результаты, которые не вербализируют все входные данные.

Выполнение

Как упоминалось во введении, я повторно использовал реализацию seq2seq в Fastai, представленную во время курса Fastai NLP. Это включает:

  • Загрузка и предварительная обработка текстов Fastai. При этом используется пространственный токенизатор и минимальная частота слов, равная 3.
  • Входные и выходные вложения. В этой реализации я сопоставил каждое слово в представлении значения с 300-мерным вложением с предварительно обученной моделью Fasttext.
  • Одноуровневая архитектура кодера и декодера GRU с некоторыми значениями исключения по умолчанию. Я обнаружил, что одноуровневая архитектура работает лучше, чем двухуровневая, предположительно потому, что в ней используется меньше параметров. Количество нейронов в скрытом слое было установлено равным 128, а размер пакета — 32. В отличие от большинства решений seq2seq для соревнования e2e NLG, я не обнаружил, что это внимание добавило ценности конечным результатам по сравнению с ванильной версией.
  • Форсирование учителя, которое передает декодеру на шаге t истинное наблюдение шага t-1 вместо предсказания во время обучения, чтобы избежать распространения ошибок. Этот подход смягчается плановой выборкой, которая фактически предоставляет случайную смесь истинных наблюдений и прогнозов, при этом истинные наблюдения уменьшаются по мере обучения.

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

После предварительной обработки, очистки и загрузки MR и текстов у меня получается 56 уникальных токенов для ввода и 1216 для вывода.

Я экспериментировал с 4 различными настройками:

  1. простой seq2seq с жадным поиском
  2. подход на основе шаблона с использованием того же базового шаблона, что и здесь
  3. простой seq2seq с жадным поиском и увеличением данных
  4. простой seq2seq с поиском и переупорядочением луча

Для увеличения данных я использовал 3 случайных перестановки ввода для каждой пары, как в здесь (не забывая увеличить минимальную частоту слов с 3 до 9, чтобы препроцессор токенизации Fastai сохранил те же токены).

Для поиска луча вместо фиксированного k я использовал нейронную выборку с переменной k, которая обусловлена ​​вероятностью p = 0,3, поскольку я обнаружил, что это дает больше грамматических результатов, чем top-k (когда p остается низким). На всякий случай я также изменил температуру softmax (T=1). Известно, что оба подхода (нейронная выборка и температурный) позволяют получить более разнообразный результат.

Для выполнения переранжирования я использовал классификатор с несколькими метками, который я разработал для пар текст-MR с использованием подхода Fastai ULMFit. Этот классификатор получил оценку F1 90 % в наборе тестов для индивидуального присвоения значения атрибута MR. Нейронная выборка и переранжирование применяются только в том случае, если жадный вывод не реализует все значения атрибутов MR в соответствии с классификатором, а выходные данные нейронной выборки учитываются только в том случае, если их значение F1 выше значения жадного вывода.

Результаты

В двух таблицах ниже показана оценка модели seq2seq по сравнению с базовым уровнем конкурентов, подходом на основе шаблона и жадным поиском с расширением и без расширения для наборов разработки и тестирования.

Результаты показывают, что для набора для разработки базовая реализация Fastai seq2seq превосходит как основанную на шаблоне, так и базовую по всем параметрам. Напротив, увеличение данных не улучшает результаты на наборе для разработки.

На тестовом наборе базовая реализация Fastai seq2seq превосходит базовый уровень на Meteor и Rouge. Жадный поиск с добавлением данных дает лучшие оценки Bleu, Nist и Rouge, чем без него, и превосходит базовый уровень для Bleu и Rouge.

Вот несколько примеров выходных данных (до «ретокенизации»), полученных с помощью seq2seq и жадного поиска:

Пример показывает, что не все значения атрибутов реализованы в выходном столбце: в строке 688 отсутствует цена, в строке 1211 отсутствует площадь. Также некоторые значения атрибутов реализованы неправильно: в строке 497 упоминается «высокий рейтинг клиента», когда рейтинг клиента во входных данных равен «1 из 5».

К сожалению, выполнение поиска луча с переранжированием с использованием нашего классификатора не улучшило результаты. На самом деле, это сделало их хуже. Применение классификатора ко всем жадным результатам набора для разработки показывает, что более 93% выходных данных достигают 100% точности, а 67% достигают 100% полноты. Учитывая, что многие целевые тексты не вербализуют все выходные данные, это может объяснить, почему улучшение запоминания может не иметь большого влияния на производительность. Кроме того, вербализация всего контента имеет тенденцию удлинять тексты, что также может негативно сказаться на производительности.

Последние слова

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

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

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

Наконец, немного честности. Я провел много времени, пробуя разные варианты, чтобы добиться лучших результатов, например:

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

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