保存和加载测试以另一种方法对NLTK中的朴素贝叶斯分类器进行分类 [英] Save and Load testing classify Naive Bayes Classifier in NLTK in another method

查看:104
本文介绍了保存和加载测试以另一种方法对NLTK中的朴素贝叶斯分类器进行分类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从这里尝试过代码:在NLTK中保存朴素贝叶斯训练分类器. 我想将推文分为正面类或负面类. 这是我的代码:

I have try the code from here: Save Naive Bayes Trained Classifier in NLTK. I want to classify tweet into positive class or negative class. this is my code:

#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_classifierload_classifier时,输出将始终为正类.

But, when I try the save_classifier and load_classifier in different method, the output become always positive class.

这是代码:

#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类.

The second output is: positive. It should be still negative class.

我的代码会发生什么?? 谢谢

What happen with my code?? Thanks

从@Cassio的答案中,然后编辑代码:

From the answer from @Cassio then I edit my code:

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

实际上是可行的.

推荐答案

我没有环境设置来测试您的代码,但是我觉得在您保存/加载泡菜的那部分是不合适的.

I don't have the environment setup to test out your code, but I have the feeling it's not right in the part where you save/load the pickle.

请参阅NLTK图书的存储标记书部分,我将更改您的代码并执行像这样:

Referring to the Storing Taggers section of the NLTK book, I would change your code and do it like this:

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

希望有帮助.

这篇关于保存和加载测试以另一种方法对NLTK中的朴素贝叶斯分类器进行分类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆