Не допускайте, чтобы Luis.ai распознавал «a» или «the» как объекты - PullRequest
1 голос
/ 20 апреля 2020

Я создаю сущность pattern.any и намерение, подобное этому:

I want to run [salesforce] bot
I want to run [facebook] bot

Я называю свою сущность "BotName", а намерение "BotRun"

Это работает нормально, однако, это сбивает с толку сущность, когда пользователь вводит 'a' или 'the', например:

I want to run a bot
I want to run the bot

В этом случае Луис все равно распознает их как сущности.

Есть ли я в любом случае могу «исключить» определенные слова, такие как «а» или «то»? Или есть другой способ решить эту проблему?

1 Ответ

1 голос
/ 20 апреля 2020

Нет, вы не можете этого сделать. Я несколько раз пытался создать желаемый тип исключения. Но методы не работают. Вы можете сказать LUIS игнорировать слова, используя скобки [], но это не работает так, как вы ожидаете. Например,

    `run [a] [the] {BotName} bot`

теоретически должно игнорировать эти слова, но на самом деле "a" и "the" все равно будут распознаваться как сущность.

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

    `run (a|the) {BotName} bot`

, для которого перед именем бота потребуется «a» или «the». Шаблоны LUIS намного лучше справляются с этим. В этом случае он не будет идентифицировать «a» или «the» как сущности для фразы, например «Run the bot», но также не будет распознавать намерение (если вы отдельно не добавите «run the bot» к вашему не шаблону). список высказываний). Далее, «Run facebook bot» также не распознается, что не идеально. Тем не менее, я думаю, что можно потребовать немного больше полной фразы, особенно если вы полагаетесь на это извлечение сущности. «Запускать бота в фейсбуке» гораздо естественнее. Кстати, этот шаблон также будет правильно распознавать более длинные фразы, такие как «Я хочу запустить бот Facebook» или «Можете ли вы запустить бот Facebook?»

Вы можете добавить дополнительные фразы для обработки других случаев, но вы не может использовать ту же фразу с меньшей детализацией. Например, если вы сохраните простой шаблон run {BotName} bot, он переопределит более конкретный шаблон c, и вы вернетесь go к выбору «a» и «the» в качестве имен ботов (эти шаблоны работают независимо) .

Вы можете выполнить проверку сущности и проигнорировать ее, если это "a" или "the", но учет всех случаев случайных слов, которые может использовать пользователь, вероятно, такой же ручной, как и учет имена ботов сами по себе.

Я остановился на очень специфических c шаблонах, в которых очень мало шансов на добавление дополнительных слов. Я добавляю более общие высказывания непосредственно к цели. Я почти всегда делаю диалоги, так что я просто проверяю и вижу, найдено ли высказывание, а если нет, то запрашиваю его. Вы рискуете расстроить пользователей, если они напишут что-то вроде «Запустить моего бота в Facebook», которое не распознает сущность, но на самом деле альтернативой является то, что вы используете сущность списка, которая может быть неосуществима в зависимости от количества возможных значений для сущность.

...