概述

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

文本相似度定义

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

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

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

相似度一般用[0,1]表示,该实数可以通过语义距离计算获得。相似度与语义距离呈反比关系,语义距离越小,相似度越高;语义距离越大,相似度越低。通常用下面的公式表示相似度与语义距离的关系。
Sim(SA,SB)=αDis(SA,SB)+αSim(S_A,S_B) = \frac {\alpha} { Dis(S_A,S_B) + \alpha } Sim(SA​,SB​)=Dis(SA​,SB​)+αα​
其中,Dis(SA,SB)Dis(S_A,S_B)Dis(SA​,SB​)表示文本SA,SBS_A,S_BSA​,SB​之间的非负语义距离,α\alphaα为调节因子,保证了当语义距离为0时上述公式的意义。

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

文本相似度计算方法

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

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

基于字符串的方法

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

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

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

基于语料库的方法

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

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

基于词袋

词袋模型(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等。词向量的本质是从未标记的非结构文本中训练出一种低维实数向量,这种表达方式使得类似的词语在距离上更为接近,同时较好的解决了词袋模型由于词语独立带来的维数灾难和语义不足问题。

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

基于搜索引擎

基本原理是给定搜索关键词x,yx,yx,y,搜索引擎返回包含 x,yx,yx,y的网页数量f(x),f(y)f(x),f(y)f(x),f(y)以及同时包含x,yx,yx,y的网页数量f(x,y)f(x,y)f(x,y),计算谷歌相似度距离如下所示:
NGD(x,y)=G(x,y)−min(G(x),G(y))max(G(x),G(y)=max{logf(x),logf(y)}−logf(x,y)logN−minlogf(x),logf(y)NGD(x,y) = \frac { G(x,y) - min(G(x),G(y)) } { max(G(x),G(y)} \\ = \frac {max\{ log \,f(x), log\,f(y) \} - log \, f(x,y)} { log \, N - min{log \,f(x), log \, f(y)} } NGD(x,y)=max(G(x),G(y)G(x,y)−min(G(x),G(y))​=logN−minlogf(x),logf(y)max{logf(x),logf(y)}−logf(x,y)​

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

基于世界知识的方法

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

基于本体知识

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

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

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

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

基于网络知识

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

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

其他方法

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

  • 句法分析
  • 混合方法

总结

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

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

【技术服务】,详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg


扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!


【论文】文本相似度计算方法综述相关推荐

  1. python 文本相似度计算函数_一文讲述常见的文本相似度计算方法

    作者 | LU_ZHAO 责编 | 徐威龙 前言 在自然语言处理中,我们经常需要判定两个东西是否相似. 比如,在微博的热点话题推荐那里,我们需要比较微博之间的相似度,让相似度高的微博聚集在一起形成一个 ...

  2. 中文文本相似度计算工具集

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 一.基本工具集 1.分词工具 a.jieba 结巴中文分词 htt ...

  3. 【跨语言剽窃检测】文本相似度分析之一

    对比文件1: 2010年的跨语言剽窃检测新方法 作者RaFael Corezola Pereira instituion : UFRGS 摘要: 作者提出一个跨语言剽窃检测新方法,分为5个主要阶段: ...

  4. 基于隐马尔科夫模型文本相似度问题研究

    文本相似度是表示两个或者多个文本之间匹配程度的一个度量参数,相似度数值大,说明文本相似度高:反之文件相似程度就低.文本相似度的精确计算问题是进行信息处理的关键. 在如今信息技术飞速发展的互联网时代,文 ...

  5. 结巴分词关键词相似度_中文文本相似度计算工具集

    [磐创AI导读]:前两篇文章中我们介绍了一些机器学习不错的项目合集和深度学习入门资源合集,本篇文章将对中文文本相似度计算工具做一次汇总.喜欢我们文章的小伙伴,欢迎大家点击上方蓝字关注我们的公众号:磐创 ...

  6. 文本相似度计算(一)

    1.词性标注北大标准:http://blog.csdn.net/xiaokang06/article/details/17420729 2.文本相似度计算方法:http://www.cnblogs.c ...

  7. sklearn tfidf求余弦相似度_【基础算法 】文本相似度计算

    在自然语言处理中,文本相似度是一种老生常谈而又应用广泛的基础算法模块,可用于地址标准化中计算与标准地址库中最相似的地址,也可用于问答系统中计算与用户输入问题最相近的问题及其答案,还可用于搜索中计算与输 ...

  8. 自然语言语义相似度计算方法

    计算机对主观题的自动评阅准确与否,主要取决于其对文本相似度的计算是否准确.由于文本相似度计算在文档复制检查.信息检索和机器翻译等领域都有十分广泛的应用,所以,近年来有越来越多的学者致力于文本相似度算法 ...

  9. 【基础算法 】文本相似度计算

    在自然语言处理中,文本相似度是一种老生常谈而又应用广泛的基础算法模块,可用于地址标准化中计算与标准地址库中最相似的地址,也可用于问答系统中计算与用户输入问题最相近的问题及其答案,还可用于搜索中计算与输 ...

最新文章

  1. Linux视频切片m3u8,使用ffmpeg+nginx使用视频切片播放
  2. 设置textview背景色为透明
  3. 在jenkins上配置 sonar 两种方式的区别
  4. 数据对拍代码 c++
  5. [骗分技巧——随机化Ⅱ] [Poi2014]Couriers,CodeChef - TKCONVEX
  6. linux内核安装教程,Linux内核5.9的最重要功能及安装方法
  7. ubuntu14.04安装V-REP和用户使用手册
  8. double几位小数_算法竞赛入门之每日一题:分数化化小数(decimal) C语言
  9. Golang gRPC实践 连载五 拦截器 Interceptor
  10. IntelliJ IDEA开发Java笔记
  11. 信息安全软考——第四章 网络安全体系与网络安全模型 知识点记录
  12. Ubuntu 解析迅雷链接
  13. 论文阅读:Bridging Knowledge Graph to Generate Scene Graph(ECCV20)
  14. 大规模WebGL应用引发浏览器崩溃的几种情况及解决办法
  15. “开会” 引发的思考
  16. 你来分我先选 原则
  17. FX5U 结构体编程
  18. Swing关于JButton去除点击后的内边框的问题纪要!
  19. Android JNI 开发
  20. 软件测试 | 测试开发 | RPC接口测试技术-Tcp 协议的接口测试

热门文章

  1. 程序设计思维与实践 Week15 作业A - ZJM 与霍格沃兹
  2. 用IP地址签发SSL证书
  3. 实例讲解:JAVA SOAP技术(2)完
  4. ps如何裁剪掉图片中间不需要的部分
  5. 计算机只能用右键打开方式,电脑所有的程序双击打开的都是属性,必须右键打开才可以,该怎么处理...
  6. 微内核是什么?宏内核是什么?一文带你了解操作系统内核架构!
  7. python+selenium移动滑块代码【杭州多测师_王sir】【杭州多测师】
  8. 【UOJ #198】【CTSC 2016】时空旅行
  9. 安卓 sdk 离线包_百度离线ocr识别开发sdk包
  10. Elasticsearch中安装IK分词器