【发布时间】:2011-07-07 07:15:52
【问题描述】:
我一直在使用 mallet 来推断包含 100,000 行的文本文件的主题(mallet 格式大约 34 MB)。但是现在我需要在一个包含一百万行(大约 180MB)的文件上运行它,并且我得到一个 java.lang.outofmemory 异常。有没有办法将文件拆分成更小的文件并为所有文件中存在的数据建立模型? 在此先感谢
【问题讨论】:
标签: java nlp machine-learning mallet
我一直在使用 mallet 来推断包含 100,000 行的文本文件的主题(mallet 格式大约 34 MB)。但是现在我需要在一个包含一百万行(大约 180MB)的文件上运行它,并且我得到一个 java.lang.outofmemory 异常。有没有办法将文件拆分成更小的文件并为所有文件中存在的数据建立模型? 在此先感谢
【问题讨论】:
标签: java nlp machine-learning mallet
我不确定 Mallet 对大数据的可扩展性,但项目 http://dragon.ischool.drexel.edu/ 可以将其数据存储在磁盘支持的持久性中,因此可以扩展到无限的语料库大小(当然性能较低)
【讨论】:
该模型仍然会非常庞大,即使它是从多个文件中读取的。您是否尝试过增加 java vm 的堆大小?
【讨论】:
鉴于当前 PC 的内存大小,使用 2GB 大的堆应该很容易。 在考虑使用集群之前,您应该尝试单机解决方案。
【讨论】:
java.lang.outofmemory 异常主要是因为堆空间不足。 您可以使用 -Xms 和 -Xmx 设置堆空间,使其不再出现。
【讨论】:
在bin/mallet.bat中增加这一行的值:
set MALLET_MEMORY=1G
【讨论】: