【发布时间】:2014-11-13 10:55:10
【问题描述】:
我在 nltk 中使用大型数据集(15 个数据文件,每个文件具有 5 * 10^5 特征)训练分类器,
所以我陷入了这个错误之间:
Traceback (most recent call last):
File "term_classify.py", line 51, in <module>
classifier = obj.run_classifier(cltype)
File "/root/Desktop/karim/software/nlp/nltk/publish/lists/classifier_function.py", line 146, in run_classifier
classifier = NaiveBayesClassifier.train(train_set)
File "/usr/local/lib/python2.7/dist-packages/nltk/classify/naivebayes.py", line 210, in train
count = feature_freqdist[label, fname].N()
MemoryError
代码:
def run_classifier(self,cltype):
# create our dict of training data
texts = {}
texts['act'] = 'act'
texts['art'] = 'art'
texts['animal'] = 'anim'
texts['country'] = 'country'
texts['company'] = 'comp'
train_set = []
train_set = train_set + [(self.get_feature(word), sense) for word in features]
#len of train_set = 545668. Better if we can push 100000 at a time
classifier = NaiveBayesClassifier.train(train_set)
有什么方法可以批量训练分类器或任何其他方式,以便在不影响结果的情况下减少负载
【问题讨论】:
-
当您说
lacks时,我以为您的意思是10e5,所以我修改了它。如果没有,请随意回滚。
标签: python parallel-processing machine-learning batch-processing nltk