【发布时间】:2014-10-05 19:43:10
【问题描述】:
我知道如何简单地制作和加载一个泡菜文件,我想做的是: 拥有一个由多个 pickle 文件组成的 NLTK 朴素贝叶斯分类器。这可能吗?我想知道如何从分类器中制作一个泡菜文件,然后附加从其他训练数据中学到的更多东西,这样我就有一个更大的泡菜文件。
主要原因是,虽然我的笔记本电脑需要大约 2 分钟来针对大约 3500 篇文章训练一个分类器,但它需要很长时间才能从该分类器中生成一个大泡菜文件。我认为这是因为它当时占用了我 90% 以上的 RAM,我希望我可以分而治之,所以它不会一次占用我所有的 RAM。还是有更好的方法来训练大量文档?我是否必须实现自己的分类器或类似泡菜的文件才能做到这一点?或者有没有办法做到这一点?
我尝试对一些在酸洗之前停止使用的变量使用 del(),但这几乎没有释放这些变量占用的 RAM 量。
我在 Windows 8 64 位上使用带有 Anaconda 的 python 2.7。
谢谢!
【问题讨论】:
-
您可能想查看joblib。它可以很好地处理大数据,尤其是当它是 Numpy 格式时。
-
@JimmyC 谢谢!我以前从未做过并行编程,但我想我需要开始了!这不是我想要的,我只是在寻找如何组合分类器,即使我不必并行进行,但我会研究它。
-
@JimmyC 可以附加使用 joblib.dump() 创建的文件吗?还是将对象拆分为单独的文件,以便在制作它们时不会一次使用太多内存?因为这是我对泡菜文件的主要问题,它会占用我所有的 RAM 并且变得非常慢......另外,我并没有真正使用 numpy,只是使用 nltk,所以与 python 相比,它真的更有益吗腌制者?
-
我想我误解了你的问题。也许您真正需要的是一个在线分类器,它可以在不将所有训练数据保存在内存中的情况下进行部分训练,而且从我的快速浏览来看,这似乎不是 NLTK 提供的任何东西。你会考虑研究 scikit-learn 吗? Here 是一个在线朴素贝叶斯实现。您正在寻找
partial_fit方法。 -
@JimmyC 谢谢!这正是我所需要的!如果您将其作为答案,我会正确标记。
标签: python optimization nltk