【发布时间】:2016-08-12 03:22:13
【问题描述】:
我正在尝试训练用于情感分析的 NLTK 分类器,然后使用 pickle 保存分类器。 新训练的分类器工作正常。但是,如果我加载已保存的分类器,分类器将为所有示例输出“正”或“负”。
我正在使用
保存分类器classifier = nltk.NaiveBayesClassifier.train(training_set)
classifier.classify(words_in_tweet)
f = open('classifier.pickle', 'wb')
pickle.dump(classifier, f)
f.close()
并使用加载分类器
f = open('classifier.pickle', 'rb')
classifier = pickle.load(f)
f.close()
classifier.classify(words_in_tweet)
我没有收到任何错误。 知道问题可能是什么,或者如何正确调试?
【问题讨论】:
-
您能展示一下您是如何训练和使用分类器的吗?上面的代码看起来不错。
-
分类器使用
classifier = nltk.NaiveBayesClassifier.train(training_set)训练并由classifier.classify(tweet_features)使用。正如我所说,如果我刚刚训练一个分类器并将其应用于新数据,它就可以正常工作,只是加载的分类器被搞砸了。 -
仍在尝试了解您的问题:您能否添加更多关于您在这两种情况下的期望的描述?输出“正面”或“负面”的情感分析分类器是合理的,如果这是它所训练的内容。
-
它的输出实际上应该是“正”或“负”。如果我在新数据上测试新训练的分类器(为此我得到了 1000 条新推文),它会输出类似“正面:600”、“负面:400”的内容。但是,加载的总是会输出“正:1000”、“负:0”或“正:0”、“负:1000”。抱歉,如果我说得不够清楚。
-
你能证明未腌制的分类器找到并使用与原始分类器相同的特征提取功能吗?这就是它通常出错的地方。
标签: python nltk pickle sentiment-analysis naivebayes