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之hello world
May 21 Python
Python中实现的RC4算法
Feb 14 Python
Python简单生成随机姓名的方法示例
Dec 27 Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 Python
python 数据库查询返回list或tuple实例
May 15 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
Python常见反爬虫机制解决方案
Jun 01 Python
TensorFlow中如何确定张量的形状实例
Jun 23 Python
用Python自动清理系统垃圾的实现
Jan 18 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 Python
Python与C++中梯度方向直方图的实现
Mar 17 Python
python manim实现排序算法动画示例
Aug 14 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日期函数date格式化UNIX时间的方法
2015/03/19 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
详解php中的implements 使用
2017/06/13 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
在python中的socket模块使用代理实例
2014/05/29 Python
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
对Python中内置异常层次结构详解
2018/10/18 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
django列表筛选功能的实现代码
2020/03/27 Python
500行python代码实现飞机大战
2020/04/24 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
学生检讨书怎么写
2014/10/09 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android