Составные объекты и как они могут помочь вашему чат-боту

Создайте чат-бота с помощью 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.

Подробнее здесь: