Как спроектировать бота LUIS с разрешением «Сделал ли ты» и «Неоднозначность»? - PullRequest
0 голосов
/ 21 июня 2019

В целях демонстрации предположим, что у нас есть типичный бот Бронирование билетов , где пользователь может сказать «забронировать рейс из Лондона в JFK».Или просто укажите только пункт отправления / назначения, и бот запросит оставшиеся детали.

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

Предположим, что:

  • Для внешнего API требуется трехбуквенный код аэропорта.
  • У нас есть список основных данных всех аэропортов (скажем,1000), с кодом / длинным текстом (пары ключ / значение).Давайте предположим, что оно медленно меняется, и рассмотрим его как статическое:
+------+----------------------------------------+
| Code |                LongText                | User might say:
+------+----------------------------------------+
| LCY  | London City Airport                    | london, london city,...
| LHR  | Heathrow Airport                       | london, heatrow,...
| LGW  | Gatwick Airport                        | london, gatwick,...
| JFK  | John F. Kennedy International Airport  | new york, NY, nyc, jfk,...
| LGA  | LaGuardia Airport                      | ny, la guardia,...
| EWR  | Newark International Airport           | newyork, newark, new ark,...
+------+----------------------------------------+

Как мы структурируем приложение модели / бота LUIS, поддерживающее этот сценарий?

Мы почти никогда не можем ожидать, что пользователь знает код или вводит точный LongText.Конечно, мы можем создать список ограниченных синонимов, которые могут использовать пользователи, но он никогда не будет полным.Они могут использовать связанные синонимы или иметь орфографические ошибки.Иногда синоним не дает уникального соответствия.

Я обнаружил следующие недостатки в LUIS:

  • Список объектов предоставляет список с фиксированной длиной и может выводить код аэропорта (если используетсякак нормализованное значение).Но требует, чтобы синонимы были ТОЧНО сопоставлены.
  • Простые сущности обеспечивают приблизительное сопоставление и обучение, но не могут сопоставить сопоставляемую сущность с нормализованным значением (Код).

Я быПредпочитаю, чтобы бот отвечал «Вы имели в виду ...» или «Я нашел несколько совпадений, пожалуйста, выберите ...», когда это необходимо.

Наконец, важно, чтобы дополнительный (водопад)) диалог обеспечивает тот же опыт конечного пользователя.Можем ли мы повторно использовать модель LUIS для обеспечения согласованности?

...