Регулярные выражения по-прежнему полезны для чат-ботов
Использование регулярных выражений с LUIS и Bot Framework Composer
Введение
Концепция была сформулирована в 1950-х годах американским математиком Стивеном Коулом Клини. Он формализовал описание регулярного языка.
Регулярное выражение (регулярное выражение) — это последовательность символов, определяемая шаблоном.
Регулярное выражение — это стандартный текстовый синтаксис, представляющий шаблон, которому мы хотим соответствовать в нашем тексте.
Определенную степень гибкости можно обеспечить с помощью подстановочных знаков.
Эта сущность подходит, если:
- Данные последовательно отформатированы с любой вариацией, которая также является согласованной.
- Регулярному выражению не требуется более 2 уровней вложенности.
Хороший способ подумать об использовании Regex в вашем чат-боте — это когда вы хотите извлечь сущность, имеющую ограниченный формат… Формат числа может быть очень постоянным, но с большими вариациями букв цифр.
Примеры таких номеров:
- Справочные номера
- Номера рейсов
- Справочные номера билетов и т. д.
Дополнительным преимуществом регулярных выражений является тот факт, что это легкий и компактный способ извлечения конкретной информации. Вам не нужно беспокоиться об обучающих примерах, контекстной осведомленности или конкретных намерениях.
Использование регулярных выражений в Composer и LUIS
В качестве практического примера рассмотрим объединение Microsoft Bot Framework Composer, интегрированного с LUIS.
Формат LUIS .lu можно отформатировать и определить в диалоговом окне Composer.
Composer проверяет формат .lu, указанный вами в Ожидаемых ответах.
После перезапуска бота конфигурация развертывается в LUIS в облаке.
Чтобы убедиться в этом, войдите в свои экземпляры LUIS и проверьте намерения и сущности. Ваши триггерные фразы будут перечислены под намерениями, а определенные регулярные выражения — под сущностями.
Вот простой поток вызовов, разработанный для этой демонстрации; диалоговое окно представляет себя и запрашивает номер рейса. Номер рейса должен начинаться с «hrf-», за которым следуют шесть цифр от нуля до девяти.
- \# Regex @ regex fnumber from, to = /hrf-[0-9]{6}/
Ввод пользователя после того, как бот задал вопрос, показан ниже…
Результат можно встроить в ответ диалога чат-бота:
- I have your flight number as ${dialog.fnumber}
Встраивание информации в диалог чат-бота важно для того, чтобы чат-бот чувствовал себя как в разговоре.
Тестирование нашего бота
Опять же, тестирование можно выполнить с помощью эмулятора Bot Framework. После изменений желательно перезапустить беседу. Эмулятор можно запустить из Composer, и если он установлен, он запустит экземпляр.
В эмуляторе диалог можно отладить, а часть интеграции с LUIS можно просмотреть. Это полезно для устранения неполадок и поиска проблем с интерпретацией и реагированием.
{ "recognizerResult": { "alteredText": null, "entities": { "fnumber": [ "hrf-340394" ] }, "intents": { "FlightDetail": { "score": 0.208026841 } }, "text": "my flight num is hrf-340394" } }
Это формат JSON, возвращаемый LUIS с определенными намерениями и объектами.
Вывод
LUIS — это гибкая среда для создания API-интерфейса NLU и его публикации… Впоследствии Composer является хорошей средой для создания диалога и последовательности конечного автомата для использования API-интерфейса NLU и предоставления пользователям доступа к интерфейсу чат-бота.
Эта среда также эффективна для прототипирования и создания демонстраций.