我从这里尝试了代码:Save Naive Bayes Trained Classifier in NLTK。 我想将推文归类为正类或负类。 这是我的代码:
#learning.py
def main_learning():
.......
classifier = nltk.NaiveBayesClassifier.train(feature_set)
save_classifier(classifier)
classifier2 = load_classifier()
print classifier2.classify(get_features("My tweet is bad".split())
def save_classifier(classifier):
f = open('my_classifier.pickle', 'wb')
pickle.dump(classifier, f)
f.close()
def load_classifier():
f = with open('my_classifier.pickle')
classifier = pickle.load(f)
f.close
return classifier
然后输出:negative
但是,当我以不同的方法尝试save_classifier
和load_classifier
时,输出将始终为正类。
这是代码:
#learning.py
def main_learning():
.......
classifier = nltk.NaiveBayesClassifier.train(feature_set)
save_classifier(classifier)
def test_classify():
classifier = load_classifier()
print classifier.classify(get_features("My tweet is bad".split())
the def save_classifier and load_classifier() are same with the first ones.
第二个输出是:positive
。
它应该仍然是negative
类。
我的代码怎么了? 感谢
编辑:
从@Cassio的回答中,我编辑了我的代码:
def save_classifier(classifier):
f = open('my_classifier.pickle', 'wb')
pickle.dump(classifier, f)
f.close()
def load_classifier():
f = with open('my_classifier.pickle', 'rb')
classifier = pickle.load(f)
f.close
return classifier
实际上它有效。
答案 0 :(得分:3)
我没有环境设置来测试您的代码,但我觉得在保存/加载pickle的部分不正确。
参考NLTK书籍的Storing Taggers部分,我会更改您的代码并按照以下方式执行:
def save_classifier(classifier):
f = open('my_classifier.pickle', 'wb')
pickle.dump(classifier, f, -1)
f.close()
def load_classifier():
f = open('my_classifier.pickle', 'rb')
classifier = pickle.load(f)
f.close()
return classifier
希望它有所帮助。