Latent Semantic Analysis(LSA/ LSI)算法簡介


  本文地址為:http://www.cnblogs.com/kemaswill/,作者聯系方式為kemaswill@163.com,轉載請注明出處。

1. 傳統向量空間模型的缺陷

  向量空間模型是信息檢索中最常用的檢索方法,其檢索過程是,將文檔集D中的所有文檔和查詢都表示成以單詞為特征的向量,特征值為每個單詞的TF-IDF值,然后使用向量空間模型(亦即計算查詢q的向量和每個文檔di的向量之間的相似度)來衡量文檔和查詢之間的相似度,從而得到和給定查詢最相關的文檔。

  向量空間模型簡單的基於單詞的出現與否以及TF-IDF等信息來進行檢索,但是“說了或者寫了哪些單詞”和“真正想表達的意思”之間有很大的區別,其中兩個重要的阻礙是單詞的多義性(polysems)和同義性(synonymys)。多義性指的是一個單詞可能有多個意思,比如Apple,既可以指水果蘋果,也可以指蘋果公司;而同義性指的是多個不同的詞可能表示同樣的意思,比如search和find。

  同義詞和多義詞的存在使得單純基於單詞的檢索方法(比如向量空間模型等)的檢索精度受到很大影響。下面舉例說明:

  假設用戶的查詢為Q="IDF in computer-based information look-up"

  存在三篇文檔Doc 1,Doc 2,Doc 3,其向量表示如下:

  Access Document Retrieval Information Theory Database Indexing Computer Relevance Match
Doc 1     1       1      1          1     1         R  
Doc 2             1 x    1         1 x     M
Doc 3          1       1 x           1 x       R   M

  其中Table(i,j)=1表示文檔i包含詞語j。Table(i,j)=x表示該詞語在查詢Q中出現。Relevance如果為R表示該文檔實際上和查詢Q相關,Match為M表示根據基於單詞的檢索方法判斷的文檔和查詢的相關性。

  通過觀察查詢,我們知道用戶實際上需要的是和“信息檢索”相關的文檔,文檔1是和信息檢索相關的,但是因為不包含查詢Q中的詞語,所以沒有被檢索到。實際上該文檔包含的詞語“retrieval”和查詢Q中的“look-up”是同義詞,基於單詞的檢索方法無法識別同義詞,降低了檢索的性能。而文檔2雖然包含了查詢中的"information"和"computer"兩個詞語,但是實際上該篇文檔講的是“信息論”(Information Theory),但是基於單詞的檢索方法無法識別多義詞,所以把這篇實際不相關的文檔標記為Match。

  總而言之,在基於單詞的檢索方法中,同義詞會降低檢索算法的召回率(Recall),而多義詞的存在會降低檢索系統的准確率(Precision)。

2. Latent Semantic Analysis (Latent Semantic Indexing)

  我們希望找到一種模型,能夠捕獲到單詞之間的相關性。如果兩個單詞之間有很強的相關性,那么當一個單詞出現時,往往意味着另一個單詞也應該出現(同義詞);反之,如果查詢語句或者文檔中的某個單詞和其他單詞的相關性都不大,那么這個詞很可能表示的是另外一個意思(比如在討論互聯網的文章中,Apple更可能指的是Apple公司,而不是水果)  。

  LSA(LSI)使用SVD來對單詞-文檔矩陣進行分解。SVD可以看作是從單詞-文檔矩陣中發現不相關的索引變量(因子),將原來的數據映射到語義空間內。在單詞-文檔矩陣中不相似的兩個文檔,可能在語義空間內比較相似。

  SVD,亦即奇異值分解,是對矩陣進行分解的一種方法,一個t*d維的矩陣(單詞-文檔矩陣)X,可以分解為T*S*DT,其中T為t*m維矩陣,T中的每一列稱為左奇異向量(left singular bector),S為m*m維對角矩陣,每個值稱為奇異值(singular value),D為d*m維矩陣,D中的每一列稱為右奇異向量。在對單詞文檔矩陣X做SVD分解之后,我們只保存S中最大的K個奇異值,以及T和D中對應的K個奇異向量,K個奇異值構成新的對角矩陣S’,K個左奇異向量和右奇異向量構成新的矩陣T’和D’:X’=T’*S’*D’T形成了一個新的t*d矩陣。

  假設索引的文檔的集合如下:

  Term-Document矩陣為:

 1 [[ 1.  0.  0.  1.  0.  0.  0.  0.  0.]
 2  [ 1.  0.  1.  0.  0.  0.  0.  0.  0.]
 3  [ 1.  1.  0.  0.  0.  0.  0.  0.  0.]
 4  [ 0.  1.  1.  0.  1.  0.  0.  0.  0.]
 5  [ 0.  1.  1.  2.  0.  0.  0.  0.  0.]
 6  [ 0.  1.  0.  0.  1.  0.  0.  0.  0.]
 7  [ 0.  1.  0.  0.  1.  0.  0.  0.  0.]
 8  [ 0.  0.  1.  1.  0.  0.  0.  0.  0.]
 9  [ 0.  1.  0.  0.  0.  0.  0.  0.  1.]
10  [ 0.  0.  0.  0.  0.  1.  1.  1.  0.]
11  [ 0.  0.  0.  0.  0.  0.  1.  1.  1.]
12  [ 0.  0.  0.  0.  0.  0.  0.  1.  1.]]

 對其進行分解后得到X=T*S*DT。其中T為:

 1 [-0.22 -0.11  0.29 -0.41 -0.11 -0.34 -0.52  0.06  0.41]
 2 [-0.2  -0.07  0.14 -0.55  0.28  0.5   0.07  0.01  0.11]
 3 [-0.24  0.04 -0.16 -0.59 -0.11 -0.25  0.3  -0.06 -0.49]
 4 [-0.4   0.06 -0.34  0.1   0.33  0.38 -0.    0.   -0.01]
 5 [-0.64 -0.17  0.36  0.33 -0.16 -0.21  0.17 -0.03 -0.27]
 6 [-0.27  0.11 -0.43  0.07  0.08 -0.17 -0.28  0.02  0.05]
 7 [-0.27  0.11 -0.43  0.07  0.08 -0.17 -0.28  0.02  0.05]
 8 [-0.3  -0.14  0.33  0.19  0.11  0.27 -0.03  0.02  0.17]
 9 [-0.21  0.27 -0.18 -0.03 -0.54  0.08  0.47  0.04  0.58]
10 [-0.01  0.49  0.23  0.02  0.59 -0.39  0.29 -0.25  0.23]
11 [-0.04  0.62  0.22  0.   -0.07  0.11 -0.16  0.68 -0.23]
12 [-0.03  0.45  0.14 -0.01 -0.3   0.28 -0.34 -0.68 -0.18]

  DT

1 [-0.2  -0.61 -0.46 -0.54 -0.28 -0.   -0.01 -0.02 -0.08]
2 [-0.06  0.17 -0.13 -0.23  0.11  0.19  0.44  0.62  0.53]
3 [ 0.11 -0.5   0.21  0.57 -0.51  0.1   0.19  0.25  0.08]
4 [-0.95 -0.03  0.04  0.27  0.15  0.02  0.02  0.01 -0.02]
5 [ 0.05 -0.21  0.38 -0.21  0.33  0.39  0.35  0.15 -0.6 ]
6 [-0.08 -0.26  0.72 -0.37  0.03 -0.3  -0.21  0.    0.36]
7 [-0.18  0.43  0.24 -0.26 -0.67  0.34  0.15 -0.25 -0.04]
8 [ 0.01 -0.05 -0.01  0.02  0.06 -0.45  0.76 -0.45  0.07]
9 [ 0.06 -0.24 -0.02  0.08  0.26  0.62 -0.02 -0.52  0.45]

  Sigma為

1 [ 3.34
2           2.54   
3                     2.35  
4                             1.64     
5                                      1.50    
6                                                1.31  
7                                                         0.85
8                                                                    0.56  
9                                                                              0.36]    

  我們只保留最大的2個奇異值和其對應的奇異向量,得到的T’為

 1 [-0.22 -0.11]
 2 [-0.2  -0.07]
 3 [-0.24  0.04]
 4 [-0.4   0.06]
 5 [-0.64 -0.17]
 6 [-0.27  0.11]
 7 [-0.27  0.11]
 8 [-0.3  -0.14]
 9 [-0.21  0.27]
10 [-0.01  0.49]
11 [-0.04  0.62]
12 [-0.03  0.45]

  D’T

1 [-0.2  -0.61 -0.46 -0.54 -0.28 -0.   -0.01 -0.02 -0.08]
2 [-0.06  0.17 -0.13 -0.23  0.11  0.19  0.44  0.62  0.53]

  Sigma’為

1 [[ 3.34        0.    ]
2  [ 0.          2.54  ]]

  還原后的X’為

 1 [ 0.16  0.4   0.38  0.47  0.18 -0.05 -0.12 -0.16 -0.09]
 2 [ 0.14  0.37  0.33  0.4   0.16 -0.03 -0.07 -0.1  -0.04]
 3 [ 0.15  0.51  0.36  0.41  0.24  0.02  0.06  0.09  0.12]
 4 [ 0.26  0.84  0.61  0.7   0.39  0.03  0.08  0.12  0.19]
 5 [ 0.45  1.23  1.05  1.27  0.56 -0.07 -0.15 -0.21 -0.05]
 6 [ 0.16  0.58  0.38  0.42  0.28  0.06  0.13  0.19  0.22]
 7 [ 0.16  0.58  0.38  0.42  0.28  0.06  0.13  0.19  0.22]
 8 [ 0.22  0.55  0.51  0.63  0.24 -0.07 -0.14 -0.2  -0.11]
 9 [ 0.1   0.53  0.23  0.21  0.27  0.14  0.31  0.44  0.42]
10 [-0.06  0.23 -0.14 -0.27  0.14  0.24  0.55  0.77  0.66]
11 [-0.06  0.34 -0.15 -0.3   0.2   0.31  0.69  0.98  0.85]
12 [-0.04  0.25 -0.1  -0.21  0.15  0.22  0.5   0.71  0.62]

  還原后的X’與X差別很大,這是因為我們認為之前X存在很大的噪音,X’是對X處理過同義詞和多義詞后的結果。

  在查詢時,對與每個給定的查詢,我們根據這個查詢中包含的單詞(Xq)構造一個偽文檔:Dq=XqTS-1,然后該偽文檔和D’中的每一行計算相似度(余弦相似度)來得到和給定查詢最相似的文檔。

 參考文獻:

  [1]  Indexing By Latent Semantic Analysis. Scott Deerwester, Susan T. Dumais, George W.Furnas, Thomas K.Landauer, Richard Harshman.

  [2]  Latent Semantic Analysis Note. Zhou Li.


免責聲明!

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



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