不过我对 Java 真的不太熟悉,按照教程调用这个 LLDA 包之后只会使用 inferencer。
如果你不嫌麻烦可以考虑先用 Java 计算出结果,然后在 R 中载入这些结果.
具体步骤如下:
0 - 文件夹 JGibbLDA-v.1.0 放在 R 的工作目录下。
1 - 用 JDK 和他提供的 JGibbLDA-v.1.0\lib\args4j-2.0.6.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
2 - 步骤1输出的文件
.others
.phi
.theta
.tassign
.twords
3 - 在 R 中使用上面的模型对新数据做推断
library(rJava)
.jinit("JGibbLDA-v.1.0/bin/") #载入第三方类库
.jaddClassPath("JGibbLDA-v.1.0/bin/")
ldaOption
ldaOption$inf = TRUE
ldaOption$dir = "models/casestudy" # model 的路径
ldaOption$modelName = "model-final" # model 的名字,这里我们用的 model-final
ldaOption$niters = as.integer(100) # gibb sampling 次数
ldaOption$dfile = "newdata.dat" # 新的数据集,注意要按照指定的格式
inferencer
inferencer$init(ldaOption)
newModel
4 - 步骤3输出的文件
..others
..phi
..theta
..tassign
..twords
总结:
rJava 这个包还很不完善,而且有将近两年没有更新了,用起来到处采坑,我调了一下午才把整个流程打通。
我还是建议你就用 Java 做这个项目,函数都打包好了,看文档的例子自己做一遍应该就能上手了。
你还可以考虑用 MATLAB,有现成的工具包Topic Modeling Toolbox,开箱即用,MATLAB也不难学。
不局限于这一种实现的话,也有很多 R 包可以用:
希望能对你有帮助,谢谢。