動手實踐用LDA模型計算兩篇英文文檔相似度


知道原理的同學這部分可以略過直接看實踐部分

什么是TD-IDF?

構造文檔模型

我們這里使用空間向量模型數據化文檔內容:向量空間模型中將文檔表達為一個矢量。

用特征向量(T1,W1;T2,W2;T3, W3;…;Tn,Wn)表示文檔。

Ti是詞條項,Wi是Ti在文檔中的重要程度, 即將文檔看作是由一組相互獨立的詞條組構成,把T1,T2 …,Tn看成一個n 維坐標系中的坐標軸,對於每一詞條,根據其重要程度賦以一定的權值Wi,作為對應坐標軸的坐標值。 

權重Wi用詞頻表示,詞頻分為絕對詞頻相對詞頻

絕對詞頻,即用詞在文本中出現的頻率表示文本。

相對詞頻,即為歸一化的詞頻,目前使用 最為頻繁的是TF*IDF(Term Frequency * Inverse Document Frequency)TFIDF

將文檔量化了之后我們很容易看出D1與Q更相似~因為D1與Q的夾角小,我們可以用余弦cos表示

分析一下這個例子:

有三個文檔D1,D2,Q

這三個文檔一共出現了三個詞條,我們分別用T1,T2,T3表示

在文檔D1中詞條T1的權重為2,T2權重為3,T3權重為5

在文檔D2中詞條T1權重為0,T2權重為7,T3權重為1

在文檔Q中詞條T1權重為0,T2權重為0,T3權重為2

  D1 D2 Q
T1 2 3 0
T2 3 7 0
T3 3 1 2

 

 

 

接下來我們看tf*idf的公式:

tf:tf(d,t) 表示詞條t 在文檔d 中的出現次數

idf:idf(t)=log N/df(t)

  • df(t) 表示詞條t 在文本集合中出現過的文本數目(詞條t在哪些文檔出現過) Inverse Document Frequency

  • N 表示文本總數

對於詞條t和某一文本d來說,詞條在該文本d的權重計算公式:

特征向量(T1,W1;T2,W2;T3, W3;…;Tn,Wn)就可以求出了!

是不是很簡單呢~

進一步思考:

如果說一個詞條t幾乎在每一個文檔中都出現過那么:

idf(t)=log N/df(t)

趨近於0,此時w(t)也趨近於0,從而使得該詞條在文本中的權重很小,所以詞 條對文本的區分度很低。

停用詞:在英文中如a,of,is,in.....這樣的詞稱為停用詞,它們都區分文檔的效果幾乎沒有,但是又幾乎在每個文檔中都出現,此時idf的好處就出來了

我們通常根據w(d,t)值的大小,選擇 指定數目的詞條作為文本的特征項,生 成文本的特征向量(去掉停用詞)

這種算法一方面突 出了文檔中用戶需要的詞,另一方面, 又消除了在文本中出現頻率較高但與文本語義無關的詞條的影響

文本間相似性 :

基於向量空間模型的常用方法,剛才我們提到過可以用余弦值來計算,下面我講一下具體步驟

 

內積不會求得自行百度。。。。

為了提高計算效率:可以先算x^'=x/|x|,y^'=y/|y|;大量計算兩兩文檔間相似度時,為降低計算量,先對文檔進行向量進行單位化。

ok~tf*idf就先到這里

總結:

我們可以通過計算tf*idf的值來作為特征向量的權重,把權重為0的詞去掉

然后通過計算特征向量之間的余弦值來判斷相似性。

什么是LDA?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM