韩程程 李磊 刘婷婷 高明
摘要:综述了语义文本相似度计算的最新研究进展,主要包括基于字符串、基于统计、基于知识库和基于深度学习的方法,针对每一类方法,不仅介绍了其中典型的模型和方法,而且深入探讨了各类方法的优缺点;并对该领域的常用公开数据集和评估指标进行了整理,最后讨论并总结了该领域未来可能的研究方向。
关键词:文本相似度;语义相似度;自然语言处理;知识库;深度学习
中图分类号:TP311 文献标志码:A DOI:10.3969/j,issn,1000-5641.202091011
0引言
随着互联网技术的迅速发展,海量信息在互联网中不断涌现,文本是信息最重要的载体,研究文本信息的深度挖掘,对于人们快速而准确地获取所需内容具有重要意义,语义文本相似度计算(semantic Textual Similarity)是联系文本表示和上层应用之间的纽带,目前,在信息检索(InformationRetrieval)领域,语义文本相似度计算在文本分类(Text classification)、文本聚类(Text clustering)、实体消歧(Entity Disambiguation)等任务上有着极其重要的作用;在人工智能领域,问答系统(Q/ASystem)和智能检索(Intelligent Retrieval)等任务也都需要语义文本相似度算法作为支撑,此外,语义文本相似度计算也广泛应用在抄袭检测(Plagiarism Detection)、文本摘要(Text Summarization)、机器翻译罔(Machine Translation)等自然语言处理(Natural Language Processing)任务中,因此,系统化地研究语义文本相似度算法具有非常重要的应用价值。
给定两段文本A和B,语义文本相似度计算旨在衡量两段文本在语义上的相近程度,通常,文本的语义相似度数值越小,则说明两个文本之间的语义差异性越大,即在语义层面上越不相似;反之,该数值越大,则说明这两个文本所表达出的语义越相似,由于人类语言表达十分复杂,文本当中包含许多同义词、缩略词、否定词等,还有多变的句法结构,都加大了语义文本相似度计算的难度,为了解决这些难题,学术界和工业界都进行了大量的研究和实践,提出了一系列针对语义文本相似度计算问题的模型和方法。
由于语义文本相似度计算一直以来都是自然语言处理领域的热点问题之一,因此国内外已经有一些学者对已有的语义文本相似度计算方法进行了系统整理,其中不乏一些优秀的综述论文,但他们的工作都主要集中在传统的基于统计和基于知识库的方法上,而近年来,伴随深度学习技术的快速发展,特别是2013年分布式词向量问世后,语义文本相似度计算领域取得了突破性的进展,基于深度学习的语义文本相似度计算方法已经逐渐成为该领域的主流方法,与已有的综述文献不同,本文在总结传统方法的基础上,特别聚焦在语义文本相似度计算的最新进展上。
本文对现有的语义文本相似度计算方法进行了系统的综述,总体分类框架如图1所示,本文将分小节依次对每一类方法进行系统的介绍,本文的第1章主要介绍基于字符串的语义文本相似度算法;第2章主要介绍基于统计的语义文本相似度算法;第3章主要介绍基于知识库的语义文本相似度算法;第4章主要介绍基于深度学习的语义文本相似度算法;第5章主要介绍语义文本相似度领域相关数据集及评价指标;最后,讨论语义文本相似度计算的未来研究方向,并对全文进行总结。
1基于字符串的语义文本相似度计算
基于字符串的方法都是直接对原始文本进行比较,主要包括编辑距离(Levenshtein Distance,LD)、最长公共子序列(Longest Common Sequence,LCS)、N_Gram和Jaccard相似度等,
编辑距离通常被用于句子的快速模糊匹配领域,以表示两个文本之间,由一个转换成另一个所需的最少编辑操作次数,其中编辑操作包括增、删、改三种,它既可以是字符级别,也可以是单词级别,车万翔等利用大规模知识库赋予不同编辑操作不同的权重,提出了改进的编辑距离计算方法,同时考虑了词序和部分语义信息,提高了编辑距离的算法性能。
最长公共子序列(LCS)算法以两个文本的最长公共子文本的长度来表征文本间的相似度,一个序列s任意删除若干个字符得到的新序列T,则T叫作s的子序列,两个序列x和Y的公共子序列中,长度最长的被定义为x和Y的最长公共子序列(LCS),可以使用动态规划的方法计算两个文本的最长公共子序列以表征两个文本的相似度。
N-Gram模型的基本思想是设置大小为Ⅳ的滑动窗口,将文本内容按照字符流或者单词流的形式进行窗口滑动操作,形成多个长度为Ⅳ的文本片段,每个片段被称为一个Ⅳ元组,然后计算给定的两个文本中公共Ⅳ元组的数量与总Ⅳ元组数量的比值,以此来表征两个文本的相似度,
Jaccard系数是两个集合的交集与并集中包含的元素个数之比,它仅关注两个集合中共有的元素个数,而不关注集合元素之间的差异性,我们可以将文本看成由其中的单词组成的集合,此时单词即为集合元素,也可以将文本所包含的N元组作为集合元素,然后计算两个集合之间的Jaccard系数来表征两个文本间的相似度,Jaccard系数还可以与局部敏感哈希(Locality Sensitive Hashing,LSH)相结合进行快速的近似文本查找,或对不相似的文本进行过滤。
Dice系数与Jaccard系数类似,都是基于集合的思想,Dice系数是两个集合的交集中包含的元素个数与两个集合的长度之和的比值,主要关注的是集合中相同的部分,取值范围在(0.1)之间,该值越接近于1.则说明两个字符串越相似,表1展示了基于字符串的文本相似度计算方法的总结。
基于字符串的方法原理简单、实现方便,并且直接对原始文本进行比较,多用于文本的快速模糊匹配,其不足主要在于没有考虑到单词的含义及单词和单词之间的相互关系,并且同义词、多义词等问题都无法处理,目前很少单独使用基于字符串的方法计算文本相似度,而是将这些方法的计算结果作为表征文本的特征融入更加復杂的方法中。
2基于统计的语义文本相似度计算方法
基于统计的方法源于一种分布假设,该假设认为上下文相似的单词具有相似的语义,这类计算方法先通过某种策略将文本转换成一个向量,然后通过各种向量空间的转换,最后计算表征文本的向量间距离,通过向量空间中的度量来衡量文本间的相似度,主流的基于统计的方法包括向量空间模型(Vector Space Model,VSM)和主题模型(Topic Model),而主题模型又可分为潜在语义分析模型(LatentSemantic Analy8is,LSA)、概率潜在语义分析模型(Probabilistic Latent Semantic Analysis,PLSA)和隐含狄利克雷分布模型(Latent Dirichlet Allocation,LDA)等。
2.1基于向量空间模型(VSM)的计算方法
Salton等在1975年首次提出向量空间模型(VSM),由于該模型简单高效,在之后很长的一段时间里,它都是文本相似度计算领域的主流方法,VSM的主要思想就是假设一个文本的语义只与该文本中的单词有关,而忽略其语序和单词之间的相互关系,然后通过基于词频统计的方法,将文本映射成向量,最后通过向量间的距离计算以表征文本间的相似度。
在VSM中,将单词作为文本向量的特征项,其中特征项的权重可以用单词在该文本中出现的次数表示,但这样做会导致一些没有实际含义的单词如“is”“are”等的权重变大,进而严重影响文本相似度的计算,因此,目前VSM中最常用的是基于TF-IDF的权重计算法,这种方法将特征项的权重表示为词频(TF)和逆文本频率(IDF)的乘积,词频(TF)可以通过下式进行计算:
从上式可以看出,当一个单词在单一文本中出现的频次很高,而很少出现在其他文本中时,则这个单词的TF-IDF值就会很大,TF-IDF的主要思想就是认为这类单词具有更好的类别区分能力,因此给予这类单词更大的权重。
在利用TF-IDF权重计算法计算出各个特征项的权重之后,就得到了可以表征文本的向量,接下来只要计算向量之间的距离即可,一般来说,距离越近则两文本越相似,文本相似度领域中常用的距离计算包括余弦相似度(cosine Similarity)、欧式距离(Euclidean Distance)、曼哈顿距离(ManhattanDistance)、切比雪夫距离(chebyshev Distance)等,我们还可以将文本向量看成不同的多维变量,因此可以使用统计相关系数进行相似度计算,如皮尔逊(Pearson)和斯皮尔曼(spearman)相关系数等。
Qinglin等l 21l在进行TF-IDF加权计算前,首先通过计算特征项之间的信息增益、卡方检验和互信息等方法进行特征选择,然后在此基础上利用VSM计算语义文本相似度,提高了算法性能,Li等指出传统的VSM方法没有对文本间相同特征词的个数进行统计,这样会导致某些情况下计算结果会变差,因此在VSM基础上增加了文本间相同特征词的统计,Tasi将最长公共子序列(LCS)和VSM相结合,首先对文本进行基于LCS的最优匹配,根据匹配结果赋予关键词不同的权重,在此基础上在进行向量空间模型计算,并且将余弦相似度替换为计算Jaccard系数,进一步提升了算法性能。
尽管有很多研究对VSM方法进行了改进,但是基于VSM的方法仍然有两点缺陷:①当文本量很大时,生成的文本向量是非常稀疏的,这就导致了空间和计算资源的浪费;②VSM为达到简化模型的效果忽略了词语间的关系,但在很多情况下词语之间是存在联系的,因此简单地认为词语间相互独立是不合理的,随着近几年深度学习方法的迅速发展,VSM模型的研究热度逐渐退去,但在深度学习方法中依然有VSM的思想贯穿其中。
2.2基于主题模型(Topic Model)的计算方法
主题模型是机器学习和自然语言处理领域的经典方法,尽管目前在语义文本相似度计算领域中,深度学习方法已经占据主导地位,但主题模型的作用不容忽视,主题模型的基本假设是每个文档包含多个主题,而每个主题又包含多个单词,换句话说,文档的语义由一些隐变量表示,这里的隐变量是指主题,而这些主题代表了文档的语义信息,而主题模型的目的就是揭示这些隐变量和它们之间的相互关系。
主题模型主要包括:①潜在语义分析(LSA)模型;②概率潜在语义分析(PLSA)模型;③潜在狄利克雷分布(LDA)模型,
LSA模型是基于VSM模型而提出的,其基本思想是在得到文本的空间向量表示后,通过奇异值分解(sVD),将高维且稀疏的空间向量映射到低维的潜在语义空间当中,在得到低维的文本向量和单词向量之后,再用余弦相似度等度量方式来计算文本间的语义相似度,LSA的本质思想就是通过降维来去除原始矩阵中的噪音,从而提高计算准确度,但由于使用SVD分解,使得计算复杂度增高,并且可移植性较差。
Hofmann用概率方法代替SVD分解,提出了概率潜在语义分析(PLSA)模型,其核心思想是加入主题层,采用期望最大化算法(Expectation Maximization,EM)训练主题,找到一个潜在主题的概率模型,该模型用于预测文本空间向量中观察到的数据,在PLSA模型中,多义词会被分到不同的主题下,而同义词会被分到同一主题下,从而避免了同义词和多义词对文本相似度计算的影响,但是PLSA的模型参数会随着文档数量线性增长,因而容易出现过拟合和泛化能力差等问题。
Blei等在PLSA模型的基础上提出了潜在狄利克雷分布(LDA)模型,可以将其视作PLSA的贝叶斯版本,该模型是一个三层贝叶斯概率模型,包含词、主题和文档三层结构,并且使用狄利克雷分布来处理文档一主题分布和单词一主题分布,在PLSA中,在给定数据集的情况下文档概率是固定的,如果某个文档没有出现过就无法获取该文档的概率值,而在LDA中,数据集作为训练数据用于训练文档一主题分布的狄利克雷分布,即使没有看到某个文件,仍然可以从狄利克雷分布中抽样得到,从而提高模型的泛化能力。
王振振等对语料库进行LDA主题建模,在建模过程中使用Gibbs采样对模型参数进行估计,在得到文本的主题分布后,通过使用KL(Kullback-Leibler)距离进行文本相似度计算,这也是目前比较常见的基于LDA的语义文本相似度计算方法。
Daping等将LDA与VSM以及基于知识库的方法相结合,分别计算出主题相似度、统计相似度及语义相似度,最终通过线性加权得到最终的相似度得分,Chao等将词性标注与LDA相结合,先对单词进行词性标注,并按照单词词性将其分为名词、动词和其他词,然后分别进行LDA主题建模,最终通过不同权重综合3种模型进行文本相似度计算,由于考虑到了词性对文本相似度的贡献差异,因而提高了文本聚类的准确率。
Miao等将分布式词向量和LDA相结合提出lda2vec模型,在训练词向量的同时训练文档向量和主题向量,在进行相似度计算时可以将3种向量相结合,以提高算法性能,Lau等將语言模型和LDA主题模型相结合,使用分布式词向量而非TF-IDF权值将文本映射为向量,并且对原始的文本向量组成的矩阵进行卷积,最终通过Attention机制产生主题向量,实验结果证明了其性能优于原始LDA模型。
3基于知识库的语义文本相似度计算方法
基于知识库的语义文本相似度计算方法根据知识库的类型可以分为两大类,一类是基于本体的方法,这类方法运用结构化语义词典进行计算,其基本思想就是运用这些语义词典中包含的概念信息和概念间的层次关系进行语义文本相似度计算,另一类是基于网络知识的方法,这类方法主要利用网络大型知识库资源,如维基百科(Wikipedia)和百度百科等,通过网页内容和网页间的超链接进行相似度计算。
3.1基于本体的计算方法
在语义文本相似度计算中,本体是指对特定领域的概念进行抽象化和结构化的描述,通用本体主要包括一些概念语义词典,常见的语义词典有WordNet、《同义词词林》、《知网》(HowNet)等,
WordNet是一种英文的语义词典,不仅包括单词的概念解释、词性信息等,还包含了多种语义关系,如同义关系(synonymy)、反义关系(Antonymy)、上位/下位关系(Hypernymy&Hyponymy)、部分整体关系(Meronymy)等,并且通过概念树的结构展示各个概念之间的关系,《同义词词林》是一种结构上与WordNet十分相似的中文语义词典,它将所有的概念分为大类、中类、小类、词群、原子词群,并通过该分层建立概念树。
《知网》(HowNet)中包含中文和英文两种语言,构建方式与上述两种语义词典有所不同,它将词语分解为多个概念,再将概念分解为多个义原,义原是最小的不可分的语义单位,所有概念的语义都可使用一个有限的义原集合去表示,义原之间存在多种关系,如上下位关系、同义关系、反义关系等,通过这些关系可以构成一个树状的义原层次结构,再根据这个结构进行语义文本相似度计算。
3.1.1基于WordNet和《同义词词林》的计算方法
由于上述两种语义词典的构建方式较为相似,很多方法可以互用,因此放在一起进行介绍,这类方法主要分为4类:①基于距离的方法;②基于信息量Ic(Information Content)的方法;③基于属性的方法;④混合方法,表2对相关方法进行分类并总结了各类方法的特点。
基于距离的方法是指利用语义词典中的概念结构树的层次关系来计算语义文本相似度,两个概念节点在概念层次树中的路径越长,相似度越低。
Rada等假设所有边的权重相同,通过求出两个概念间的最短路径(shortest Path)以表征它们之间的语义文本相似度,Richardson等在Shortest Path方法的基础上,通过对概念的位置信息进行分析,为概念结构树的边加上权重信息,Leacock等除了计算最短距离之外,还考虑了概念在语义词典层次结构中的深度,Wu等则提出不直接计算概念间的距离,而是计算两个概念与其公共父节点之间的距离以表征其语义文本相似度,Hirst等提出在进行距离计算的同时加入转向因子,该方法认为除了考虑距离问题之外,路径中的方向转变越少,则两概念的语义文本越相似,Yang等充分利用WordNet中的同义关系和部分整体关系设计了两种更为复杂的搜索算法用来衡量单词对之间的语义文本相似度,实验证明该算法的性能良好,但该算法包含多个超参数,增加了算法的不确定性,
基于信息量的方法是指利用概念所包含的信息量来衡量概念间的相似度,概念对之间的共享信息量越大,则说明它们越相似,不同学者对于衡量信息量的方法的想法各有不同,
Resnik提出利用概念对的公共父节点在语义词典中出现的频率来衡量概念对的共享信息量;Jiang等利用概念对本身信息量和公共父节点信息量的差值表示概念间的距离;Lin等和Jiang等的想法类似,两者定义的语义文本相似度计算公式稍有不同,之后很多学者尝试改进基于信息量的方法,改进的本质都是定义新的信息量计算方法和新的基于信息量的语义文本相似度的计算公式,
基于属性的方法是指利用概念的属性信息进行相似度计算,属性一般指概念的释义信息和类型信息。
Lesk首先提出统计概念释义中的共现词语的数量以衡量语义文本相似度;Banerjee等在Lesk[411的基础上进行了改进,在统计单词概念释义的同时考虑了其同义词的概念释义信息;Pedersen等提出将概念的释义信息通过语义词典的层次结构转化为释义向量,然后计算概念对的释义向量间的余弦值表征概念的语义相似度。
混合方法一般指结合上述多种方法,综合考虑不同因素对于相似度计算的影响,为各因素赋予不同的权重,然后进行加权求和得到最终的语义文本相似度,Li等将概念间的最短路径、公共父节点在结构树中的深度及概念的局部密度信息相结合;Bin等主要基于信息量,同时融合路径长度、概念深度等信息,提出混合式相似度计算方法;郑志蕴等结合基于距离、基于信息量及基于属性的方法,采用主成分分析法,提出一种自适应相似度加权计算方法以解决传统人工赋权的不足。
3.1.2基于《知网》(HowNet)的计算方法
《知网》用概念描述词汇语义,再用义原描述概念语义,义原是描述概念的最小单位,同时《知网》中也标注了义原之间的各种关系,其中最重要的是上下位关系,通过上下位关系,可以将义原组织为一个树状层次结构,这是利用《知网》计算语义文本相似度的基础,知网中的实词概念主要是由第一基本义原、其他基本义原、关系义原、关系符号4个部分进行描述,刘群等提出将概念按照描述中所包含的义原类别分为几个部分,每个部分分别通过义原结构树计算概念语义相似度,最终加权求和得到最终结果;李峰等在刘群的基础上引入信息量的概念,认为越处于底层的义原节点包含的信息量越大,并以此对算法进行了改进;类似地,江敏等在刘群的基础上加入了义原的深度信息,并且对义原的反义关系的处理采用了全新的方式,该方法应用于情感分析任务时算法效果明显提升,
基于结构化语义词典的方法确实在一定程度上考虑到了词语之间的语义信息,但是有以下缺点:①人工成本高,需要专家参与建立语义词典,并且需要不断地更新新出现的词汇以及部分词汇之间的关系,②领域本体,即特定领域的语义词典,容易出现异构问题,导致算法不通用,③该类方法都是计算词语之间的相似度,句子相似度的计算则是简单地对词语相似度进行加权求和,并没有考虑到句法结构信息,对长文本的相似度计算准确率较低。
3.2基于网络知识的计算方法
随着互联网的快速发展,网络知识愈加丰富,如何充分利用网络中的资源进行语义文本相似度计算非常值得研究,由于网页中知识颗粒度较粗,加之部分网页的知识结构化程度较低,如果直接对所有的网页链接进行分析,会导致知识含量稀疏、计算困难等问题,维基百科作为全球最大的多语种、开源的在线百科全书,知识更新速度更快,知识结构化程度更高,因此,挖掘与利用维基百科中的信息资源成为了研究热点,我们可以将维基百科看成由网页内容及其包含的超链接组成的大型网络,其中,将超链接看成边,网页内容看成节点,则可以将其抽象为有向图模型,表3对基于网络知识的方法进行了简要的分类并总结了各类方法的特点。
Strube等提出的WikiRelatel方法是最早的探索用Wikipedia进行语义文本相似度计算的方法之一,计算方法和基于本体中的方法类似,包括基于距离和基于信息量的方法等,在实验中证明了其结果可以优于部分基于WordNet的方法。
Gabrilovich等提出显式语言分析(Explicit Semantic Anal,ysi8.ESA)方法,该方法通过Wikipedia中的网页内容将文本映射为一个高维向量,再通过基于向量空间的方法进行语义文本相似度计算;Witten等首次提出利用Wikipedia中的超链接结合向量空间的方法进行语义文本相似度计算,由于该方法仅使用链接信息,几乎不用文本信息,所以虽然方法简单,但准确性较差;Yeh等则是在ESA算法的基础上,加入个性化的PageRank算法,在提高性能的同时增加了计算量;Camacho-Collados等在ESA的基础上提出了NASARI方法,该方法额外加上了WordNet的知识信息,得到了更有效的文本向量表示,对比ESA算法效果明显提升。
基于网络知识的方法具有知识信息丰富、知识迭代速度快等优点,但是相比于专家编制的语义词典,维基百科的结构化程度较差,其中也不免有一些错误的信息,整体的分类也更加粗糙,这导致目前基于网络知识的方法效果并不好,如何更好地在半结构化数据中提取更多有用的信息还有待进一步研究。
4基于深度学习的语义文本相似度计算方法
自2013年分布式词向量问世以来,基于深度学习的方法在语义文本相似度领域涌现了许多杰出的工作,目前效果最好的几种模型都是基于深度学习的方法实现的,因此,这类方法在相似度计算领域具有十分重要的意义。
目前,基于深度学习的语义文本相似度计算方法可以分为两大类
无监督方法和监督方法,无论是无监督还是监督方法,都需要在分布式词向量的基础上展开,因此,4.1节简要介绍词向量相关内容,之后两节将分别介绍无监督方法和监督方法。
4.1分布式词向量
简单地说,词向量技术就是将单词映射成向量,最早出现的one-hot编码和TF-IDF方法都可以将单词映射为向量,但是,这两种方法都面临维度灾难和语义鸿沟问题,分布式词向量可以在保存更多语义信息的同时降低向量维度,在一定程度上可以克服维度灾难和语义鸿沟问题。
Mikolov等提出的word2vec是最早生成分布式词向量的方法,它包含两个模型,分别为CBOW和Skip-gram,基本思路是确定中心词和上下文窗口大小,CBOW是通过上下文来预测中心词,Skip-gram是通過中心词来预测上下文,整体来说是通过自监督训练的模型生成词向量,word2vec的主要问题在于它只能考虑局部信息,局部信息的大小取决于上下文窗口的大小。
Pennington等提出Glove模型,该模型通过语料库构建单词的共现矩阵,然后通过该共现矩阵用概率的思想得到最终的词向量,综合了全局语料,在一定程度上考虑了全局信息。
Joulin等则是提出了一种快速文本分类方法FastText,其同样可以用于生成词向量,模型架构与CBOW类似,但赋予模型的任务不同。
以上3种词向量为静态词向量,即当它们应用于下游任务时词向量始终是固定的,无法解决一词多义问题,同时无法满足不同语境下语义不同的场景需求。
动态词向量则是为了解决上述问题所提出的,这类词向量首先在大型语料库上进行预训练,然后在面对具体下游任务时微调所有参数,那么在上下文输入不同时,生成的词向量也不同,因此可以解决一词多义问题。
Peters等提出ELMO模型,其使用双向语言模型和两个分开的双层LSTM作为编码器,通过在大型语料库上进行预训练得到动态词向量。
Radford等提出GPT模型,通过将单向语言模型与编码能力更强大的Transformer架构的decoder部分相结合,从而生成词向量。
Devlin等提出的BERT模型,则是应用Transformer的encoder部分,结合mask机制,并且对模型增加了预测“next sentence prediction”任务,从而生成了更加优质的动态词向量,该模型也是目前最常用的词向量预训练方法之一。
4.2基于无监督学习方法的语义文本相似度计算
无监督学习方法不需要带有标签的数据集就可以计算文本间的语义相似度,这类方法更加通用,在一些资源稀少的特定领域应用广泛,这类方法的基本思路是,通过数据集本身带有的信息进行自监督训练或通过数学分析的方法,对句子中的词向量进行加权求和得到句向量,并最终通过计算向量间距离以表征语义文本相似度,表4对基于无监督学习的计算方法进行了简要的分类并总结了各类方法的特点。
Le等在word2vec的启发下提出了doc2vec,该模型在训练词向量的同时,加入表征段落的向量和词向量共同训练,doc2vec与word2vec相同,有两种训练方式,一种是通过段落向量和上下文单词向量预测中心词;另一种则是通过段落向量预测文本中包含的单词,这样就可以通过计算训练好的段落向量之间的余弦值表征其语义文本相似度。
Pagliardini等提出的sent2vec模型是word2vec模型中CBOW的扩展,其不仅仅使用窗口中的词来预测目标词,而且使用窗口中所有的n-grams表示来预测目标词,为了得到句子向量,将句子看成一个完整的窗口,模型的输人为句子中的n-grams表示,目标是预测句子中的missing word(目标词),而句子向量是所有n-grams向量表示的平均。
Kiros等提出的Skip-Thought模型同样是从word2vec方法中获得灵感,其基本思想是将word2vec中的skip-gram模型通过encoder-decoder架构拓展到句子级别,即用中心句预测其上下句,更具体地说,首先通过encoder对中心句进行编码,然后通过decoder预测中心句的上下两个句子,而模型的目标是,预测的上下句与其对应的真实句越接近越好,Logeswaran等在Skip-Thought的基础上,提出了一种更加高效的方法Quick-Thought,它主要是用分类任务代替了之前的预测任务,对模型任务进行了简化,实验结果证明,QT在训练时间较少的情况下,依然能够达到非常不错的效果。
Hill等提出的模型称为序列去噪自编码器(sequential Denoising AutoEncoder,SDAE),其包括基于LSTM的编码器和解码器两部分,输入信息通过编码器产生编码信息,再通过解码器得到输出信息,并且在原始输入句子上通过将词序互换、删除某些单词等方法加入噪音,模型的目标是使输出信息和原始信息越接近越好,该方法相较于Skip-Thought方法的优势在于只需要输入单个句子,而Skip-Thought需要输入3个有序的句子,Hill等同时还提出了FastSent模型,该模型和Skip-Thought一样,都是基于word2vec中的skip-gram,但是该方法忽略了词序信息,只需要预测周围句子中包含的单词,而无须按照单词在句子中的顺序进行逐一预测,该方法计算速度快,在无监督任务上效果也优于Skip-Thought。
以上方法都是利用自监督的思想,在数据集中通过数据本身携带的信息进行模型训练,以下方法则无须进行训练,直接通过线性规划、PCA降维等在词向量的基础上得到句向量。
Kusner等将句子相似度问题转换为运输问题,引入词移距离,将文本间距离转化为约束条件下的最优化问题,巧妙地将运输问题中的EMD算法应用到相似度计算当中,得到了WMD算法,
Arora等提出的SIF算法则是将主成分分析(PCA)用于句向量的生成,首先用通过改进的TFIDF方法对词向量进行加权平均得到句向量,然后减去所有句子向量组成的矩阵的第一个主成分上的投影,得到最终的句子嵌入,实验表明该方法具有不错的竞争力,在大部分数据集上都比平均词向量或者使用TFIDF加权平均的效果要好。
Ruckle等是对词向量求平均得到句向量的思想进行了改进,通过引入超参数p将“词向量求平均得到句向量”的操作泛化为p-means的一类操作,取不同的p值产生不同的特征,当p=l时,该方法等同于求平均的操作,同时本文使用了多种词向量(如word2vec和Glove等),实验结果表明该方法在无监督任务上具有很好的性能。
无监督的方法不需要带有标签的训练集对模型进行训练,减少了人工打标签的成本,并且更加通用,在一些资源稀少的特定领域应用广泛,但同时由于无法将带有标签的信息和一些先验知识融入其中,相对于监督方法而言,其计算准确率较低。
4.3基于监督学习方法的语义文本相似度计算
监督学习方法是一类需要带有标签的训练集对模型进行训练后才能进行语义文本相似度计算的方法,这类方法由于有标签对模型进行指导,在多数有训练集的任务上,其性能要优于无监督学习方法,监督学习方法从模型架构上可以分为两种,一种是孪生网络(siamese Network)架构;另一种是交互(interaction-based)模型架构,两种模型的典型架构如图2所示。
孪生网络架构一般分为3层,分别为输入层、编码层和相似度测量层,如图2a)所示,输入层主要是句子分词后,将单词映射为词向量后输入编码层;编码层对句中的词向量进行编码得到句向量;相似度测量层则是对两个句向量进行相似度计算,可以是简单地利用向量距离如欧式距离、余弦相似度等直接表征两个句子的语义相似性,也可以是将两个句向量拼接后傳人多层感知机或其他分类器得到最终的语义文本相似度度量,“孪生”主要体现在句子对中SA和SB同时输入左右两个网络当中,这两个网络的输入层和编码层模型架构完全相同并共享权重。
孪生网络在语义文本相似度计算中效果很好,但缺少了两个句子在编码过程中的交互,两个句子编码时相互独立,这样不利于后面的相似度度量,因此交互模型应运而生。
交互模型如图2b)和图2c)所示,整体与孪生网络类似,但在编码层利用Attention机制或其他技术增加两个网络间的交互,然后将交互结果传人相似度度量层,表5是按照模型层次结构中所用的技术进行的简要总结,接下来将分小节详细介绍基于孪生网络的方法和基于交互模型的方法。
4.3.1基于孪生网络的方法
Huang等提出的DSSM算法是最先将孪生网络架构用于语义文本相似度计算的算法之一,DSSM架构主要分为输入层、表示层、匹配层,这种三层架构也是后来基于孪生网络的算法最常用的架构,输入层主要将原始文本映射为向量,由于本文在2013年被提出,当时的分布式词向量刚刚问世,因此本文并没有使用词向量,而是使用字符级的trigram方法将文本映射为高维向量,更具体地说,trigram是将3个字符为一组映射为one-hot向量,最后将句子中的trigram向量相加得到高维句子向量表示,表示层是将高维的句子向量映射为低维向量,DSSM表示层就是简单的几个全连接层,最终将句子映射为128维的低维向量,匹配层是将两个低维句子向量表示之间求余弦相似度来表征两个句子的语义相似度,DSSM模型在文本匹配任务上取得了突出的成绩,但忽略了语序信息和上下文信息。
Shen等将CNN网络引入DSSM模型以保留更多的上下文信息,该方法对DSSM的改进主要发生在表示层,该模型表示层中添加了卷积层和池化层,使得上下文信息得到了有效保留,但是由于卷积核的限制,距离较远的上下文信息仍会丢失。
Palangi等为了保留更多的上下文信息,将LSTM网络引入其中,该网络考虑到了距离更远的上下文信息和一些语序信息,使得算法效果有所提升,Mueller等在预训练的词向量的基础上同样使用Siamese-LSTM对句子进行编码,然后,使用编码得到的句向量之间的曼哈顿距离来预测句子对的语义相似度,实验证明将该方法和SVM结合用于情感分类(Entailment Classification),效果提升明显。
Lin等将双向LSTM(BiLSTM)和Self-Attention技术相结合得到句子向量表示,具体来说就是,首先将句子通过BiLSTM模型,将得到的每一时刻的两个方向的向量拼接成一个二维矩阵,然后通过自注意力机制(self-Attention)得到句中每个词向量对应的权重,最终通过词向量的加权求和得到句向量,在训练网络时同样是使用Siamese架构,在得到句向量后进行简单的特征提取,如拼接、点积、对位相减等,然后输入一个多层感知机,得到最终的语义文本相似度。
Pontes等目将CNN模型和LSTM模型同时用于Siamese架构来计算语义文本相似度,首先将句子分成局部片段,然后将每个片段分别经过CNN网络得到片段向量,再将原句中的词向量和它所对应的上下文向量拼接起来传人LSTM网络,最终得到句向量后,计算句向量间的曼哈顿距离以表征语义文本相似度。
下面3种方法基于迁移学习进行语义文本相似度计算,基本思想是在其他NLP任务中进行训练然后将生成的句向量用于计算语义文本相似度当中。
Conneau等提出InferSent模型,在自然语言推理(NLI)任务上,通过孪生网络架构训练通用句向量,文中使用了7种不同的encoder,其中包括GRU、LSTM、双向GRU、双向LSTM等,并通过最终实验证明,在encoder选取双向LSTM并使用max-pooling技术的情况下,生成的句向量比Skip-Thought和FastSent等方法要更好。
Yang等18引提出了“如果句子的回复具有相似的分布,那么它们在语义上也是相似的,”的想法,从这个想法出发,通过使用对话数据来学习句子级向量表示,并通过SNLI数据集对模型进行加强,该模型基于孪生网络架构,一共用了两种编码器,一种为DAN,DAN是指将句子中的词向量进行加权平均之后送人前馈神经网络中得到句子隐层表示,另一种为Transformer架构的编码部分,主要由多头注意力(Multi-head Attention)机制和前馈神经网络组成,通过上述两种编码器对句子进行编码得到句向量,再经过简单的特征提取后送入多层感知机模型得到最终的相似度得分,实验表明,该模型在语义文本相似度任务上表现突出。
Cer等提出了USE模型,在Yang等的模型基础上结合Skip-Thought,将模型拓展到了更多的任务上,通过多任务学习得到通用句子表示。
纵览上述方法,可以清晰地看到基于孪生网络的计算方法的发展进程,对于模型的改进主要集中在使用不同的编码器,如从最开始的多层感知机发展为CNN、LSTM,再到Transformer等,从训练数据角度上说,这类方法从单一训练数据集逐步发展到迁移学习,再发展到多任务学习,目前基于多任务学习计算语义文本相似度的探索才刚刚开始,针对不同任务的训练数据具有不同的标签,包含着句子不同角度的信息,那么建立一个通用的模型架构,通过在不同的任务数据集上进行训练,从而提升模型性能,是未来重要的研究方向之一。
4.3.2基于交互模型的方法
基于孪生网络的方法在编码层对句子编码时是相互独立的,句子对之间没有交互,这样对于计算句子对的语义相似度会造成一定影响,基于交互模型的方法就是为了解决这个问题而产生的,它是在孪生网络的基础上增加两个平行网络之间的交互作用,从而提取到句子对之间更加丰富的交互信息。
Yin等提出了ABCNN模型,是在词向量基础上通过CNN网络对句子进行处理,在分别对句子对中的句子进行卷积和池化操作的同时,使用Attention机制对两个中间步骤进行交互,文中一共尝试了3种添加Attention的策略,主要区别是作用于模型的不同阶段,如第一种Attention是直接作用在词向量组成的矩阵上,而第二种Attention是作用在经过卷积和池化操作后产生的输出矩阵上,第三种则是将前两种方法相結合,可以将经过卷积和池化操作后得到的结果看作短语向量,而该短语向量的长度取决于卷积核的大小,从这个角度理解,第一种和第二种Attention方法的区别实质上是在不同粒度上对模型进行了处理。