将Alexa引导至特定的槽值响应

我在Amazon开发人员控制台中定义了一个自定义插槽types,该插槽包含一个名称列表,如下所示。

homer simpson ned flanders principal skinner comic book guy 

然后我定义了如下的示例语句。

 PlayAudio to play {Name} 

所以最后,我希望用户能够说出类似于下面的内容:

Alexa,请辛普森玩辛普森

Alexa,请辛普森玩ned佛兰德斯

Alexa,请辛普森玩主要皮肤

Alexa,请辛普森玩漫画书的家伙

当然,Alexa很有可能会错误地听到这个名字,所以我需要能够尽可能匹配听到的名字。

我该如何去做这件事,我是否必须在函数中编写代码,还是有更好的方法?

当使用自定义插槽时,Alexa有可能会提供一个不在列表中的值。 随着列表大小的增加,这会变得特别有问题。 Tombuild议使用Betatestingfunction可以提供帮助,但是您将无法捕捉所有问题,最终也无法扩展。

我发现要完全确保你从列表中获得价值的唯一方法是在技能中列出完整的列表并且每次都检查它。 为了检查,确切的匹配并不总是最好的select,我已经尝试了两种方法:

  • string编辑距离函数:当使用者可能说不完整的话语或向列表中的话语添加单词时,工作得很好。 检查: https : //en.wikipedia.org/wiki/Edit_distance
  • 声学/语音:相对容易实施可能更好地识别外来词或专有名称。 您可以预处理您的列表以进行快速比较。 检查: https : //en.wikipedia.org/wiki/Soundex

你是对的,那么Alexa很可能会错误地听到这个名字。“ 我的解决scheme是与人类testing人员进行一系列试验和错误,以发现常见的错误解释,然后针对这些错误进行硬编码修复。

所以我让一个testing人员说出不同的名字并logging下他们所说的内容。 然后我看看Alexa给我什么插槽价值,哪里有差异,我添加一个硬编码的替代我的技能。