余弦相似性计算及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多线程操作实例
Nov 21 Python
详细解析Python中的变量的数据类型
May 13 Python
使用TensorFlow实现SVM
Sep 06 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 Python
Flask框架搭建虚拟环境的步骤分析
Dec 21 Python
pytorch中的自定义数据处理详解
Jan 06 Python
Python requests获取网页常用方法解析
Feb 20 Python
jupyter notebook 多行输出实例
Apr 09 Python
学习Python需要哪些工具
Sep 04 Python
Python中的特殊方法以及应用详解
Sep 20 Python
python 基于selectors库实现文件上传与下载
Dec 31 Python
全网最全python库selenium自动化使用详细教程
Jan 12 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
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
php读取文件内容的几种方法详解
2013/06/26 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
2016/01/08 PHP
php的debug相关函数用法示例
2016/07/11 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
简易js代码实现计算器操作
2013/04/15 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
js实现中文实时时钟
2020/01/15 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
在python中安装basemap的教程
2018/09/20 Python
Python控制Firefox方法总结
2019/06/03 Python
Python跳出多重循环的方法示例
2019/07/03 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
婚庆公司计划书
2014/09/15 职场文书
公司离职证明范本
2014/10/17 职场文书
初中家长意见
2015/06/03 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript