用图的分解和卷积来做文本匹配

一句话描述整个框架:

用一种新颖的方式把文本对表示成一个“概念交互图(Concept Interaction Graph,CIG)”,然后使用GCN来进行表示,然后训练一个分类器去判断两个文本是否匹配。

论文亮点:

  1. CIG这种表示方法很有意思,值得借鉴
  2. 文章慷慨的开放了一个中文文本匹配数据集,供研究者使用
    两个数据集:
    ①两条新闻是否描述同一个热点(细)
    ②两条新闻是否属于同一个事件/故事(粗)

CIG:

把文档表示成一个无向有权图,每个文档被分割成一个个句子的集合,而每一个集合都对应着一个文档的重要概念(concept)。

到底什么是所谓的“概念”?

概念,在这里就是指文章的关键词,或者一组关系紧密的关键词。

怎么得到这些关键词?

没什么特别的,就用常见的关键词抽取算法,比如TextRank。

关键词怎么组成概念?

通过聚类,具体的方式是采用图数据中的community detection。

文档构建CIG的例子:


构建CIG的步骤:

  1. 构建关键词网络
    提取出关键词后,采用词与词之间的共现关系来构建关键词网络。

  2. 概念发掘(可选)
    通过社区发掘的方法来将关键词聚类,得到概念。
    实际上可以直接使用关键词作为概念。

  3. 句子关联
    在得到概念之后,需要把文档的一个个句子关联到对应的概念上。具体的方式是计算句子和概念之间的余弦相似度,向量就用TF-IDF表示即可。

  4. 构建概念之间的边
    现在网络的node即概念,概念之间的边表示二者之间的相似度。这里使用每个概念所对应的句子的整体的TF-IDF作为该概念的表示,从而计算概念之间的相似度。

通过GCN进行文本匹配

一个文本对包含两个文本A,B。二者合起来,构建一个CIG_{AB}。

通过一种“分而治之”的方式来匹配A和B中的各个概念,然后再统一起来。

  1. 局部匹配
    用一个encoder,来把CIG_{AB}中的每一个concept中的A和B的部分,进行编码,得到该concept的一个匹配向量。
    例如,使用Siamese Encoder可以这样处理:


这里,在Siamese进行匹配的时候,不是简单地将两个向量相减,而是使用这个公式:


  1. 使用GCN聚合局部匹配信息
    上一步我们得到了每一个concept的两个文本之间的匹配向量,这个可以当做是节点的特征。于是我们可以直接使用GCN来将各个concept的匹配情况进行聚合。

最后使用GCN输出的向量作为特征,接一个分类器,来判断文本对是否匹配。

效果:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容