余弦相似性计算及python代码实现过程解析


Posted in Python onSeptember 18, 2019

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实现爬虫下载美女图片
Jul 14 Python
Python编程实现二叉树及七种遍历方法详解
Jun 02 Python
Python实现的桶排序算法示例
Nov 29 Python
python调用OpenCV实现人脸识别功能
May 25 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
python3 爬取图片的实例代码
Nov 06 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
Django REST framework 分页的实现代码
Jun 19 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
python实现邮件发送功能
Aug 10 Python
pytorch GAN生成对抗网络实例
Jan 10 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
python之yield和Generator深入解析
Sep 18 #Python
PyTorch预训练的实现
Sep 18 #Python
用python实现英文字母和相应序数转换的方法
Sep 18 #Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 #Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 #Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 #Python
决策树剪枝算法的python实现方法详解
Sep 18 #Python
You might like
精通php的十大要点(上)
2009/02/04 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
php 邮件发送问题解决
2014/03/22 PHP
PHP函数http_build_query使用详解
2014/08/20 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
修改发贴的编辑功能
2007/03/07 Javascript
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
微信小程序 图片边框解决方法
2017/01/16 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
CentOS安装pillow报错的解决方法
2016/01/27 Python
Python算术运算符实例详解
2017/05/31 Python
Tornado高并发处理方法实例代码
2018/01/15 Python
Django工程的分层结构详解
2019/07/18 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
副职竞争上岗演讲稿
2014/05/12 职场文书
妇女干部培训方案
2014/05/12 职场文书
领导干部“四风”查摆问题个人整改措施
2014/10/28 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android