Составные объекты и как они могут помочь вашему чат-боту
Создайте чат-бота с помощью Microsoft Bot Framework Composer и составных объектов
Введение
Несмотря на то, что большинство инструментов NLU сходятся на одних и тех же базовых принципах для сущностей и намерений, когда дело доходит до разработки диалога, используются различные подходы.
При создании конечного автомата или управлении узлами диалога на рынке чат-ботов в настоящее время используются четыре различных подхода для создания диалогов и управления ими.
- Дизайн Холст
- Конфигурация диалога
- Собственный код
- Истории ML
Bot Framework Composer относится к категории Конфигурация диалогов.
Святой Грааль - это иметь композитор или среду проектирования, в которой поток вызовов может быть разработан графически и одновременно создавать исполняемый код.
Или, по крайней мере, дизайн, который можно импортировать в платформу чат-бота и реализовать.
Это позволяет быстро развертывать возможности чат-ботов.
Общие проблемы, с которыми часто сталкиваются при использовании этого подхода:
- Сложные потоки практически невозможно приспособить
- Массивная избыточность
- Точная программная настройка не всегда возможна
- Трудно осуществить отступление
- Вложенные меню и диалоговые узлы трудно попасть
- Конечные путешествия часто приводят к обратному распространению
Что такое Bot Framework Composer
Компоновщик Bot Framework - это инструмент с открытым исходным кодом, основанный на SDK Bot Framework.
Ключевые аспекты включают:
- Панель визуального редактирования для потоков разговора
- В контексте редактирования для понимания языка (NLU)
- Инструменты для обучения, тестирования и управления пониманием языка (NLU) и компонентами QnA
- Система генерации языков и шаблонов
- Готовый к использованию исполняемый файл среды выполнения бота
Интеграция Composer с LUIS позволяет эффективно понимать естественный язык в диалоговом дизайне. В Composer можно определить файл .lu, который можно развернуть локально из Composer в LUIS в облаке.
Файл .lu содержит простые текстовые определения понятий LUIS, похожие на Markdown. Различные концепции, выраженные через формат файла .lu.
Одна из этих концепций - составные сущности.
Разложение сущности
Сущности с машинным обучением были представлены в LUIS в ноябре 2019 г. Декомпозиция сущностей важна как для прогнозирования намерений, так и для извлечения данных с помощью сущности.
Начнем с определения единой сущности, которая называется
- Информация о путешествии.
Внутри этой сущности мы определили три суб-сущности. Вы можете думать об этом как о вложенных объектах или подтипах. Определены три подтипа:
- Временные рамки
- Режим
- Город
Отсюда у нас есть подтип для City:
- Из города
- В город
Глядя на это изображение, становится ясно, как можно установить иерархию и ввести структуру в сущности.
Объединение композитора с составными объектами
Сначала нам нужно создать два диалога:
- Приветствие
- Путешествовать
Приветствие просто приветствует пользователя и ожидает ввода от пользователя. Это очень простой поток, изображенный ниже.
Отсюда мы можем создать второй диалог под названием Путешествие.
Этот диалог будет использоваться, чтобы проиллюстрировать, как диалог может быть вызван с примерами намерений.
Эти примеры намерений определяются в диалоговом окне.
Примеры сущностей также определены здесь через файл .lu.
Позже мы увидим, как при запуске бота через композитор конфигурации NLU отправляются в LUIS в облаке.
Инициирующие фразы (intent: #Travel) можно ввести в диалоговом окне Путешествие.
Вот пример высказываний, добавленных к намерению путешествия:
- I want to travel - We are thinking of traveling - We are planning a trip - Our family is looking at traveling - Shortly we will plan a vacation - We are planning our annual trip
В LUIS после развертывания из Composer это выглядит следующим образом.
Следующий шаг - запросить у пользователя планы путешествия, это высказывание будет содержать несколько сущностей, поэтому высказывание будет определяться сущностями, которые:
- Сложный
- Контекстуальный
- Композитный
Ниже представлен файл .lu, используемый для определения сущностей в Composer.
- # TravelInfo- {TravelDetail={TimeFrame=2 august}} we need to travel from {TravelDetail={City={FromCity=berlin}}} to {TravelDetail={City={ToCity=paris}}} by {TravelDetail={Mode=train}} - i would like to take a {TravelDetail={Mode=bus}} from {TravelDetail={City={FromCity=madrid}}} to {TravelDetail={City={ToCity=lisbon}}} {TravelDetail={timeframe=tomorrow}} - in {TravelDetail={timeframe=two weeks}} time i must travel by {TravelDetail={Mode=train}} from {TravelDetail={City={FromCity=athens}}} to {TravelDetail={City={ToCity=berlin}}} - {TravelDetail={timeframe=monday}} we need to take the {TravelDetail={Mode=train}} from {TravelDetail={City={FromCity=paris}}} to {TravelDetail={City={ToCity=rome}}} - on {TravelDetail={timeframe=3 august}} i am leaving {TravelDetail={City={FromCity=paris}}} for {TravelDetail={City={ToCity=lisbon}}} by {TravelDetail={Mode=train}} - {TravelDetail={timeframe=thursday}} i want to take a {TravelDetail={Mode=plane}} from {TravelDetail={City={FromCity=paris}}} to {TravelDetail={City={ToCity=amsterdam}}} - composite TravelDetail = [timeframe, ToCity, FromCity, Mode]
Если посмотреть на узел ввода пользователя, подсказка от чат-бота определяется в запросах бота, а на вкладке Пользователь ожидаемые ответы определяется с помощью файла .lu.
На этом этапе также можно извлечь значения.
И, наконец, в разговоре можно использовать различные параметры, извлеченные из пользовательского ввода.
- So you want to go to ${dialog.ToCity} from ${dialog.FromCity} by ${dialog.Mode} on ${dialog.timeframe}?
Тестирование вашего бота
Чат-бот инициализируется нажатием синей кнопки Запустить бот в правом верхнем углу. После инициализации бота нажмите Проверить в эмуляторе.
Эмулятор Bot Framework - это настольное приложение, которое позволяет разработчикам ботов тестировать и отлаживать своих ботов как локально, так и удаленно. Используя эмулятор, вы можете общаться со своим ботом и проверять сообщения, которые ваш бот отправляет и получает. Эмулятор отображает сообщения так, как они отображаются в пользовательском интерфейсе веб-чата, и регистрирует запросы и ответы JSON, когда вы обмениваетесь сообщениями с ботом. Перед развертыванием бота в облаке запустите его локально и протестируйте с помощью эмулятора. Вы можете протестировать своего бота с помощью эмулятора, даже если вы еще не создали его с помощью службы Azure Bot или настроили его для работы на любых каналах.
Эмулятор можно скачать здесь.
Из приведенного выше разговора очевидно, как объекты могут быть извлечены из контекста и представлены обратно в качестве подтверждения. Это делает разговор очень естественным и человечным.
Из-за составной природы объектов мы также могли выделить города и т. Д.
Результат взаимодействия LUIS доступен в эмуляторе бота для проверки. Это помогает при устранении неполадок определить, кроется ли проблема в результатах LUIS или Composer.
{ "recognizerResult": { "alteredText": null, "entities": { "City": [ "Bonn", "Berlin" ], "FromCity": [ "Bonn" ], "Mode": [ "train" ], "ToCity": [ "Berlin" ], "TravelDetail": [ "Thursday", "train", "Bonn", "Berlin" ], "timeframe": [ "thursday" ] }, "intents": { "TextInput_Response_USYSvV": { "score": 0.9555109 } }, "text": "On thursday we are taking the train from Bonn to Berlin" } }
Из этого файла JSON видно, что объект с именем TravelDetail имеет четыре значения:
- Четверг
- тренироваться
- Бонн
- Берлин
Города можно разделить на:
- Бонн
- Берлин
И Т. Д.
Вывод
Microsoft предлагает комплексный подход к чат-ботам в частности и к помощникам ИИ в целом. Когда дело доходит до сред NLU, LUIS является мировым лидером в области типов сущностей и структур данных с вспомогательными инструментами.
Добавьте возможности Azure, чтобы объединить LUIS с Bot Framework и
- собственный код,
- Композитор или
- Виртуальные агенты Power,
и у вас есть мощная диалоговая среда AI.
Эту среду можно дополнительно расширить с помощью когнитивных функций Azure.