我正在尝试使用 Java API 进行主题建模。软件包中提供了一个方便的示例。但是,鉴于我的数据要大得多,我认为从一个文件导入所有数据是不切实际的。
我查看了另一个 MALLET 问题中链接的 PowerPoint 演示文稿,并找到了一个名为 FileIterator 的东西,我相信我应该能够使用它来代替他们示例 Java 代码中使用的 CsvIterator。但是,我不确定我是否正确使用它。我尝试使用它运行我的代码,但它在创建 FileIterator 的行上花费了不切实际的大量时间。我还没有深入研究 MALLET 代码来剖析这个问题;我想其他人可能已经知道更多了。我可以只向它传递一个包含多个存储文档本身的目录的目录吗?
然后也有可能我一次给了它太多的数据。
所以我的整体问题实际上分为两部分:
1) 木槌在多大的尺度上可以发挥作用?我有 ~500,000 个 6 行文档,我想给出主题。这首先对MALLET可行吗?
2) 如果上述问题的答案是可行的,那么使用 MALLET 导入这些数据的最佳方法是什么?如果 MALLET 不可行,建议我还可以使用什么?
编辑:我确实能够使用FileIterator,但它的使用并不像我怀疑的那样。执行我尝试执行的操作的最简单方法是将包含一个实例的所有单个文件放在单个目录中。然后我可以将此目录提供给FileIterator,它将像CsvIterator一样工作。
至于可扩展性,我能够在合理的时间内运行大约 10,000 个简短文档,但由于 LDA 同时考虑所有文档,我认为一次对所有文档执行此操作是不可行的。但是,MALLET 中的 TopicInferencer 类将允许我获取尽可能多的文档,然后推断其余文档的主题。这足以满足我的需求。
您是否减小了语料库大小,然后运行主题建模以查看它多久完成处理?
此外,在这里您可能会找到一些与 Mallet 主题建模相关的性能数据,有人报告根据他们的产品对其进行衡量。
http://www.slideshare.net/wadkarsameer/large-scale-topic-modeling
我是 http://www.slideshare.net/wadkarsameer/large-scale-topic-modeling 的作者Sameer Wadkar。我能够使用修改后的 LDA 木槌版本将其扩展到 250 万个文档。我这里有一个更干净的版本
https://github.com/sameeraxiomine/largelda
如果您想使用它,请给我发送电子邮件。我计划在某个时候有一个用户说明列表,但我还没有解决它