Узнайте, как создать функционального диалогового чат-бота с DialoGPT, используя Huggingface Transformers

вступление

Разговорные системы или диалоговые системы вызвали огромный интерес в современном сообществе Обработка естественного языка (НЛП). Просто интересно наблюдать, насколько точно боты могут имитировать наши мысли, логику и эмоции, как показано на их языке. Сегодня мы знаем, что в наших смартфонах прямо у нас на ладони есть цифровые помощники, такие как Apple Siri, Google Assistant и Microsoft Cortana. Все они могут слушать язык пользователя и отвечать на него, хотя и не идеально.

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

Итак, без лишних слов, приступим!

Обзор учебного пособия

  • Шаг 1. Установите библиотеку
  • Шаг 2. Импортируйте библиотеку
  • Шаг 3. Создание диалогового конвейера
  • Шаг 4. Добавьте начальные разговоры
  • Шаг 5. Добавьте продолжающиеся беседы

Шаг 1. Установите библиотеку

Мы используем библиотеку Huggingface Transformers. Чтобы установить его, вы можете просто сделать:

pip install transformers

Убедитесь, что у вас есть рабочая версия Pytorch или Tensorflow, чтобы Transformers могли использовать одну из них в качестве бэкэнда.

Шаг 2. Импортируйте библиотеку

После установки Transformers пора импортировать его в скрипт Python. Вместо использования всей библиотеки Transformers мы представляем модуль pipeline, который в основном предоставляет очень простой API для выполнения множества задач NLP без необходимости понимания сложного кода. Мы также импортируем объект Conversation, который позже будем использовать для диалогового конвейера.

Чтобы импортировать их, вы можете:

from transformers import pipeline, Conversation

Шаг 3. Создание диалогового конвейера

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

conversational_pipeline = pipeline(“conversational”)

Эта строка кода настроит конвейер диалога с использованием DialoGPT в качестве модели, модели GPT2, обученной на наборе диалоговых данных.

Шаг 4. Добавьте начальные разговоры

Теперь мы можем поговорить с ботом! Во-первых, давайте начнем два разговора с ботом и попросим его дать рекомендации по фильму и его любимой книге:

Беседа 1. Давайте сегодня посмотрим фильм - есть рекомендации?

Диалог 2. Какая ваша любимая книга?

conv1_start = “Let’s watch a movie tonight — any recommendations?”
conv2_start = “What’s your favorite book?”

Затем мы строим два разговора, используя определенные переменные:

conv1 = Conversation(conv1_start)
conv2 = Conversation(conv2_start)

После этого мы помещаем оба разговора в список и затем передаем его в диалоговый конвейер:

conversational_pipeline([conv1, conv2])

Наконец, мы можем увидеть результаты каждого разговора, возвращаемые ботом:

[Идентификатор разговора: a9bae572-cc11–48c8-b36f-d88bcd49b8c0
пользователь ›› Давайте сегодня посмотрим фильм - есть рекомендации?
бот ›› Большой Лебовски,
Идентификатор разговора: e6ee2d97–5ee7–404b-b2e5–4dd527f9e9dd
user ›› Какая ваша любимая книга?
бот ›› Голодные игры]

Шаг 5. Добавьте продолжающиеся беседы

Мы можем продолжить общение с ботом, добавив новые пользовательские данные к предыдущим беседам, а затем снова обработать диалог.

Представьте, что мы хотим проследить за ботом, спросив, о чем фильм в разговоре 1 и о каком жанре книги в разговоре 2.

Разговор 1: О чем это?

Разговор 2: Круто, какой жанр книги?

conv1_next = “What is it about?”
conv2_next = “Cool, what is the genre of the book?”

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

conv1.add_user_input(conv1_next)
conv2.add_user_input(conv2_next)

После этого мы можем просто повторно использовать предыдущий код для обновления диалогового конвейера с новым набором диалогов:

conversational_pipeline([conv1, conv2])

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

[Идентификатор разговора: a9bae572-cc11–48c8-b36f-d88bcd49b8c0
пользователь ›› Давайте сегодня посмотрим фильм - есть рекомендации?
бот ›› Большой Лебовски
пользователь ›› О чем это?
бот ›› Это комедия о парне, который устраивается на работу в кинотеатр и устраивается сразу на несколько рабочих мест. ,
Идентификатор беседы: e6ee2d97–5ee7–404b-b2e5–4dd527f9e9dd
пользователь ›› Какая ваша любимая книга?
бот ›› Голодные игры
пользователь ›› Круто, какой жанр книги?
бот ›› Не знаю, но думаю, что это фантастика. ]

Вывод

И это все, что нужно для статьи! Надеюсь, вы узнали что-то полезное. В этом посте мы рассмотрели, как вы можете реализовать своего собственного диалогового бота, используя предварительно обученную модель, предоставленную Huggingface. Если вы его ищете, для вашего удобства я прикрепил Jupyter-версию всего кода ниже:

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











использованная литература

[1] Официальный сайт Apple Siri, Apple

[2] Официальный сайт Google Assistant, Google

[3] Официальный сайт Microsoft Cortana, Microsoft

[4] Трансформеры на Github, Huggingface

[5] Официальная документация трансформаторов, Huggingface

[6] Официальный сайт Pytorch, Facebook AI Research

[7] Официальный сайт Tensorflow, Google Brain

[8] Чжан, Ижэ и др. « Dialogpt: крупномасштабное генеративное предварительное обучение для генерации разговорного ответа препринт arXiv arXiv: 1911.00536 (2019).

[9] Рэдфорд, Алек и др. « Языковые модели - это многозадачные ученики без учителя Блог OpenAI 1.8 (2019): 9.