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 Mysql数据库操作 Perl操作Mysql数据库
Jan 12 Python
python使用any判断一个对象是否为空的方法
Nov 19 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
Python Flask异步发送邮件实现方法解析
Aug 01 Python
Pycharm Git 设置方法
Sep 15 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
Nov 01 Python
pytorch 中autograd.grad()函数的用法说明
May 12 Python
Python超详细分步解析随机漫步
Mar 17 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
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
JavaScript全局函数使用简单说明
2011/03/11 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
javascript多行字符串的简单实现方式
2015/05/04 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
python实现UDP协议下的文件传输
2020/03/20 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
入党自我评价优缺点
2014/01/25 职场文书
2014政务公开实施方案
2014/02/19 职场文书
商务助理求职信范文
2014/04/20 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
征求意见函
2015/06/05 职场文书
工作收入证明模板
2015/06/12 职场文书
法定授权委托证明书
2015/06/18 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书