python代码如何实现余弦相似性计算


Posted in Python onFebruary 09, 2020

这篇文章主要介绍了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:计算余弦值

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 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
详解Python的Django框架中的templates设置
May 11 Python
python删除列表内容
Aug 04 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
Jul 09 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 Python
如何从csv文件构建Tensorflow的数据集
Sep 21 Python
python字符串替换re.sub()实例解析
Feb 09 #Python
Python随机数函数代码实例解析
Feb 09 #Python
Python如何访问字符串中的值
Feb 09 #Python
python3 字符串知识点学习笔记
Feb 08 #Python
python入门之基础语法学习笔记
Feb 08 #Python
python实现飞机大战游戏(pygame版)
Oct 26 #Python
Python调用Windows命令打印文件
Feb 07 #Python
You might like
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
Look And Say 序列php实现代码
2011/05/22 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
PHP 实现文件压缩解压操作的方法
2019/06/14 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
利用Python优雅的登录校园网
2020/10/21 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
Linux机考试题
2015/10/16 面试题
高中历史教学反思
2014/02/08 职场文书
硕士生工作推荐信
2014/03/07 职场文书
求职自荐信的格式
2014/04/07 职场文书
事业单位考核材料
2014/05/21 职场文书
80后婚前协议书范本
2014/10/24 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
Rust中的Struct使用示例详解
2022/08/14 Javascript