如何逐步训练nltk分类器

时间:2011-02-05 05:50:43

标签: python nltk

我正在开发一个项目,使用python nltk模块和naivebayes分类器对文本片段进行分类。我能够训练语料库数据并对另一组数据进行分类,但希望在初始训练后将其他训练信息提供给分类器。

如果我没有弄错的话,似乎没有办法做到这一点,因为NaiveBayesClassifier.train方法需要一套完整的训练数据。有没有办法在不提供原始功能集的情况下添加到训练数据中?

我愿意接受包括其他能够接受新训练数据的分类器的建议。

3 个答案:

答案 0 :(得分:8)

我知道有两个选项:

1)定期在新数据上重新训练分类器。您将在语料库(已包含原始训练数据)中累积新的训练数据,然后每隔几个小时重新训练一次。重新加载分类器。这可能是最简单的解决方案。

2)外部化内部模型,然后手动更新。可以通过为NaiveBayesClassifierlabel_prodist直接创建feature_probdist。您可以单独创建它们,将它们传递给NaiveBayesClassifier,然后在新数据进入时更新它们。分类器将立即使用这些新数据。您需要查看train方法,了解有关如何更新概率分布的详细信息。

答案 1 :(得分:0)

我只是在学习NLTK,所以如果我错了,请纠正我。这是使用NLTK的Python 3分支,它可能是不兼容的。

update()实例有一个NaiveBayesClassifier方法,它似乎会添加到培训数据中:

from textblob.classifiers import NaiveBayesClassifier

train = [
    ('training test totally tubular', 't'),
]

cl = NaiveBayesClassifier(train)
cl.update([('super speeding special sport', 's')])

print('t', cl.classify('tubular test'))
print('s', cl.classify('super special'))

打印出来:

t t
s s

答案 2 :(得分:0)

正如雅各布所说,第二种方法是正确的 希望有人写一个代码

https://baali.wordpress.com/2012/01/25/incrementally-training-nltk-classifier/