文本相似度计算-度量方法
2. 文本相似度計算-距離的度量
完整機器學習實現代碼GitHub
歡迎轉載,轉載請注明出處https://www.cnblogs.com/huangyc/p/9786731.html
歡迎溝通交流: 339408769@qq.com
0. 目錄
- 1. 前言
- 2. 相似度計算方式
- 2.1 余弦相似度
- 2.2 歐式距離
- 2.3 曼哈頓距離
- 2.4 閔可夫斯基距離
- 2.5 皮爾森相關系數(pearson)
- 2.6 Jaccard相似性系數
- 3. 總結
?
1. 文本相似度計算-文本向量化
2. 文本相似度計算-距離的度量
3. 文本相似度計算-DSSM算法
4. 文本相似度計算-CNN-DSSM算法
回到頂部
1. 前言
上文介紹了文本的向量化處理,本文是在上文的向量化處理后的數據進行距離的計算。距離度量的方式有多種多樣,但是一種相似度計算方式并不適用與所有的情況,需要根據不同的情況和數據類型進行選擇。
回到頂部
2. 相似度計算方式
相似度就是比較兩個事物的相似性。一般通過計算事物的特征之間的距離,如果距離小,那么相似度大;如果距離大,那么相似度小。
簡化問題:假設有兩個對象XX、YY,都包括NN維特征,X=(x1,x2,x3,..,xn),Y=(y1,y2,y3,..,yn)X=(x1,x2,x3,..,xn),Y=(y1,y2,y3,..,yn),計算XX和YY的相似性。常用的方法如下:
2.1 余弦相似度
余弦相似度用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。相比距離度量,余弦相似度更加注重兩個向量在方向上的差異,而非距離或長度上。適合word2vec模型向量化的數據。
?
cosθ=∑ni=1xi?yi∑ni=1x2i∑ni=1y2i?????????????√cosθ=∑i=1nxi?yi∑i=1nxi2∑i=1nyi2
2.2 歐式距離
歐氏距離是最常用的距離計算公式,衡量的是多維空間中各個點之間的絕對距離,當數據很稠密并且連續時,這是一種很好的計算方式。
因為計算是基于各維度特征的絕對數值,所以歐氏度量需要保證各維度指標在相同的刻度級別,如在KNN中需要對特征進行歸一化。
?
d=∑i=1n(xi?yi)2??????????√d=∑i=1n(xi?yi)2
2.3 曼哈頓距離
曼哈頓距離簡單來說就是統計相同坐標軸上的距離的和。
?
d=∑i=1n|xi?yi|d=∑i=1n|xi?yi|
2.4 閔可夫斯基距離
大家有沒發現歐式距離和曼哈頓距離在形式上比較相近。是的,其實它們是閔可夫斯基距離的特殊化。適合TF-IDF向量化后的數據或者提煉出來的主題模型數據。
?
d=(∑i=1n(xi?yi)p)1pd=(∑i=1n(xi?yi)p)1p
2.5 皮爾森相關系數(pearson)
皮爾森相關系數是衡量線性關聯性的程度。
兩個連續變量(X,Y)(X,Y)的pearson相關性系數PX,YPX,Y等于它們之間的協方差cov(X,Y)cov(X,Y)除以它們各自標準差的乘積σXσX,σYσY。系數的取值總是在-1.0到1.0之間,接近0的變量被成為無相關性,接近1或者-1被稱為具有強相關性。
?
PX,Y=cov(X,Y)σXσYPX,Y=cov(X,Y)σXσY
2.6 Jaccard相似性系數
Jaccard(杰卡德)相似性系數主要用于計算符號度量或布爾值度量的樣本間的相似度。若樣本間的特征屬性由符號和布爾值標識,無法衡量差異具體值的大小,只能獲得“是否相同”這樣一種結果,而Jaccard系數關心的是樣本間共同具有的特征。適合詞集模型向量化的數據。
?
J(X,Y)=|X?Y||X?Y|J(X,Y)=|X?Y||X?Y|
回到頂部
3. 總結
本文介紹的相似度計算方式,總的來說還是比較簡單、易于理解。相似度計算方式的不同對最終結果的影響沒有向量化方式不同影響大,但是相似度計算方式不同對計算時間影響比較大。下文將從深度學習的角度介紹文本相似度計算。
?
3. 文本相似度計算-DSSM算法
完整機器學習實現代碼GitHub
歡迎轉載,轉載請注明出處https://www.cnblogs.com/huangyc/p/9794652.html
歡迎溝通交流: 339408769@qq.com
0. 目錄
- 1. 前言
- 2. DSSM原理
- 2.1 DSSM架構
- 2.2 DSSM優缺點
?
1. 文本相似度計算-文本向量化
2. 文本相似度計算-距離的度量
3. 文本相似度計算-DSSM算法
4. 文本相似度計算-CNN-DSSM算法
回到頂部
1. 前言
最近在學習文本相似度的計算,前面兩篇文章分別介紹了文本的向量化和文本的距離度量,這兩篇文章的思路主要在機器學習的框架下面,本文準備換一個思路,從深度學習的角度來處理文本相似度的問題。
本文介紹DSSM(Deep Structured Semantic Models)深度學習架構。
回到頂部
2. DSSM原理
DSSM的原理很簡單,通過搜索引擎里Query和Doc的海量的點擊曝光日志,用DNN把Query和Doc轉化為低緯語義向量,并通過cosine距離來計算兩個語義向量的距離,并且根據用戶的點擊選擇Doc當做標簽值進行有監督學習,最終訓練出語義相似度模型。該模型既可以用來預測兩個句子的語義相似度,又可以獲得某句子的低緯語義向量表達。
這里的一個重要的概念是低緯語義向量,它的意思是把一句文本通過一定的方式轉換到一個固定維度的空間上,這樣就可以對不同句子間計算相似度了。然后我們的任務就是需要去找各種方法在盡量保存文本本身信息的情況下,獲得一個低維語義向量。AutoEncoder算法也是一種獲得低緯語義向量的方法。
2.1 DSSM架構
DSSM的架構圖如下所示:
?
我們從下到上的看數據流動的過程。
輸入數據:QQ代表用戶的輸入,DiDi代表比對的第ii個文檔。
- Term Vector層可以理解為輸入層,我們簡單的理解成把文本做one-hot處理后的詞向量。這一層的矩陣維度在50W左右,矩陣太大,并且太稀疏,不容易訓練。
- Word Hashing層可以理解為數據預處理層,這一層主要是通過n-gram的方式降低矩陣維度。舉個例子,假設用letter-trigams來切分單詞(3個字母為一組,#表示開始和結束符),boy這個單詞會被切為#-b-o,b-o-y,o-y-#。這樣做的好處有兩個:首先是壓縮空間,50萬w個詞的one-hot向量空間可以通過letter-trigram壓縮為一個3w維的向量空間。其次是增強范化能力,三個字母的表達往往能代表英文中的前綴和后綴,而前綴后綴往往具有通用的語義,在通過BOW對文本向量化。
這里之所以用 3 個字母的切分粒度,是綜合考慮了向量空間和單詞沖突:
?
以50w個單詞的詞庫為例,Bigram的切分粒度的單詞沖突為1192(沖突的定義:至少有兩個單詞的letter-bigram向量完全相同),而TriGram的單詞沖突降為22效果很好,且轉化后的向量空間3w維不是很大,綜合考慮選擇TriGram的切分粒度。
- Multi-layer nonlinear projection這一層就是DNN的處理了。上面的架構圖中畫了3層DNN結構。做了一個降維操作,3w->300->300->128。
l1=W1xl1=W1x
?li=f(Wili?1+bi)li=f(Wili?1+bi)
?y=f(WNlN?1+bN)y=f(WNlN?1+bN)
- Relevance層是把Query的向量和Doc中的所有向量做一個cosine的相似度計算。
?
P(D|Q)=exp(γR(Q,D))∑di∈Dexp(γR(Q,D))P(D|Q)=exp(γR(Q,D))∑di∈Dexp(γR(Q,D))
- softmax層把計算出的概率進行歸一化輸出。
最終的loss是
?
L(Λ)=?log∏(Q,D+)P(D+|Q)L(Λ)=?log∏(Q,D+)P(D+|Q)
2.2 DSSM優缺點
從整體上看,DSSM還是對傳統的機器學習和深度學習的方法進行了組合,先用n-gram進行矩陣壓縮,再通過DNN網絡進一步壓縮,再通過cosine計算相似度,softmax輸出歸一化的相似度概率。
- 優點:
- 缺點:
?
?
?
4. 文本相似度計算-CNN-DSSM算法
完整機器學習實現代碼GitHub
歡迎轉載,轉載請注明出處https://www.cnblogs.com/huangyc/p/9839091.html
歡迎溝通交流: 339408769@qq.com
0. 目錄
- 1. 前言
- 2. CNN-DSSM
- 2.1 CNN-DSSM架構
- 2.2 優缺點
- 3. 總結
?
1. 文本相似度計算-文本向量化
2. 文本相似度計算-距離的度量
3. 文本相似度計算-DSSM算法
4. 文本相似度計算-CNN-DSSM算法
回到頂部
1. 前言
之前介紹了DSSM算法,它主要是用了DNN的結構來對數據進行降維度,本文用CNN的結構對數據進行降維。
回到頂部
2. CNN-DSSM
CNN-DSSM在DSSM的基礎上改進了數據的預處理和深度
2.1 CNN-DSSM架構
CNN-DSSM的架構圖如下:
?
輸入:QueryQuery是代表用戶輸入,documentdocument是數據庫中的文檔。
- word-n-gram層:是對輸入做了一個獲取上下文信息的窗口,圖中是word-trigram,取連續的3個單詞。
- Letter-trigram:是把上層的三個單詞通過3個字母的形式映射到3w維,然后把3個單詞連接起來成9w維的空間。
- Convolutional layer:是通過Letter-trigram層乘上卷積矩陣獲得,是普通的卷積操作。
- Max-pooling:是把卷積結果經過池化操作。
- Semantic layer:是語義層,是池化層經過全連接得到的。
獲得128維的語義后就可以計算文本之間的相似度了,計算相似度的過程和DNN-DSSM的過程是一樣的。可以發現CNN-DSSM和DNN-DSSM基本流程是差不多的,就是用卷積和池化的操作代替了DNN的操作。
2.2 優缺點
-
優點:CNN-DSSM 通過卷積層提取了滑動窗口下的上下文信息,又通過池化層提取了全局的上下文信息,上下文信息得到較為有效的保留。
-
缺點:CNN-DSSM 滑動窗口(卷積核)大小的限制,導致無法捕獲該上下文信息,對于間隔較遠的上下文信息,難以有效保留。
回到頂部
3. 總結
CNN-DSSM的結構可分為數據預處理(把文本向量化),在經過深度神經網絡,壓縮矩陣,最后拿壓縮后的矩陣進行相似度計算。和DNN-DSSM相比主要的變化在深度神經網絡這一層的處理方式,舉一反三那肯定也還有通過RNN來處理數據的過程,RNN-DSSM后面會載講解。
?
總結
以上是生活随笔為你收集整理的文本相似度计算-度量方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 0,1,2 代表标准输入、标准输出、标准
- 下一篇: Hibernate中inverse属性与