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 相关文章推荐
Python实现全局变量的两个解决方法
Jul 03 Python
Python 基础教程之包和类的用法
Feb 23 Python
python开发简易版在线音乐播放器
Mar 03 Python
python开发利器之ulipad的使用实践
Mar 16 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
Nov 06 Python
Python修改文件往指定行插入内容的实例
Jan 30 Python
python3编写ThinkPHP命令执行Getshell的方法
Feb 26 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
python爬虫的一个常见简单js反爬详解
Jul 09 Python
django drf框架自带的路由及最简化的视图
Sep 10 Python
numpy实现RNN原理实现
Mar 02 Python
python图像处理 PIL Image操作实例
Apr 09 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
php多用户读写文件冲突的解决办法
2013/11/06 PHP
php实现插入排序
2015/03/29 PHP
php显示页码分页类的封装
2017/06/08 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
jquery下json数组的操作实现代码
2010/08/09 Javascript
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
Python判断操作系统类型代码分享
2014/11/22 Python
Python 中Pickle库的使用详解
2018/02/24 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
土木工程求职信
2014/05/29 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang
Python中22个万用公式的小结
2021/07/21 Python
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
mysql全面解析json/数组
2022/07/07 MySQL
Moment的feature导致线上bug解决分析
2022/09/23 Javascript