python结巴分词余弦相似度算法实现
过余弦相似度算法计算两个字符串之间的相关度,来对关键词进行归类、重写标题、文章伪原创等功能, 让你目瞪口呆。以下案例使用的母词文件均为txt文件,两种格式:一种内容是纯关键词的txt,每行一个关键词就好;另一种是关键词加指数的txt,关键词和指数之前用tab键分隔,一行一对关键词。
代码附上:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # -*- coding: utf-8 -*- from jieba import posseg import math import time def simicos(str1, str2): # 对两个要计算的字符串进行分词, 使用隐马尔科夫模型(也可不用) # 由于不同的分词算法, 所以分出来的结果可能不一样 # 也会导致相似度会有所误差, 但是一般影响不大 cut_str1 = [w for w, t in posseg.lcut(str1) if 'n' in t or 'v' in t] cut_str2 = [w for w, t in posseg.lcut(str2) if 'n' in t or 'v' in t] # 列出所有词 all_words = set (cut_str1 + cut_str2) # 计算词频 freq_str1 = [cut_str1.count(x) for x in all_words] freq_str2 = [cut_str2.count(x) for x in all_words] # 计算相似度 sum_all = sum ( map ( lambda z, y: z * y, freq_str1, freq_str2)) sqrt_str1 = math.sqrt( sum (x * * 2 for x in freq_str1)) sqrt_str2 = math.sqrt( sum (x * * 2 for x in freq_str2)) return sum_all / (sqrt_str1 * sqrt_str2) if __name__ = = '__main__' : case1 = "SEO" case2 = "SEO培训网" start = time.time() similarity = simicos(case1, case2) end = time.time() print () print ( "耗时: %.3fs" % (end - start)) print ( "相似度: %.3f" % similarity) |
千行代码,Bug何处藏。 纵使上线又怎样,朝令改,夕断肠。
分类:
Python开发笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-10-15 dns-prefetch应用好,网上速度能提高一半!