天天看點

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

LSA是1988年S.T. Dumais等提出的一種新的資訊檢索模型,它使用統計計算的方法對大量的文本集進行分析,提取出詞與詞之間潛在的語義結構,并用這種潛在的語義結構表示詞和文本,達到消除詞之間的相關性和簡化文本向量實作降維的目的。

     使用LSA可以部分解決一義多詞(北京大學vs北大、電影vsmovie),但它是怎麼解決一義多詞的呢?LSA把高維向量空間模型表示中的文檔映射到低維潛在語義空間中,在潛在語義空間計算相似性,這個映射通過對詞項-文檔矩陣SVD分解來實作。

     LSA的基礎是:向量空間模型 + 矩陣,介紹LSA之前先簡單介紹下向量空間模型和矩陣的相關知識。

1.向量空間

       在向量空間模型中,一篇文檔可以表示為一個向量,其中每個分量對應一個詞項,分量的值是詞項在文檔中出現的頻率或者其它改進後的詞項權值。

N篇文檔組成的集合可以表示稱為一個M*N 的矩陣,稱作詞項-文檔矩陣,的行對應詞項,列對應文檔。具體如下:

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

      在向量空間模型,通過計算向量間的相似度來衡量兩個文檔之間的相關性,常用的相似度計算方法為餘弦相似度、歐氏距離、傑卡德相似系數、皮爾遜系數等。本文采用餘玄相似度,計算公式如下:

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

如果我們想計算d2和d3的相似度,根據上面公式可得出:

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

直覺上計算出的相似度為0,是否合理呢?答案是不合理,因為ship和boat是近義詞(一義多詞)。之是以相似度為0,是因為在向量空間計算相似度時都是”詞的逐字嚴格比對“,而這種“嚴格比對”忽視了一義多詞,這就是引入LSA的根本原因。

2.相關矩陣知識

線性相關、線性無關:若n個向量是線性相關的,則其中的向量可以寫成其它向量的線性組合。如果是線性無關的,則其中的向量不能寫成其他向量的線性組合。 正交向量::若兩個向量的內積為0,則稱這兩個向量是正交的 矩陣的秩:矩陣中線性無關的行(列)的數目,有:矩陣的秩 <=min(M,N),M、N分别表示矩陣的行和列。 特征值和特征向量:令T為M × M的矩陣,T為M維非0向量,若有:Tx = kx,則稱k是方陣T的特征值,x稱作方陣T的特征向量。

令S是實對稱矩陣,則其所有特征值均為實數,且不同特征值所對應的特征向量是正交的 矩陣對角化定理: 若S是M × M的實值方陣且擁有M個線性無關的特征向量,則S可分解為:

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

其中,U的列是S的特征向量,Λ是對角矩陣,其對角線上的元素是S的特征值,且按照對角線降序排列

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

若特征值均不相同,則這樣的分解是唯一的。

對稱對角化定理: 若S是M × M的實值對稱方陣,且擁有M個線性無關的特征向量,則S可分解為:

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

其中,Q的列是S的互相正交且歸一化的特征向量,Λ是對角矩陣,其對角線上的元素是S的特征值,且按照對角線降序排列。例如:

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

回到上面的 詞項 - 文檔矩陣C,顯然C不一定是對稱矩陣,但

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

一定是對稱矩陣。

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

是詞項相似度,元素含義是兩個詞項在文檔中共同出現的次數。

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

是文檔相似性,元素含義是兩個文檔共同詞項的個數。是以這兩個矩陣是可以分解的(對稱對角化定理)。

奇異值分解定理 : 若M × N的矩陣C的秩是r,那麼可對C進行如下的奇異值分解(SVD):

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

SVD的圖示如下:

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

上面是M>N,下面是N>M。

學習nlp和ml可能最煩的就是一大堆數學知識,講了這麼多矩陣知識,但是不要煩,因為這些知識都是LSA會用到的,如果想真正了解LSA這些知識是必須的。下面在介紹最後一點相關數學知識——低秩逼近。

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

SVD可以用來低秩逼近,具體如下:

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

如果不了解上面介紹,參見下面圖示:

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

3.LSA

    講了那麼多鋪墊,現在總算到LSA了,是不是很興奮!      LSA的核心在于将秩r的詞項-文檔矩陣C進行SVD分解,并尋求詞項-文檔矩陣的k秩逼近Ck,其中k<=r。維數k 為隐含在文檔集合中的話題數量,是以LSA可以被視作一種話題模型。在進行潛在語義分析之前,文檔被隐含表示成r維空間中的向量,而在潛在語義分析之後,文檔被表示為k維空間中的向量。最終潛在語義空間中,向量的維數縮減為k,這個k值不是随便指派的也不是計算出來的,而是一個經驗值。k的值選擇的好效果很好,如果k選值不好會對結果影響很大。

對詞項-文檔矩陣C進行潛在語義分析: 首先SVD分解,得到的詞項矩陣如下:

C d1 d2 d3 d4 d5
ship -0.44 -0.30 0.57 0.58 0.25
boat -0.13 -0.33 -0.59 0.00 0.73
ocean -0.48 -0.51 -0.37 0.00 -0.61
wood -0.70 0.35 0.15 -0.58 0.16
tree -0.26 0.65 -0.41 0.58 -0.09

然後可以分析下幾個詞,分析詞的目的是确定主題數目,因為k就是主題數目。通過分析可以發現ship、boat、ocean很可能是一個主題,而wood和tree很可能是一個主題。是以包含的主題數目為2,k = 2。

然後k秩逼近

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

2維秩逼近後得到在2維話題空間的 詞項 - 文檔矩陣

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

不在原始向量空間計算相似度,而是 在潛在語義空間計算相似度:

關于LSA(Latent Semantic Analysis)主題模型的個人了解1.向量空間2.相關矩陣知識3.LSA4.總結

這也驗證了本文前面在原始空間計算相似度為0是不合理的。

4.總結

LSA通過SVD和低秩逼近,把原始向量空間映射到潛在語義空間,在潛在語義空間計算文檔相似性,它能夠解決部分一義多詞的問題。從這個層面來講,LSA優點很明顯,此外 降維可去除部分噪聲,使得特征更具有魯棒性。但是LSA也是有缺點的: LSA的缺點:         Ck逼近後的矩陣中元素缺乏直覺解釋(次元降低的必然結果),甚至矩陣中會出現很多元素為負數的情況,特征向量的方向沒有對應的實體解釋 k的選取會對結果産生太大影響,且k不是計算出來的而是一個經驗值,是以很難選出合理的k值 LSA不是一個統計模型,缺乏統計基礎,沒有刻畫詞出現次數的機率模型 SVD計算複雜度高,且當有新的文檔時需要重新SVD分解和重新低秩逼近,更甚至k的取值會變化(多加入文檔後可能主題數目發生變化)

轉載請注明出處,否則責任自負,謝謝合作

繼續閱讀