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中实现php的var_dump函数功能
Jan 21 Python
python轻松实现代码编码格式转换
Mar 26 Python
Python类定义和类继承详解
May 08 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
python实现事件驱动
Nov 21 Python
Python登录系统界面实现详解
Jun 25 Python
Python numpy数组转置与轴变换
Nov 15 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
python 使用三引号时容易犯的小错误
Oct 21 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
Django中template for如何使用方法
Jan 31 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的ob_start() 控制您的浏览器cache
2009/08/03 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
javascript知识点收藏
2007/02/22 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
为jQuery增加join方法的实现代码
2010/11/28 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
node.js入门教程
2014/06/01 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
jQuery基础知识小结
2014/12/22 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
解决python3爬虫无法显示中文的问题
2018/04/12 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
优秀实习自我鉴定
2013/12/04 职场文书
求职自荐书范文
2013/12/04 职场文书
大学生开西餐厅创业计划书
2014/02/01 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
2014年民警工作总结
2014/11/25 职场文书
质检员岗位职责
2015/02/03 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
同学聚会祝酒词
2015/08/10 职场文书
高一数学教学反思
2016/02/18 职场文书
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers