零星培训NaiveBayesClassifier(NLTK)

时间:2014-03-15 20:22:47

标签: nltk bayesian text-classification

我有很多文本数据,我想进行分类。我通过块(例如500个示例)递增地获得这些数据。 我想用NLTK在这些块中训练NaiveBayesClassifier,但是要进行零碎的训练。

我可以用一个夹头进行训练NaiveBayesClassifier,然后用它来训练下一个块等吗?

我在文档中找不到这个问题的答案。

3 个答案:

答案 0 :(得分:1)

您应该使用NLTK包装器进行scikit-learn并使用scikit-learn提供的Naive Bayes实现。这个支持部分拟合,它完全符合您的要求:一次只训练部分数据。

参考文献:http://www.nltk.org/_modules/nltk/classify/scikitlearn.htmlhttp://scikit-learn.org/stable/modules/naive_bayes.html

答案 1 :(得分:0)

我可以想到两个选项:

  1. 定期在新数据上重新训练分类器。你 在语料库中累积新的训练数据(已包含 原始训练数据),然后每当你得到你的下一个块, 重新培训重新加载分类器。这可能是最简单的 溶液

  2. 外部化内部模型,然后手动更新。该 可以通过给它一个直接创建NaiveBayesClassifier label_prodistfeature_probdist。你可以创建这些 单独将它们传递给NaiveBayesClassifier,然后更新 每当有新数据进入时它们就会出现。分类器会使用这个新数据 数据立即。您需要查看火车方法以获取详细信息 关于如何更新特定的概率分布 情况/要求。

  3. 如果您使用选项2 ,您不介意为了水平可伸缩性而牺牲速度,您可以在Redis中保留模型创建一个使用Redis Hash进行存储/查找的ProbDistI子类。然后你不必对语料库进行任何酸洗,分类器总是“开启”。

答案 2 :(得分:-1)

Weka有一个可更新的Naive Bayes实现。