主体转:https://blog.csdn.net/u010159842/article/details/80759428
基本概念:
1、语义槽是指NLU模块从句子中抽取出的特定概念
2、填槽指的是为了让用户意图转化为用户明确的指令而补全信息的过程
3、槽填充则可以看做是序列标注问题,即对于给定的句子中的每个词分别打上相应的标签
概念详解
1)槽
1. 定义
上文中我们提到了填槽指为了让用户意图转化为用户明确的指令而补全信息的过程
2. 槽与槽位
槽是由槽位构成的,比如出发地点的槽,可以通过上下文获得、直接获得,获得GPS等槽位获得
3. 槽的属性:可默认填写/不可默认填写
有些槽是不可默认填写的,不填没办法继续下去,有些即使不填,有默认值也可。
4. 槽的属性: 澄清话术
当槽不可默认填写同时又没有填写的时候,就要进行澄清
5. 槽的属性:澄清顺序
当有多个槽需要澄清的时候,就存在先后顺序的问题,所以需要一个澄清顺序,先问什么,再问什么。
6. 槽的属性:平级槽或依赖槽
根据槽和槽之间是否独立,后续的槽是否依赖前面槽的结果。
可以将槽之间的关系分为
- 平级槽,槽与槽之间没有依赖,例如打车中的三槽
- 依赖槽,后续的槽是否依赖前面槽的结果,例如手机号码槽,不同国家手机号码格式不同(槽的属性不同),所以国家槽会影响选择哪个手机号码槽。
7. 槽的能力:多轮记忆状态
槽还有记忆的能力
2)槽位
上面我们提到槽是由槽位构成的,一个槽位就是一种填槽的方式
1. 槽位的属性:接口槽与词槽
- 词槽,通过用户对话的关键词获取信息的填槽方式
- 接口槽,通过其他方式获取信息的填槽方式
2. 槽位的属性:槽位优先级
当有多个槽位的时候,槽该采用那个信息,这时候有个优先级。
还是之前的出发地点槽,如果用户通过词槽指定了出发地点是A,优先级就应该是最高的,其次才是通过不同的接口槽获取的B,C等
几篇不错的文档
https://blog.csdn.net/u010159842/article/details/80759428 Chatbot中的填槽(Slot Filling)
https://blog.csdn.net/u013713117/article/details/54974363 意图识别和槽填充
https://blog.csdn.net/m0epNwstYk4/article/details/80479967 机器人意图识别和词槽抽取RasaNLU解析