在我们的机器人中,我们有几个意图。在其中一个意图中,我们有以下示例话语:
I {injuryType} my {bodyPart}
所以它匹配像I broke my leg
这样的东西。
然后,在另一个意图中,我们有一个bodyPart
的插槽,带有以下示例话语:
I broke my {bodyPart}
我们遇到的问题是当用户被bodyPart
提示并且他说I broke my leg
时,而不是只填充插槽,它正在切换到另一个意图。
有没有办法表明插槽话语应该优先于意图话语?
不幸的是,我们没有办法明确强制Lex保持在插槽值匹配范围内,而不是尝试在意图级别匹配。
根据我对这个问题的经验(它发生了很多,所以这是一个恒定的平衡行为),当你处于意图时,插槽值确实优先于意图话语。使用良好的机器人结构(“意图模式”),当插槽值找不到完美匹配时,似乎只检查意图话语。但是,Lex可能每次都检查两次并简单地提供最佳匹配,在您的情况下,由于一个较少的变量,这将是意图话语。
我们实际上只有一种形式的控制,我们如何设置意图,话语,slotTypes和slotType值。
以下是一些建议:
我在#3方面最不成功,而在#1和#2方面最成功。
就像我说的那样,考虑到意图的结构,不同意图中可能的slotType值,输入匹配的任何重叠以及自然语言用户体验,它一直是一个恒定的平衡行为。你将不得不牺牲一些自由/结构,为另一个人提供更多的自由/结构。