5

当前的 Mahout 0.8-SNAPSHOT 包括用于主题建模的折叠变分贝叶斯 (cvb) 版本并删除了潜在狄利克雷分析 (lda) 方法,因为 cvb 可以更好地并行化。不幸的是,只有关于如何运行示例并生成有意义的输出的lda文档。

因此,我想:

  • 正确预处理一些文本
  • 运行 cvb 的 cvb0_local 版本
  • 通过查看每个生成的主题中的前 n 个单词来检查结果
4

2 回答 2

12

所以这是我必须在 linux shell 中调用的后续 Mahout 命令。$MAHOUT_HOME 指向我的 mahout/bin 文件夹。

$MAHOUT_HOME/mahout seqdirectory \
    -i path/to/directory/with/texts \
    -o out/sequenced

$MAHOUT_HOME/mahout seq2sparse -i out/sequenced \
    -o out/sparseVectors \
    --namedVector \
    -wt tf

$MAHOUT_HOME/mahout rowid \
    -i out/sparseVectors/tf-vectors/ \
    -o out/matrix

$MAHOUT_HOME/mahout cvb0_local \
    -i out/matrix/matrix \
    -d out/sparseVectors/dictionary.file-0 \
    -a 0.5 \
    -top 4 -do out/cvb/do_out \
    -to out/cvb/to_out

通过显示每个主题的前 10 个单词来检查输出:

$MAHOUT_HOME/mahout vectordump \
    -i out/cvb/to_out \
    --dictionary out/sparseVectors/dictionary.file-0 \
    --dictionaryType sequencefile \
    --vectorSize 10 \
    -sort out/cvb/to_out
于 2013-02-08T09:03:52.560 回答
3

感谢 JoKnopp 提供的详细命令。

如果你得到:线程“main”中的异常 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

您需要添加命令行选项“maxIterations”:--maxIterations (-m) maxIterations

我使用 -m 20 并且它有效

参考: https ://issues.apache.org/jira/browse/MAHOUT-1141

于 2013-02-21T03:11:30.903 回答