JGibbLDA、GibbsLDA++问题解决

       LDA(Latent Dirichlet Allocation )主题模型是一种用统计进行文本挖掘的方法,它是pLSA(概率潜在语义分析)主题模型基础上加上贝叶斯框架而得到的模型。目前已应用于自然语言处理、计算机视觉、机器学习、信息检索等领域,得到了广泛关注。

       LDA模型网上有多个开源代码,用的比较多是JGibbLDA(Java实现)、GibbsLDA++(C++实现)。当我们在Linux平台上运行的时候,可能会遇到一些问题,如果对Java、C++和Linux不太熟悉,就很难解决。

      这里我就将我遇到的问题和解决办法分享给大家,或许初学者有所帮助:

      问题1:对于JGibbLDA,(这里是JGibbLDA-v.1.0.tar.gz)

$ java -mx512M -cp bin:lib/args4j-2.0.6.jar jgibblda.LDA -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile models/casestudy-en/newdocs.dat 

      按照其给的步骤执行时,我这里就出现程序运行特别快,而且相应的参数不能保存,说有数据为空。

     分析:数据为空,基本上是程序没有读取文本数据,问题出在读取数据的路径上,即-dfile models/casestudy-en/newdocs.dat 。

      解决:检查该路径,对路径可以补充更加完整些。比如:

$ java -mx512M -cp bin:lib/args4j-2.0.6.jar jgibblda.LDA -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile ~/models/casestudy-en/newdocs.dat 

    问题2:在测试GibbsLDA++代码时,按照其帮助文档,我们以下操作可能会出错,出错信息是提示我们缺少某个函数。(这里是GibbsLDA++-0.2.tar.gz)

 ~$cd Gibbslda++-0.2

~$make clearn

~$make all

~$src/lda -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile LDA/trndocs.dat

    分析:缺少函数,那基本上是因为该函数所在的类库没有调用。

    解决:需要将其所在的那个类库加到相应C++程序的头文件上。由于记不清楚添加的是什么,这里给出我添加加之后的GibbsLDA++的程序包: http://yun.baidu.com/s/1vsnCU

原文地址:https://www.cnblogs.com/huadongw/p/4224005.html