知语:一个基于知识与语义的高效深度文本匹配模型

1. 引言在大数据时代,智能阅读系统的需求日益增长,人们需要一款智能阅读软件来方便自己的生活,如电子书阅读,说明书阅读,都可以借由该技术简化。另一方面,随着数据的不断增多,以及深度学习在自然语言处理领域的发展,智能阅读模型也有了发展的基础,目前来看,智能阅读模型正处在方兴未艾的发展中。对于本次赛题给出的智能阅读模型系统,我们重新定义为文本匹配问题,也即给定两段文本,模型要正确判断文本是否匹配。目前主流的文本匹配模型有很多,大致可以分为两个主流。一方面是基于传统统计学特征的方法,比如tf −idf [1
摘要由CSDN通过智能技术生成

1. 引言

在大数据时代,智能阅读系统的需求日益增长,人们需要一款智能阅读软件来方便自己的生活,如电子书阅读,说明书阅读,都可以借由该技术简化。另一方面,随着数据的不断增多,以及深度学习在自然语言处理领域的发展,智能阅读模型也有了发展的基础,目前来看,智能阅读模型正处在方兴未艾的发展中。

对于本次赛题给出的智能阅读模型系统,我们重新定义为文本匹配问题,也即给定两段文本,模型要正确判断文本是否匹配。

目前主流的文本匹配模型有很多,大致可以分为两个主流。一方面是基于传统统计学特征的方法,比如tf −idf [14],比如 BM25 [16]这种语义匹配的计算,这些传统统计学的方法依赖于人工构建的特征,往往特征是非常难以构建而且无法迁移的。另一大类的方法是基于深度学习的方法,比如基于卷积神经网络的匹配模型,基于循环神经网络 (长短时记忆神经网络) 的匹配模型,基于特征交互的匹配模型等等。这些模型可以很方便的在语义,也即文本的内容是否匹配上做出判断。由于目前计算资源以及可用数据的增多,再加之专家系统构建的困难程度,研究者们已经开始逐步转向了基于深度学习的匹配方法。

在看到主流方法蓬勃发展的同时,我们也要指出这些方法都不约而同的存在一些问题。无论是基于统计学特征的方法,还是深度学习的表示学习方法,都无法有效融合外部知识,也无法做出与知识有关的判断。如文本 1:“外星球来的孩子作者是谁?”与文本 2:“外星球来的小女孩, 作者: 金涛著”就很容易被判别为正确匹配,然而只要了解过这本《外星球来的孩子》的书籍的人,都应该知道它的作者不是金涛而是杨红樱,由于这些主流方法没有考虑额外的知识信息,另外文本 2确实在内容上是可以认为在回复文本 1,只不过是事实错误,因此如何解决这种语义匹配而却与事实相矛盾的问题成为了当前智能阅读系统的关键。

在语义匹配的基础上融合知识并不是一件平凡的事情,它具有以下几个挑战:

• 如何根据文本检索到正确的知识?

• 如何将检索到的知识融入到深度学习模型中来?

• 如何既能兼顾知识也兼顾语义的匹配?

为了解决以上的这些挑战及难点,我们设计了我们的模型-基于知识与语义匹配的深度学习文本匹配模型,简称为知语模型。知语模型大致有三个阶段,在阶段 I,我们会根据二元组中的问题检索出相应的 10 个最相关的知识,在阶段 II,我们将利用注意力机制 [6]根据问题去选择知识三元组中问题所关注的属性,在最后一个阶段,我们将问题,回答,以及检索得到的知识作为一个三元组输入进入深度匹配模型,根据长短时记忆神经网络给出最后的答案。

综上所述,我们提出了基于知识与语义匹配的深度文本匹配模型,可以有效建模知识,语义,等多个角度的匹配程度,在我们自己构造的线下数据集上取得了远远高于 baseline 的成绩,这也说明了知语模型的有效性。

总结来看,我们主要有以下三个贡献:

• 我们首次提出了将知识融入到深度学习的模型,增强了模型的表示能力。

• 我们的模型可以在多个角度 (知识,语义) 方面同时判别文本是否匹配。

• 我们的模型可以在泰迪杯数据上取得良好的成绩,证明了模型的实用性。

2. 相关工作

我们的工作主要与文本匹配相关联,在这里我们将介绍文本匹配的主流方法。大体来说,现今文本匹配的思想主要分为两种,一种是基于统计全局特征的传统方法,另一种是基于深度学习等的表示学习方法。

首先我们介绍统计全局特征的方法,基于统计全局特征的方法一般使用一些规则提取特征,之后使用例如支持向量机 [9],朴素贝叶斯 [15],逻辑回归 [18]等方法进行判别。最早的统计全局特征方法是由 Karen Spark Jones 提出的 tf-idf,它不需要复杂的分类器进行判别,而且有较深的数学基础作为支撑。之后 Hinton提出了词向量的概念,将词的表示方法进行了丰富。除此之外,也有一些学者提出了 n-grams [2]来丰富词与词的关系作为新的特征,也有另外一些学者研究主题模型希望得到更好的表示,Blei 提出了如 LDA 主题模型 [21]、S.T.Dumais 等提出了 LSI/PLSI 概率潜在语义索引等方法。然而这一大类方法严重依赖特征提取,需要大量的专家设计良好的特征,可迁移性非常差,难以广泛使用。

另一种主流方法是表示学习,它利用神经网络与大规模的数据来对文本进行表征学习,不需要人工提取特征。在这一研究领域,Hinton 是最早提出神经语言模型的人 [12],在他之后,Bengio 跟进了他的研究,他对如何进行词嵌入提出了良好而有力的模型。2014 年,谷歌的研究人员提出了新的算法 word2Vec [11],后来有人提出了 glove 方法 [13]获得更加精准的表征。于此同时,对于句子的表征学习也在蓬勃发展,同年,耶鲁大学的 kim 提出了 TextCNN [8]算法,使用卷积神经网络(CNN)来对文本进行建模,希望使用卷积来提取类似于 n-grams 的文本特征,首次在公有数据集上超过了传统方法的表征。之后也有人使用了循环神经网络 [22]来进行实现,由于循环神经网络可以建模时序,所以在表征句子这种序列上,取得了不错的成绩。近年来随着自注意力机制的提出,卡内基梅隆大学的人员关注如何使用自注意力机制表征文档,提出了 HAN(层次注意力网络)[20]算法来建模更加复杂的文档,他们使用词,句子,段落之间三种的注意力来表示一篇文档,由于自注意力机制可以良好的捕捉更加长远的时序关系,所以他们在 yelp 等公开的数据集上取得了非常好的表现。于此同时,中国中科院的研究人员也提出使用建模图片的方式来建模文本,他们将自己的模型命名为 RCNN [7]。近年来随着斯坦福大学构建了公有的自然语言推理数据集-SNLI,文本匹配的算法更加丰富。在对 SNLI 的研究中,陈亮等人提出了 Re-read LSTM [17]来对一个句子进行多层次的建模; 宫一尘等人提出了 DIIN 模型来对文本之间的信息进行大规模的交互,取得了在该数据集榜首第一名的成绩; 王志国也提出了 BIMPM 在包括 SNLI 数据集在内的多个数据集同时取得了不俗的表现。第二种方法目前需要的手工特征非常少,所以已经成为了研究界乃至工业界的主流,然而第二种方法的问题在于难以进行超参数的选取,以及大量的计算资源及标注数据的获得。不过由于 GPU 并行运算的提高以及日新月异的诸如 MXNet [3],tensorflow [1]等深度学习框架的提出,再加之如数据堂(1http://www.datatang.com/.)等数据众包公司的出现,这一困难已经不再沉重。

然而我们同时也要看到无论是第一种方法还是第二种方法都只能藉由文本内部的特征进行表示,如果说判断两段文本是否匹配需要用到外部的知识,那么以上提出的模型都会失效。比如判断“枣庄市在中国哪个省”与“河北省”这两段文本来说,在缺乏外部知识的给出下是很难得到正确的答案的,因为二者确实在语义上,内容上是连贯的,只不过是事实错误。因此我们的模型-知语,考虑了外部知识对于神经网络的加强,这也正式我们提出的算法与之上所介绍方法的区别。

2.1. 任务重定义

官方赛题的要求是:聚焦于智能交互在电子书阅读的应用,日常生活中人们要阅读大量的 txt 文本,其内容可能是小说、教程、文集、词典等。很多情况下我们只是需要从文本中查找某一些片段来解决我们的问题。比如,通过查找法律文献中的一些段落来解决我们的法律疑惑,这时并不需要精读整个法律文献;对于小说,有时候我们也只是想知道其中一些特殊细节,并不想花时间去通读整个小说。所以我们需要在给出问题时,将与问题相匹配的文档中的内容返回,或者返回相应答案的所在行。

我们将这个问题看作是一个文本匹配的问题,给出一个 [问题, 回复] 二元组,模型要正确的判别问题与回复是否匹配。下面给出形式化定义,我们需要学习一个匹配函数 F ( ⋅ ) F(·) F(),能够正确的判断给定问题 Q Q Q 以及回复 A A A 是否匹配。

因为我们认为该任务需要考虑额外的知识表征,所以我们将上面的任务进行重定义,即给出 Q Q Q A A A 的情况下,允许使用第三方的知识库进行额外的知识检索来帮助模型学习,所以匹配函数 F ( ⋅ ) F(·) F()的输入是一个三元组 [问题,知识,回复],我们使用 K K K 来表示知识,最后模型给出的分数 y y y 即为:

y = F ( Y ∣ [ Q , K , A ] ∣ ) y=F(Y|[Q,K,A]|) y=F(Y[Q,K,A])

(1)

,其中 y y y 的取值区间为 [ 0 , 1 [0,1 [0,1]。

2.2. 流程概览

为了学习这个函数,我们构建了我们的模型-知语,它共有三个阶段,首先会根据 Q Q Q 在知识库中检索出相关的 m m m 条知识,由于知识库非常巨大,所以在此检索阶段我们并未使用深度学习。在第二阶段,我们会让问题与知识进行交互,利用注意力机制, m m m 条知识分别赋予不同的权重,以便模型更加有效的利用有利的知识而舍弃那些无用的知识。在第三个阶段,我们使用循环神经网络以及卷积神经网络,来对输入的加权知识,问题,回复三元组进行有效的建模,融合,判别。

2.3. 阶段一:知识检索

我们将第一个阶段称为知识检索,此阶段的流程如 图1 所示。我们首先使用 jieba (https://pypi.python.org/pypi/jieba/.)对输入的二元组进行分词。另一方面借助 lucene[10]来将庞大的知识库构建为索引,以方便实时检索; 在这里我们采用的知识库是由复旦大学的肖教授构建的知识工厂 (http://kw.fudan.edu.cn/about/.),知识库共有60,000,000 条记录,涵盖天文百科等多个方面。构建完全知识库之后,我们使用基于 BM25 的匹配方法来进行计算。BM25 是一种基于统计学的匹配方式,它使用idf 方法和 tf 方法的某种乘积来定义单个词项的权重,然后把和查询匹配的词项的权重相加作为分数,一般被认为可能比 tf-idf 更好,特别是在短文档集上。

在这里插入图片描述

图 1. 对于给定的二元组 (question, answer),首先使用 question 在知识库中检索出与该二元组相关的知识,将新构成的(quesiton, answer, knowledge) 三元组作为深度匹配模块的输入。

2.4. 阶段二:知识过滤

由于在大规模的知识库中往往会检索出一些与问题所提问属性无关的东西,例如给定问题 Q = [ ‘ 枣 庄 ’ , ‘ 市 ’ , ‘ 位 于 ’ , ‘ 哪 个 ’ , ‘ 省 ’ , ‘ ? ’ ] Q = [‘枣 庄’,‘市’,‘位于’,‘哪个’,‘省’,‘?’] Q=[],仅仅使用阶段一中的检索结果可能会将枣庄的气候条件,枣庄的政府驻地都进行返回,而我们仅仅需要枣庄的所属地区即可,所以我们需要进行知识过滤,将检索到的知识进行一定程度上的过滤,以帮助模型正确的选择所需要的知识。

在这里插入图片描述

图 2. 对于给定的二元组 (question, knowledge),使用 attention 机制去注意到特定的 knowledge 中的属性,进行知识过滤。

如图2所示,在此阶段对于输入的问题 Q = [ Q 1 , Q 2 , ⋅ ⋅ ⋅ , Q n ] Q=[Q1, Q2, · · ·, Qn] Q=[Q1,Q2,,Qn],以及所检索到的知识序列 K = [ K 1 , K 2 , ⋅ ⋅ ⋅ , K n ] K = [K1, K2, · · ·, Kn] K=[K1,K2,,Kn],我们首先使用嵌入层对二者进行由独热向量到实值的向量空间中。词嵌入是一种可以将稀疏高维独热的向量映射到低维实值空间的一种方法,对于给定的序列 Q Q Q 以及 K K K,经过词嵌入过后依然可以得到一个特征序列,如下公式所示:

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的数据喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值