余弦相似性计算及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编写爬虫小程序
May 14 Python
快速解决安装python没有scripts文件夹的问题
Apr 03 Python
Python实现将通信达.day文件读取为DataFrame
Dec 22 Python
Scrapy-Redis结合POST请求获取数据的方法示例
May 07 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
python监控进程状态,记录重启时间及进程号的实例
Jul 15 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
python内置模块collections知识点总结
Dec 19 Python
解决Jupyter NoteBook输出的图表太小看不清问题
Apr 16 Python
python连接mysql有哪些方法
Jun 24 Python
python中添加模块导入路径的方法
Feb 03 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面向对象教程之自定义类
2014/06/10 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
基于jquery的时间段实现代码
2012/08/02 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
Javascript基础教程之break和continue语句
2015/01/18 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
js控制随机数生成概率代码实例
2019/03/21 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
python自动生成证件号的方法示例
2021/01/14 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
高中三年学习生活的自我评价
2013/10/10 职场文书
家长会主持词
2014/03/26 职场文书
公司踏青活动方案
2014/08/16 职场文书
财务工作个人总结
2015/02/27 职场文书
新学期开学寄语2016
2015/12/04 职场文书
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS
Rust中的Struct使用示例详解
2022/08/14 Javascript