關於主題模型這一塊是比較特殊的,這期間也給我帶來了一些困惑,因為其中的一些演算法和我們在機器學習中使用的演算法還是很不同的,在這篇文章裡,我想簡單介紹下lsi(潛在語義牽引)
這個模型的作用是通過海量的文獻找出詞彙的關係.就跟警察抓嫌疑人一樣,犯罪事件在這個區域裡出現的多了,這片區域越有可能成為犯罪的重點轄區. 詞彙也是這樣,當一些詞彙大量出現在一篇文章裡時,我們可以認為這篇文章會傾向去成為某一種型別,而這些詞之間也存在著語義相關性.
一:主題模型演算法
我們使用的主題模型演算法跟聚類差不多,但是細究起來還是有一些差距:
1:聚類模型計算的是資料樣本之間的尤拉距離等.
2:主題模型是通過對文字隱含主題的建模,詞特性聚類很難找出主題相關度.
找出主題的方法有一些是基於統計的方法,還有一些不是基於統計的方法,比如lsi
二:潛在語義索引概述
lsi是基於奇異值分解(svd)的方法來得到文字的主題的。關於其中的數學知識,我就不再贅述了,這裡說一說她的降維過程:
1:把文件庫表示為
的詞-文件矩陣,詞作為行,文件作為列.(m表示詞向量在不同文件**現的次數,n表示不同文件的個數),a表示為a = [α ij ],在此矩陣中,α ij為非負值 , 表示第 i 個詞在第j 個文件**現的頻度。顯然,a是稀疏矩陣.
2:利用svd求a的正交因子的降秩矩陣,這其實就是關鍵所在,降維,svd在我看來,最主要的作用在這裡是將詞和文件對映到乙個語義空間,然後把文件和詞表示為因子形式,這樣既可以保留主要資訊,又可以減少運算複雜度.
這當中k的取值挺關鍵,我看前人給出的經驗是,k過小,則丟失資訊就越多;k過大,資訊雖然多,但可能有冗餘且計算消耗大。k的選擇也是值得研究的,不過一般取值為100-300,不絕對。
三:lsi的應用性
lsi在我看來最關鍵的還是設計k的取值,如果k取的很合適,可以把聯絡較為緊密的詞語提出來,其實就是用降維做相關性計算.但是lsi現在並不是那麼流行,也是有一些原因:
1:太慢
svd計算太費勁了,特別是我們幾十萬的文字資料一塊來,這樣高維矩陣svd分解基本是機器吃不消,然後現在用的tf-idf只需要通過兩個整數相乘就能計算出不同單詞的重要性,豈不是更有效?儘管在某些程度上lsi有一些優勢,但是在工業界似乎沒多少人用.
2:k值選取
3:lsi不能聚類
因為lsi 得到的不是乙個概率模型,缺乏統計基礎,結果難以直觀的解釋。所以聚類不行,但是該演算法後續額變種包括lda聚類是很有效的,因為lsi找的是特徵子空間,聚類找的則是例項分組,
lsi 雖然能得到看起來貌似是聚類的結果,但其意義不見得是聚類所想得到的。
四:實驗
**整理ing~
後續附加
五:總結
對於lsi,我們在一些規模較小的問題上,使用lsi是很划算的,但是你想實打實的做主題模型,因為資料量太多了,還是老老實實用lda這樣的模型吧.
NLP系列學習 潛在語義牽引
關於主題模型這一塊是比較特殊的,這期間也給我帶來了一些困惑,因為其中的一些演算法和我們在機器學習中使用的演算法還是很不同的,在這篇文章裡,我想簡單介紹下lsi 潛在語義牽引 這個模型的作用是通過海量的文獻找出詞彙的關係.就跟警察抓嫌疑人一樣,犯罪事件在這個區域裡出現的多了,這片區域越有可能成為犯罪的...
NLP系列學習 常用的語言平滑模型
語言模型常見的平滑演算法就那幾種,一般的教程都不提分幾種的模式 分類。不過在mit的nlp課程ppt中總結說有三種模式 discounting,interpolationg,back off 有關這三種模式的描述可以見其ppt discounting類包括 add one smoothing 加法平...
SpringCloud系列學習
在講解springcloud 之前,我們先講一講單體架構系統。所謂的單體架構就是所有功能,都放在乙個應用裡。比如後面要講的乙個單體產品服務應用,提供資料和檢視都在乙個springboot裡。單體架構系統有其好處,如便於開發,測試,部署也很方便,直接打成乙個 jar 或者 war,就什麼都好了。不過單...