余弦相似性计算及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中的yield使用方法
Feb 11 Python
由Python运算π的值深入Python中科学计算的实现
Apr 17 Python
Pycharm学习教程(2) 代码风格
May 02 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
python判断文件夹内是否存在指定后缀文件的实例
Jun 10 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
pytorch masked_fill报错的解决
Feb 18 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
Nov 09 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 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 SQLite类
2009/05/07 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
javascript 隔行换色函数代码
2010/10/24 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
js实现随机点名小功能
2017/08/17 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
Nodejs libuv运行原理详解
2019/08/21 NodeJs
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Numpy之reshape()使用详解
2019/12/26 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
升旗仪式主持词
2014/03/19 职场文书
企业法人代表证明书
2014/09/27 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript