4

我正在构建一个需要能够处理问题答案的 Alexa 应用程序。我有一个SkipIntent意图,其中包含示例话语以跳过一个问题。

我想建立一个AnswerIntent可以接受任何答案并根据正确答案处理它们的答案。我尝试使用Amazon.LITERAL带有一些示例的类型(来自这个问题:How to accept the Free form text as input to Amazon Skill Kit?):

AnswerIntent {bottle|Answer}
AnswerIntent is it {bottle|Answer}
AnswerIntent is it a {bottle|Answer}
AnswerIntent is it an {bottle|Answer}
AnswerIntent a {bottle|Answer}
AnswerIntent an {bottle|Answer}
AnswerIntent {pillow|Answer}
AnswerIntent is it {pillow|Answer}
AnswerIntent is it a {pillow|Answer}
AnswerIntent is it an {pillow|Answer}
AnswerIntent a {pillow|Answer}
AnswerIntent an {pillow|Answer}

如果我在答案前加上“是它”或其他定义的前缀之一,这实际上有效,但它没有得到“仅答案”部分。它似乎与我SkipIntent的定义为:

SkipIntent i don't know
SkipIntent don't know
SkipIntent skip
SkipIntent i don't know that
SkipIntent who knows
SkipIntent i don't know this question
SkipIntent i don't know that one
SkipIntent dunno

我定义AnswerIntent正确吗?如果没有,有没有更好的方法来捕捉无限的可能性?亚马逊似乎不喜欢 LITERAL 方法,所以我愿意接受更好的方法。

4

2 回答 2

9

亚马逊的 Alexa 服务不是为听写而设计的。这是开发人员布道者的一致回应。因此,您将无法提供您想要的确切客户体验:能够自行接受任何类型的输入。

您通过“欺骗”它接受“通用插槽”来超越 Alexa 的设计规范。很多人都这样做了,但正如你所发现的那样,它永远不会表现良好。

具体来说,对于您的用例,单独尝试通用插槽特别糟糕。在内部,Alexa 使用交互模型来构建可能被识别的句子树。然后它获取输入声音,并将它们与树匹配。最终置信度最高的分支就是被选中的分支。

当您添加一个通用插槽时,您将一个节点添加到几乎匹配任何东西的树中,它与匹配特定值的分支竞争。例如,如果 Alexa 在“X”、“Y”和“ ”之间进行选择,它通常会选择“ ”。这就是为什么您自己的通用插槽会吞噬其他答案的原因。

如果您想要一种具有高质量性能的技能,您应该寻求一种不使用通用插槽的设计。例如,您可以在问答类型技能中使用多项选择。或者选择具有一组特定答案的问题,例如颜色或美国各州。

如果你只是做一个演示,那么,当然,使用通用插槽。你可以做足够多的镜头来让录音看起来不错。

于 2016-06-08T13:23:44.363 回答
1

截至 2017 年 1 月,亚马逊似乎又可以使用AMAZON.LITERAL插槽了:

根据开发人员的反馈,AMAZON.LITERAL 插槽并未如前所述被删除。您可以继续使用 AMAZON.LITERAL 提交新的和更新的英语(美国)技能。但是,在许多情况下,自定义槽类型比 AMAZON.LITERAL 提供更好的准确性,因此我们建议您尽可能考虑迁移到自定义槽类型。

资料来源:https ://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interaction-model-reference#literal

于 2017-05-04T11:19:18.120 回答