余弦相似性计算及python代码实现过程解析
2019-09-18 11:43
1106 查看
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代码实现
import jieba import jieba.analyse def words2vec(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] for i in tag1} tag_dict2 = {i[0]: i[1] for i in tag2} merged_tag = set(tag_dict1.keys()) | set(tag_dict2.keys()) for i in merged_tag: if i in tag_dict1: v1.append(tag_dict1[i]) else: v1.append(0) if i in tag_dict2: v2.append(tag_dict2[i]) else: v2.append(0) return v1, v2 def cosine_similarity(vector1, vector2): dot_product = 0.0 normA = 0.0 normB = 0.0 for a, b in zip(vector1, vector2): dot_product += a * b normA += a ** 2 normB += b ** 2 if normA == 0.0 or normB == 0.0: return 0 else: return round(dot_product / ((normA**0.5)*(normB**0.5)) * 100, 2) def cosine(str1, str2): vec1, vec2 = words2vec(str1, str2) return cosine_similarity(vec1, vec2) print(cosine('阿克苏苹果', '阿克苏苹果'))
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- 余弦相似性计算及python代码实现
- 研磨设计模式解析及python代码实现——(二)外观模式(Facade)
- Android解析XML(PULL方式)和JSON 工作原理和实现过程(详细代码)
- 使用python的列表解析以及函数式计算来简化代码
- Python 200行代码实现一个滑动验证码过程详解
- 闰平年简介及计算过程描述 - Java代码实现
- ML中相似性度量和距离的计算&及Python实现
- Python实现网页截图(PyQT5)过程解析
- 深入解析js轮播插件核心代码的实现过程
- MachingLearning中的距离和相似性计算以及python实现
- 解析PHP计算页面执行时间的实现代码
- Java 实现《编译原理》中间代码生成 - 逆波兰式生成与计算 - 程序解析
- Python爬取知乎图片代码实现解析
- 使用python的列表解析以及函数式计算来简化代码
- Android黑白棋游戏实现过程及代码解析
- 解析PHP计算页面执行时间的实现代码
- MachingLearning中的距离和相似性计算以及python实现
- 机器学习完整过程案例分布解析,python代码解析
- Python爬虫的两套解析方法和四种爬虫实现过程
- 相似度计算方式的总结:java或python实现代码