相似度计算之(二)——余弦距离
将数据看成空间中的点时,评价远近可以用欧式距离或余弦距离
一般可用于文本间的相似度计算,但也不是绝对的
余弦距离计算步骤:
以余弦距离计算文本相似度为例,具体说明其计算过程:
余弦相似度算法:
一个向量空间中两个向量夹角间的余弦值作为衡量两个个体之间差异的大小,余弦值接近1,夹角趋于0,表明两个向量越相似,余弦值接近于0,夹角趋于90度,表明两个向量越不相似。
基本思路是:
如果这两句话的用词越相似,它们的内容就应该越相似。因此,可以从词频入手,计算它们的相似程度。
第一步,分词
句子A:这只/皮靴/号码/大了。那只/号码/合适。
句子B:这只/皮靴/号码/不/小,那只/更/合适。
第二步,列出所有的词
这只,皮靴,号码,大了。那只,合适,不,小,很
第三步,计算词频
句子A:这只1,皮靴1,号码2,大了1。那只1,合适1,不0,小0,更0
句子B:这只1,皮靴1,号码1,大了0。那只1,合适1,不1,小1,更1
第四步,写出词频向量
句子A:(1,1,2,1,1,1,0,0,0)
句子B:(1,1,1,0,1,1,1,1,1)
到这里,问题就变成了如何计算这两个向量的相似程度。我们可以把它们想象成空间中的两条线段,都是从原点([0, 0, …])出发,指向不同的方向。两条线段之间形成一个夹角,如果夹角为0度,意味着方向相同、线段重合,这是表示两个向量代表的文本完全相等;如果夹角为90度,意味着形成直角,方向完全不相似;如果夹角为180度,意味着方向正好相反。因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。
计算两个句子向量
句子A:(1,1,2,1,1,1,0,0,0)
和句子B:(1,1,1,0,1,1,1,1,1)的向量余弦值来确定两个句子的相似度。
计算过程如下:
计算结果中夹角的余弦值为0.81非常接近于1,所以,上面的句子A和句子B是基本相似的
由此,我们就得到了文本相似度计算的处理流程是:
(1)找出两篇文章的关键词;
(2)每篇文章各取出若干个关键词,合并成一个集合,计算每篇文章对于这个集合中的词的词频
(3)生成两篇文章各自的词频向量;
(4)计算两个向量的余弦相似度,值越大就表示越相似
参考博客:
http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html
https://blog.csdn.net/Jameslvt/article/details/81171972
相似度计算之(二)——余弦距离相关推荐
- 文本相似度计算——HanLP分词+余弦相似度算法
一.余弦相似度简介 余弦相似度(又称为余弦相似性):是通过测量两个向量的夹角的余弦值来度量它们之间的相似性.余弦值接近1,夹角趋于0,表明两个向量越相似:余弦值接近于0,夹角趋于90度,表明两个向量越 ...
- 相似度计算 java_Java基于余弦方法实现的计算相似度算法示例
Java基于余弦方法实现的计算相似度算法示例 引导语:Java 编程语言的风格十分接近C.C++语言.Java是一个纯的面向对象的程序设计语言,以下是小编整理的Java基于余弦方法实现的`计算相似度算 ...
- 时间复杂度o(n^0.5)_算法基础1.1:算法复杂度计算(二)
1.什么是算法 2.好算法的标准 3.算法复杂度计算方法 例1: 1 int sum = 0;//运行1次2 int total = 0;//运行1次3 for (int i = 1; i <= ...
- 相似度计算之马氏距离
马氏距离(Mahalanobis Distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离.有时也被称为马哈拉诺比斯距离.它是一种有效的计算两个 ...
- 计算特征矩阵之间的余弦距离(余弦相似度)
转自两矩阵各向量余弦相似度计算操作向量化.md - 苏轶然 - 博客园 (cnblogs.com)https://www.cnblogs.com/suanec/p/9121092.html 对A,B矩 ...
- 向量点积衡量相似度_余弦距离、欧氏距离和杰卡德相似性度量的对比分析
1.余弦距离 余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量. 向量,是多维空间中有方向的线段,如果两个向量的方向一致,即夹角接近零,那么这两个向量就 ...
- 文本分析—余弦相似度计算
文本分析-余弦相似度计算 一.余弦相似度简介 欧几里得点积公式:a · b = || a || || b || cosθ 我们从图中可以看出,利用两个向量之间夹角的余弦值来代表两个向量之间的差异. 那 ...
- python 图像识别_python图像识别之图片相似度计算
作者 | a1131825850疯子 来源 | Python爬虫scrapy 原文 | python图像识别---------图片相似度计算 1.背景 要识别两张图片是否相似,首先我们可能会区分这两张 ...
- 【NLP实战】基于ALBERT的文本相似度计算
实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式.因此,NLP专栏推出了实战专栏,让有兴趣的同学在看文章之余也可以自己动手试一试. ALBERT是一个比BERT要轻量,效果更好的模型,本篇 ...
最新文章
- 最新 crtmpserver 源码的获取方法
- flash模拟EEROM
- windows7 下 安装ipython-5.1.0报错
- 【Python】青少年蓝桥杯_每日一题_11.11_统计英文字母、空格、数字、其他字符的个数
- 带防夹功能的升降器原理_桌面光污染必不可少——骨伽Bunker RGB鼠标线夹
- python把矩阵堆叠成大矩阵_python numpy 矩阵堆叠实例
- 车厢重组(信息学奥赛一本通-T1310)
- 杭电oj 1000 c++ 版本
- 背景素材|令人惊讶水彩背景,新尝试
- java序列化原理_Java序列化机制和原理
- 图画日记怎么画_图画日记
- 模型导入unity贴图缺失怎么办?
- HTML5期末大作业:美妆网页主题网站设计——清新的手工肥皂网站展示(4页)HTML+CSS+JavaScript...
- seek()函数与tell()函数
- 达摩院年终预测出炉:AI for Science 高居榜首
- json 转 csv python
- android绘图拖影效果,Android自定义View绘图实现拖影动画
- 前端 Leader 如何做好团队规划?阿里内部培训总结公开
- UE5在UI上播放视频带声音的解决方案
- Java后端_Properties集合的遍历
热门文章
- git上传代码到指定分支
- vue项目你一定会用到的性能优化!
- redis主从、集群
- 1_一些文献中的英文解释和用法整理
- 华为鸿蒙pc系统试用版,华为开源操作系统 鸿蒙OS 升级版曝光,打通PC等一大批硬件...
- linux下,fping命令与ping命令解析
- 查询计算机会议信息一站式工具:截稿日期、召开信息、会议等级全都有!
- android listview 的下拉刷新
- 代码实现全局消息钩子SetWindowsHookExA监视按键记录
- leetcode:2448. 使数组相等的最小开销【猜结论落在给定点 + 考虑初始值和变化量 + 三分法模板学习】