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编程中的运用实例
Jun 26 Python
windows下ipython的安装与使用详解
Oct 20 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
pandas取出重复数据的方法
Jul 04 Python
Python3 JSON编码解码方法详解
Sep 06 Python
Python帮你识破双11的套路
Nov 11 Python
python通过移动端访问查看电脑界面
Jan 06 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
如何写python的配置文件
Jun 07 Python
python支持多继承吗
Jun 19 Python
python 实现图片批量压缩的示例
Dec 18 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
Discuz 模板引擎的封装类代码
2008/07/18 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
js截取函数(indexOf,join等)
2010/09/01 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
Python作用域用法实例详解
2016/03/15 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
python实现TCP文件传输
2020/03/20 Python
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
购房意向书
2014/04/01 职场文书
反邪教警示教育方案
2014/05/13 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
2014公司年终工作总结
2014/12/19 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
大学体育课感想
2015/08/10 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android