Регулярные выражения по-прежнему полезны для чат-ботов

Использование регулярных выражений с 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 и предоставления пользователям доступа к интерфейсу чат-бота.

Эта среда также эффективна для прототипирования и создания демонстраций.

Читать далее…