python代码如何实现余弦相似性计算


Posted in Python onFebruary 09, 2020

这篇文章主要介绍了python代码如何实现余弦相似性计算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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时间模块中的datetime模块
Jan 13 Python
python实现的AES双向对称加密解密与用法分析
May 02 Python
python数据结构之链表的实例讲解
Jul 25 Python
python和ruby,我选谁?
Sep 13 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
浅谈Python_Openpyxl使用(最全总结)
Sep 05 Python
Python的条件锁与事件共享详解
Sep 12 Python
如何使用python代码操作git代码
Feb 29 Python
Django基于Models定制Admin后台实现过程解析
Nov 11 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
Python可视化神器pyecharts绘制水球图
Jul 07 Python
python字符串替换re.sub()实例解析
Feb 09 #Python
Python随机数函数代码实例解析
Feb 09 #Python
Python如何访问字符串中的值
Feb 09 #Python
python3 字符串知识点学习笔记
Feb 08 #Python
python入门之基础语法学习笔记
Feb 08 #Python
python实现飞机大战游戏(pygame版)
Oct 26 #Python
Python调用Windows命令打印文件
Feb 07 #Python
You might like
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
php 字符转义 注意事项
2009/05/27 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
PHP获取url的函数代码
2011/08/02 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
Python下rrdtool模块的基本使用方法
2015/11/13 Python
Python3 操作符重载方法示例
2017/11/23 Python
python3 线性回归验证方法
2019/07/09 Python
python实现扫雷游戏
2020/03/03 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
保时捷设计:Porsche Design
2019/03/30 全球购物
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
党支部季度考核意见
2015/06/02 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
基于Python实现对比Exce的工具
2022/04/07 Python