Чат-бот (Chatbot)
Чат-бот – виртуальный ассистент, позволяющий автоматизировать исполнение рутинных задач и снизить загруженность живых специалистов.С точки зрения Машинного обучения (ML), это реализация Модели (Model) Классификации (Classification), позволяющая автоматически определять намерения пользователей и передаваемые данные-переменные.
Наряду с остальными задачами, понимание текста является одной из главных задач в современном машинном обучении.
В то время как задачи с изображениями впечатляюще решаются одна за другой, текстовые немного отстают: действительно хороший разговорный навык, который требуется для правильного чат-бота, еще недостижим.
Итак, вы можете подумать: «Если у Обработки естественного языка (NLP) так много проблем, зачем кому-то инвестировать в чат-бота?» В какой-то степени вы правы. Даже такие гиганты, как Apple, Amazon и Google, часто терпят неудачу со своими диалоговыми интерфейсами. Похоже, что у машинного обучения еще нет ответа на подобные вопросы. Так зачем кому-то работать над чат-ботами по коммерческим причинам?

Причина в том, что хотя вы не можете сделать все идеально, но можете сделать что-то полезное. Например, вы не можете создать чат-бота, чтобы обсуждать смысл жизни, или бота, который помогал бы с некоторыми сложными проблемами, но вы определенно можете создать такого, что ответит на основные вопросы техподдержки интернет-провайдера.
Возможности и проблемы с чат-ботами: куда целиться?
Как уже было сказано, до полного разговора с помощью машинного обучения нам еще далеко, однако боты по-прежнему полезны. Подумайте о Siri, Google Home и Alexa, которые являются очень популярными платформами для чат-ботов: хотя они и не идеальны, многие люди считают их очень хорошими продуктами.
Чат-боты также могут быть очень полезны для простых разговорных задач, таких как (базовая) поддержка клиентов, как более интеллектуальная поисковая система и многое другое.
А теперь вспомните, когда Вы в последний раз разговаривали с представителем службы поддержки, в тысячный раз объяснили ему свою проблему и получили ответ, который он повторял уже десять тысяч раз.
Есть много однообразных заданий, которые можно было бы заменить базовым навыком разговора с несколькими десятками / сотнями предписанных ответов.
Отсутствие способности решать проблему «разговорных навыков» требует от создателей чат-ботов творческого подхода и разработки цепочки задач, которые в сочетании с некоторыми бизнес-правилами и эвристикой поиска могут дать несколько полезных чат-ботов.
Парадигма намерений и сущностей
Надеюсь, Вы сможете увидеть потенциал чат-ботов, несмотря на возможные недостатки. Теперь давайте обсудим, как его построить.
Хотя я не сказал об этом прямо, в чат-боте не обязательно есть NLP. Если на одном конце шкалы чат-бота находится «полноценный разговорный» бот, который обладает общими навыками, подобными человеческим, с другой стороны, есть детерминированный бот с предопределенным деревом разговоров (обычно глубиной в 3-4 уровня) на основе множества операторов.

Начиная с этого базового механизма, NLP может быть полезно в следующих частях:
- Пользовательский ввод / классификация вопросов
- Лучшее распознавание слов / сущностей
- Признание состояния (где мы находимся в дереве)
- Генерация ответов
Проведя небольшое исследование, я обнаружил, что хорошим вариантом является парадигма намерения и сущности, которая, как следует из ее названия, работает в два этапа: классификация намерений и распознавание сущностей.
Мы предполагаем, что знаем, где мы находимся в потоке разговора, и игнорируем состояние и генерируем соответствующие ответы. Эта парадигма облегчает проектирование и обучение ботов, но не технических специалистов, и используется в большинстве известных интерфейсов.
Давайте посмотрим на пример. Пример: бот для поиска ресторанов будет иметь следующие возможности:
- Поиск ресторана: пользователь ищет конкретный или список ресторанов.
- Бронирование столика: пользователь хочет заказать столик в каком-нибудь ресторане.
- Общий запрос: у пользователя есть конкретный запрос о ресторане, например, подходит ли он для веганов или является кошерным.
Кроме того, мы хотели бы найти в запросе пользователя следующие объекты, если они были упомянуты:
- Кухня, например, итальянская, азиатская и т.д.
- Расположение желаемого ресторана
- Тип кухни, например, веганский, кошерный.
Классификация намерений
В этой парадигме намерение означает общую цель пользовательского запроса, например, поиск компании или места, назначение встречи и т.д.
Бот должен классифицировать ваш запрос и действовать соответствующим образом (для поиска места, получения как можно более подробных сведений. Для настройки встречи, запроса сведений о встрече, сопровождающих и т.д.). Таким образом, легко увидеть, что это задача классификации простого текста.
Классификация текстов – это хорошо изученная задача машинного обучения, однако большая часть исследований проводится на мягких постановках задач, таких как анализ тональности. В реальных ситуациях у вас почти никогда не бывает менее 5 возможных намерений.
Точность такой модели зависит от различных параметров:
- Количество намерений – среднее количество для одного приложения должно составлять 5–10 намерений. Меньшее количество намерений будет упрощенным, в то время как большее количество намерений повредит точности.
- Объем и качество данных – все мы знаем, что, как и в любой задаче машинного обучения, чем больше у нас данных и чем ближе они к логическим запросам, тем лучше результаты.
- Возможность переноса обучения – использование предварительно обученной модели для аналогичной проблемы может быть очень полезным, если доступно.
- Размер вводимых сообщений: пользователи не склонны кратко запрашивать нашего бота. поэтому специализированные инструменты помогут нашему приложению повысить точность.
Если бы мы смогли «оптимизировать» вышеуказанные гиперпараметры, мы, как правило, смогли бы достичь около 80% точности без особых усилий и начнем стремиться к 90%, что является сложной задачей, но считается реальной. Результат ниже 80% приведет к разочарованию в продукте.
Сущность
Сущность в тексте может быть бизнесом, местоположением, именем человека, временем и т.д. Объект, который имеет значение в запросе и будет иметь дополнительное значение в логике бота.
Распознавание сущностей само по себе также является хорошо известной проблемой NLP, и это одна из раздражающих проблем: она очень сильно зависит от наборов данных и эвристики (например, заглавных букв, вопросительных знаков).Есть много библиотек, которые решают эту задачу, например, мой любимый spacy.Сравнить 48 конструкторов между собой позволяет платформа chatimize.com (ссылка на сравнительную таблицу):
Автор оригинальной статьи: Gidi Shperber