天天看點

主題模型一——潛在隐語義索引(LSI/LSA)1. 文本主題模型的問題特點2. 潛在語義索引(LSI)概述3. LSI簡單執行個體4. LSI用于文本相似度計算5. LSI主題模型總結

    本人在最近的學習中看到了三篇關于主題模型、關鍵詞提取和文檔相似度計算的優秀文章,一一轉載于此,供主題模型初學者學習、消化。

以下是正文:

在文本挖掘中,主題模型是比較特殊的一塊,它的思想不同于我們常用的機器學習算法,是以這裡我們需要專門來總結文本主題模型的算法。本文關注于潛在語義索引算法(LSI)的原理。

1. 文本主題模型的問題特點

    在資料分析中,我們經常會進行非監督學習的聚類算法,它可以對我們的特征資料進行非監督的聚類。而主題模型也是非監督的算法,目的是得到文本按照主題的機率分布。從這個方面來說,主題模型和普通的聚類算法非常的類似。但是兩者其實還是有差別的。

    聚類算法關注于從樣本特征的相似度方面将資料聚類。比如通過資料樣本之間的歐式距離,曼哈頓距離的大小聚類等。而主題模型,顧名思義,就是對文字中隐含主題的一種模組化方法。比如從“人民的名義”和“達康書記”這兩個詞我們很容易發現對應的文本有很大的主題相關度,但是如果通過詞特征來聚類的話則很難找出,因為聚類方法不能考慮到到隐含的主題這一塊。

    那麼如何找到隐含的主題呢?這個一個大問題。常用的方法一般都是基于統計學的生成方法。即假設以一定的機率選擇了一個主題,然後以一定的機率選擇目前主題的詞。最後這些詞組成了我們目前的文本。所有詞的統計機率分布可以從語料庫獲得,具體如何以“一定的機率選擇”,這就是各種具體的主題模型算法的任務了。

    當然還有一些不是基于統計的方法,比如我們下面講到的LSI。

2. 潛在語義索引(LSI)概述

    潛在語義索引(Latent Semantic Indexing,以下簡稱LSI),有的文章也叫Latent Semantic  Analysis(LSA)。其實是一個東西,後面我們統稱LSI,它是一種簡單實用的主題模型。LSI是基于奇異值分解(SVD)的方法來得到文本的主題的。而SVD及其應用我們在前面的文章也多次講到,比如:奇異值分解(SVD)原理與在降維中的應用和矩陣分解在協同過濾推薦算法中的應用。如果大家對SVD還不熟悉,建議複習奇異值分解(SVD)原理與在降維中的應用後再讀下面的内容。

    這裡我們簡要回顧下SVD:對于一個m×n” role=”presentation”>m×nm×n,可以分解為下面三個矩陣:

Am×n=Um×mΣm×nVn×nT” role=”presentation”>Am×n=Um×mΣm×nVTn×nAm×n=Um×mΣm×nVn×nT

    有時為了降低矩陣的次元到k,SVD的分解可以近似的寫為:

Am×n≈Um×kΣk×kVk×nT” role=”presentation”>Am×n≈Um×kΣk×kVTk×nAm×n≈Um×kΣk×kVk×nT

    如果把上式用到我們的主題模型,則SVD可以這樣解釋:我們輸入的有m個文本,每個文本有n個詞。而Aij” role=”presentation”>AijAij對應第l個主題和第m個詞義的相關度。

    也可以反過來解釋:我們輸入的有m個詞,對應n個文本。而Aij” role=”presentation”>AijAij對應第l個詞義和第m個主題的相關度。

    這樣我們通過一次SVD,就可以得到文檔和主題的相關度,詞和詞義的相關度以及詞義和主題的相關度。

3. LSI簡單執行個體

    這裡舉一個簡單的LSI執行個體,假設我們有下面這個有11個詞三個文本的詞頻TF對應矩陣如下:

主題模型一——潛在隐語義索引(LSI/LSA)1. 文本主題模型的問題特點2. 潛在語義索引(LSI)概述3. LSI簡單執行個體4. LSI用于文本相似度計算5. LSI主題模型總結

    

    這裡我們沒有使用預處理,也沒有使用TF-IDF,在實際應用中最好使用預處理後的TF-IDF值矩陣作為輸入。

    我們假定對應的主題數為2,則通過SVD降維後得到的三矩陣為:

主題模型一——潛在隐語義索引(LSI/LSA)1. 文本主題模型的問題特點2. 潛在語義索引(LSI)概述3. LSI簡單執行個體4. LSI用于文本相似度計算5. LSI主題模型總結

    從矩陣Uk” role=”presentation”>UkUk可以看到3個文本和兩個主題的相關性。大家可以看到裡面有負數,是以這樣得到的相關度比較難解釋。

4. LSI用于文本相似度計算

    在上面我們通過LSI得到的文本主題矩陣可以用于文本相似度計算。而計算方法一般是通過餘弦相似度。比如對于上面的三文檔兩主題的例子。我們可以計算第一個文本和第二個文本的餘弦相似度如下 :

sim(d1,d2)=(−0.4945)∗(−0.6458)+(0.6492)∗(−0.7194)(−0.4945)2+0.64922(−0.6458)2+(−0.7194)2” role=”presentation”>sim(d1,d2)=(−0.4945)∗(−0.6458)+(0.6492)∗(−0.7194)(−0.4945)2+0.64922−−−−−−−−−−−−−−−−−√(−0.6458)2+(−0.7194)2−−−−−−−−−−−−−−−−−−−−√sim(d1,d2)=(−0.4945)∗(−0.6458)+(0.6492)∗(−0.7194)(−0.4945)2+0.64922(−0.6458)2+(−0.7194)2

5. LSI主題模型總結

    LSI是最早出現的主題模型了,它的算法原理很簡單,一次奇異值分解就可以得到主題模型,同時解決詞義的問題,非常漂亮。但是LSI有很多不足,導緻它在目前實際的主題模型中已基本不再使用。

    主要的問題有:

    1) SVD計算非常的耗時,尤其是我們的文本處理,詞和文本數都是非常大的,對于這樣的高次元矩陣做奇異值分解是非常難的。

    2) 主題值的選取對結果的影響非常大,很難選擇合适的k值。

    3) LSI得到的不是一個機率模型,缺乏統計基礎,結果難以直覺的解釋。

    對于問題1),主題模型非負矩陣分解(NMF)可以解決矩陣分解的速度問題。對于問題2),這是老大難了,大部分主題模型的主題的個數選取一般都是憑經驗的,較新的層次狄利克雷過程(HDP)可以自動選擇主題個數。對于問題3),牛人們整出了pLSI(也叫pLSA)和隐含狄利克雷分布(LDA)這類基于機率分布的主題模型來替代基于矩陣分解的主題模型。

    回到LSI本身,對于一些規模較小的問題,如果想快速粗粒度的找出一些主題分布的關系,則LSI是比較好的一個選擇,其他時候,如果你需要使用主題模型,推薦使用LDA和HDP。

轉載出處:https://www.cnblogs.com/pinard/p/6805861.html  

繼續閱讀