Отличается умом и сообразительностью». Как правильно выбрать архитектуру чат-бота

Отличается умом и сообразительностью». Как правильно выбрать архитектуру чат-бота

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

Отличается умом и сообразительностью». Как правильно выбрать архитектуру чат-бота

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

Выбор правильной архитектуры зависит от области применения чат-бота. Цель развлекательных чат-ботов – увеличить среднее время, затрачиваемое пользователем на общение. В то же время бизнес-бот должен решать проблему пользователя за минимальное число вопросов-ответов. То есть максимизируется не время, а число успешных результатов за единицу времени.

Разговоры с бизнес-ботами обычно занимают не более 15 минут и имеют определенную цель. Тревел-чат-боты предоставляет информацию о рейсах, отелях и турах, помогают найти и сделать заказ в соответствии с критериями пользователя. Google Assistant находит информацию, Uber bot принимает заказы на перевозку.

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

Отличается умом и сообразительностью». Как правильно выбрать архитектуру чат-бота

При разработке бота сначала нужно определиться с намерениями пользователя, которые бот будет обрабатывать. Намерение (англ. intent) – это то, что хочет сделать пользователь. Выражение (англ. entity) – запрос, которым пользователь описывает намерение.

Пусть нужно создать чат-бота, c функцией будильника. Назовем класс для обработки этого намерения ALARM_SET . Пользователь может выразить намерение различными выражениями:

  • «Установить будильник на 10 утра»
  • «Разбуди меня в 10 утра»
  • «Включить напоминание, когда будет 10 утра»

Когда пользователь создает запрос, подпадающий под категорию, срабатывает ALARM_SET и чат-бот генерирует ответ.

Контекст – это сущность реального мира, вокруг которой крутится разговор. Для обработки и генерирования ответа в запросе должна быть сущность. В приведенном примере 10 утра – контекст, с которым работает будильник. Большинство чат-ботов спроектировано именно таким образом.

    (англ.) (англ.)

Отличается умом и сообразительностью». Как правильно выбрать архитектуру чат-бота

Самый простой способ создания бота – использование шаблонов, подход rule-based чат-ботов. Его суть – указать возможный входящий вопрос пользователя и связанный с ним ответ.

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

Пример шаблона на AIML. Тегом pattern обозначен запрос пользователя, тегом template – ответ бота.

Эвристика выбора правильного ответа может быть спроектирована различными способами – как классическим if-else , так и по модели машинного обучения.

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

    (англ.) (англ.)

Отличается умом и сообразительностью». Как правильно выбрать архитектуру чат-бота

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

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

Машинное обучение применяется совместно с алгоритмом классификации для поиска интентов в естественном языке. Такой алгоритм может быть построен с использованием библиотек машинного обучения, например scikit-learn, Keras (англ.), Tensorflow или PyTorch. Другой вариант – использовать один из облачных API: wit.ai, api.ai или Microsoft LUIS. Облачные API платные, но предоставляют готовый функционал, поэтому разработка будет быстрее и проще. Самостоятельная разработка сложнее и займет больше времени, но результат будет проще кастомизировать и расширять.

Отличается умом и сообразительностью». Как правильно выбрать архитектуру чат-бота

Сопоставление шаблонов, классификация намерений и извлечение контекста помогают понять сообщение пользователя. Теперь возникает вопрос: «Как сгенерировать ответ?»

Простейший способ – поместить некоторые значения в переменную, а потом обратиться в БД или к стороннему API.

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

Данная концепция генерации ответов на основе сообщений пользователей называется моделированием ответов. Существует два основных типа моделирования:

  1. Генеративное моделирование.
  2. Моделирование на основе поиска.

Моделирование на основе поиска проще строить, оно обеспечивает более предсказуемые результаты. При таком моделировании чат-бот использует интенты и контекст разговора для выбора наилучшего ответа из предопределенного статического списка сообщений. Такого бота можно создать с помощью библиотек TensorFlow (англ.) или NLTK (англ.).

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

Если вам интересны чат-боты, обратите внимание на другие наши публикации: