我正在尝试使用 Java API 进行主题建模。软件包提供了一个方便的示例。但是,鉴于我的数据量要大得多,我认为从一个文件中全部导入它是不切实际的。
我查看了另一个 MALLET 问题中链接到的 powerpoint 演示文稿,发现了一个称为 FileIterator 的东西,我相信我应该能够使用它来代替他们示例 Java 代码中使用的 CsvIterator。但是,我不确定我是否正确使用它。我尝试用它运行我的代码,但它在刚刚创建 FileIterator 的行上花费了不切实际的大量时间。我还没有深入研究 MALLET 代码来剖析这个问题;我想其他人可能已经知道更多了。我可以只传递一个目录,其中包含多个存储文档本身的目录吗?
然后我也有可能一次给它太多数据。
所以我的整体问题实际上分为两部分:
1) MALLET 可以在多大的范围内发挥作用?我有大约 500,000 个 6 行文档,我想提供主题。首先使用 MALLET 是否可行?
2)如果上面的答案是可行的,那么用 MALLET 导入这些数据的最佳方法是什么?如果使用 MALLET 不可行,建议我还能使用什么?
编辑:我确实能够使用 FileIterator,但它的用法并不像我想象的那样。做我想做的最简单的方法是将包含一个实例的所有单个文件放在一个目录中。然后我可以将此目录提供给 FileIterator,它会像 CsvIterator 一样工作。
至于可扩展性,我能够在合理的时间内运行大约 10,000 个短文档,但由于 LDA 同时考虑所有文档,我认为一次对所有文档执行此操作是不可行的。但是,MALLET 中的 TopicInferencer 类将允许我将尽可能多的文档合理地放入模型中,然后根据其余文档推断主题。这足以满足我的需求。