LSI模型概念


http://www.52nlp.cn/%e5%a6%82%e4%bd%95%e8%ae%a1%e7%ae%97%e4%b8%a4%e4%b8%aa%e6%96%87%e6%a1%a3%e7%9a%84%e7%9b%b8%e4%bc%bc%e5%ba%a6%e4%b8%89

https://www.cnblogs.com/pinard/p/6805861.html

 

 

 

這里我們拍腦門決定訓練topic數量為10的LSI模型:(LSI模型 就是設置維度:多少個特征)
>>> lsi = models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=10)

>>> index = similarities.MatrixSimilarity(lsi[corpus])
2013-06-07 22:04:55,443 : INFO : scanning corpus to determine the number of features
2013-06-07 22:04:55,510 : INFO : creating matrix for 379 documents and 10 features

基於LSI模型的課程索引建立完畢,我們以Andrew Ng教授的機器學習公開課為例,這門課程在我們的coursera_corpus文件的第211行,也就是:

>>> print courses_name[210]
Machine Learning

現在我們就可以通過lsi模型將這門課程映射到10個topic主題模型空間上,然后和其他課程計算相似度:
>>> ml_course = texts[210]
>>> ml_bow = dicionary.doc2bow(ml_course)
>>> ml_lsi = lsi[ml_bow]
>>> print ml_lsi
[(0, 8.3270084238788673), (1, 0.91295652151975082), (2, -0.28296075112669405), (3, 0.0011599008827843801), (4, -4.1820134980024255), (5, -0.37889856481054851), (6, 2.0446999575052125), (7, 2.3297944485200031), (8, -0.32875594265388536), (9, -0.30389668455507612)]
>>> sims = index[ml_lsi]
>>> sort_sims = sorted(enumerate(sims), key=lambda item: -item[1])

取按相似度排序的前10門課程:
>>> print sort_sims[0:10]
[(210, 1.0), (174, 0.97812241), (238, 0.96428639), (203, 0.96283489), (63, 0.9605484), (189, 0.95390636), (141, 0.94975704), (184, 0.94269753), (111, 0.93654782), (236, 0.93601125)]

 

 

 

 

 


 

 

 

 

 

 

 

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

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

    在數據分析中,我們經常會進行非監督學習的聚類算法,它可以對我們的特征數據進行非監督的聚類

而主題模型也是非監督的算法,目的是得到文本按照主題的概率分布

從這個方面來說,主題模型和普通的聚類算法非常的類似。但是兩者其實還是有區別的。

    聚類算法關注於從樣本特征的相似度方面將數據聚類。比如通過數據樣本之間的歐式距離,曼哈頓距離的大小聚類等。

 

而主題模型,顧名思義,就是對文字中隱含主題的一種建模方法。比如從“人民的名義”和“達康書記”這兩個詞我們很容易發現對應的文本有很大的主題相關度,但是如果通過詞特征來聚類的話則很難找出,因為聚類方法不能考慮到到隱含的主題這一塊


 

    那么如何找到隱含的主題呢?

這個一個大問題。常用的方法一般都是基於統計學的生成方法。

即假設以一定的概率選擇了一個主題,然后以一定的概率選擇當前主題的詞。

最后這些詞組成了我們當前的文本。所有詞的統計概率分布可以從語料庫獲得,具體如何以“一定的概率選擇”,這就是各種具體的主題模型算法的任務了。

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

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

    潛在語義索引(Latent Semantic Indexing,以下簡稱LSI),有的文章也叫Latent Semantic  Analysis(LSA)。其實是一個東西,后面我們統稱LSI,它是一種簡單實用的主題模型。LSI是基於奇異值分解(SVD)的方法來得到文本的主題的

而SVD及其應用我們在前面的文章也多次講到,比如:奇異值分解(SVD)原理與在降維中的應用矩陣分解在協同過濾推薦算法中的應用。如果大家對SVD還不熟悉,建議復習奇異值分解(SVD)原理與在降維中的應用后再讀下面的內容。

 

 

 

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


免責聲明!

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



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