余弦相似性计算及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中while循环语句用法简单实例
May 07 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
python 3.3 下载固定链接文件并保存的方法
Dec 18 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
python修改文件内容的3种方法详解
Nov 15 Python
python matplotlib拟合直线的实现
Nov 19 Python
简单了解Python字典copy与赋值的区别
Sep 16 Python
详解Python yaml模块
Sep 23 Python
Python实现生成bmp图像的方法
Jun 13 Python
python开发飞机大战游戏
Jul 15 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下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
PHP异常处理浅析
2015/05/12 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
原生JS实现层叠轮播图
2017/05/17 Javascript
Nodejs异步回调之异常处理实例分析
2018/06/22 NodeJs
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
Python类的基础入门知识
2008/11/24 Python
python 读取修改pcap包的例子
2019/07/23 Python
Python+unittest+DDT实现数据驱动测试
2020/11/30 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
财务会计专业求职信范文
2013/12/31 职场文书
教师个人鉴定材料
2014/02/08 职场文书
保密承诺书
2014/03/27 职场文书
淘宝客服工作职责
2014/07/11 职场文书
通知的格式范文
2015/04/27 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
详解运行Python的神器Jupyter Notebook
2021/06/03 Python
mysql创建存储过程及函数详解
2021/12/04 MySQL