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模块restful使用方法实例
Dec 10 Python
Python编程中归并排序算法的实现步骤详解
May 04 Python
Python 登录网站详解及实例
Apr 11 Python
Python3.6连接Oracle数据库的方法详解
May 18 Python
python批量修改ssh密码的实现
Aug 08 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
Flask中endpoint的理解(小结)
Dec 11 Python
Python 识别12306图片验证码物品的实现示例
Jan 20 Python
Python基于pyecharts实现关联图绘制
Mar 27 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 Python
如何使用python socket模块实现简单的文件下载
Sep 04 Python
Kmeans均值聚类算法原理以及Python如何实现
Sep 26 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采集相关教程之一 CURL函数库
2010/02/15 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
Python中的匿名函数使用简介
2015/04/27 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
Python决策树分类算法学习
2017/12/22 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
python实战教程之自动扫雷
2018/07/13 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
介绍一下UNIX启动过程
2013/11/14 面试题
儿科护士自我鉴定
2013/10/14 职场文书
自动化专业毕业生自荐信
2013/11/01 职场文书
节水标语大全
2014/06/11 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书