余弦相似性计算及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递归查询菜单并转换成json实例
Mar 27 Python
python绘制简单折线图代码示例
Dec 19 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
Python基于Dlib的人脸识别系统的实现
Feb 26 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
python实现批量移动文件
Apr 05 Python
LyScript实现绕过反调试保护的示例详解
Aug 14 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
星际中的相关伤害
2020/03/04 星际争霸
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
php5.5中类级别的常量使用介绍
2013/10/02 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
js DOM的学习笔记
2011/12/22 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
python实现彩色图转换成灰度图
2019/01/15 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
实习单位接收函
2014/01/11 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
考博专家推荐信
2014/05/10 职场文书
民主生活会剖析材料
2014/09/30 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL
Elasticsearch 数据类型及管理
2022/04/19 Python