在做文本分析的时候,经常会到说将文本转化为对应的向量,之后利用余弦定理来计算文本之间的相似度。但是最近在面试时,重复上面这句话,却被面试官问到:“什么是余弦定理?”当时就比较懵逼,于是把余弦定理求文本相似度的过程叙述了一遍:“将样本转化为对应的空间中的两个向量,然后计算两个向量余弦值,之后根据余弦值的大小来判断两个样本相似度有多少”,但是话音刚落就被面试官否定了,当时感觉自己说的是正确的,但是由于自己的确记不记得余弦定理的数学含义以及公式,所以也就没有和面试官辩论,当时想请教下面试官他理解的余弦定理是什么,却被一句“回去自己查”给堵死。。。之后对这件事一直耿耿于怀,不过又一想,也是,面试官问的是余弦定理,但是我说的是余弦定理在空间向量中如何计算相似度,好像是有点跑题。。。anyway,过去的已经过去了,只要有收获就行。于是回来查了一下余弦定理是怎么应用于文本相似的度量的,下面是整个过程,其实很简单,只不过当时把余弦定理的公式忘了,不然很容易就能解释通(数学知识全还给老师了)。。。

相似度度量(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的夹角 的余弦计算如下

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

余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,夹角等于0,即两个向量相等,这就叫”余弦相似性”。

总结:

其实只要知道余弦定理余弦值的计算公式,然后转化为空间中的两个向量后,直接就能代入余弦定理来得到对应的余弦值,毕竟你知道两个向量的坐标,也就意味着你知道了余弦定理公式中三角形的三条边a、b、c的值。
参考:https://blog.csdn.net/u012160689/article/details/15341303

如何用余弦定理来进行文本相似度的度量相关推荐

  1. java 余弦定理_Java實現余弦定理計算文本相似度

    相似度度量(Similarity),即計算個體間的相似程度,相似度度量的值越小,說明個體間相似度越小,相似度的值越大說明個體差異越大. 對於多個不同的文本或者短文本對話消息要來計算他們之間的相似度如何 ...

  2. 从0到1,了解NLP中的文本相似度

    本文由云+社区发表 作者:netkiddy 导语 AI在2018年应该是互联网界最火的名词,没有之一.时间来到了9102年,也是项目相关,涉及到了一些AI写作相关的功能,为客户生成一些素材文章.但是, ...

  3. 从0到1,了解NLP中的文本相似度 1

    导语 AI在2018年应该是互联网界最火的名词,没有之一.时间来到了9102年,也是项目相关,涉及到了一些AI写作相关的功能,为客户生成一些素材文章.但是,AI并不一定最懂你,客户对于AI写出来的文章 ...

  4. 文本相似度-相似度度量

    NLP点滴--文本相似度 目录 前言 字面距离 common lang库 相同字符数 莱文斯坦距离(编辑距离) 定义 实现方式 Jaro距离 定义 实现方式 应用 SimHash 定义 基本流程 相似 ...

  5. NLP点滴——文本相似度

    目录 前言 字面距离 common lang库 相同字符数 莱文斯坦距离(编辑距离) 定义 实现方式 Jaro距离 定义 实现方式 应用 SimHash 定义 基本流程 相似性度量 存储索引 实现 应 ...

  6. NLP点滴——文本相似度,计算文本间的距离

    前言 在自然语言处理过程中,经常会涉及到如何度量两个文本之间的相似性,我们都知道文本是一种高维的语义空间,如何对其进行抽象分解,从而能够站在数学角度去量化其相似性.而有了文本之间相似性的度量方式,我们 ...

  7. Java实现余弦定理计算文本相似度

    相似度度量(Similarity),即计算个体间的相似程度,相似度度量的值越小,说明个体间相似度越小,相似度的值越大说明个体差异越大. 对于多个不同的文本或者短文本对话消息要来计算他们之间的相似度如何 ...

  8. python余弦定理_余弦定理与文本相似度

    什么是余弦定理 学过向量代数的人都知道,向量实际上是多维空间中有方向的线段.如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近.而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角了 ...

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

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

最新文章

  1. linux查找技巧: find grep xargs linux系统信息查看大全
  2. 我可以在同一页面上使用多个版本的jQuery吗?
  3. 第六周读书笔记《浪潮之巅》
  4. 算法马拉松13 A-E解题报告
  5. phpMyAdmin 配置
  6. python导入数据画柱状图代码_在Linux下使用Python的matplotlib绘制数据图的教程
  7. 在页面显示html文件,把选择的文件显示在页面上 #1《 HTML5:文件 API 》
  8. 了解一点儿JavaConfig
  9. 对于软件测试四大误区的认识
  10. SQL Server 连接查询(多表连接查询)
  11. Python常用的几种数据结构-链表,数组,字典
  12. 敏捷项目管理之计划扑克游戏
  13. UG数控编程显示和隐藏的快捷键
  14. PHICOMM(斐讯)N1盒子 - recovery模式救砖卡登录页LOGO卡1%卡4%卡26%
  15. C语言之va_list
  16. 元宇宙持续火爆,这些问题值得思考和警惕!
  17. golang监控服务器性能,go 性能监控神器
  18. 文本相关_SAP刘梦_新浪博客
  19. LightOJ - Travel Company(Spfa)
  20. Vista SP1 无法建立PPOE连接解决方法

热门文章

  1. JNA—JNI终结者
  2. Spring中的@scope注解
  3. 日期格式不符合要求:Unparseable date: quot;3e8a4d83533744c698216535a65850c0quot;
  4. Python学习-终端字体高亮显示
  5. 20150504-日报
  6. [LeetCode]Search Insert Position
  7. 知识点滴:持久层,DAO,API,DAL,BLL,DLL,csproj,sln
  8. C#中写入Excel
  9. 6000个边缘Kubernetes节点驱动城市80万次智能停车,如何成为可能?
  10. windows下安装mysql 开机启动