文本相似度计算|学习笔记(一)

简介: 快速学习文本相似度计算

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践 文本相似度计算】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15459


文本相似度计算

 

关于文本相似度的定义,目前没有公认统一的定义。下面的定义的只是基于一个常理,基于一个假设推论。

它的一种形式化的相似度定义的表达。那么这个表达是这样子就是两串文本A和B它的相似度等于它们公共的信息common,然后以及它的整体的描述信息description。

这是它们的数学关系。接着来看看这个公共信息是怎么定义的,A和B的公共信息,用common(A,B)来表达它,形式化表达它。共性越大、差异越小、则相似度越高;共性越小、差异越大,则相似度越低。那么再看看它的整体信息,A、B的全部信息用descfiption(A,B)来表示,相似度最大的情况就是文本完全相同。

然后和整体的一个全部信息的比例那应该是1,也就是相似度,如果定义在0和1的这个范围里面的,那么就有这样一个性质。下面关于相似度还有两个概念,一个是相似度,一个是相关度。先看相关度,那么相关度体现在文本共现或者以任何形式相互关联,包括上下位关系,同义关系,反义关系,部件-整体关系,值-属性关系等。它反映的是文本的组合特征,这是它的相关度。

相似度是相关度的一种特殊情况。它包括了相关度里面的这种上下位关系,同义关系。那么文本相似度越高,则相关度越高,但是反过来相关度越大的话,并不能说明相似度越高。所以要注意这两个概念的这个区分。

下面来看看文本相似度的计算有什么应用,有什么价值,也就是相似度的应用领域。应用领域实际上是还是非常多的,这里面列几个比较经典,比较主要的应用领域。一个是在搜索引擎里面,搜索文本的时候还需要做相似度计算。

那么还有文献的精准推送,就是你需要什么文献?需要查什么文献?还能够给你精准推送。然后还有这个文献的查重。这个可能以后就能遇到毕业论文要查重。再是一些自动问答。q and a,这个问题和答案之间有相似度的匹配。然后是一些聊天机器人,随着人工智能时代不断的推进,像聊天机器人,这个可能会越来越多,那么在这些应用场景里面,都需要进行文本相似度的计算。

这个文本相似度计算,它的这个等级的话,可以分为单词等级的相似度,句子等级的,一句话是不是相似?整个段落是不是相似,以及整篇文章是不是相似?这样不同的粒度,这都是完美相似度研究的范畴。有些应用里面可能要考虑整篇文章它的相似。那么有的时候呢要考虑什么?它的段落是不是相似?有的时候考虑到句子是不是相似?然后再考虑到用的单词是不是相似?

首先大家想像一下,说这个论文查重的话,这个论文查重系统,如果它的功能更强大的话,那它可以做到什么?可以做到句子级别,单词级别的这样的查重。那这个就更严格了。以前学生反应有经验,就是说怎么样能够让查重的这个重复率降低。他就把这个参考的文献的一句话,用谷歌翻译一下,翻译成中文,再拿中文到百度翻译里,再去翻译成英文。或者他就是说把别人给的一段中文,到谷歌里去翻译成英文,再把这个英文到百度里去翻译成中文,再把这个中文用做文章。他说逃避这个查重,降低查重率。那如果说真的要做到单词级别,句子级别的话,那这个论文写起来可能要求就更高了。

image.gif下面我们来看一看文本像素的计算有哪些方法?这里给大家列出了四大类方法。第一种是基于字符串的方法,文本都是由字符串构成的,那么它是从字符串的匹配出发,以字符串它的共现和重复程度为相似度衡量标准。字符串之间是不是匹配?它们匹配共现出现多少?重合有多少?作为衡量标准,根据计算的粒度,这个方法可以分为有字符级别的和词语级别的。

可以到字符,可以到词语,这是字符串的一个文本相似度计算的方法。第二种是基于语料库,那么语料库的就是说需要很多的文本信息。那么一大批,前面的字符串的话,可能要的能量就比较少。它需要在一大片的语料库里面基于词袋模型,把文本分成词组成的。然后对词袋模型里的哎进行量化。比如说用词频,TF-IDF调节商户信息。量化以后,进行什么?进行那个量化的向量的一些相似度计算。再可以基于神经网络的方法,主要是什么?主要是基于一些词向量的方法。它也是量化,但是量化它是向量,是一种分布式表示。接着基于搜索引擎的方法,就是在搜索引擎上面有大量的这个文档,大量的语料。在它里面来判断这个文本是不是相似,搜索引擎主要是表示它的语料的数据的来源更大。但是它背后的算法也可以用前面的这个讲的这种词袋或者是词向量的这个方法。那么这里讲到了前两种方法,是以待比较相似度的文档集合为语料库。所以语料库它是一大批文档集合,搜索引擎是以web这个语料库,然后可能更大一点。所以这是基于语料库,大家要理解一下。

第三种就是基于知识组织。这个概念可以很好的层次相关组织起来,这是组织,叫知识组织。是由规范组织体系的知识库来计算文本的相似度。那么一般是两种,一种是去本体的方法。

另外一个基于网络的知识,像维基百科知识。那么本体的话,不知道以前接触过没有。它那是一个概念层次体系,完全通过语义连起来。这个在文本的语义理解里面,也是非常重要的一个本体的方法。

然后再就是有其它的方法,不属于这三种方法之外的方法,都认为是其他方法。那么用的比较多的一种就是句法分析。那么介绍了四种相似度的计算方法,后面的话,会把这个前三种给大家再详细展开一下。

来看看基于字符串的代表方法有哪些?前面刚刚讲到,字符串方法里面按照粒度可以分为两种,一种是基于字符,一种是基于词语的。那么在字符级别的这个字符串的比较,方法的话,有一些编辑距离,汉明距离,lcs,Jaro-Winkler,N-gram等等。如果是基于词语的方法的话,可以计算这个词语构成向量的余弦相似度。欧式距离,Dice系数等等。

那么这么一个方法,它的基本思想,表格里都有描述。包括就是说,它的这个特点和不足在这个表格里也有统计,所以这一份资料的话,同学们课后可以仔细研究。在课里面,直接给大家简单提一下。就是字符串的方法,代表方法有这样一些。然后再基于语料库的方法,主要有三种。

第一种基于词袋方法,比如说用向量空间模型VSM,也可以用概率的盈余分析LSA、PLSA,或者LDA主题模型。它的基础都是基于语料构成的词袋。第二种方法是基于神经网络。主要是生成词向量,主要有这么几种word2vec,Glove,目前很热门的Bert。第三是基于搜索引擎,主要搜索引擎上有大量的Web内容,可以认为是最大的语料库。搜索引擎算法在进步,可以从搜索中找到答案。这个发展好的话,很方面用户的使用。用户想查两段文字是不是相似,可以到搜索引擎里搜一下,然后就能反馈出结果。如果这个成熟的话,那对用户来说就很方便。

那么基于词袋方法的话,看一个特点。它不考虑在文档中出现的顺序,所以它的语义稍弱一点。它只是一个袋子里装了很多词的词袋。而神经网络是通过神经网络模型生成词向量,利用上下文语义关系生成低维的实数向量。所以它的语义要强。

最后搜索引擎主要是基于它庞大的语料库,可以利用一个原理来进行文本相似的判断。就是一般搜索关键词,两个关键词x,y搜索引擎返回包含c,y的网页数量f(x),f(y)以及同时包含x和y的网页数量f(x,y)。

如果搜索引擎能很好的提供文本相似度计算的功能的话,就太方便了。写论文的话担心与别人相似,有抄袭嫌疑的话,在搜索引擎里搜一下就可以了。

词袋模型与词向量模型示例

image.gif

image.gif

相关文章
|
3天前
|
存储 算法 搜索推荐
十分钟带你入门向量检索技术
本文主要对向量检索的概念、应用场景、距离计算方式和基础算法进行介绍,后续还将进一步分享向量检索的技术调研、测试、应用和思考。
|
3天前
|
机器学习/深度学习 人工智能 数据挖掘
【机器学习】贝叶斯统计中,“先验概率”和“后验概率”的区别?
【5月更文挑战第11天】【机器学习】贝叶斯统计中,“先验概率”和“后验概率”的区别?
|
3天前
|
人工智能 API 开发工具
通过百川智能向量化模型将文本转换为向量
本文介绍如何通过百川智能向量化模型将文本转换为向量,并入库至向量检索服务DashVector中进行向量检索。
通过百川智能向量化模型将文本转换为向量
|
机器学习/深度学习 自然语言处理 算法
文本相似度计算|学习笔记(二)
快速学习文本相似度计算
204 0
文本相似度计算|学习笔记(二)
|
自然语言处理 算法 开发者
文本相似度计算 下|学习笔记
快速学习文本相似度计算 下
165 0
文本相似度计算 下|学习笔记
|
机器学习/深度学习 自然语言处理 搜索推荐
文本相似度计算 中|学习笔记
快速学习文本相似度计算 中
79 0
文本相似度计算 中|学习笔记
|
机器学习/深度学习 人工智能 自然语言处理
文本相似度计算|学习笔记
快速学习文本相似度计算
816 0
文本相似度计算|学习笔记
|
BI 数据库 开发者
高维向量检索的设计与实践|学习笔记
快速学习高维向量检索的设计与实践
100 0
高维向量检索的设计与实践|学习笔记
|
数据库 计算机视觉
图像特征计算与表示——基于内容的图像检索
图像特征计算与表示——基于内容的图像检索
133 0
图像特征计算与表示——基于内容的图像检索