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

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

开发者学堂课程【高校精品课-华东师范大学 - 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

 

相关文章
|
8月前
|
编解码 人工智能 测试技术
CogView4:智谱开源中文文生图新标杆,中文海报+任意分辨率一键生成
CogView4 是智谱推出的开源文生图模型,支持中英双语输入和任意分辨率图像生成,特别优化了中文文字生成能力,适合广告、创意设计等场景。
469 1
CogView4:智谱开源中文文生图新标杆,中文海报+任意分辨率一键生成
|
4月前
|
人工智能 自然语言处理 数据可视化
企业AI落地开源五剑客:Open-WebUI、Dify、RAGFlow、FastGPT、n8n
面对企业AI落地的数据安全、技术门槛和业务整合三大痛点,本文推荐五款开源利器:Open-WebUI(零代码交互)、Dify(低代码工厂)、RAGFlow(知识处理)、FastGPT(内容生成)和n8n(流程自动化)。这些工具提供开源可控、私有化部署和模块化扩展能力,助力企业低成本构建完整AI解决方案,突破传统闭源方案的成本与灵活性限制。
|
应用服务中间件 PHP nginx
layui框架实战案例(15):上传提示413 request entity too large宝塔配置的解决方案
layui框架实战案例(15):上传提示413 request entity too large宝塔配置的解决方案
454 0
|
10月前
|
人工智能 自然语言处理 安全
微软phi-4来啦!小模型之光,14B科学、代码等能力超70B模型效果!
微软研究院的最新成果——Phi-4来啦!近日,微软公布了Phi家族的最新一代模型Phi-4的技术报告,模型同步开源,Phi-4建立在合成数据集、过滤后的公共领域网站数据以及获得的学术书籍和问答数据集的基础上,训练数据量为9.8 T tokens, 目标是确保小模型使用专注于高质量和高级推理的数据进行训练。
695 1
|
机器学习/深度学习 存储 自然语言处理
基础与构建:GraphRAG架构解析及其在知识图谱中的应用
【10月更文挑战第11天】随着数据的不断增长和复杂化,传统的信息检索和生成方法面临着越来越多的挑战。特别是在处理结构化和半结构化数据时,如何高效地提取、理解和生成内容变得尤为重要。近年来,一种名为Graph Retrieval-Augmented Generation (GraphRAG) 的新架构被提出,它结合了图神经网络(GNNs)和预训练语言模型,以提高多模态数据的理解和生成能力。本文将深入探讨GraphRAG的基础原理、架构设计,并通过实际代码示例展示其在知识图谱中的应用。
1561 0
|
算法 虚拟化 C++
VMware虚拟机无法自适应和拖拽复制粘贴和共享目录问题
VMware虚拟机无法自适应和拖拽复制粘贴和共享目录问题
1413 0
|
数据采集 Web App开发 JavaScript
python-selenium模块详解!!!
Selenium 是一个强大的自动化测试工具,支持 Python 调用浏览器进行网页抓取。本文介绍了 Selenium 的安装、基本使用、元素定位、高级操作等内容。主要内容包括:发送请求、加载网页、元素定位、处理 Cookie、无头浏览器设置、页面等待、窗口和 iframe 切换等。通过示例代码帮助读者快速掌握 Selenium 的核心功能。
1213 5
|
存储 人工智能 算法
AI与大数据的结合:案例分析与技术探讨
【8月更文挑战第22天】AI与大数据的结合为各行各业带来了前所未有的机遇和挑战。通过具体案例分析可以看出,AI与大数据在电商、智能驾驶、医疗等领域的应用已经取得了显著成效。未来,随着技术的不断进步和应用场景的不断拓展,AI与大数据的结合将继续推动各行业的创新与变革。
1038 1
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能城市规划与建设
【8月更文挑战第8天】 使用Python实现深度学习模型:智能城市规划与建设
404 2
|
监控 Oracle 关系型数据库
关系型数据库Oracle恢复测试
【7月更文挑战第20天】
309 7