3

ここからコードを試してみました: 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

しかし、別の方法で and を試すとsave_classifierload_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.

2 番目の出力は次のとおり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

実際、それは機能します。

4

1 に答える 1

3

コードをテストするための環境設定はありませんが、ピクルを保存/ロードする部分が正しくないと感じています。

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

それが役に立てば幸い。

于 2013-07-14T01:15:23.087 に答える