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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mongodb 备份和恢复

为什么80%的码农都做不了架构师?>>> Mongodb 备份和恢复 mongodump -h host -u "username" -p "userpass" -d dbname -o backfilename tar -cvzf backfilename.tar backfilename tar -xvzf backfilename.tar mongorestore -h…

【linux】Ubuntu 18.04 设置桌面快捷启动方式

使用Ubuntu终端进行打开: 方法一(使用vim): sudo vi /usr/share/applications/pycharm.desktop 方法二(使用gedit): sudo gedit /usr/share/applications/pycharm.desktop 然后就会弹出一个…

在 Pycharm下使Python2和Python3共用Anaconda中的各种库/包的解决方法

参考:https://www.cnblogs.com/MoonST/p/7610460.html 目录:前言:1、同时下载两个版本的anaconda2、主版本conda的安装3、辅助版本Anaconda的安装 目录: 前言: 最近在看一些机器学习方面的教程,里面的一…

MySQL安装和完全卸载-Linux ubantu18.04

MySQL数据库 千万不要安装5.7版本全是坑~!! 千万不要安装5.7版本全是坑~!! 千万不要安装5.7版本全是坑~!! ubantu18.04版本 正确道路应该是走安装MySQL 8.0: 第一步:更新文件…

机器学习中的数学基础相关知识总结

文章目录目录:前言:1、导数(曲线变化的快慢)、二阶导数(曲线斜率变化的快慢特别是反映曲线的凸凹性)的概念。2、常用的导数公式:3、微分和积分的数学含义:4、泰勒公式及含义5、梯度的概念及数学含义&#x…

特征工程

上周参加了学校的数据挖掘竞赛,总的来说,在还需要人工干预的机器学习相关的任务中,主要解决两个问题:(1)如何将原始的数据处理成合格的数据输入(2)如何获得输入数据中的规律。第一个…

Linux下快速安装MySQL教程

转自:https://blog.csdn.net/sl1992/article/details/53634674 目录:前言:1.执行yum install mysql-server进行安装2.输入y进行确认3.安装成功4.查看MySQL是否启动5.启动MySQL6.查看是否运行7.设置开机启动MySQL8.创建MySQL管理员root9.登录M…

UIView类绘图出现错误提示

一:问题: Jan 16 15:49:53 CUBOT Band Ⅲ[2082] <Error>: CGContextSetLineWidth: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. Jan 16 15:49:53 CUBOT Band Ⅲ[2082] <Error>: CGCo…

MySQL8.0版本和5.7通过Navicat远程连接

首先在数据库创建好连接的用户 进入mysql服务器终端&#xff1a; 命令窗口终端&#xff1a; mysql -u用户名 -p密码 sudo mysql -uroot -p 创建用户部分-- 使用mysql 数据库 USE mysql&#xff1b; -- 为mysql创建用户&#xff1a;root1 密码为&#xff1a;root1 …

HUE配置文件hue.ini 的zookeeper模块详解(图文详解)(分HA集群)

不多说&#xff0c;直接上干货&#xff01; 我的集群机器情况是 bigdatamaster&#xff08;192.168.80.10&#xff09;、bigdataslave1&#xff08;192.168.80.11&#xff09;和bigdataslave2&#xff08;192.168.80.12&#xff09; 然后&#xff0c;安装目录是在/home/hadoop/…

CF #366(div.2) C 模拟,思维

CF #366(div.2) C. Thor 题意&#xff1a;一个手机n个联系人&#xff0c;有q个操作。每次给出ty和ai&#xff0c;如ty1&#xff0c;表示收到ai的一条信息&#xff1b;如ty2&#xff0c;表示将ai发的信息都看掉&#xff1b;如ty3&#xff0c;表示将第1条到第ai条信息都看掉…

MySQL基本指令汇总

创建数据库&#xff1a; create database 数据库名字; 删除数据库: drop database 数据库名字; 查看数据库: show databases; 切换数据库: use databasename; select database(); Create table 表名&#xff08;列名 数据类型 [约束]&#xff0c;列名 数据类型 [约束]&a…

linux命令行在任意目录下启动任意的脚本的方法

目录&#xff1a;前言&#xff1a;1、直接在命令行中设置PATH2、在profile中设置PATH3、在当前用户的profile中设置PATH 目录&#xff1a; 前言&#xff1a; 这应该算是一个常识吧&#xff0c;但是对于许多像我们这样的新手来说&#xff0c;一旦你出点小差错&#xff0c;整个…

阿里云centos 安装和配置 DokuWiki

DokuWiki 是一个开源的 wiki 项目&#xff0c; 可方便进行知识和内容的管理和分享&#xff0c;不用安装数据库&#xff0c;内置权限管理&#xff0c;书写直观方便&#xff0c;有大量的插件支持。特别适用于企业内部的内容和知识管理&#xff0c;只允许内部员工编辑和查阅的场景…

python-爬虫

网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟…

MySQL5.7升级到8.0 之后,配合ubantu18.04遇到的常规问题以及非常规问题的解决方案

从MySQL5.7升级到8.0后首先会发现在创建用户和授权大大不同&#xff1b;其次还有更多常规问题以及非常规问题的解决方案 写本篇博客记录踩过的坑 MySQL8.0配合ubantu18.04 一、创建用户和授权 在mysql8.0创建用户和授权和之前不太一样了&#xff0c;其实严格上来讲&#xf…

机器学习之数理统计与参数估计的相关知识总结

文章目录目录&#xff1a;1、知道期望/方差/偏度/峰度&#xff0c;独立和不相关等概念是什么。2、契比雪夫不等式3、大数定理/中心极限定理4、伯努利定理5、矩估计6、最大似然估计7、协方差和相关系数目录&#xff1a; 1、知道期望/方差/偏度/峰度&#xff0c;独立和不相关等概…

Angular属性型指令

2019独角兽企业重金招聘Python工程师标准>>> 属性型指令 — 改变元素、组件或其它指令的外观和行为的指令 属性性指令的创建步骤如下&#xff1a; import语句需要从 Angular 的core库导入的一些符号。 Directive提供Directive装饰器功能。 ElementRef注入到指令构造…

beeline连接hiveserver2报错:User: root is not allowed to impersonate root

最近在生产中搭建HA机制的集群&#xff0c;碰到不少坑&#xff0c;会在接下来的时间里好好总结下&#xff0c;先说下遇到的一个大坑。我们的需求是&#xff1a;希望通过hive的thrift服务来实现跨语言访问Hive数据仓库。但是第一步&#xff0c;你得需要在节点中打通服务器端&…

局域网 两台电脑共享 密码关闭

转载于:https://www.cnblogs.com/WhiteHorseIsNotHorse/p/6832463.html