文本相似度计算 下|学习笔记

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

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

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


文本相似度计算 下

 

内容介绍:

一、 Jaccard 相似度计算

二、 SimHash 计算方法

三、余弦相似度计算

四、基于词向量的文本相似度

 

一、 Jaccard 相似度计算

1.计算公式

假如有A和B两个相似的文档,  Jaccard  的计算公式就是它们的交集除以它们的并集,可简化成A和B的交集除以A和B的数量和再减去A和B的交集。

image.gif2.特点

只考虑单词出现与否,忽略每个单词的含义,忽略单词顺序,没有考虑单词出现的次数。

3.示例

有两个文本S1和S2:

S1=”Natural language processing is a promising research area”#

S2=”More and more researchers are working on natural language processing nowadays”#

S1有8个词,S2有11个词,它们的交集: language, processing  2个词。

所以相似度即 Jaccard Similarity =2/(8+11-2)=0.11764

image.gif

 

二、 SimHash 算法

1.算法思想

SimHash 算法的主要思想是降维,将高维的特征向量映射成一个低维的特征向量,通过两个向量的 Hamming Distance 来确定文章是否重复或者高度近似。 Google 采用这种计算方法来解决万亿级别的网页的去重任务。

2.算法步骤

Simhash 算法分为5个步骤:

分词:得到有效的特征向量,每一个特征向量设置1-5等5个级别的权重

Hash: 计算哥哥特征向量的 hash 值, hash 值为二进制数01组成的 n-bit 签名

加权:给所有特征向量进行加权,即 W=Hash*weight

合并:将上述各个特征向量的加权结果累加,变成只有一个序列串

降维:上述累加结果,如果大于0则置1,否则置0,从而得到该语句的 smihash 值,最后使可以根据不同语句 smihash 的海明距离来判定他们的相似度。

3.示例

比如文本“美国‘51区’雇员称内部有9驾飞碟,曾看见灰色外星人”, simhash 算法第一步就是将该文本进行分词。第二步进行 hash 计算。第三步是进行加权,加权是1-5的等级级别。第四步,进行合并累加。最后进行降维。

 image.gif


三、余弦相似度计算

1.计算公式

余弦等于A乘B的数量再除以A的向量和B向量的积。

image.gif2.特点

夹角越小,余弦值就越接近于1,它们的方向更加吻合,则越相似,余弦相似度算法适合于短文本,而不适合于长文本。

3.示例

句子A:这只/皮靴/号码/大了,那只/号码/合适

句子B: 这只/皮靴/号码/不/小,那只/更/合适

共同词:这只,皮靴,号码,大了。那只,合适,不,小,很

权重向量:句子A:(1,2,1,1,1,0,0,0) 句子B:(1,1,1,0,1,1,1,1,1)

带入余弦公式计算即可,最后计算结果是相似度0.81

 

四、基于词向量的短文本相似度计算

1.算法思想

WMD(Worde Mover Distance, 词移距离)是一种短文本相似度计算标准;可以用于短文本的相似检索, KNN 分类等问题, KNN 分类中也需要算距离,这是算法的一个基础。

2.算法步骤

将 query 中的每个词投射到 Word Embedding 词向量的空间,得到一团短点云Q,

每一个词在向量空间里面很很多点云。将 reference 也同样投射成一团点云C, 计算查询和参考资料之间的距离,如从Q到C的距离,作为WMD值,即两者的语义距离。

3.示例

两个文档  document 1 和 document 2, 之间相似,将1和2放在多维空间里面,里面有很多点云。一个点就代表一个词,词于词之间相似。

image.gif4.文献参考

From work embeddings to document distances. (MJ Kusner,2015

 

相关文章
|
3月前
|
算法
文本相似度算法
文本相似度算法
|
5月前
|
搜索推荐 Java 自然语言处理
计算文本相似度的几种方法
计算文本相似度的几种方法
|
7月前
|
机器学习/深度学习 人工智能 算法
【人工智能】<吴恩达-机器学习>批量梯度下降&矩阵和向量运算概述
【1月更文挑战第26天】【人工智能】<吴恩达-机器学习>批量梯度下降&矩阵和向量运算概述
|
人工智能 自然语言处理 算法
基于知识图谱的电影知识问答系统:训练TF-IDF 向量算法和朴素贝叶斯分类器、在 Neo4j 中查询
基于知识图谱的电影知识问答系统:训练TF-IDF 向量算法和朴素贝叶斯分类器、在 Neo4j 中查询
基于知识图谱的电影知识问答系统:训练TF-IDF 向量算法和朴素贝叶斯分类器、在 Neo4j 中查询
|
机器学习/深度学习 算法 搜索推荐
排序、搜索、 动态规划,DeepMind用一个神经算法学习器给解决了
排序、搜索、 动态规划,DeepMind用一个神经算法学习器给解决了
108 0
|
并行计算
并行编程应用——计算文章相似度
并行编程应用——计算文章相似度
|
机器学习/深度学习 人工智能 自然语言处理
|
机器学习/深度学习 自然语言处理 算法
|
机器学习/深度学习 人工智能 自然语言处理
文本相似度计算|学习笔记
快速学习文本相似度计算
|
机器学习/深度学习 自然语言处理 搜索推荐
文本相似度计算 中|学习笔记
快速学习文本相似度计算 中