标签: Jd_Paperweekly
来源: ACL 2019
关键词:文本匹配,GCN, BERT
1.背景及问题描述
本文目标主要是为了解决长文本匹配的问题,与短文本匹配不同,长文本匹配涉及到关键词、实体和句子之间更复杂的交互。所以本文提出了一种“分而治之”的思路,首先将文本构造成一个图,然后使用图卷积网络来抽取特征来进行文本匹配。在自己构造的长文本数据集上,取得了非常好的效果。
2.已有的解决方案
作者主要与传统的文本匹配算法做比较。
使用TF-IDF,BM25,LDA等算法来比较两个文本的相似度,这些算法在信息检索和搜索领域应用广泛。近年来出现大量的深度神经网络模型,比如RNN和CNN等,来对文本进行编码,可以很好的获取语义相关性,特别是序列相关性。但是这些方法都是为了匹配一对句子(sentence-pair)而设计的,而长文本涉及到关键词、实体和句子之间更复杂的交互,再使用这些模型就很难取得很好的结果。
3.解决方案概述
上图是本文提出方法的结构图,是pipe-line的结构,首先对文档构建CIG,然后使用GCN提取特征,再使用分类器进行分类。主要步骤有构造CIG,使用GCN来聚合特征,最后的分类层,下面我们逐一讨论:
- 概念交互图(CIG,Concept Interaction Graph)
上面是对左边这篇文档构造CIG的例子。CIG是一个无向带权图,没一个节点称为一个concept,它是这个文档中的关键词或者是高度关联的关键词组,文档中的每个句子被唯一的关联到与它最相关的一个节点上,所以各节点关联的句子集合是互斥的。边的权重的含义是两个concept的相关度,计算方式有很多种。
下面我们详细介绍构造CIG的过程:
简单版本的实现:
- 使用TextRank算法抽取实体和关键词(keyword)
- 把关键词看作节点,在关键词上构建图(KeyGraph)。边的定义是,如果两个keyword同时在一个句子中出现。
作者继续介绍了使用concept来构造图的方法。
- 概念检测(Concept Detection)
使用社区发现算法(community detection algorithms)将多个关键词合并为concept,每个关键词可以出现在不同的concept中。这一步不是必要的,只是为了减少图中节点的个数来减少计算量。 - 句子链接(Sentence Attachment)
计算文档中每个句子与每个concept的余弦相似度,其中句子与concept的向量用TF_IDF表示,这样把每个句子与最相关的concept链接起来,没有匹配到任何concept的句子链接到一个伪节点(dummy vertex)上。 - 构造边
将与每个节点附属的句子拼接起来,节点之间的相关性就是直接计算拼接句子的TF_IDF值。
如果需要构造一对文档,只需要在节点上将两个CIG对齐,来自不同文档中的句子也直接拼接在一起。
- GNN聚合文章对
Encoding Local Matching Vectors
在得到合并的CIG 之后,对于图中每个节点(concept),我们定义来自的文档A和B的句子集合分别为,。首先需要学习每个节点的匹配向量(matching vector),这个向量是用来表示和相似度的。
这样,就可以把两篇文章的匹配问题转移到每个节点的两个句子集合匹配问题上了。
作者使用了两种方法:
Siamese Encoder: 使用挛生网络分别对,中句子编码。这里作者应该是将句子集合拼看成一个句子来处理的。然后使用一个聚合层,得到一个匹配向量:。
Term-based Similarities: 直接计算,之间的词语相似度,作者使用了五种方法:TF-IDF相似度,TF余弦相似度,BM25,1-gram的Jaccard还有Ochiai相似度,最后将这五个得分拼接在一起,得到另一个匹配向量:Matching Aggregation via GCN
模型的目标是要利用这个图和每个节点的匹配向量得到一个匹配分数,来表示两个文档的相似度。作者使用GCN在这个图上来提取特征。
首先定义输入:
已知图,有N个节点,边为,没条边对应的权重表示为 。
另外每个节点的节点特征矩阵为 ,其中就是将上面计算得到的匹配向量(matching vector)拼接得到: 。
然后使用GCN在此基础上编码提取特征,在最后一层将所有隐向量取平均得到最终的向量(graphically merged matching vector),然后最后一层使用MLP在此向量上做分类。
作者还尝试在分类层加入其他特征向量,比如使用BERT编码两个文档、直接计算两个文档的Term-based Similarities,实验证明都没有提升。
4.结果分析
结论:
- 对比其他一些常规的文本匹配模型,在这个数据集上,本文提出的方法确实提升很多。而在常规的方法上,用BERT微调后的模型表现已经很好了,好于本文方法的几个对比模型。但是加入CIG后确实有大幅度提升。
- 使用社区发现算法来merge节点,可以将图的平均节点数从30降到13,降低55%的训练和测试时间。当然,实验表示,结果没有使用全部keyword做节点表现好。这也是可以理解的,毕竟更多节点可以提供更多的信息。
5.创新点或贡献
- 提出了概念交互图(CIG)来表示一篇文档,用关键词或者概念作为节点,文档中每个句子唯一的链接到一个节点上,节点附属的句子集合相似度作为权重。得到的CIG不仅可以很好的刻画文档的语义特征,还可以在此基础上进行基于节点的文档比较方法。
- 提出了一种基于CIG和GCN的“分而治之”的框架来做文档匹配。
- 提供了一个长文档匹配的数据集。
6.个人思考
- 图卷积模型的应用。
- 将文档构造成CIG的方法,实现的细节比较常规,有很多优化点。
- 以CIG为基础来编码证明可以很好提取长文档的特征。
[参考:]