《FAQ-based Question Answering via Knowledge Anchors》笔记
本日志介绍的文章发表于NLPCC 2020,不是什么顶会,主要是跟个人最近工作内容比较相关,同时文章引用了一种传统的基于模板的关系抽取方法,对个人启发还是比较大的,毕竟近年来的风气都是无脑DL,原文链接:
简介
FAQ式问答是目前问答系统中应用较多的一种方法,大部分FAQ式问答系统均采用问题——问题匹配的方法训练模型,如典型的孪生网络(Siamese Networks)架构,模型通常学习到文本的字面相似度,或一定程度的语义相似度,效果取决于训练数据的规模及生成方式。然而在一些垂直域问答中,不同意图的句子可能也存在较高的字面相似度及语义相似度,例如“我想去体育西路的卫生间”与“体育西路的便利店在哪里?”,这两句话可能有较高的语义相似度,但显然应该以不同的方式响应。
本文提出了一种基于知识锚定的KAQA(Knowledge Anchor)方法,通过建立少量垂直域的知识图谱,增强特定领域的FAQ能力,例如下图所示:
方法
1. 整体架构
KAQA主要包含三个模块:知识图谱构建、查询锚定、多通道匹配。知识图谱构建模块通过多种方式(模型+规则+人工)构造先验知识,为后继模块提供支撑;查询锚定模块扫描查询及文档标题,识别、链接知识库实体,提取实体间存在的关系,并通过多个模型进行关系消歧;多通道查询模块计算出查询及文档标题之间的,字词级别、实体级别与关系级别的语义相似度。整体架构如下图所示:
2. 知识图谱构建
知识图谱构建过程首先在目标领域设置一部分种子实体,然后基于模板匹配(patterns-based)+NER模型(如CRF)获取最终的实体集。也可以基于现有的领域知识图谱进行构建。
基于这些实体,使用了多个模型组合的方式提取关系(triples):
- 使用pattern-based bootstrapping方法结合计数特征、词法特征(词权及POS标签等)、句法分析生成高频关系;(企业——主营业务:NP(是一家|是一所|是) VV NP 的企业)
具体可参考《Snowball: Extracting Relations from Large Plain-Text Collections》
3. 查询锚定
在查询锚定阶段,需要对实体及关系进行消歧。在本文的场景中,实体消歧只使用了最大正向匹配方法,已取得了可接受的准确率。
对于关系的消歧,首先对所有已识别的实体,提取两两实体间的所有关系,如下表:
对于has_operation关系,有4种候选关系可反映核心的语义信息,关系消歧的任务就是选出其中真正的关系,文章实施了3种方法:
-
使用基于规则的方法,归纳简单的句法规则、模板、词法特征(如词权、POS、实体类型)、关系级别特征(关系类型、实体对距离)等进行匹配;
-
使用知识推理方法,归纳一些启发式的推理模式,例如图1中,由于friend是WeChat的一个组件,因此恢复更应该与friend进行关联,而不是WeChat;
-
基于FastText训练神经网络消歧方法(Neural Triple Disambiguation),输入问句及目标关系,输出关系的置信度,具体又包括几种特征:(a)目标关系三元组;(b)位置特征,即每个token相对于实体的位置,因为目标三元组有两个实体,所以每个token有两个位置特征;©冲突实体特征,如果三元组 ( e A , r , e B ) (e_A, r, e_B) (eA,r,eB)作为目标关系,而 ( e B , r , e C ) (e_B, r, e_C) (eB,r,eC)是一个候选关系,则 ( e A , e C ) (e_A, e_C) (eA,eC)是一个冲突实体;(d)冲突关系特征,除目标关系自身外,如果一个候选关系与目标关系共享了任意实体,则该候选关系是冲突关系。
(d)原句是if a triple (except the target triple itself) shares any entities with that in target triple, then this triple is viewed as a conflict triple,按一般的理解,出现在问句中的实体总是容易存在链式关系的,链式关系可能表达了一种互斥的原理,类似2中的启发式推理。
4. 多通道匹配
多通道匹配模块把语句、实体、关系三类特征拼接在一起,训练分类器输出相似度,形式化描述为:
s = softmax ( MLP ( f ( q , d ) ) ) , f ( q , d ) = concat ( f w ( q , d ) , f e ( q , d ) , f t ( q , d ) ) \text{s} = \text{softmax}(\text{MLP}(\text{f}^{(q, d)})), \text{f}^{(q, d)} = \text{concat}(\text{f}_w^{(q, d)}, \text{f}_e^{(q, d)}, \text{f}_t^{(q, d)}) s=softmax(MLP(f(q,d))),f(q,d)=concat(fw(q,d),fe(q,d),ft(q,d))
其中 f w ( q , d ) \text{f}_w^{(q, d)} fw(q,d)、 f e ( q , d ) \text{f}_e^{(q, d)} fe(q,d)、 f t ( q , d ) \text{f}_t^{(q, d)} ft(q,d)分别表示查询——文档标题的token特征、实体特征、关系特征(hidden states),基于这3类特征,文章分别对比了3个文本匹配模型:
- Architecture-I:典型的孪生网络架构,使用基础的特征提取层例如CNN,分别提取查询、文档标题特征,拼接后进行分类输出:
f w ( q , d ) = concat ( CNN ( W q ) , CNN ( Q d ) ) \text{f}_w^{(q, d)} = \text{concat}(\text{CNN}(W^q), \text{CNN}(Q^d)) fw(q,d)=concat(CNN(Wq),CNN(Qd))
怀疑文章用错记号,找不到 Q d Q^d Qd的出处,可能是指 W d W^d Wd
- MatchPyramid:该方法直接计算两句子之间每个token的相似度矩阵,然后通过CNN提取相似度特征:
f w ( q , d ) = CNN ( M ) , M i j = cosine ( w i q , w j d ) \text{f}_w^{(q, d)} = \text{CNN}(M), M_{ij} = \text{cosine}(w_i^q, w_j^d) fw(q,d)=CNN(M),Mij=cosine(wiq,wjd)
- Inter-Weighted Alignment Network(IWAN):略。
总结
总体来看,该文章最大的创新点在于使用知识图谱增强传统FAQ的语义匹配能力,传统方法仅能依靠字面信息,该文章扩充了实体信息及关系信息,更直观的理解,是传统方法可能仅仅识别出问句的意图,而该文章可以进一步融入语义槽,甚至槽间的关系。