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实现把xml或xsl转换为html格式
Apr 08 Python
Python检测网站链接是否已存在
Apr 07 Python
浅谈django中的认证与登录
Oct 31 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
Dec 19 Python
python实现屏保计时器的示例代码
Aug 08 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
python有序查找算法 二分法实例解析
Feb 18 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
Feb 20 Python
python 连续不等式语法糖实例
Apr 15 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
python实现经典排序算法的示例代码
Feb 07 Python
详解python的内存分配机制
May 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
php数组(array)输出的三种形式详解
2013/06/05 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
2014/10/30 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
DEFER怎么用?
2006/07/01 Javascript
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
2013/05/08 Javascript
Javascript浅谈之this
2013/12/17 Javascript
深入理解JS中的变量及作用域、undefined与null
2014/03/04 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
详解微信小程序 登录获取unionid
2017/06/27 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
python3实现SMTP发送邮件详细教程
2018/06/19 Python
Python面向对象类的继承实例详解
2018/06/27 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
财务简历的自我评价
2014/03/05 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
北大自主招生自荐信
2015/03/04 职场文书
初中军训感想
2015/08/07 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android
nginx七层负载均衡配置详解
2022/07/15 Servers