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

简介: 【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)

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

相关文章
|
算法 Python
Apriori算法的Python实例演示
经过运行,你会看到一些集合出现,每个集合的支持度也会给出。这些集合就是你想要的,经常一起被购买的商品组合。不要忘记,`min_support`参数将决定频繁项集的数量和大小,你可以根据自己的需要进行更改。
454 18
|
Python
Python中Cp、Cpk、Pp、Ppk的计算与应用
总的来说,Cp、Cpk、Pp、Ppk是衡量过程能力的重要工具,它们可以帮助我们了解和改进生产过程,提高产品质量。
1762 13
|
前端开发 搜索推荐 编译器
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
1305 34
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
存储 人工智能 算法
使用Python计算从位置x到y的最少步数
本文通过Python代码结合广度优先搜索(BFS)算法,解决从起点到终点的最少步数问题。以二维网格为例,机器人只能上下左右移动,目标是最短路径。BFS按层遍历,确保首次到达终点即为最短路径。文中提供完整Python实现,包括队列与访问标记数组的使用,并输出示例结果。此外,还探讨了双向BFS、Dijkstra及A*算法等优化方法,帮助读者深入理解最短路径问题及其高效解决方案。
359 0
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
320 18
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
356 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
1693 5
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
505 7
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
797 3
|
人工智能 自然语言处理 语音技术
利用Python进行自然语言处理(NLP)
利用Python进行自然语言处理(NLP)
280 1

热门文章

最新文章

推荐镜像

更多