余弦相似性计算及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时区设置方法与pytz查询时区教程
Nov 27 Python
Python中的数学运算操作符使用进阶
Jun 20 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
Jun 26 Python
Python3实现汉语转换为汉语拼音
Jul 08 Python
python颜色随机生成器的实例代码
Jan 10 Python
python中执行smtplib失败的处理方法
Jul 01 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
讲解Python中的递归函数
2015/04/27 Python
Python 串口读写的实现方法
2019/06/12 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
python pillow模块使用方法详解
2019/08/30 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
大学生活学习的自我评价
2013/12/03 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
行政助理工作职责范本
2014/03/04 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
认真学习保证书
2015/02/26 职场文书
培养联系人考察意见
2015/06/01 职场文书
仙境之桥观后感
2015/06/16 职场文书
行政处罚事先告知书
2015/07/01 职场文书
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang