意图样本话语(训练短语)结构 - 哪个最好?

Intent sample utterance (training phrase) structure - which is best?

3/28/19 更新:Google 的 Nick 在 DialogFlow 方面的回答做得很好。如果也能从 ASK 团队得到答案,那就太好了!


我们有一个语音应用程序可作为 Alexa 技能和 Google 操作(使用 DialogFlow)。对于 ASK 和 DialogFlow,我们的意图示例话语/训练短语结构为:

前导载体短语 {主槽} 尾随短语

有很多前导短语和很多尾随短语。短语很短。这些词组最多有6个词,大多数有3个词。并非所有示例话语都具有前导短语和尾随短语。这些组合有 100 多个样本话语。

我想知道我们是否应该为{leading phrase} 和{trailing phrase} 创建新的槽值。然后用当前样本话语中的相应短语填充它们中的每一个。然后把sample utterances从现在的100+改成只有这4个:

{主广告位}

{前导短语} {主要位置}

{主槽} {尾随短语}

{前导短语} {主槽} {尾随短语}

我认为我们会通过这种方式获得更好的日志记录,而且看起来更干净。但我对此很紧张。对两个平台进行此更改对 NLU 准确性的预期影响是什么?更好的?更差? ASK 对此的最佳实践建议是什么? DialogFlow 的最佳实践建议是什么?


@尼克- 感谢您在下面的回答。让我解释一下,看看我是否理解 - 如果实体被独占使用,影响是:

1) 如果用户说出与已知实体组合完全匹配的内容,则识别效果会更好。

2) 如果用户说出的短语与已知实体不匹配,则与未使用实体时的相同情况相比,意图的匹配度不会那么高。这可能会导致未选择意向。

这是正确的吗?

我不确定话语与实体组合不完全匹配但很接近的情况。结果是(与不使用实体时相比)意图匹配的频率较低吗?也许你可以澄清你的说法 "If the user is going to prefix or suffix a phrase, and it's irrelevant, it will help Dialogflow's ML matching by fuzzy matching the intent based on similar phrases."

也许一个例子会有所帮助。让我们比较一下这两个训练短语:

'tell me about {main slot} with french fries'

{leading slot} {main slot} {trailing slot}

其中:

{主槽}包含'hamburger'

{leading slot} 包含 'tell me about' 但不包含 'tell us about'

{trailing slot} 包含 'with french fries'

现在假设用户话语是 "tell us about hamburger with french fries"。使用 slots/entities?

与此意图匹配的可能性更大还是更小?

如果您在实体中定义所有内容,它可以使它更准确,因为 Dialogflow 将实施一些偏差来识别正确的实体(或完全忽略此意图)。

然而,使用实体实际上只需要用于你真正感兴趣的词汇。如果用户要为短语添加前缀或后缀,而它是无关紧要的,这将有助于 Dialogflow 的 ML 通过模糊匹配根据相似的短语匹配意图。

根据您的问题,您似乎在某种程度上确实关心这些短语,因此使用实体可能是一个不错的选择,并且比 100 个单独的训练短语更容易维护。