词槽
本章节将讲解:什么是词槽,以及如何在平台创建和使用词槽。
词槽的定义
在意图中,机器人往往需要保存对话上文的各类核心信息,利用这些信息去推动后文发展。
词槽 就是存储意图所需关键信息的变量,它可以在对话中被继承,机器人根据词槽中的值给出后续的操作与反馈。
譬如,机器人需要完成一个“订机票”的任务。
为此,需要收集的信息包括“出发地”、“目的地”、“舱位”、“出发时间”等等。
存放这些数据的变量,就是词槽。
机器人从其他地方获取“值”,然后将“值”赋给词槽。这个过程称为“填充词槽”,简称 填槽。
机器人的填槽来源有:
- 对话填槽:从用户会话中获取信息来填槽
- 用词汇填槽
- 用句子填槽
- 接口填槽:从外部接口中接收数据来填槽
对话填槽
对话填槽有四种类型:整句填槽、意图填槽、实体填槽和句式填槽
一个词槽可以同时配置多个填槽方式,优先级从高到低为:句式填槽 > 实体填槽 = 意图填槽 > 整句填槽
用词汇填槽
用实体填槽
举例来说,词槽“目的地”引用了实体“车站”;实体“车站”中,有“上海虹桥”这个实体值; “上海虹桥”这个实体值的多种说法中有“上海”。
当发生下面的对话时:
用户:帮我定明天到上海的火车票
机器人:好的
当用户说“帮我定明天到上海的火车票”时,机器人根据“上海”这个多种说法,进行以下判断和行动:
- 用户信息中包含“上海虹桥”
- “上海虹桥”是实体值“上海”的一个多种说法,因此抽取出实体值“上海”
- 将“上海”填入词槽“目的地”中
用角色填槽
当流程中有两个相同的实体,必须通过角色来对他们进行区分时,就需要用到角色填槽了。角色名称在意图中进行定义。
用句子填槽
用意图填槽
用户整句话匹配到意图时,将意图归一化值填槽。一般用于表述多样的选择性分支,如“那也行”、“还是算了”等。
机器人:您最近身体感觉如何,伤口还有严重不适吗
用户:好多了,基本上不疼了。
- 词槽[患者症状]=健康
机器人:那太好了,请继续保持。
- 用户同一个意思的表达相对随意,通过意图匹配来继续后续的分支流程。
用整句填槽
将用户整句话作为词槽值。一般用于收集用户的其他建议、或者作为当其他填槽方式未能获取到值时的兜底。
机器人:请留一下您的手机号,便于我们联系您
用户:我不想留手机号
如果未配整句填槽,机器人无法抽取到符合实体规则的11位数字填入槽中,导致流程停滞。
如果用了整句填槽做兜底,机器人会将“我不想留手机号”填入词槽“手机号”,继续流程。
机器人:还有其他需要补充的嘛?
用户:对了,我过两天出差可能不会及时回复。
- 补充环节用户的话术不好预知,通过整句填槽可以直接留下完整内容。
接口填槽
从第三方接口中查询信息,详细配置方法请见对话流程的接口单元。
<订机票意图>
机器人经过一系列询问,获得了用户的出发地、到达地、出发时间。
机器人将出发地、到达地、出发时间传入第三方接口。接口根据信息查找航班,再将结果发送给用户。
在最后一个步骤中,就需要把从第三方接口中的信息填入词槽中,然后才能在后续流程中发送给用户。