JGibbLDA实战

尝试了下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运行手动配置,成功,过程如下。

  1. 下载JGibbLDA的jar包并解压;
    网址:http://jgibblda.sourceforge.net/#Griffiths04

  2. 导入eclipse,确保jar包在目录中

  3. 找到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 训练语料文件名称

  4. 修改项目的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
  5. 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/

徐阿衡 wechat
欢迎关注:徐阿衡的微信公众号
客官,打个赏呗~