【问题标题】:Combining Pickle files to make one big NLTK classifier将 Pickle 文件组合成一个大的 NLTK 分类器
【发布时间】: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


【解决方案1】:

您可能正在寻找的是一个在线分类器,它可以在不将所有训练数据保存在内存中的情况下进行部分训练,而且从我的快速浏览来看,这似乎不是 NLTK 提供的任何东西。相反,我会推荐 scikit-learn 中实现了partial_fit 方法的分类器之一like this Naive Bayes classifier for multimodial models

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 2015-09-18
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多