LDA進階(Dynamic Topic Models)


轉自: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

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及Gibbs Samping

第三篇: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次,這些詞是所有文檔中統一編號的。

         需要注意的一點是:該文件中文檔是按時間順序排列的,時間最早的在最上面,時間最晚的在最下面。

 

 
  b: foo-deq.dat , 這文件是用來划分時間窗的。

    文件格式如下:

        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》筆記


免責聲明!

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



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