一、设计目的:
解析待匹配query中的关键槽位,例如平安福可以投保么,其中平安福属于保险槽位,投保属于投保意图槽位,同时,利用槽位匹配实现两个query的匹配。
二、数据分析:
经过对目前用户语料的分析,我们发现保险垂直领域的问题存在一些高频用户问,且这些用户问题具有一定的pattern,通过解析其pattern并利用pattern进行匹配可以获得准确率较高准确率的候选答案。
三、设计方案
1)方案流程

2)方案细节:
(1)关键词词典提取:
方案一:基于统计的方法:利用embedding和聚类,提取高频词语补充词典。
通过Bert训练的向量,利于向量表征的词语进行聚类分析,这里用的主要聚类方法有LPA以及Kmeans
方案二:基于哈工大的LTP的依存句法分析方法,提取粒度较大的词语,并利用聚类打上对应tag。
句法主要包括句子的结构分析和依存句法分析,其中依存句法分析通过依存弧对句子进行连接,进而把整个句子连接起来,形
成依存树,其中依存弧是有向的,由修饰词指向被修饰词。如下图平安福受益人变更需要的材料,其切词结果为平安福、受益
人、并更、需要、的、材料,其中受益人变更可作为保险领域的一个较为重要的短语,在依赖句法分析中,受益人、变更都作
为需要的SBV关系的被修饰词,因此我们可以把相近的SBV关系的依赖上游作为一个短语,同理,“平安福受益人”也可以作
为一个短语,即ATT修饰关系的相邻词可以作为一个短语,这句话可以提出平安福受益人,受益人变更两个短语。

方案三:利用HowNet扩充词典。
HowNet秉承还原论思想,认为词汇/词义可以用更小的语义单位来描述。这种语义单位被称为“义原”(Sememe),顾
名思义就是原子语义,即最基本的、不宜再分割的最小语义单位。在不断标注的过程中,HowNet逐渐构建出了一套精细的义
原体系(约2000个义原)。HowNet基于该义原体系累计标注了数十万词汇/词义的语义信息。通过howNet利用已有的词语,
可以获得其近义词,扩充词典。
(2)规则配置文件(slotConfig.yml):
Part1:应用逻辑
APP相关:
- attribute: must
slotName: platform
-attribute: must
slotName: someThingAboutAPP
如上所述,每一个意图对应的配置文件下是list,list每一个元素由槽位属性和槽位名称组成。在完成query解析逻辑之后根据配置
文件中的对应意图的规则确定问题的意图。
Part2:配置规则扩充方法
首选使用文本聚类,将相近的词语聚为同一个类别,利用已有词典mask不同类别下的query,得到不同类别的pattern,频率
较。 高的pattern可作为该类别的配置规则。
Part3:提高准确率需要添加的额外规则
1)意图分类准确率不够高:根据query打上标签的词语数量,添加不同类别的阈值。
(3)方案实验
1) 实验数据:以往用户日志(大于100百万条)以及FAQ标准问以及相似问。
2) 测试数据:利用pattern等方法统计的高中低频数据10万条。
3) 实验效果:可以识别到意图的覆盖率33.7%,可匹配到答案的覆盖率15.7%。
(4)存在的问题
1)多意图冲突问题:eg:平安福的优点是什么。 其中平安福是什么可以判定为保险定义类,平安福的优点可以判定为保险亮点
类。
2)模型的泛化能力不足:在要求准确率的情况下存在规则的泛化能力不足。
3)模型的覆盖率较低:利用槽位解析的情况下,可覆盖的数据量较少。
四、计划
目前有一定的数据积累,所以针对以上问题,接下来主要从以下几个方面展开工作:
1. 利用分类模型提高泛化能力。
2.利用深度学习方法,基于现有数据的序列标注以及其他深度学习方法扩充槽位规则。
网友评论