余弦相似性计算及python代码实现过程解析


Posted in Python onSeptember 18, 2019

A:西米喜欢健身

B:超超不爱健身,喜欢打游戏

step1:分词

A:西米/喜欢/健身

B:超超/不/喜欢/健身,喜欢/打/游戏

step2:列出两个句子的并集

西米/喜欢/健身/超超/不/打/游戏

step3:计算词频向量

A:[1,1,1,0,0,0,0]

B:[0,1,1,1,1,1,1]

step4:计算余弦值

余弦相似性计算及python代码实现过程解析

余弦值越大,证明夹角越小,两个向量越相似。

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采用getopt解析命令行输入参数实例
Sep 30 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
Python脚本实时处理log文件的方法
Nov 21 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
Jun 20 Python
python基础教程项目五之虚拟茶话会
Apr 02 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
python设定并获取socket超时时间的方法
Jan 12 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 Python
Python中求对数方法总结
Mar 10 Python
python Matplotlib模块的使用
Sep 16 Python
详解Python 中的 defaultdict 数据类型
Feb 22 Python
python之yield和Generator深入解析
Sep 18 #Python
PyTorch预训练的实现
Sep 18 #Python
用python实现英文字母和相应序数转换的方法
Sep 18 #Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 #Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 #Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 #Python
决策树剪枝算法的python实现方法详解
Sep 18 #Python
You might like
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
jquery中动态效果小结
2010/12/16 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
javascript中undefined与null的区别
2015/08/16 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
2016/04/01 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
编程语言Python的发展史
2014/09/26 Python
Python的Django框架下管理站点的基本方法
2015/07/17 Python
python多线程方式执行多个bat代码
2016/06/07 Python
Python File readlines() 使用方法
2018/03/19 Python
详解Python 数据库的Connection、Cursor两大对象
2018/06/25 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
Python如何获取文件指定行的内容
2020/05/27 Python
python GUI模拟实现计算器
2020/06/22 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
公益广告语集锦
2014/03/13 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
2014年建筑工程工作总结
2014/12/03 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
2015大学迎新标语
2015/07/16 职场文书
中秋节感想
2015/08/10 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python