Как правильно обрабатывать намерения LUIS при поиске дополнительной информации на основе состояния разговора - PullRequest
0 голосов
/ 23 октября 2018

Используя Microsoft Bot Framework, у меня есть намерение LUIS, для которого требуется определенная информация, такая как местоположение и т. Д.

Если пользователь отправляет сообщение, которое получает правильное намерение, но отсутствует информация, но нуждается в разъясненииКаков наилучший способ справиться с этим?

Например, если пользователь отправляет сообщение типа «Что в Спрингфилде?»бот не сможет определить, о каком городе спрашивает пользователь (многие города с одинаковыми названиями, но в разных штатах).

Бот может определить наличие нескольких совпадений и просто потребовать от пользователяПовторите запрос со всей необходимой информацией (что делает каждый запрос в основном не имеющим состояния и неразборчивым), но кажется, что в идеале он может запомнить состояние и спросить «Какое состояние?»или «Вы имели в виду Миссури или Иллинойс?»

Проблема, конечно, в том, что, если пользователь отвечает только состоянием, какое намерение будет достигнуто при поступлении второго сообщения?

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

Или бот должен просто игнорировать второе намерение и использовать разговористория, чтобы попытаться выяснить, что это государственное название?Это кажется плохой практикой, которая тратит впустую звонок в LUIS.

Как мне кажется, как должен выглядеть разговор, но я не знаю, какой должна быть архитектура:

user: What do you have in Springfield?
<hits "stuff" intent>

bot: Did you mean Springfield in Missouri, or Springfield in Illinois?

user: I meant Illinois.
<what intent could this be?>

bot: Great, we have _______.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Это не должно быть намерением.Я бы пошел с логикой что-то вроде:

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

В зависимости от того, какие у вас сущности, если они ожидаются в других допустимых фразах, вы можете решить

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

Таким образом, если кто-то скажет: «На самом деле я хочу забронировать рейс в Иллинойс » - они не застрянут - ваш порог доверия следуетбыть намного выше, чем когда вы не ожидаете конкретного ответа, потому что вероятность того, что кто-то скажет, что в этом контексте ниже.

0 голосов
/ 23 октября 2018

Знаете ли вы, какие данные вы ожидаете от пользователя в зависимости от функции бота?это бот-гид?Если так, может быть, вам будет лучше, если вы соберете данные из первых рук пользователя, используя потоки форм

...