在前两期的教学文章里我们分别介绍了简单问答型技能和复杂任务型技能的配置方法,本期我们将结合时下大热的“垃圾分类”,为大家讲解较为复杂任务型技能——“垃圾分类技能”的配置方法。
在此之前我们已经分别介绍过两种技能的创建方法,我们将不再赘述技能配置环节,直接进入“垃圾分类技能”的意图配置环节。
本文介绍的为“无激活词”垃圾分类技能的配置方法,“有激活词”的垃圾分类技能只需在创建技能—>开启设置【技能热词】—>配置唤醒热词—>配置【退出热词】即可实现配置。
意图配置
在垃圾分类查询的对话情景下,我们推测用户可能有下列几种意图:
1.询问“机器人”是否/能否可以进行“垃圾分类查询”
2.在一轮对话(查询)结束后选择继续追问查询
3.直接询问“某种垃圾是什么垃圾”,例:询问“苹果是什么垃圾”
对应上述三种情景我们需创建三种意图,下面我们将介绍配置这三种意图所用到的概念及配置方法。由于这三种意图的【机器人回答】配置都用到了同一种方法,我们将【机器人回答】的配置放在最后统一讲解。
一、询问“机器人”是否/能否可以进行“垃圾分类查询”-----意图【垃圾分类-无语义槽】
用户问法:在第一期文章中我们介绍了用规则符号来泛化更多的用户问法,以提高配置效率。根据平台问法规则,我们可以配置以下用户问法:
语义槽设置及追问话术:配置如上图所示的用户问法后,我们已知用户想要进行垃圾分类查询的意图,但不能精准知道用户想要查询哪种垃圾。因此,我们需要了解【语义槽】、【词典】及【追问话术】等概念,来完善我们的配置。
- 【语义槽】是用户说法中所包含的关键字,语义槽可以帮助系统准确识别用户意图。如:“今天双子座的运势如何”中,语义槽为#时间#、#星座#及#运势#。语义槽通常与词典一起使用,一个语义槽可以同多个词典进行绑定,同样,一个词典也可以与不同的语义槽进行关联。
- 【词典】是一个规范的自然语言短语集合,通常定义为应用所在领域的术语的集合,可用于用户说法中的关键信息提取和语义槽调用。例如“刮风”、“降雨”属于“天气”这个词典,“跑步”、“游泳”属于“运动”这个词典。每个词典均可在多个技能中重复使用。平台现支持的词典可分为两类:系统词典和自定义词典。自定义词典的创建方法可参考平台说明文档—基本概念—词典(https://developers.weixin.qq.com/doc/aispeech/DICT.html)。
- 【追问话术】平台支持对语义槽设置“是否立即追问”。如果我们打开开启按钮,则需要给语义槽配置相应的追问话术(可配置多条,追问时随机选取)。当用户问法中没有提供对话所必须的语义槽值时,机器人会对其自动发起追问。
- 例如,在【垃圾分类查询】技能下,若用户问法为“我要查询垃圾分类”,并没有给出具体的垃圾类型,该对话无法继续进行。此时,我们如果配置追问话术,系统会自动向用户发送追问语句以获取该语义槽值。
(注:此处的语义槽“结果”,为API调用输出结果回填,API调用请参考后文【机器人回答】)
由于我们配置的用户问法中没有出现意图需要的语义槽信息【垃圾名称】,需要手动配置才能实现垃圾分类的查询,配置步骤如下:
- 点击添加一条语义槽,在语义槽弹窗处填写语义槽的名称-【垃圾名称】,点击确定后,语义槽设置中会显示语义槽的名称信息;
- 在词典列,点击设置词典,在词典设置弹窗页勾选我们需要的词典-【垃圾名称】词典(该词典为自定义词典);
- 开启立即追问按钮,设置追问语句(可添加多条)。配置完成后,在用户问法没有获取到必需的“垃圾名称”信息后,系统会自动发出“请说出您要查询的垃圾名称”的追问。
二、在一轮对话(查询)结束后选择继续追问查询——意图【继续追问】
根据用户言语习惯,我们可知在完成一轮垃圾分类查询时,用户常使用反问句“那[垃圾名称](是什么垃圾)呢?”追问进行第二轮问答。在配置用户问法时,“那苹果呢”、“那土豆呢“为同一种句式,只不过句中的垃圾名称不一样。因此,我们可将如上句式中的关键词[垃圾名称]使用槽位代替,并配置以下用户问法:
在这里我们可以发现,如果在用户问法中添加了语义槽,语义槽设置中会自动出现该条语义槽的名称,这时候需要我们为语义槽关联上对应的词典,系统语义槽已自动关联词典,无需再配置,当然我们也可以根据需要修改关联的词典。
考虑到用户问法中已经明确引用语义槽【垃圾名称】,因此这个意图下的语义槽也就不需要配置【追问话术】了。
三、直接询问“某种垃圾是什么垃圾”,例:询问“苹果是什么垃圾”——意图【垃圾分类-有语义槽】
这是一种较为完整、理想的用户表达方法,参考以上意图的配置方法和用户表达习惯,该意图下的用户问法可进行如下配置:
机器人回答
在前两篇文章中我们介绍了配置机器人回答的两种操作“不使用API资源”以及“机器人提问”。在本技能的机器人回答配置中,我们选用“调用API资源”的方式。这种配置操作适用于回复内容需要使用外部资源,或回复内容跟随用户语义槽的值而变动的情况。平台系统提供一些常用的API接口,如:地址查询、邮政编码查询、快递查询等,供开发者免费使用。例如:“垃圾分类”这个意图,就需要调用API接口,系统才能针对输入的不同类型垃圾进行分类,输出结果,给出明确的回复。
- 我们首先在回复类型处选择【服务接口调用】,下拉选择【垃圾分类】:
- 点击【接口配置】,将输入参数与语义槽对应起来,保持语义槽的传递。
这里的输出参数不需要开发者配置,系统会对其自动建槽,并关联接口回填词典。如果想要更改,我们也可以删除系统填写的语义槽名称,重新定义新的语义槽名称。点击确定后,语义槽设置中即会显示输出参数对应的语义槽名称。
- 设置好接口后,我们还可以在【API配置】中进行接口调试,查看API是否有效。在调试页面输入想要查询的垃圾名称,即可查看返回的结果状态。
- 完成配置后,我们就可以在返回的每个查询状态下,配置相应的回复结果。
如果系统API不能满足技能开发需要,平台也支持开发者上传自定义API。开发者可以点击【自定义接口】>>【创建自定义接口】,填写接口名称、URL、输入/输出参数、返回状态即可。
多轮对话
如果用户问题、指令或请求较为复杂,需要进行多轮对话才能完成时,我们可以在配置完机器人回答后,通过【是否结束对话】-【不结束对话】-选择承接的意图(可选择多个),来实现意图之间的跳转。
例如:我们在配置“垃圾分类”技能下三个意图的【机器人回答】后,在【是否结束对话】下,选择跳转到“继续追问”这个意图,就组成了一个关于垃圾分类查询的多轮对话,第一轮对话为“请帮我查询XX是什么垃圾”,第二轮对话为“那XX(是什么垃圾)呢?”。
同时为了保证与上下意图的衔接,开发者需要在跳转的意图上方选择【是否承接对话】-承接对话。开启【承接对话】的设置后,只有用户说法与上一轮意图吻合时,系统才会进入当前意图;否则意图问法将不能被系统语义解析。
在最后进行【机器人调试】,配置完整的“垃圾分类技能”就可以同步发布至你的小程序及公众号了。”
到这里针对“普通技能”、“高级技能”这两大技能类型的配置方法基本上就为大家讲解完毕了,更多配置玩法在微信对话开放平台上(https://openai.weixin.qq.com/)等你发掘~
今天练习了一整天,完全没反应啊
机器人回答服务接口调用,自定义接口内网IP的URL无法访问,为什么?
批量新增字典,最多就能2000个词吗?也太少了吧