轉自:http://blog.csdn.net/hxxiaopei/article/details/8034308
http://blog.csdn.net/huagong_adu/article/details/7937616
LDA淺析
http://www.slideshare.net/aurora1625/topic-model-lda-and-all-that
LDA漫游指南
http://yuedu.baidu.com/ebook/d0b441a8ccbff121dd36839a?pn=5&pa=44
LDA相關文章
http://blog.csdn.net/pirage/article/details/9467547
http://blog.csdn.net/yangliuy/article/details/8457329
yangliuy實現的代碼
第一篇:PLSA及EM算法
第三篇:LDA變形模型-Twitter LDA,TimeUserLDA,ATM,Labeled-LDA,MaxEnt-LDA等
第四篇:基於變形LDA的paper分類總結(bibliography)
第五篇:LDA Gibbs Sampling 的JAVA實現
DTM(Dynamic Topic Models)進行主題演化實驗
---------------------------------------------------------------------------------------------------------
在自己機器上(ubuntu12.04),運行Blei(http://www.cs.princeton.edu/~blei/topicmodeling.html)的代碼過程中,能正常編譯,
但是運行卻遇到 段錯誤的問題。
在網上找了很多blog和資料都沒有解決
最后決定自己調試錯誤,用了用gdb調試工具,
最后在實驗室羅師兄的幫助下,解決了這個困擾了很久的問題。
main 文件39行:
代碼問題終於得以解決。。。。。。
--------------------------------------------------------------------------------------------------------------------------------------
以下參考自:http://www.cnblogs.com/todoit/p/4057619.html
程序中dtm/sample.sh文件說明
運行例子試驗
(1)輸入文件(如dtm/example文件夾所示)test-mult.dat和test-seq.dat
a:foo-mult.dat,(相當於例子中test-mult.dat)用來表示文檔和詞的關系
每個文檔一行,每一行形式是: unique_word_count index1:count1 index2:count2 ... indexn:counnt
該文章的總詞數(不重復) 詞1編號(用數字表示編號):詞1頻次 詞2編號:詞2頻次 詞n編號:詞n頻次
例如:11 288:1 1248:1 5:1 1063:2 269:1 654:1 656:2 532:1 373:1 1247:1 543:1
表示這篇一共有11個不重復的詞,第228個詞出現1次,1248個詞出現1次,這些詞是所有文檔中統一編號的。
需要注意的一點是:該文件中文檔是按時間順序排列的,時間最早的在最上面,時間最晚的在最下面。
文件格式如下:
Number_Timestamps(時間窗總數)
number_docs_time_1(第一個時間窗的文檔數,就是從第一個到第幾個文檔划分到第一個時間窗,我們如果按年來划分,就把每年的文檔數寫到這里就行)
...
number_docs_time_i
...
number_docs_time_NumberTimestamps
作者提供的例子,第一行表示分為10個時間窗,第二行表示第一個時間窗有25個文檔。(看樣子估計也是按年划分的):
10
25
50
75
100
100
100
100
125
150
175
當上面兩個文件搞定后。作者說還有兩個文件雖然不是必須的,但是也是很有用的。
C: 詞典文件
文檔集合中涉及的所有的詞,按照上面的詞的序號排列。
d:文檔信息文件
每行表示一個文檔的基本信息,按照文檔a中的順序排列。
上述文件都可以用text2ldac生成,在https://github.com/JoKnopp/text2ldac下載,用python打開。
使用方法,在命令行中,找到text2ldac.py目錄,運行 python text2ldac.py -o ./out -e txt ./in
out文件夾為輸出文件位置,in文件夾為輸入文件位置。 txt為僅處理txt文件
(2)運行程序
作者在readme文件中說,通過運行./main --help命令可以查看所有選項和解釋
輸入下面的命令(后面的注釋是自己加的,。如果影響運行請去掉)
./main \ /*main函數*/
--ntopics=20 \ /*每個時間窗生成20個主題*/
--mode=fit \ /*這個應該有dim和fit兩個選項*/
--rng_seed=0 \
--initialize_lda=true \
--corpus_prefix=example/test \
--outname=example/model_run \
--top_chain_var=0.005 \
--alpha=0.01 \
--lda_sequence_min_iter=6 \
--lda_sequence_max_iter=20 \
--lda_max_em_iter=10
(2)輸出結果。 上面文件完成之后,通過運行程序生成下面的文件,並且可以通過R查看結果,我們就可以用這個結果進行分析。
a topic-???-var-e-log-prob.dat:
主要是 e-betas(詞在每個主題內每個時間段的分布),一行是一個詞。
從文件中,我們看以看到每行只有一個數字。
由輸入可知:
有4824個單詞的詞典。
有10個時間戳
生成20個主題
a = "topic-002-var-e-log-prob.dat"
b = matrix(a, ncol = 10 byrow=TRUE) 10列,按行排(本例中表示4824行,10列的矩陣)
The probability of term 100 in topic 2 at time 3: exp(b[100,3])
可以在dtm\example\model_run\lda-seq中看到例子,有48240行,有4824個詞,每個時間窗內有4824個詞。
作者同時給出了在R中查看這些矩陣的方法。比如查看某個詞在某個主題的某一個時間段的概率。
b gam.dat
gammas數據。表示文檔與主題的關聯。
http://www.cnblogs.com/todoit/p/3753871.html
《Dynamic Topic Detection and Tracking: A Comparison of HDP, C-Word, and Cocitation Methods》筆記
