余弦相似性计算及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的Bottle框架中使用微信API的示例
Apr 23 Python
python如何为创建大量实例节省内存
Mar 20 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
解决Pandas的DataFrame输出截断和省略的问题
Feb 08 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
python打印异常信息的两种实现方式
Dec 24 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
python统计文章中单词出现次数实例
Feb 27 Python
详解python logging日志传输
Jul 01 Python
python实现移动木板小游戏
Oct 09 Python
Python Pandas知识点之缺失值处理详解
May 11 Python
Pygame Time时间控制的具体使用详解
Nov 17 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
分享php分页的功能模块
2015/06/16 PHP
PDO::commit讲解
2019/01/27 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
js获取url参数的使用扩展实例
2007/12/29 Javascript
JavaScript Prototype对象
2009/01/07 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
jQuery 连续列表实现代码
2009/12/21 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
JS限制条件补全问题实例分析
2016/12/16 Javascript
js实现旋转木马效果
2017/03/17 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
python中pop()函数的语法与实例
2020/12/01 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
送货司机岗位职责
2013/12/11 职场文书
《草原》教学反思
2014/02/15 职场文书
环境科学专业求职信
2014/08/04 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
活动主持人开场白
2015/05/28 职场文书
甲午风云观后感
2015/06/02 职场文书
python小型的音频操作库mp3Play
2022/04/24 Python