余弦相似性计算及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程序员易犯的错误
Dec 15 Python
python unittest实现api自动化测试
Apr 04 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
Python3 利用face_recognition实现人脸识别的方法
Mar 13 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
PyCharm MySQL可视化Database配置过程图解
Jun 09 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 Python
Python基于httpx模块实现发送请求
Jul 07 Python
Python模块常用四种安装方式
Oct 20 Python
用python删除文件夹中的重复图片(图片去重)
May 12 Python
在 Python 中利用 Pool 进行多线程
Apr 24 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读取PDF内容配合Xpdf的使用
2012/11/24 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
JS实现简单的二维矩阵乘积运算
2016/01/26 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
pytyon 带有重复的全排列
2013/08/13 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
python之PyMongo使用总结
2017/05/26 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
岗位职责怎么写
2014/03/14 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
2014年计生工作总结
2014/11/21 职场文书
史上最牛的辞职信
2015/02/28 职场文书
财务出纳岗位职责
2015/03/31 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
大学生支教感言
2015/08/01 职场文书