python代码如何实现余弦相似性计算
这篇文章主要介绍了python代码如何实现余弦相似性计算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
A:西米喜欢健身
B:超超不爱健身,喜欢打游戏
step1:分词
A:西米/喜欢/健身
B:超超/不/喜欢/健身,喜欢/打/游戏
step2:列出两个句子的并集
西米/喜欢/健身/超超/不/打/游戏
step3:计算词频向量
A:[1,1,1,0,0,0,0]
B:[0,1,1,1,1,1,1]
step4:计算余弦值
余弦值越大,证明夹角越小,两个向量越相似。
step5:python代码实现
importjieba importjieba.analyse defwords2vec(words1=None,words2=None): v1=[] v2=[] tag1=jieba.analyse.extract_tags(words1,withWeight=True) tag2=jieba.analyse.extract_tags(words2,withWeight=True) tag_dict1={i[0]:i[1]foriintag1} tag_dict2={i[0]:i[1]foriintag2} merged_tag=set(tag_dict1.keys())|set(tag_dict2.keys()) foriinmerged_tag: ifiintag_dict1: v1.append(tag_dict1[i]) else: v1.append(0) ifiintag_dict2: v2.append(tag_dict2[i]) else: v2.append(0) returnv1,v2 defcosine_similarity(vector1,vector2): dot_product=0.0 normA=0.0 normB=0.0 fora,binzip(vector1,vector2): dot_product+=a*b normA+=a**2 normB+=b**2 ifnormA==0.0ornormB==0.0: return0 else: returnround(dot_product/((normA**0.5)*(normB**0.5))*100,2) defcosine(str1,str2): vec1,vec2=words2vec(str1,str2) returncosine_similarity(vec1,vec2) print(cosine('阿克苏苹果','阿克苏苹果'))
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。