框架提供使用自定义插槽类型。但是,该机制是提供一组将被验证的值。但是我想要一个自定义验证器,例如检查输入是否在数据库中。
理想情况下,我希望开发一个AWS钩子,它接收输入参数,然后执行一些程序,返回格式良好的插槽类型,或者在输入无效时给出错误。有什么主意吗?
发布于 2017-05-18 20:18:01
AWS公开一个API来动态创建槽类型,并更新LEX。(见:PutSlotType.html和CreateSlotTypeVersion.html)
理论上,当数据库有更新时,您可以动态地更改此列表(不过,可能会遇到速率限制问题)。
然而,自定义插槽类型并没有像您认为的那样限制有效的响应:http://docs.aws.amazon.com/lex/latest/dg/gl-guidelines.html
具体而言,这一点:
注意以下有关Amazon如何从用户话语中捕获时隙值的信息: Amazon使用在槽类型定义中提供的枚举值来训练其机器学习模型。假设您使用以下示例语句定义了一个名为GetPredictionIntent的意图: “告诉我{符号}的预测” 其中{符号}是自定义类型ZodiacSign的槽。ZodiacSign有12个枚举值(白羊座通过双鱼座)。“告诉我.的预测.”亚马逊莱克斯明白,接下来的是一个生肖星座。 如果用户说“告诉我地球的预测”,Amazon推断“earth”可能是另一个ZodiacSign,并将其传递给您的实现活动。因此,您的实践活动必须验证时隙值。
换句话说,它似乎不是强制的枚举列表。
自定义槽类型不等同于枚举。如果口语理解系统识别,列表之外的值仍然可以返回。虽然自定义插槽类型的输入是按列表中的值加权的,但它不受限制仅限于列表中的项。在使用槽值时,您的代码仍然需要包括验证和错误检查。
因此,即使您确实动态地创建了这种自定义插槽类型,它也只会使输入向预定选项的方向倾斜。而不是限制在他们身上。
https://stackoverflow.com/questions/43842310
复制相似问题