3/28/19更新:Google的Nick在DialogFlow方面做了出色的回答。也可以从ASK团队那里获得答案!
我们有一个语音应用程序,既可以使用Alexa技能也可以使用Google Action(使用DialogFlow)。通过ASK和DialogFlow,我们的意图是使用以下示例话语/训练短语结构:
主要承运人短语 {主要时段} 尾随短语
有许多前导短语和许多尾随短语。短语简短。这些短语中最多包含6个单词,大多数包含3个单词。并非所有样本话语都有前导短语和尾随短语。这些组合有100多种样本话语。
我想知道我们是否应该创建{前导短语}和{尾随短语}的新广告位值。然后,使用样本话语中当前包含的各个短语填充每个短语。然后将样本发音从当前的100+更改为仅这4种:
{主插槽}
{前导词组} {主广告位}
{主广告位} {尾随短语}
{前导词组} {主广告位} {尾随词组}
我认为这样记录会更好,而且看起来更干净。但是我对此感到紧张。对两个平台进行此更改都会对NLU的准确性产生什么预期影响?更好?更差?关于ASK的最佳实践建议是什么? DialogFlow的最佳实践建议是什么?
@Nick- 感谢您下面的回答。让我解释一下,如果我理解的话-如果仅使用实体,会产生以下影响:
1)如果用户说出已知实体的完全匹配项,则识别效果会更好。
2)如果用户说出的短语与已知实体不匹配,则与不使用实体时的相同情况相比,意图不会被强烈匹配。这可能导致未选择意图。
这是正确的吗?
我不确定话语与实体的组合不完全匹配,但是很接近。结果(与不使用实体时相比)意图匹配的频率降低了吗?也许您可以澄清以下语句:“如果用户要给短语加上前缀或后缀,而这是不相关的,它将通过基于相似短语模糊匹配意图来帮助Dialogflow的ML匹配。”
也许一个例子会有所帮助。让我们比较一下这两个训练短语:
“用炸薯条告诉我有关{main slot}的信息
{前导槽} {主槽} {尾槽}
位置:
{主插槽}包含“汉堡”
{前导广告位}包含“告诉我”但不包含“告诉我们”
{trailing slot}包含“配炸薯条”
现在,让我们说用户的话语是“告诉我们汉堡包和炸薯条”。使用广告位/实体,这种意图的匹配或多或少地可能?
答案 0 :(得分:1)
如果您在实体中定义所有内容,由于Dialogflow将实施一些偏向来标识正确的实体(或完全忽略此意图),因此可以使其更加准确。
但是,使用实体实际上只需要用于您真正感兴趣的词汇。如果用户要给短语加上前缀或后缀,并且与单词无关,那么它将通过模糊匹配来帮助Dialogflow的ML匹配。基于相似短语的意图。
根据您的问题,似乎您实际上确实在某种程度上关心这些短语,因此使用实体可能是一个很好的选择,并且比100个单独的训练短语更容易维护。