阅读时长:30min
阅读关键词:语音交互模型建立,Alexa,亚马逊开发者平台使用
阅读后,也许能get以下内容:
- 初步了解语音交互模型设计原则
- 了解语音交互模型要素
- 了解亚马逊Alexa开发平台概况
首先,强调一下我也是刚刚入门的菜鸟,所以目前的分享更多是参考Alexa,Google Assistant,Siri等开发者文档,以学习笔记的方式结合一些自己的思考来输出内容。期望更多的小伙伴能多多指教,一起学习,在CUI,VUI设计,语音Skill开发等方面继续前行。这个是亚马逊开发平台进行语音Skill开发的技术文档链接,感兴趣的小伙伴一起学习哇!Amazon开发者平台创建Alexa skill参考
如果想要在amazon平台上开发一个语音应用(skill),我们需要建立一个语音交互模型。
Amazon为开发者提供了两种方式来创建一个语音交互模型。一个是使用skill builder(beta)来定义意图(intents),槽位(slots),对话(dialog);另一个是用Json或者text自定义交互模型。前者对新手和缺乏编程经验的开发者比较友好,因为它集成了一个可视化的操作界面,直接根据提示依次输入意图,槽位,和对话,即可生成相应的代码,后者则需要自己根据kit调用相关的函数,编写程序来进行语音建模。下面两张图展现了两种方法不同的操作界面。在本篇博文中,主要给大家介绍一下语音交互模型的设计要素和基本建模步骤。
为了定义NLP能处理语音交互模型,我们需要将云上可处理的意图和用户的语句进行映射。为了完成映射,我们需要输入以下4类信息:
1 意图Intents:意图代表能实现用户语音需求的行动。意图很多时候会带有很多参数,称为槽位。
2 示例语句Sample utterances:关于某意图尽可能全的示例语句。
3 自定义槽位类型 Custom slot types:关于槽位可能值的代表性列表,当所使用的槽位并非亚马逊内置槽位类型时,需要罗列出个列表来。
4 对话模型 dialog model(非强制):当用户和skill间存在多轮对话时,需要建立对话模型来明确每一轮对话收集到的信息最终可以满足意图。
意图和槽位 Intents&Slots
意图代表能实现用户语音需求的行动。意图很多时候会带有很多关键词参数,称为槽位。
例如:一个旅行计划语音应用,意图定义为:旅行计划。而这个意图下包含3个槽位来使得应用可以帮助用户进行旅行计划,分别是:{出发城市},{到达城市},{旅行日期}。当用户说:
User: Alexa, ask Plan My Trip to plan a trip from Seattle to Portland on Friday.
这里会首先识别出plan a trip意图,然后掉用该意图函数,其中实现这个意图的功能需要获取槽位中的信息,触发槽位去识别需要的信息,经过相关功能函数处理后,返回给用户一个计划结果。
所以,从这个例子中我们看出,建立自然语言交互模型,最重要的就是明确意图和槽位。在亚马逊和包括Google都提供了很多内置的意图和槽位,不需要开发者再去定义意图函数,或者是槽位值,只需要引用内置意图和槽位即可。目前,亚马逊提供了25类145种内置意图,12种内置槽位。
Alexa槽位类型参考
Alexa内置意图参考
更多关于意图和槽位的详细介绍可以关注我之后的博文。
示例语句 Sample Utterance
每一个意图都需要对应尽量多的示例语句。示例语句需要通过一些特定词汇短语来触发意图功能函数,例如有槽位的情况下,一定要展现清楚槽位。
例如旅行计划应用的示例query可以如下:
i want to visit {toCity}
清楚展现了到达城市这个槽位。关于示例语句,建议1个意图最少20句示例。示例语句的编写可以选择在亚马逊的beta环境上建立完成,也可以直接用js/java编写好后粘贴入开发者平台的Interaction Model tab。
多轮对话和对话模型
多轮对话指的是,用户和应用之间的对话不只是用户说出一个指令,应用给出一个执行结果,它支持语音应用对用户提出问题,再根据用户的回答来完善需要的信息,最终填满所有槽位以触发意图。或者说就是用户和应用双方的对话不只一轮,而是有问有答的状态。
建立多轮对话的规则如下:
- 为了最终实现意图,槽位的选择和赋值都必须是有效合理的。
- 回答的槽位值在获取后需要再次向用户确认准确性以及完整性,才能进入下一步;
- 应用反问用户的语句需要包含对槽位,和意图的确认。
例如,在旅行计划应用中,用户说:
I want to visit Beijing
这个时候,应用收到消息后,发现只收到了{tocity}这个槽位的值,还需要确认{fromcity},{Date}的值。
于是它会开始针对缺失槽位值一一进行发问。一次问一个。对话大概如下:
user: I want to visit Beijing.
skill: Do you want to visit Beijing?
user: yes!
skill: where is your departure?
user: Seattle
skill: Seattle , yep?
user: Yep!
skill: Got it.When will you leave?
user: Next week!
skill:Next week,right?
user: yes!
user: ok! I've choosed 3 travel routes for you.First,.......
模型创建
上述就是我们在建立一个语音模型是需要的4类信息。在亚马逊平台上,我们除了利用js,java,python,基于kit进行在开发者平台上上传代码,实现功能外,我们还可以使用相对简单友好的亚马逊skill builder(beta)。skill builder界面如下。
skill builder使用指南
A.
The Dashboard 展现了目前已创建的意图信息和槽位信息。
B.
左边的导航栏可以进行意图,槽位的添加,以及可以很清楚的看到关键的函数和关键字段命名。
C.
选择一个意图编写它的示例语句,槽位,以及对话。这里展现了该意图下的所有槽位,选择槽位可以编辑它的类型,以及对话信息。
D.
选择槽位类型,编辑槽位的取值表。取值表包括自定义的槽位类型,以及内置类型但是用户自定义添加的槽位取值。
E.
存储模型主要是存数据,不管数据是否合理,可以用来创建。但是建立模型要求数据是合理的,点选后才能成功创建模型。
F.
创建好后再进行与云服务上功能的链接,测试,然后发布。
在之后的博文会介绍,意图和槽位的设置,以及作为一个编程菜鸟如何在亚马逊开发者平台编写一个语音Skill。