Выбор правильной архитектуры чат-бота

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

Чат-бот - это не новая концепция, первый чат-бот был разработан в 1960-х годах, но в настоящее время у нас есть чат-боты на нескольких платформах через Интернет. Эти чат-боты настроены для достижения какой-то цели или для здорового разговора для развлечения. Благодаря устройствам IOT у нас теперь есть эти чат-боты, работающие независимо на устройствах в ресторанах, банках, торговых центрах и т.д. С другой стороны, эти чат-боты доказали, что повысили вовлеченность пользователей на веб-сайт, потому что общение с чат-ботом более интерактивное, чем нажатие на кнопки.

Если вы хотите разработать чат-бота, исходя из удобства использования и контекста бизнес-операций, архитектура, задействованная в создании чат-бота, кардинально меняется. Мы не можем написать сопоставление строк и условные операции для всех типов чат-ботов. Следовательно, архитектура чат-бота - это сердце разработки чат-ботов.

В зависимости от варианта использования существует два основных типа чат-ботов:

  1. Чат-бот для развлечений
  2. Чат-бот для бизнеса

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

Чего ожидать от окончательного продукта чат-бота?

Ответы чат-бота на сообщения пользователей должны быть достаточно подходящими для продолжения разговора. Иногда чат-боту не обязательно понимать и запоминать все детали предложения; исходя из требований, нам нужно изменить разные части / элементы и использовать другие; но основной коммуникационный поток остается прежним. Однако выбор правильной архитектуры зависит от типа домена чат-бота.

Иногда в развлекательных чат-ботах архитектура варьируется, где вы либо используете сопоставление шаблонов для пользовательского ввода, либо сохраняете историю разговоров, чтобы получить представление и выбрать тип ответа. Цель развлекательных ботов - увеличить среднее время, затрачиваемое пользователем на общение с ботом. Если время меньше, это означает, что разговор короче; следовательно, чат-бот утомителен.

Чат-боты для бизнеса часто являются самыми популярными и обслуживают транзакционные запросы, то есть они создаются для определенной цели или для достижения определенной цели. Разработчик чат-бота должен иметь первоочередное значение, чтобы цель была зафиксирована и определена заранее. Под определением я подразумеваю, что перед фактической разработкой чат-бота необходимо иметь фиксированное количество требований. Например, чат-бот для путешествий предоставляет информацию о рейсах, отелях и турах и помогает найти лучший пакет в соответствии с критериями пользователя и может соответственно выполнять бронирование. Кроме того, Google Assistant с готовностью предоставляет информацию, запрошенную пользователем, а бот Uber принимает запрос на поездку.

Разговоры для бизнес-чат-ботов обычно короткие, менее 15 минут. У каждого разговора есть конкретная цель, и качество чат-бота может зависеть от того, сколько пользователей достигло цели, например:

  1. Нашел ли пользователь информацию, которую искал?
  2. Успешно ли пользователь забронировал рейс и гостиницу?
  3. Купил ли пользователь продукты, которые помогают решить возникшую проблему?

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

PS: Любители муравьев не обижены. :п

Намерение - Контекст

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

Например, если мы создаем чат-бота, у которого есть возможность устанавливать будильник. Затем класс намерений определяется как ALARM_SET, и пользователь может выразить этот запрос сотнями способов, например: «Установить будильник на 10 утра», «Разбудить меня в 10 утра» или «Напомнить мне, когда будет 10 утра» и т. Д. пользователь задает запрос, подпадающий под эту категорию, тогда намерением является ALARM_SET, и чат-бот генерирует ответ соответственно.

Точно так же Контекст - это сущность реального мира, вокруг которой происходит разговор. Другими словами, для запроса о намерениях требуется сущность для обработки и генерации ответа. Как и в приведенном выше примере, «10 утра» - это контекст, в котором мы должны установить будильник. Теперь представьте, что мы создаем чат-бота для передачи знаний от имени страховой компании. Предположим, что одним из классов намерений является ПРОФЕССИОНАЛЬНЫЙ, поэтому всякий раз, когда пользователь может спросить «Расскажите мне о пенсионном плане» или «Что такое пенсионный план» и т. Д., Так что здесь « пенсионный план »- это контекст. Следовательно, именно таким образом и спроектировано большинство чат-ботов. Запомните эту терминологию наизусть.

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

Подход, основанный на шаблонах

Это самый простой способ создать чат-бота, также известный как чат-бот на основе правил. С таким подходом можно создать как развлекательный, так и деловой чат-бота. Используемая техника проста, вам просто нужно указать возможный вопрос ввода, который задаст пользователь, и связанный с ним ответ. См. Схему ниже:

‹context›

‹pattern› Какое ваше ИМЯ ‹/pattern›

‹template› Меня зовут $ (‘QUERY_RESULT’) ‹/template›

‹/context›

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

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

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

Архитектура классификации намерений

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

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

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

Такой алгоритм машинного обучения может быть построен с использованием любой популярной библиотеки машинного обучения, такой как Sci-kit learn, Tensorflow или PyTorch. Другой вариант - использовать один из облачных API: wit.ai, api.ai, Microsoft LUIS.

Формирование ответа

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

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

В: Сколько лет Обаме?

A: Возраст $ ("Объект") равен $ ("Результат запроса")

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

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

Эта концепция генерации ответов на основе пользовательского сообщения также называется моделированием ответов. Есть два основных типа моделирования:

1) Генеративное моделирование

2) Моделирование на основе извлечения

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

Модель генеративного отклика - это будущее чат-ботов, в котором результат зависит не только от текущего ввода, но и от ряда данных, полученных в прошлом. Я напишу отдельный пост о модели генеративного ответа, но пока это выходит за рамки этого поста. Тем не менее, 90% чат-ботов на рынке сегодня построены с использованием моделирования на основе поиска из-за его огромных возможностей и способности решать максимум проблем и упрощать жизнь людям.

Заключение

Поскольку рынок чат-ботов растет экспоненциально. Рождается новый способ взаимодействия. Благодаря IOT и глубокому обучению у нас теперь есть огромное количество возможностей, которые ждут нас, чтобы победить, от преобразования речи в текст до онлайн-службы поддержки и компаньона, такого как alexa. Я занимаюсь разработкой чат-ботов довольно давно, и могу заверить вас, что разработка и проектирование одного из них - это очень весело. Я буду продолжать делиться более глубокими и футуристическими возможностями чат-ботов. Спасибо, что прочитали, нажмите «хлопать», если вам это нравится; и для любых обсуждений / сомнений или проектов чат-ботов-фрилансеров вы можете связаться со мной по адресу [email protected]. А до тех пор счастливого обучения!