如何用余弦定理來進行文本相似度的度量

在做文本分析的時候,經常會到說將文本轉化為對應的向量,之后利用余弦定理來計算文本之間的相似度。但是最近在面試時,重復上面這句話,卻被面試官問到:“什么是余弦定理?”當時就比較懵逼,于是把余弦定理求文本相似度的過程敘述了一遍:“將樣本轉化為對應的空間中的兩個向量,然后計算兩個向量余弦值,之后根據余弦值的大小來判斷兩個樣本相似度有多少”,但是話音剛落就被面試官否定了,當時感覺自己說的是正確的,但是由于自己的確記不記得余弦定理的數學含義以及公式,所以也就沒有和面試官辯論,當時想請教下面試官他理解的余弦定理是什么,卻被一句“回去自己查”給堵死。。。之后對這件事一直耿耿于懷,不過又一想,也是,面試官問的是余弦定理,但是我說的是余弦定理在空間向量中如何計算相似度,好像是有點跑題。。。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.pswp.cn/news/456534.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456534.shtml
英文地址,請注明出處:http://en.pswp.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的安裝 目錄: 前言: 最近在看一些機器學習方面的教程,里面的一…

form表單元素設置只讀

form表單元素設置只讀 CreateTime--2017年5月5日11:42:41 Author:Marydon 1.設置文本框只讀 <!-- 方法一&#xff1a;簡寫 --> <input type"text" name"" value"文本框" class"" readonly/> <!-- 方法二&#xff1a;…

MySQL安裝和完全卸載-Linux ubantu18.04

MySQL數據庫 千萬不要安裝5.7版本全是坑~&#xff01;&#xff01; 千萬不要安裝5.7版本全是坑~&#xff01;&#xff01; 千萬不要安裝5.7版本全是坑~&#xff01;&#xff01; ubantu18.04版本 正確道路應該是走安裝MySQL 8.0&#xff1a; 第一步&#xff1a;更新文件…

機器學習中的數學基礎相關知識總結

文章目錄目錄&#xff1a;前言&#xff1a;1、導數(曲線變化的快慢)、二階導數&#xff08;曲線斜率變化的快慢特別是反映曲線的凸凹性&#xff09;的概念。2、常用的導數公式&#xff1a;3、微分和積分的數學含義&#xff1a;4、泰勒公式及含義5、梯度的概念及數學含義&#x…

Linux中python的開發環境配置(虛擬環境)

1 pyenv pyenv是一個Python版本管理工具&#xff0c;它能夠進行全局的Python版本切換&#xff0c;也可以為單個項目提供對應的Python版本。使用pyenv以后&#xff0c;可以在服務器上安裝多個不同的Python版本&#xff0c;也可以安裝不同的Python實現。不同Python版本之間的切換…

第一個沖刺周期-第三天

一、先把數據庫弄好&#xff0c;然后連接上&#xff0c;寫一個測試用例&#xff0c;看看能不能調用數據&#xff0c; 增刪改查是否正確&#xff0c;可以了的話&#xff0c;這一部分就結束了 二、 然后去寫UI層&#xff0c;先寫XML&#xff0c;把界面效果做出來 三、 然后寫UI…

特征工程

上周參加了學校的數據挖掘競賽&#xff0c;總的來說&#xff0c;在還需要人工干預的機器學習相關的任務中&#xff0c;主要解決兩個問題&#xff1a;&#xff08;1&#xff09;如何將原始的數據處理成合格的數據輸入&#xff08;2&#xff09;如何獲得輸入數據中的規律。第一個…

Linux下快速安裝MySQL教程

轉自&#xff1a;https://blog.csdn.net/sl1992/article/details/53634674 目錄&#xff1a;前言&#xff1a;1.執行yum install mysql-server進行安裝2.輸入y進行確認3.安裝成功4.查看MySQL是否啟動5.啟動MySQL6.查看是否運行7.設置開機啟動MySQL8.創建MySQL管理員root9.登錄M…

SpringMVC實戰(注解)

1.前言 前面幾篇介紹了SpringMVC中的控制器以及視圖之間的映射方式,這篇來解說一下SpringMVC中的注解,通過注解能夠非常方便的訪問到控制器中的某個方法. 2.配置文件配置 2.1 注解驅動,配置掃描器 首先須要在SpringMVC中的核心文件里指定注解驅動,詳細例如以下: <?xml vers…

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…

Hbase2.0版本安裝教程

目錄&#xff1a;前言&#xff1a;1. 上傳2. 解壓3. 重命名4. 修改環境變量5. 修改配置文件6. 把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下7. 發送到其他機器8. 啟動9. 查看總結&#xff1a; 目錄&#xff1a; 前言&#xff1a; 最近由于工作需要又把HBase重裝…

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;自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬…