基于华为云对话机器人技能平台的规则模板概述
华为云对话机器人服务中的技能平台,向机器人服务提供了一系列即插即用的技能,可为对话机器人增加了用户配置机器人的灵活度。
在邀测的过程中,我们总结了在技能平台上使用的规则配置上的一些功能和想法,与大家分享。
1. 规则定义
当前,基于华为云对话机器人技能平台的规则模板定义如下:
W表示通配符(wildcare), S表示槽(slot), D表示词典(Dictionary),(除了一些内置的用户常用问法之外,我们不允许用户将槽位内的词典加入规则模板中)C为普通片段(Common)支持或与等正则规则。
2. 接口说明
rules:
intention:
意图
rule:
W: |
0-4 |
通配符片段(Widcard) |
S: |
a625e5ed-c55b-4244-a971-74f2f963cf8a |
槽位片段(Slot) |
C: |
从|由|起始站是 |
普通片段(Common) |
D: |
sys.china_trainStation |
字典片段(Dict) |
isOrdered:
规则是否按顺序(当前为true),这里按顺序是指匹配的时候每个片段是否有序。我们当前设计中只支持规则中的片段有序,但是如果后续用户有需求想要片段在任意位置匹配皆可,那么我们的接口也可以向后兼容而不需要修改接口。
3. 功能实现
一次完成意图识别和槽抽取。
之前预测实例上槽填充和意图预测是两个接口,而规则模板其实一次提取就可以把意图识别和槽抽取都完成。因为在之前设计的规则模板当中我们复用了原有的词典抽取的接口,将规则按片段解析,每解析完成一个片段,就通过begin index还有end index从原有的query删除匹配到的这个词,然后继续做剩余子串的匹配,相当于是一个递归调用。
再加入一个接口,允许传入intent name即意图名称。
接口参数: intent_name: 意图名称
content:内容
slot_ids:词槽列表
model_first:冲突时是否模型优先
接口内部自己完成意图匹配,槽位填充的逻辑,其中匹配的优先级按照规则>词典>模型来进行,模型作为兜底。而model_first参数则是一个选择项,可以提升模型优先级,默认为false。
4. 规则模板展望
l 对话设置。机器人检测到用户静音、打断、要求停止、要求重述、无意图回复等行为时,根据用户行为给出相应的反馈。例如,用户静音时,需要询问用户是否还在;用户打断时,需要响应用户,请用户讲话;用户要求停止时,需要表示歉意进行安抚,并在超过一定次数时进入挂断流程。在技能平台与客户的对接过程中,包括意图澄清失败设置, 槽位澄清设置,是否允许从识别到的一个槽位的多个值进行区分(您想要的slot1的值是XX还是YY),是否允许返回提取到的槽位的所有值(适用多选场景)。对话设置最终会和多轮的会话能力息息相关,如何把设置做的简明易用也是一个需要仔细考虑的地方。
l 意图跳转。我们现在的技能平台只能支持平行意图,但是无论是外呼场景或者体检问卷,政府办事指南,其实很多场景都是树状的,我们将在未来进行支持。
l 将QA能力带入到技能平台。需要将QA知识库和将KBQA的能力集成到技能平台,提升连续对话的能力。
欢迎大家讨论和指正。