Узнайте, как создать функционального диалогового чат-бота с 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.