zoukankan      html  css  js  c++  java
  • 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])

          可以在dtmexamplemodel_runlda-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》笔记

  • 相关阅读:
    对Java面向对象的理解(笔记)
    java中switch语句实际的执行顺序;java中scanner输入为什么会被跳过;Java中scanner close方法慎用的问题;什么是方法
    面向对象编程思想 以及 封装,继承,多态 和 python中实例方法,类方法,静态方法 以及 装饰器
    python关于debug设置断点调试模式下无法命中断点的问题
    手把手教大家如何用scrapy爬虫框架爬取王者荣耀官网英雄资料
    python中可变长度参数详解
    爬虫如何使用phantomjs无头浏览器解决网页源代码经过渲染的问题(以scrapy框架为例)
    python如何通过正则表达式一次性提取到一串字符中所有的汉字
    Linux 输入输出(I/O)重定向
    Linux shell 通配符 / glob 模式
  • 原文地址:https://www.cnblogs.com/XDJjy/p/6290983.html
Copyright © 2011-2022 走看看