保存在NLTK朴素贝叶斯训练分类(Save Naive Bayes Trained Classifi

2019-06-23 09:41发布

我稍微关于我如何拯救训练的分类混淆。 如,重新训练,每次我想用这显然是非常糟糕的和缓慢的分类,我如何保存和负载一遍,当我需要它? 代码如下,在此先感谢您的帮助。 我使用Python和NLTK朴素贝叶斯分类器。

classifier = nltk.NaiveBayesClassifier.train(training_set)
# look inside the classifier train method in the source code of the NLTK library

def train(labeled_featuresets, estimator=nltk.probability.ELEProbDist):
    # Create the P(label) distribution
    label_probdist = estimator(label_freqdist)
    # Create the P(fval|label, fname) distribution
    feature_probdist = {}
    return NaiveBayesClassifier(label_probdist, feature_probdist)

Answer 1:

为了节省:

import pickle
f = open('my_classifier.pickle', 'wb')
pickle.dump(classifier, f)
f.close()

稍后加载的:

import pickle
f = open('my_classifier.pickle', 'rb')
classifier = pickle.load(f)
f.close()


Answer 2:

我去通了同样的问题,你不能保存对象既然是ELEFreqDistr NLTK类。 总之NLTK是地狱缓慢。 培训发生在一个体面的45分钟,我决定实现自己的算法(pypy运行或重新命名它.pyx和安装用Cython)的版本。 它需要用同一套约3分钟,它可以简单地将数据保存为JSON(我将实现咸菜这是更快/更好)。

我开始一个简单的项目GitHub的,检查出的代码在这里



Answer 3:

再培训腌制缅:

f = open('originalnaivebayes5k.pickle','rb')
classifier = pickle.load(f)
classifier.train(training_set)
print('Accuracy:',nltk.classify.accuracy(classifier,testing_set)*100)
f.close()


文章来源: Save Naive Bayes Trained Classifier in NLTK