К сожалению, у нас нет способа явно заставить Lex оставаться в пределах соответствия значений слотов и не пытаться сопоставлять на уровне намерений.
Из моего опыта с этой проблемой (это часто случается, так что это постоянный баланс), значения слотов do имеют приоритет над намеренными высказываниями, когда вы намерены. При хорошей структуре бота («намеренная схема») намеренные высказывания, кажется, проверяются только тогда, когда значение слота не находит идеального соответствия. Однако Lex может проверять оба раза и просто обеспечивать лучшее совпадение, которое в вашем случае будет намеренным высказыванием из-за одной меньшей переменной.
У нас действительно есть только одна форма контроля над этим, как мы устанавливаем значения намерений, высказываний, slotTypes и slotType.
Вот несколько предложений:
- Пересмотреть настройку намерений и найти возможности, когда два намерения слишком похожи и могут быть объединены в одно намерение.
- Оцените сходство между высказываниями и значениями slotType и просто удалите одно в пользу другого.
- Попробуйте усилить список значений slotType, например: "break", "broken", "broken", "тормоза" и т. Д. (Даже с ошибками)
Я был наименее успешным с # 3, и наиболее успешным с # 1 и # 2.
Как я уже сказал, это был постоянный балансный процесс, учитывающий структурирование намерений, возможные значения slotType в разных намерениях, любое совпадение совпадений ввода и опыт пользователя на естественном языке. Вам придется пожертвовать некоторой свободой / структурой в одной, чтобы дать больше свободы / структуры другой.