4 min read

Чат-бот (Chatbot)

Чат-бот (Chatbot)
Фото: Riccardo Chiarini / Unsplash

Чат-бот – виртуальный ассистент, позволяющий автоматизировать исполнение рутинных задач и снизить загруженность живых специалистов.С точки зрения Машинного обучения (ML), это реализация Модели (Model) Классификации (Classification), позволяющая автоматически определять намерения пользователей и передаваемые данные-переменные.

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

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

Итак, вы можете подумать: «Если у Обработки естественного языка (NLP) так много проблем, зачем кому-то инвестировать в чат-бота?» В какой-то степени вы правы. Даже такие гиганты, как Apple, Amazon и Google, часто терпят неудачу со своими диалоговыми интерфейсами. Похоже, что у машинного обучения еще нет ответа на подобные вопросы. Так зачем кому-то работать над чат-ботами по коммерческим причинам?

Siri путает просьбу о вызове скорой с изменением псевдонима пользователя

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

Возможности и проблемы с чат-ботами: куда целиться?

Как уже было сказано, до полного разговора с помощью машинного обучения нам еще далеко, однако боты по-прежнему полезны. Подумайте о Siri, Google Home и Alexa, которые являются очень популярными платформами для чат-ботов: хотя они и не идеальны, многие люди считают их очень хорошими продуктами.

Чат-боты также могут быть очень полезны для простых разговорных задач, таких как (базовая) поддержка клиентов, как более интеллектуальная поисковая система и многое другое.

А теперь вспомните, когда Вы в последний раз разговаривали с представителем службы поддержки, в тысячный раз объяснили ему свою проблему и получили ответ, который он повторял уже десять тысяч раз.
Есть много однообразных заданий, которые можно было бы заменить базовым навыком разговора с несколькими десятками / сотнями предписанных ответов.

Отсутствие способности решать проблему «разговорных навыков» требует от создателей чат-ботов творческого подхода и разработки цепочки задач, которые в сочетании с некоторыми бизнес-правилами и эвристикой поиска могут дать несколько полезных чат-ботов.

Парадигма намерений и сущностей

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

Хотя я не сказал об этом прямо, в чат-боте не обязательно есть NLP. Если на одном конце шкалы чат-бота находится «полноценный разговорный» бот, который обладает общими навыками, подобными человеческим, с другой стороны, есть детерминированный бот с предопределенным деревом разговоров (обычно глубиной в 3-4 уровня) на основе множества операторов.

Пример дерева разговоров в детерминированном боте

Начиная с этого базового механизма, NLP может быть полезно в следующих частях:

  • Пользовательский ввод / классификация вопросов
  • Лучшее распознавание слов / сущностей
  • Признание состояния (где мы находимся в дереве)
  • Генерация ответов

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

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

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

  • Поиск ресторана: пользователь ищет конкретный или список ресторанов.
  • Бронирование столика: пользователь хочет заказать столик в каком-нибудь ресторане.
  • Общий запрос: у пользователя есть конкретный запрос о ресторане, например, подходит ли он для веганов или является кошерным.

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

  • Кухня, например, итальянская, азиатская и т.д.
  • Расположение желаемого ресторана
  • Тип кухни, например, веганский, кошерный.

Классификация намерений

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

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

Точность такой модели зависит от различных параметров:

  • Количество намерений – среднее количество для одного приложения должно составлять 5–10 намерений. Меньшее количество намерений будет упрощенным, в то время как большее количество намерений повредит точности.
  • Объем и качество данных – все мы знаем, что, как и в любой задаче машинного обучения, чем больше у нас данных и чем ближе они к логическим запросам, тем лучше результаты.
  • Возможность переноса обучения – использование предварительно обученной модели для аналогичной проблемы может быть очень полезным, если доступно.
  • Размер вводимых сообщений: пользователи не склонны кратко запрашивать нашего бота. поэтому специализированные инструменты помогут нашему приложению повысить точность.

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

Сущность

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

Распознавание сущностей само по себе также является хорошо известной проблемой NLP, и это одна из раздражающих проблем: она очень сильно зависит от наборов данных и эвристики (например, заглавных букв, вопросительных знаков).Есть много библиотек, которые решают эту задачу, например, мой любимый spacy.Сравнить 48 конструкторов между собой позволяет платформа chatimize.com (ссылка на сравнительную таблицу):

Автор оригинальной статьи: Gidi Shperber