余弦相似性计算及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实现向QQ群成员自动发邮件的方法
Nov 19 Python
Python 3.x 新特性及10大变化
Jun 12 Python
Linux系统上Nginx+Python的web.py与Django框架环境
Dec 25 Python
Python算法之图的遍历
Nov 16 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 Python
python匹配两个短语之间的字符实例
Dec 25 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 Python
详解Anaconda 的安装教程
Sep 23 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 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加密解密类代码
2011/11/27 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
PHP echo()函数讲解
2019/02/15 PHP
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
JavaScript 巧学巧用
2017/05/23 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
Python logging模块学习笔记
2014/05/24 Python
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
九年级英语教学反思
2014/01/31 职场文书
迟到检讨书5000字
2014/01/31 职场文书
关键在于落实心得体会
2014/09/03 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
一年级语文教学随笔
2015/08/14 职场文书
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技