概述

在信息爆炸时代,人们迫切希望从海量信息中获取与自身需要和兴趣吻合度高的内容,为了满足此需求,出现了多种技术,如:搜索引擎、推荐系统、问答系统、文档分类与聚类、文献查重等,而这些应用场景的关键技术之一就是文本相似度计算技术。因此了解文本相似度的计算方法是很有必要的。

文本相似度定义

文本相似度在不同领域被广泛讨论,由于应用场景不同,其内涵有所差异,故没有统一、公认的定义。

Lin从信息论的角度阐明相似度与文本之间的共性和差异有关,共性越大、差异越小、则相似度越高;共性越小、差异越大、则相似度越低。相似度最大的情况是文本完全相同。同时提出基于假设推论出相似度定理,如下所示:
文本相似性算法 开源代码 hanlp 文本相似度 算法_simhash
其中,common(A,B)是A和B的共性信息,description(A,B)是描述A和B的全部信息,上述公式表达出相似度与文本共性成正相关。 由于没有限制领域,此定义被采用较多。

相关度与相似度是容易混淆的概念,大量学者没有对此做过对比说明。相关度体现在文本共现或者以任何形式相互关联(包括上下位关系、同义关系、反义关系、部件-整体关系、值-属性关系等)反映出文本的组合特点。而相似度是相关度的一种特殊情况,包括上下位关系和同义关系。由此得出,文本的相似度越高,则相关度越大,但是相关度越大并不能说明相似度高。

相似度一般用[0,1]表示,该实数可以通过语义距离计算获得。相似度与语义距离呈反比关系,语义距离越小,相似度越高;语义距离越大,相似度越低。通常用下面的公式表示相似度与语义距离的关系。
文本相似性算法 开源代码 hanlp 文本相似度 算法_神经网路_02
其中,文本相似性算法 开源代码 hanlp 文本相似度 算法_文本相似度_03表示文本文本相似性算法 开源代码 hanlp 文本相似度 算法_simhash_04之间的非负语义距离,文本相似性算法 开源代码 hanlp 文本相似度 算法_神经网路_05为调节因子,保证了当语义距离为0时上述公式的意义。

文本相似度计算中还有一个重要的概念是文本表示,代表对文本的基本处理,目的是将半结构化或非结构化的文本转化为计算机可读形式。文本相似度计算方法的不同本质是文本表示方法不同

文本相似度计算方法

文本相似性算法 开源代码 hanlp 文本相似度 算法_文本相似度_06

文本相似度计算方法可分为四大类:

  • 基于字符串的方法(String-Based)
  • 基于语料库的方法(Corpus-Based)
  • 基于世界知识的方法(Knowledge-Based)
  • 其他方法

基于字符串的方法

该方法从字符串匹配度出发,以字符串共现和重复程度为相似度的衡量标准。根据计算粒度不同,可以将该方法分为基于字符的方法基于词语的方法。下图列出两种方法常见的算法以及思路

文本相似性算法 开源代码 hanlp 文本相似度 算法_文本相似度_07

基于字符串的方法是在字面层次上的文本比较,文本表示即为原始文本,该方法原理简单,易于实现,现已成为其他方法的计算基础。

但不足的是将字符或词语作为独立的知识单元,并未考虑词语本身的含义和词语之间的关系。以同义词为例,尽管表达不同,但具有相同的含义,而这类词语的相似度依靠基于字符串的方法并不能准确计算。

基于语料库的方法

基于语料库的方法利用语料库中获取的信息计算文本相似度。基于语料库的方法可以划分为:

  • 基于词袋模型的方法
  • 基于神经网络的方法
  • 基于搜索引擎的方法

基于词袋

词袋模型(Bag of Words Model,BOW)建立在分布假说的基础上,即“词语所处的上下文语境相似,其语义则相似”。其基本思想是:不考虑词语在文档中出现的顺序,将文档表示成一系列词语的组合。

根据考虑的语义成程度不同,基于词袋模型的方法主要包括:

  • 向量空间模型(Vector Space Model,VSM)
  • 潜在语义分析(Latent Semantic Analysis,LSA)
  • 概率潜在语义分析(Probabilistic Latent Semantic Analysis,PLSA)
  • 潜在狄利克雷分布(Latent Dirichlet Allocation,LDA)
VSM

VSM模型的基本思想是将每篇文档表示成一个基于词频或者词频-逆文档频率权重的实值向量,那么N篇文档则构成n维实值空间,其中空间的每一维都对用词项,每一篇文档表示该空间的一个点或者向量。两个文档之间的相似度就是两个向量的距离,一般采用余弦相似度方法计算。

VSM有两个明显的缺点:一是该方法基于文本中的特征项进行相似度计算,当特征项较多时,产生的高维稀疏矩阵导致计算效率不高;二是向量空间模型算法的假设是文本中抽取的特征项没有关联,不符合文本语义表达。

LSA,PLSA

LSA算法的基本思想是将文本从稀疏的高维词汇空间映射到低维的潜在语义空间,在潜在的语义空间计算相似性。LSA是基于VSM提出的,两种方法都是采用空间向量表示文本,但LSA使用潜在语义空间,利用奇异值分解提高对高维的词条-文档矩阵进行处理,去除了原始向量空间的某些“噪音”,使数据不再稀疏。Hofmann在LSA的基础上引入主题层,采用期望最大化算法(EM)训练主题。

LSA本质上是通过降维提高计算准确度,但该算法复杂度比较高,可移植性差,比较之下,PLSA具备统计基础,多义词和同义词在PLSA中分别被训练到不同的主题和相同的主题,从而避免了多义词,同义词的影响,使得计算结构更加准确,但不适用于大规模文本。

LDA

LDA主题模型是一个三层的贝叶斯概率网络,包含词、主题和文档三层结构。采用LDA计算文本相似性的基本思想是对文本进行主题建模,并在主题对应的词语分布中遍历抽取文本中的词语,得到文本的主题分布,通过此分布计算文本相似度。

以上三类尽管都是采用词袋模型实现文本表示,但是不同方法考虑的语义程度有所不同。基于向量空间建模的方法语义程度居中,加入潜在语义空间概念,解决了向量空间模型方法的稀疏矩阵问题并降低了多义词,同义词的影响。基于LDA的主题模型的方法语义程度最高,基于相似词语可能属于统一主题的理论,主题经过训练得到,从而保证了文本的语义性。

基于神经网络

基于神经网络生成词向量计算文本相似度是近些年提的比较多的。不少产生词向量的模型和工具也被提出,比如Word2Vec和GloVe等。词向量的本质是从未标记的非结构文本中训练出一种低维实数向量,这种表达方式使得类似的词语在距离上更为接近,同时较好的解决了词袋模型由于词语独立带来的维数灾难和语义不足问题。

基于神经网络方法与词袋模型方法的不同之处在于表达文本的方式。词向量是经过训练得到的低维实数向量,维数可以认为限制,实数值可根据文本距离调整,这种文本表示符合人理解文本的方式,所以基于词向量判断文本相似度的效果有进一步研究空间。

基于搜索引擎

基本原理是给定搜索关键词文本相似性算法 开源代码 hanlp 文本相似度 算法_word2vec_08,搜索引擎返回包含 文本相似性算法 开源代码 hanlp 文本相似度 算法_word2vec_08的网页数量文本相似性算法 开源代码 hanlp 文本相似度 算法_word2vec_10以及同时包含文本相似性算法 开源代码 hanlp 文本相似度 算法_word2vec_08的网页数量文本相似性算法 开源代码 hanlp 文本相似度 算法_神经网路_12,计算谷歌相似度距离如下所示:
文本相似性算法 开源代码 hanlp 文本相似度 算法_simhash_13

但是该方法最大的不足是计算结果完全取决于搜索引擎的查询效果, 相似度因搜索引擎而异

基于世界知识的方法

基于世界知识的方法是利用具有规范组织体系的知识库计算文本相似度,一般分为两种:基于本体知识和基于网络知识。

基于本体知识

文本相似度计算方法使用的本体不是严格的本体概念, 而指广泛的词典、叙词表、词汇表以及狭义的本体。由于本体能够准确地表示概念含义并能反映出概念之间的关系, 所以本体成为文本相似度的研究基础[7]。最常利用的本体是通用词典, 例如 WordNet、《知网》(HowNet)和《同义词词林》等, 除了词典还有一些领域本体, 例如医疗本体、电子商务本体、地理本体、农业本体等。

结合Hliaoutaki、Batet等的研究,将基于本体的文本相似度算法概括为四种:

  • 基于距离
  • 基于内容
  • 基于属性
  • 混合式相似度

下表列出了各种方法的基本原理、代表方法和特点

文本相似性算法 开源代码 hanlp 文本相似度 算法_文本相似度_14

基于网络知识

由于本体中词语数量的限制,有些学者开始转向基于网络知识方法的研究,原因是后者覆盖范围广泛、富含丰富的语义信息、更新速度相对较快,使用最多的网络知识是维基百科、百度百科。网络知识一般包括两种结构,分别是词条页面之间的链接和词条之间的层次结构。

基于网络知识的文本相似度计算方法大多利用页面链接或层次结构,能较好的反映出词条的语义关系。但其不足在于:词条与词条的信息完备程度差异较大,不能保证计算准确度,网络知识的生产方式是大众参与,导致文本缺少一定的专业性。

其他方法

除了基于字符串、基于语料库和基于世界知识的方法, 文本相似度计算还有一些其他方法,比如:

  • 句法分析
  • 混合方法

总结

本文总结了文本相似度计算的四种方法,以及他们的优缺点。作者认为今后文本相似度的计算方法趋势有三个方向,分别是:

  • 基于神经网络的方法研究将更加丰富
  • 网络资源为文本相似度计算方法研究提供更多支持
  • 针对特定领域以及跨领域文本的相似度计算将成为今后发展的重点