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 urlopen()函数 示例分享
Jun 12 Python
Python生成随机验证码的两种方法
Dec 22 Python
python实现折半查找和归并排序算法
Apr 14 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
tensorflow实现softma识别MNIST
Mar 12 Python
Sanic框架Cookies操作示例
Jul 17 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
Python Django 封装分页成通用的模块详解
Aug 21 Python
python实现的发邮件功能示例
Sep 11 Python
如何完美的建立一个python项目
Oct 09 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
深入分析PHP引用(&)
2014/09/04 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
web前端设计师们常用的jQuery特效插件汇总
2014/12/07 Javascript
45个JavaScript编程注意事项、技巧大全
2015/02/11 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
2017/12/11 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
Python深入学习之上下文管理器
2014/08/31 Python
python利用拉链法实现字典方法示例
2017/03/25 Python
使用requests库制作Python爬虫
2018/03/25 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
《广玉兰》教学反思
2014/04/14 职场文书
专题组织生活会方案
2014/06/15 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
质量整改通知单
2015/04/21 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书