"Искусственный интеллект"

Как использовать трансформаторы для автоматического создания историй в Rasa

Введение

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

Код для воспроизведения результатов в этой статье находится здесь.

Постановка задачи

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

Вопросы, на которые необходимо ответить:

  1. Каким образом клиент может попросить о переводе денег?
  2. Как бот должен отвечать на сообщения клиента?
  3. Какие потоки разговоров необходимо поддерживать?

Ответы на вышеперечисленные вопросы обычно выполняет Дизайнер разговоров / Копирайтер. Если вы только начинаете создавать бота, маловероятно, что у вашей команды есть такой ресурс, что вы можете сделать?

Распространенный подход - проконсультироваться с заинтересованными сторонами вашего проекта и спросить их, что они хотели бы видеть развернутым. Проблема в том, что их воображение может разыграться, и в итоге вы создадите особенности и потоки разговоров, которые почти не используются на практике. Например, они могут настаивать на том, чтобы бот должен распознавать суммы переводов, написанные словами, например «Я хочу передать две тысячи пятьсот долларов».

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

Решение

Обзор

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

Этого должно хватить для начальной загрузки вашего бота.

Выполнение

Для этого в Rasa мы можем реализовать собственный Сервер NLG. На этом сервере будет размещена языковая модель, которая будет генерировать ответы на основе ввода пользователя и предыдущих ходов разговора.

Реализуем собственный NLG-сервер с помощью библиотеки FastAPI.

Основываясь на документации сервера NLG Rasa, тело запроса к серверу NLG можно смоделировать следующим образом:

и ответ сервера NLG:

В этой статье мы будем использовать конвейерную функцию библиотеки трансформеров для генерации ответов. Мы будем использовать модель blenderbot-3B от Facebook.

Вот как определяется конвейер:

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

Наконец, нам нужно определить конечную точку, которая будет возвращать ответ. Назовем эту конечную точку nlg:

Пример разговора

Теперь мы готовы поговорить с ботом.

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

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

Преобразовать эти разговоры в формат обучающей или тестовой истории, который ожидает раса, легко с помощью Rasa X.

Следующие шаги

Тонкая настройка разговоров, связанных с доменом

Ответы бота на рисунках 7 и 8, безусловно, звучат по-человечески и дружелюбно, но не кажутся правильными с учетом поставленной задачи, то есть клиента, желающего перевести деньги. Например, бот должен был спросить, сколько денег клиент хочет перевести во время разговора, показанного на рисунке 7.

Это неудивительно, учитывая наборы данных, используемые для обучения и точной настройки модели (см. Раздел 6 Документа по Blenderbot).

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

Автоматическое создание пользовательских сообщений

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

Вывод

В этой статье рассказывается об автоматической генерации обучающих и тестовых историй для обучения и оценки бота rasa.

Дайте мне знать в комментариях, что вы думаете.