一句话描述整个框架:
用一种新颖的方式把文本对表示成一个“概念交互图(Concept Interaction Graph,CIG)”,然后使用GCN来进行表示,然后训练一个分类器去判断两个文本是否匹配。
论文亮点:
- CIG这种表示方法很有意思,值得借鉴
- 文章慷慨的开放了一个中文文本匹配数据集,供研究者使用
两个数据集:
①两条新闻是否描述同一个热点(细)
②两条新闻是否属于同一个事件/故事(粗)
CIG:
把文档表示成一个无向有权图,每个文档被分割成一个个句子的集合,而每一个集合都对应着一个文档的重要概念(concept)。
到底什么是所谓的“概念”?
概念,在这里就是指文章的关键词,或者一组关系紧密的关键词。
怎么得到这些关键词?
没什么特别的,就用常见的关键词抽取算法,比如TextRank。
关键词怎么组成概念?
通过聚类,具体的方式是采用图数据中的community detection。
文档构建CIG的例子:
构建CIG的步骤:
-
构建关键词网络
提取出关键词后,采用词与词之间的共现关系来构建关键词网络。 -
概念发掘(可选)
通过社区发掘的方法来将关键词聚类,得到概念。
实际上可以直接使用关键词作为概念。 -
句子关联
在得到概念之后,需要把文档的一个个句子关联到对应的概念上。具体的方式是计算句子和概念之间的余弦相似度,向量就用TF-IDF表示即可。 -
构建概念之间的边
现在网络的node即概念,概念之间的边表示二者之间的相似度。这里使用每个概念所对应的句子的整体的TF-IDF作为该概念的表示,从而计算概念之间的相似度。
通过GCN进行文本匹配
一个文本对包含两个文本A,B。二者合起来,构建一个CIG_{AB}。
通过一种“分而治之”的方式来匹配A和B中的各个概念,然后再统一起来。
-
局部匹配
用一个encoder,来把CIG_{AB}中的每一个concept中的A和B的部分,进行编码,得到该concept的一个匹配向量。
例如,使用Siamese Encoder可以这样处理:
这里,在Siamese进行匹配的时候,不是简单地将两个向量相减,而是使用这个公式:
- 使用GCN聚合局部匹配信息
上一步我们得到了每一个concept的两个文本之间的匹配向量,这个可以当做是节点的特征。于是我们可以直接使用GCN来将各个concept的匹配情况进行聚合。
最后使用GCN输出的向量作为特征,接一个分类器,来判断文本对是否匹配。
网友评论