尝试了下JGibbLDA,发现按官方教程用以下命令直接运行jar包会出现错误。
错误
命令:
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/newdocs.dat
错误信息:
手动配置
于是尝试导入eclipse运行手动配置,成功,过程如下。
下载JGibbLDA的jar包并解压;
网址:http://jgibblda.sourceforge.net/#Griffiths04导入eclipse,确保jar包在目录中
找到LDACmdOption.java文件, 修改部分代码
@Option(name="-dir", usage="Specify directory") public String dir = "models/casestudy-en"; @Option(name="-dfile", usage="Specify data file") public String dfile = "models/casestudy-en/newdocs.dat";
值得注意的是,dfile的格式必须是👇这个样子:
[M] [document1] [document2] ... [documentM]
第一行[M]是documents的总数,之后的每一行是一个document,每个document是一个word list,或者说是bag of words。
[document i] = [word i1] [word i2] ... [word iNi]
各参数含义:
-est 从训练语料中评估出LDA模型
-alpha LDA模型中的alpha数值,默认为50/K(K是主题数目)
-beta LDA模型中的beta数值,默认是0.1
-ntopics 主题数目,默认值是100
-niters GIbbs采样的迭代数目,默认值为2000
-savestep 指定开始保存LDA模型的迭代次数
-dir 训练语料目录
-dfile 训练语料文件名称修改项目的Run Configurations,在Java Application中选择LDA,点击(x)=Arguments,输入
-est -alpha 0.2 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 100 -dir Users\x\MyEclipse1\JGibbLDA-v.1.0\models\casestudy-en -dfile "newdocs.dat"
若利用已训练的LDA模型预测,输入以下参数:
-inf -dir Users\x\MyEclipse1\JGibbLDA-v.1.0\models\casestudy-en -dfile "test.txt"
注意,进行预测时,当前目录下必须包含已有的LDA训练输出文件,包括model-final.others、model-final.phi、model-final.tassign、model-final.theta、model-final.twords、wordmap.txt文件,如果运行报错,尝试修改LDACmdOption.java的modelName,确保和文件名的modelname部分一致。
@Option(name=”-model”, usage=”Specify the model name”)
public String modelName = “model-final”;如果出现java heap limited的问题,在VM arguments下添加
-Xms1g -Xmx1g -Xmn512m
Run
输出文件主要有:.others 文件存储LDA模型参数,如alpha、beta等。.phi 每个topic内对doc的分布情况。文件存储词语-主题分布,每一行是一个主题,列内容为词语。.theta 每个doc内对应上面的n个topic的分布情况。文件主题文档分布,每一行是一个文档,列内容是主题概率。.tassign 文件是训练预料中单词的主题指定(归属),每一行是一个语料文档。.twords n个topic,以及每个topic下面包含的具体的字词
wordmap.txt 词-id映射
其中根据采样迭代次数来指定,如model-00800,最后一次采样名称命名为model-final。
参考链接:
http://www.ithao123.cn/content-4208214.html
http://jgibblda.sourceforge.net/