相似度度量(Similarity),即计算个体间的相似程度,相似度度量的值越小,说明个体间相似度越小,相似度的值越大说明个体差异越大。

对于多个不同的文本或者短文本对话消息要来计算他们之间的相似度如何,一个好的做法就是将这些文本中词语,映射到向量空间,形成文本中文字和向量数据的映射关系,通过计算几个或者多个不同的向量的差异的大小,来计算文本的相似度。下面介绍一个详细成熟的向量空间余弦相似度方法计算相似度

向量空间余弦相似度(Cosine Similarity)

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。

上图两个向量a,b的夹角很小可以说a向量和b向量有很高的的相似性,极端情况下,a和b向量完全重合。如下图:

上图中:可以认为a和b向量是相等的,也即a,b向量代表的文本是完全相似的,或者说是相等的。如果a和b向量夹角较大,或者反方向。

如上图三: 两个向量a,b的夹角很大可以说a向量和b向量有很底的的相似性,或者说a和b向量代表的文本基本不相似。那么是否可以用两个向量的夹角大小的函数值来计算个体的相似度呢?

向量空间余弦相似度理论就是基于上述来计算个体相似度的一种方法。下面做详细的推理过程分析。

直角三角形的余弦计算

直角三角形余弦θ

想到余弦公式,最基本计算方法就是初中的最简单的计算公式,计算夹角的余弦定值公式为:

直角三角形余弦计算公式

普通三角形的余弦计算

普通三角形的余弦夹角

但是这个是只适用于直角三角形的,而在非直角三角形中,余弦定理的公式是

三角形中边a和b的夹角 的余弦计算公式为:

普通三角形余弦计算公式

二维向量的余弦计算

在向量表示的三角形中,假设a向量是(x1, y1),b向量是(x2, y2),那么可以将余弦定理改写成下面的形式:

二维向量间的夹角

二维向量余弦计算公式

多维空间余弦夹角计算

扩展,如果向量a和b不是二维而是n维,上述余弦的计算法仍然正确。假定a和b是两个n维向量,a是 ,b是 ,则a与b的夹角 的余弦等于:

多维空间向量余弦夹角计算公式

文本余弦相似度计算过程

下面举一个例子,来说明余弦计算文本相似度

举一个例子来说明,用上述理论计算文本的相似性。为了简单起见,先从句子着手。

句子A

这只皮靴号码大了。那只号码合适

句子B

这只皮靴号码不小,那只更合适

怎样计算上面两句话的相似程度?

基本思路是:如果这两句话的用词越相似,它们的内容就应该越相似。因此,可以从词频入手,计算它们的相似程度。

第一步,分词。

句子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)计算两个向量的余弦相似度,值越大就表示越相似。

数学公式在线编辑网站:

向量的夹角余弦公式_文本相似度 之余弦夹角 度量算法相关推荐

  1. 向量的夹角余弦公式_向量空间模型(VSM)的余弦定理公式(用余弦定理来表示向量之间的相似度)...

    相信很多学习向量空间模型(Vector Space Model)的人都会被其中的余弦定理公式所迷惑.. 因为一看到余弦定理,肯定会先想起初中时的那条最简单的公式cosA=a/c(邻边比斜边),见下图: ...

  2. java 余弦定理_文本相似度计算之余弦定理

    前言 余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度.余弦相似度将向量根据坐标值,绘制到向量空间中.用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小.余弦值 ...

  3. python jieba 文本相似度_文本相似度分析(基于jieba和gensim)

    ##基础概念 本文在进行文本相似度分析过程分为以下几个部分进行, 文本分词 语料库制作 算法训练 结果预测 分析过程主要用两个包来实现jieba,gensim jieba:主要实现分词过程 gensi ...

  4. python文本相似度分析_文本相似度分析(基于jieba和gensim)

    ##基础概念 本文在进行文本相似度分析过程分为以下几个部分进行, 文本分词 语料库制作 算法训练 结果预测 分析过程主要用两个包来实现jieba,gensim jieba:主要实现分词过程 gensi ...

  5. python如何做文本相似性判断_文本相似度算法的整理和python实现

    中文文本相似度计算的算法: 1.最长公共子串.编辑距离(基于原文本进行查找测试,) 可以进行改进 2.分词后进行集合操作. Jaccard相似度. 1.分词,把需要判断文本分词形成这个文章的特征单词. ...

  6. minhash算法检索相似文本_文本相似度算法之-minhash

    在做文本去重任务时其实有很多中方法可供选择,譬如,对文章分词,两两对比词集合的jaccard系数,但是当遇到大规模文本去重时,这种方法的效率就太低了,接下来介绍一种大规模文本去重算法minhash. ...

  7. 向量的夹角余弦公式_两个向量的夹角的余弦值怎么求过程!! – 手机爱问

    2006-04-02 急急急急!!! 求向量2a+3b与向量3a-b的夹角的余弦值 只要把两个(2a+3b)和(3a-b)相乘,再除以它们模的积就OK了 具体如下: cosθ=(2a+3b)·(3a- ...

  8. 向量的方向余弦公式_定位中方向余弦矩阵(DCM)简介

    1   前言 这篇文章是翻译Starlino_DCM_Tutorial.pdf而来, 链接为:http://www.starlino.com/dcm_tutorial.html 这篇文章主要是介绍无人 ...

  9. 向量的方向余弦公式_方向余弦

    方向余弦矩阵 变换部分文字 pp 概述 原则上, 所有图象处理都是图像的变换, 而本章所谓的图象变换特指数字图象经过某种数学 工具的处理, 把原先二维空间域中的数据, 变换到另外一个"变换域 ...

最新文章

  1. 极客新闻——16、数据库设计中的5个常见错误
  2. mac terminal vim delete key
  3. 开发日记-20190915 关键词 汇编语言王爽版 第十章
  4. 用aspx开发html5页面,ASP.NET使aspx页面能接受HTML,asp的页面传送的文件-.NET教程,Asp.Net开发...
  5. java volatile关键字的作用_java volatile关键字作用及使用场景详解
  6. 重磅!吴恩达新书《机器学习训练秘籍》中文版来了(附PDF下载)
  7. 海康威视云台相机4200客户端调试记录
  8. 高通功耗调试17之TLOC DEAMON导致待机/亮屏电流异常问题
  9. win7网上邻居无计算机一栏,Win7在网上邻居上看不到别的电脑怎么办?-电脑自学网...
  10. 3D游戏建模学习路线
  11. 一键加速去不掉加锁的_vivo手机一键加速的时候,怎样可以不把当前的应用清除?...
  12. App推广统计代替渠道包统计的方法
  13. adb关闭系统自动更新
  14. 哈工大计算机系名单,哈工大计算机学部公布拟录取名单,计算机科学与技术仅录29人!...
  15. 雪球网爬取数据并存入数据库
  16. HTML 文件里开头 Doctype 的作用是什么?
  17. python中有哪几种注释方式_python的注释有哪几种
  18. linux jboss的安装路径,LINUX下JBOSS的安装及配置
  19. Quaternion to angular velocity. 四元数 角速度
  20. 【工作日记】这一年来完全用Linux工作的感受

热门文章

  1. Thymeleaf常用写法,带实例,最全!
  2. 南卡Neo骨传导运动耳机正式发布,打造音质最强款骨传导耳机
  3. vue10-class数组样式绑定
  4. 基于SmartQQ协议的QQ聊天机器人-5
  5. 独立站打造一个更好的品牌形象
  6. 破解压缩文件密码rarcrack
  7. java文本域不可编辑_javascript:让表单 文本框 只读,不可编辑的方法
  8. extjs proxy post
  9. 如何在Word中插入手写签名
  10. Springboot热部署失效怎么解决?