Как использовать Microsoft LUIS с Bot Framework Composer

Вот простое руководство, которое поможет вам начать работу с NLU

Введение

Как мы можем интегрировать Composer с LUIS…

Во-первых, мы собираемся запустить Composer локально на моей машине и подключиться к LUIS в облаке. Конфигурации NLU, которые мы создаем в Composer, будут развернуты в учетной записи LUIS. Что такое LUIS?

Понимание языка (LUIS) - это облачная служба API, которая применяет настраиваемые интеллектуальные данные машинного обучения к диалоговому тексту на естественном языке пользователя, чтобы предсказать общее значение и извлечь релевантную подробную информацию.

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

Кроме того, Composer - это инструмент от Microsoft, который позволяет графически создавать диалоговые приложения; с языковыми поколениями, государственным управлением и точками интеграции.

Настроить Composer Recognizer

В Composer вы можете настроить три типа распознавателей:

  • Нет (конечно)
  • Обычные выражения
  • ЛУИС

Следует отметить, что регулярные выражения очень эффективны и удобны.

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

Вы увидите, что в тот момент, когда мы выберем LUIS, появится текстовый редактор.

В этом текстовом редакторе определяются намерения и сущности, которые будут загружены в LUIS в облаке.

Формат файла очень упрощен, и редактор предупреждает вас о синтаксических ошибках.

Каждый раз, когда требуется изменение, вы можете обновить файл конфигурации LUIS, и изменения будут развернуты в LUIS. Успешное развертывание можно проверить, войдя в LUIS.

Формат файла LUIS

Эта простая демонстрация охватывает все аспекты, которые вам потребуются. Эту демонстрацию можно легко встроить в более крупное приложение.

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

# BookFlight
- I want to book a flight
- I need to book a flight
- book a flight for me please
#FlightDetail
- My family and I want to go on holiday to {toCity=Seattle}
- We are thinking of traveling to {toCity=Denver}
- Our destination will be {toCity=Milan} for our holiday
- We want to visit {toCity=Lisbon} 
- On our trip our first stop will be at {toCity=Lisbon}
- We want to travel to {toCity=Lisbon}

В файле есть два намерения: BookFlight и FlightDetail.

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

В намерении FlightDetail определены сущности. Есть только одна сущность типа toCity. Цель состоит в том, чтобы запечатлеть название города, который будет местом назначения путешествия.

Об этих сущностях необходимо отметить три вещи:

  • Нет справочного списка или справочной таблицы, это действительно контекстные сущности.
  • Значение и положение объекта определяется контекстом, в котором объект появляется в предложении.
  • Машинное обучение используется LUIS для определения сущностей и процесса их определения.

Диалог приветствия

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

При этом всегда автоматически создается диалоговое окно Приветствие. Все, что нам нужно сделать, это добавить диалоговый узел Отправить ответ. Этот узел представит пользователю сообщение: Добро пожаловать в бот для путешествий!

Это диалог Приветствие после того, как мы добавили приветствие. Текст вводится во вкладке свойств справа.

Диалог путешествия с интеграцией NLU

Принцип работы Composer заключается в том, чтобы иметь разные диалоги для разных разделов вашего приложения. У нас будет только одно диалоговое окно, называемое перелетом книги. Это диалоговое окно будет вызвано, когда будет выполнено намерение #BookFlight.

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

I want to book a flight
- I need to book a flight
- book a flight for me please

… Этот диалог будет вызван.

В диалоговом окне пользователя просят указать город назначения. Название города фиксируется в переменной dialog.city, и мы извлекаем объект toCity.

Развертывание приложений

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

Чтобы развернуть приложение из Composer, щелкните Start Bot, разрешите процессу запускаться от публикации до перезагрузки до состояния Test In Emulator.

После развертывания в composer проверьте еще раз в luis.ai, отображается ли новое диалоговое приложение. Вы можете щелкнуть имя приложения, чтобы просмотреть намерения и объекты, перенесенные в среду LUIS.

Другие статьи о Microsoft Bot Framework Composer & Emulator









Эмулятор Bot Framework

Чтобы протестировать своего бота, вам потребуется установить эмулятор Bot Framework. Это легкий тестовый интерфейс или чат-клиент, если хотите.



В composer нажмите Test in Emulator, а затем нажмите «Да», чтобы запустить эмулятор.

И вот наш разговор с сущностью toCity, извлеченной и представленной изолированно, как мы и планировали.

В эмуляторе доступны полные трассировки разговоров. Возвращаемые значения LUIS также видны в эмуляторе.

Это помогает, когда Composer, возможно, не представляет правильную информацию, и вы хотите определить, связана ли проблема с LUIS или Composer.

Бронирование и наблюдения

Только намерения

Для более крупного диалогового агента у вас всегда будет несколько диалогов. Определение намерений для каждого из диалогов - хороший способ отправить вашего пользователя в определенное путешествие внутри чат-бота.

Особенно, если чат-бот ориентирован на задачи, и пользователю нужно переходить из состояния в состояние.

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

Составные сущности

Скорее всего, у одного намерения будет два или более объекта. LUIS имеет возможность обнаруживать и идентифицировать эти составные или множественные объекты для каждого высказывания пользователя полностью контекстно.

I would like to take a bus from
{From_City=Madrid} 
to 
To_City=Lisbon}
tomorrow.

Мне было трудно сделать это в Composer, и, учитывая все обстоятельства, я чувствую соблазн получить доступ к LUIS из Composer с помощью вызова API просто для большей гибкости и контроля.

Вложенные сущности

Развивая идею составных сущностей еще дальше, в LUIS вы можете определять вложенные сущности в одном предложении.

I would like to take a 
{Travel Detail={Mode=bus}} 
from 
{Travel Detail={City={From City=Madrid}}} 
to 
{Travel Detail={City={To City=Lisbon}}} 
{Travel Detail={Time Frame=tomorrow}}

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

Мне еще предстоит увидеть, как Composer примет это.

Фрагментированная модель NLU

Если клиент Composer отправит конфигурации NLU в LUIS.ai, это может привести к фрагментированной структуре LUIS. У вас будет несколько небольших приложений, которые будут постоянно обновляться по мере развертывания приложений Composer. Изменения в LUIS не распространяются.

Обучение модели NLU

Управление и обучение единой модели NLU в LUIS имеет преимущества, а функциональное распространение NLU от LUIS до приложений и клиентов, а не наоборот, имеет больше смысла.

Инструменты LUIS

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

Сложности можно легко решить и просто представить через API.

Composer может отвлекать от этого, поскольку видимость и функциональность LUIS в Composer кажутся рудиментарными по сравнению с тем, что доступно.

Вывод

Одно можно сказать наверняка: Microsoft следует многостороннему подходу к решению проблемы разговорного ИИ. Очевидно, что с LUIS, Bot Framework, Power Virtual Agents и Composer их арсенал растет.

Когда дело доходит до разработки чат-бота, Microsoft допускает высокоуровневую конфигурацию, графический интерфейс, а также собственный код.