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

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

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

 

相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
归一化技术比较研究:Batch Norm, Layer Norm, Group Norm
本文将使用合成数据集对三种归一化技术进行比较,并在每种配置下分别训练模型。记录训练损失,并比较模型的性能。
1820 2
|
机器人
如何查询OpenAI账户余额?ChatGPT怎么查看账户余额的方法
ChatGPT是美国OpenAI研发的聊天机器人程序,也是最近火爆全网的热门应用和话题之王。很多用户在使用openai的时候不知道如何查询OpenAI账户余额?
3716 0
|
2月前
|
人工智能 Java API
别再自己写 AI Agent 了!Dify vs FastGPT vs RAGFlow 对比
本文对比Dify、FastGPT、RAGFlow三大开源AI Agent平台,从Java开发者视角解析其定位、RAG/Agent能力、部署难度、Spring集成度及二次开发成本。Dify成熟稳健,适合企业级应用;FastGPT轻量易用,适合快速原型;RAGFlow文档处理最强,专精复杂PDF/合同场景。助你高效选型,避免重复造轮子。
1367 3
|
6月前
|
人工智能 自然语言处理 搜索推荐
2025AI数字人企业厂商重点推荐与全面综合对比分析选择
解码数字人产业生态,聚焦像衍科技等头部企业技术突破。从服务型、身份型到工业与创作型数字人,全景解析四大类型应用。依托三维图形计算与AIGC融合,数字人已实现“形神兼备”,在医疗、教育、金融等领域深度赋能,推动人机共生新时代。
|
8月前
|
数据采集 人工智能 自然语言处理
52_领域模型:BioBERT与FinBERT
在大语言模型(LLM)快速发展的今天,通用模型如GPT-4、Claude 3和Gemini虽然在广泛任务上表现出色,但在专业领域如医疗、金融和法律等场景中,往往难以达到专业人员的期待精度。2025年的研究表明,领域特定的预训练模型在垂直领域任务中能够显著超越通用模型,为专业应用提供更可靠的支持。本文将深入剖析BioBERT、FinBERT等代表性领域模型的技术原理、训练方法、性能评估及实际应用案例,探讨垂直领域预训练的独特优势与未来发展趋势。
1286 0
|
编解码 人工智能 测试技术
CogView4:智谱开源中文文生图新标杆,中文海报+任意分辨率一键生成
CogView4 是智谱推出的开源文生图模型,支持中英双语输入和任意分辨率图像生成,特别优化了中文文字生成能力,适合广告、创意设计等场景。
835 1
CogView4:智谱开源中文文生图新标杆,中文海报+任意分辨率一键生成
|
11月前
|
消息中间件 缓存 JSON
亚马逊SP-API开发实战:商品数据获取与操作
本文介绍了亚马逊SP-API接入流程,包括开发者注册、OAuth2.0认证示例及核心商品接口的使用。涵盖商品信息查询、批量查询、限流规则与错误处理,并提供最佳实践建议,如使用AWS Lambda与SQS实现高效数据同步。
亚马逊SP-API开发实战:商品数据获取与操作
|
并行计算 算法 Shell
LLM-01 大模型 本地部署运行 ChatGLM2-6B-INT4(6GB) 简单上手 环境配置 单机单卡多卡 2070Super8GBx2 打怪升级!
LLM-01 大模型 本地部署运行 ChatGLM2-6B-INT4(6GB) 简单上手 环境配置 单机单卡多卡 2070Super8GBx2 打怪升级!
488 1
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控