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

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

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