插槽话语优先于意图话语

Precedence of slot utterances over intent utterances

在我们的机器人中,我们有几个意图。在其中一个意图中,我们有以下样本话语:

I {injuryType} my {bodyPart}

所以它匹配 I broke my leg.

然后,在另一个意图中,我们有一个用于 bodyPart 的插槽,其中包含以下示例话语:

I broke my {bodyPart}

我们遇到的问题是,当用户收到 bodyPart 的提示并且他说 I broke my leg 时,它不是仅仅填充插槽,而是切换到另一个意图。

有没有一种方法可以指示插槽话语应优先于意图话语?

遗憾的是,我们没有办法明确强制 Lex 保持在插槽值匹配内,而不尝试在意图级别进行匹配。

根据我在这个问题上的经验(它经常发生,所以这是一个持续的平衡行为),槽值 do 在您处于意图。使用良好的机器人结构 ("intent schema"),似乎只有当插槽值未找到完美匹配时才会检查意图表达。但是,Lex 可能 每次都检查并简单地提供最佳匹配,在您的情况下 是意图话语,因为变量较少。

我们实际上只有一种控制方式,即我们如何设置意图、话语、slotType 和 slotType 值。

这里有一些建议:

  1. 重新考虑意图的设置并寻找两个意图过于相似并且可以合并为一个意图的可能性。
  2. 评估话语和 slotType 值之间的相似性,并简单地删除一个以支持另一个。
  3. 尝试加强slotType取值列表如:"break"、"broke"、"broken"、"braked"等(甚至拼写错误)

我在#3 上最不成功,在#1 和#2 上最成功。

就像我说的,考虑到意图的结构、不同意图中可能的 slotType 值、输入匹配的任何重叠以及自然语言用户体验,这一直是一个持续的平衡行为。你将不得不牺牲一些 freedom/structure 来给另一个 freedom/structure。