余弦相似性计算及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实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 Python
python编程培训 python培训靠谱吗
Jan 17 Python
详解Tensorflow数据读取有三种方式(next_batch)
Feb 01 Python
Python 确定多项式拟合/回归的阶数实例
Dec 29 Python
django数据库自动重连的方法实例
Jul 21 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
Python列表如何更新值
May 27 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
详解如何使用Pytest进行自动化测试
Jan 14 Python
pytorch--之halfTensor的使用详解
May 24 Python
Pytorch中的数据集划分&正则化方法
May 27 Python
Python OpenCV形态学运算示例详解
Apr 07 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
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
JavaScript 指导方针
2007/04/05 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python实现模拟时钟代码推荐
2015/11/08 Python
Python中取整的几种方法小结
2017/01/06 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
新奇的小玩意:IWOOT
2016/07/21 全球购物
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
中学老师的自我评价
2013/11/07 职场文书
六月份红领巾广播稿
2014/02/03 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
如何写辞职信
2015/05/13 职场文书
团队拓展训练感想
2015/08/07 职场文书
python实现简单的聊天小程序
2021/07/07 Python
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang