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中处理字符串之isdecimal()方法的使用
May 20 Python
机器学习python实战之手写数字识别
Nov 01 Python
一篇文章快速了解Python的GIL
Jan 12 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
Python中创建二维数组
Oct 17 Python
python opencv读mp4视频的实例
Dec 07 Python
只需7行Python代码玩转微信自动聊天
Jan 27 Python
详解用python自制微信机器人,定时发送天气预报
Mar 25 Python
python 字符串的驻留机制及优缺点
Jun 19 Python
PyCharm2020.3.2安装超详细教程
Feb 08 Python
利用Python实现Picgo图床工具
Nov 23 Python
Django框架模板用法详解
Jun 10 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
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
Maps Javascript
2007/01/22 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
2016/12/01 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
关于ES6箭头函数中的this问题
2018/02/27 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
Python 元类实例解析
2018/04/04 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
对Python 数组的切片操作详解
2018/07/02 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
工商管理实习生自我鉴定范文
2013/12/18 职场文书
管理专员自荐信
2014/01/26 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
争先创优演讲稿
2014/09/15 职场文书
老兵退伍标语
2014/10/07 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
营销计划书范文
2015/01/17 职场文书
欠条格式范本
2015/07/03 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫