【Python自然语言处理】计算文本相似度实例(使用difflib,fuzz,余弦三种计算方式 附源码)

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
简介: 【Python自然语言处理】计算文本相似度实例(使用difflib,fuzz,余弦三种计算方式 附源码)

需要全部代码请点赞关注收藏后评论区留言私信~~~

下面列举通过余弦相似度公式和标准库分别计算不同文本信息相似度的实例,首先需要对中文进行分词,通过jieba导入分词库文件,使用Python标准库计算相似度,导入两种不同的相似度计算库difflib和fuzz,除此之外,还自定义了基于余弦相似度公式的相似度计算方法

接着定义余弦相似度计算函数,函数参数部分传入需要比较的两个文本信息,先对文本进行向量化处理,dot计算出两个向量之间的点积,即相同维度上的值的乘积和,如果A和B是同一个向量,则求出的是欧几里得距离平方,余弦相似度函数返回的是根据余弦相似度计得出的结果 代码如下

# 余弦相似度
def similarity(text1, text2):        
    cos_text1 = (Counter(text1))
    cos_text2 = (Counter(text2))
    similarity_text1 = []
    similarity_text2 = []
    for i in set(text1 + text2):
        similarity_text1.append(cos_text1[i])
        similarity_text2.append(cos_text2[i])
    similarity_text1 = np.array(similarity_text1)
    similarity_text2 = np.array(similarity_text2)
    return similarity_text1.dot(similarity_text2) / (np.sqrt(similarity_text1.dot(similarity_text1)) * np.sqrt(similarity_text2.dot(similarity_text2)))

接下来定义停用词信息,停用词信息可以根据实际需要灵活调整,并定义需要比较的文本信息

停用词就是比较的时候不考虑他们

#停用词
stopwords = {}.fromkeys([',', '。', ';',':'])
text1 = "新冠疫情对世界产生了深刻影响,人们更注重保持社交距离。"
text2 = "新冠疫情对世界影响很大,但很多人仍然不注意保持社交距离。"

最后根据不同标准库以及余弦相似度计算得出结果 结果近似到小数点后面三位,并计算转换成百分数表达的余弦相似度值

最后 代码如下

#jieba分词
import jieba    
#Python标准库计算相似度              
import difflib     
#Python标准库计算相似度           
from fuzzywuzzy import fuzz   
import numpy as np
from collections import Counter
# 余弦相似度
def similarity(text1, text2):        
    cos_text1 = (Counter(text1))
    cos_text2 = (Counter(text2))
    similarity_text1 = []
    similarity_text2 = []
    for i in set(text1 + text2):
        similarity_text1.append(cos_text1[i])
        similarity_text2.append(cos_text2[i])
    similarity_text1 = np.array(similarity_text1)
    similarity_text2 = np.array(similarity_text2)
    return similarity_text1.dot(similarity_text2) / (np.sqrt(similarity_text1.dot(similarity_text1)) * np.sqrt(similarity_text2.dot(similarity_text2)))
#停用词
stopwords = {}.fromkeys([',', '。', ';',':'])
text1 = "新冠疫情对世界产生了深刻影响,人们更注重保持社交距离。"
text2 = "新冠疫情对世界影响很大,但很多人仍然不注意保持社交距离。"
text1_cut = [i for i in jieba.cut(text1, cut_all=False) if i != '' and i not in stopwords]
text2_cut = [j for j in jieba.cut(text2, cut_all=False) if j != '' and j not in stopwords]
# jieba分词并去除停用词
print('文本1分词后结果:', text1_cut)     
print('文本2分词后结果:', text2_cut)  
zz=str(round(fuzz.ratio(text1, text2)/100,3)*100)+"%"
sim_cos=str(round(similarity(text1_cut, text2_cut),3)*100)+"%"
print('(1):基于difflib的相似度:', sim_diff)
print('(2):基于fuzz的相似度:', sim_fuzz)
print('(3):余弦相似度:', sim_cos)

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
1月前
|
前端开发 搜索推荐 编译器
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
111 34
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
1月前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
41 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
2月前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
178 5
|
2月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
64 18
|
2月前
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
74 7
|
3月前
|
JSON 开发工具 git
基于Python和pygame的植物大战僵尸游戏设计源码
本项目是基于Python和pygame开发的植物大战僵尸游戏,包含125个文件,如PNG图像、Python源码等,提供丰富的游戏开发学习素材。游戏设计源码可从提供的链接下载。关键词:Python游戏开发、pygame、植物大战僵尸、源码分享。
|
3月前
|
测试技术 API 数据安全/隐私保护
Python连接到Jira实例、登录、查询、修改和创建bug
通过使用Python和Jira的REST API,可以方便地连接到Jira实例并进行各种操作,包括查询、修改和创建Bug。`jira`库提供了简洁的接口,使得这些操作变得简单易行。无论是自动化测试还是开发工作流的集成,这些方法都可以极大地提高效率和准确性。希望通过本文的介绍,您能够更好地理解和应用这些技术。
361 0
|
3月前
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
126 3
|
3月前
|
人工智能 自然语言处理 语音技术
利用Python进行自然语言处理(NLP)
利用Python进行自然语言处理(NLP)
76 1
|
4月前
|
Python
【10月更文挑战第15天】「Mac上学Python 26」小学奥数篇12 - 图形变换与坐标计算
本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换,并学会用编程实现坐标变化。
85 1

热门文章

最新文章

推荐镜像

更多