Save Naive Bayes Trained Classifier in NLTK
To save:
import picklef = open('my_classifier.pickle', 'wb')pickle.dump(classifier, f)f.close()
To load later:
import picklef = open('my_classifier.pickle', 'rb')classifier = pickle.load(f)f.close()
I went thru the same problem, and you cannot save the object since is a ELEFreqDistr NLTK class. Anyhow NLTK is hell slow. Training took 45 mins on a decent set and I decided to implement my own version of the algorithm (run it with pypy or rename it .pyx and install cython). It takes about 3 minutes with the same set and it can simply save data as json (I'll implement pickle which is faster/better).
I started a simple github project, check out the code here
To Retrain the Pickled Classifer :
f = open('originalnaivebayes5k.pickle','rb')classifier = pickle.load(f)classifier.train(training_set)print('Accuracy:',nltk.classify.accuracy(classifier,testing_set)*100)f.close()