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