今天刚读了一篇文本匹配相关的论文,发表于AIII2018,名为Knowledge Enhanced Hybrid Neural Network for Text Matching。
顾名思义,也就是说通过引入先验知识的方式来提升文本匹配问题的准确度。这个改进是有一定的意义的,文章中说传统的匹配问题中,对于文本长度超过一定长度的数据匹配结果非常不准确。以QA问题为例,在一些较长的回答中,可能会包含一些对问题的延伸,来进一步解释问题。这种回答往往质量很高,却因为这些语义并不相近的延伸被判定为不好的匹配。因此文章提出了这样的一个模型。
首先解释什么是先验知识,文中对于QA问题使用的先验知识就是问题的类型,对于对话问题是用的先验知识是通过训练好的LDA模型提取得到的主题。有了先验知识,就可以开始构建模型了:
模型总共分为三个部分,得到三个矩阵:
(1)将两段文本分别表示成词向量矩阵,计算各词向量之间的相似度得到相似度矩阵,计算公式如下:
其中的h是激活层,采用RELU函数
(2)将两段文本分别表示成词向量矩阵,通过两个biGRU重新得到两个向量矩阵,再得到交互矩阵,计算公式如下:
这里与(1)中不同在于多出了一个W2,原因在于通过不同的biGRU之后,两段文本中的各个词分别被表示成了两个不同向量空间的向量,所以通过W2将他们映射到同一个向量空间,这个W2矩阵需要通过训练得到。
(3)引入先验知识重新表示词向量。引入的方式受到了lstm的启发,通过一个叫knowledge gate的东西训练得到哪些词需要更多的引入先验知识。比如在回答中对于问题的延伸部分,虽然语义上和问题相似度并不大,但是将先验知识融入进来就可以大大提升相似度,增强这一部分的匹配效果。knowledge gate的计算如下所示:
其中的Wk和Uk都是通过训练得到的超参数,新的词向量计算公式如下所示:
其中笔者认为kx之前应该加一个映射矩阵或者直接使用上面的Uk,因为文中所示的kx是n维的,而kw是d维的。
得到新的词向量之后就可以使用类似(2)中的方式计算交互矩阵。
在得到了上述的三个矩阵之后,将它们作为3个通道做卷积与池化操作,flatten之后放入多层感知机中进行训练即可得到匹配得分,据文中所说,匹配的结果要比之前提出的模型要好一点。