1

次のコードの最後のビットを実行しようとしていますが、エラーが発生し、その理由を特定できません。事前にPythonトレーニングとテストのエラー

ValueError    Traceback (most recent call last) 
<ipython-input-57-151936e75238> in <module>() 
    2 from nltk.classify import NaiveBayesClassifier 

----> 4 classifier = NaiveBayesClassifier.train(training_set) 

    C:\Program Files (x86)\Anaconda3\lib\site-packages\nltk\classify\naivebayes.py in train(cls, labeled_featuresets, estimator) 

--> 194   for featureset, label in labeled_featuresets: 
195    label_freqdist[label] += 1 
196    for fname, fval in featureset.items(): 

ValueError: too many values to unpack (expected 2) 

ありがとう:

import random 
combined_list = h_sub_text + s_sub_text 
print(len(combined_list)) 
random.shuffle(combined_list) 

training_part = int(len(combined_list) * .7) 
print(len(combined_list)) 
training_set = combined_list[:training_part] 
test_set = combined_list[training_part:] 
print (len(train_set)) 
print (len(test_set)) 

import nltk.classify.util 
from nltk.classify import NaiveBayesClassifier 

classifier = NaiveBayesClassifier.train(train_set) 

accuracy = nltk.classify.util.accuracy(classifier, test_set) 

print("Accuracy is: ", accuracy * 100) 

は、私はこのエラーを取得します。

+0

'train_set'を' training_set'? 'train_set'はあなたが与えるコードのどこにも定義されていません。 – MervS

+0

申し訳ありませんが、その "NaiveBayesClassifier.train(training_set)"。エラーでは、正しいオブジェクトが表示されます。 – metalmks

答えて

0

問題の根本は、NaiveBayesClassifier.train()に渡さtrain_setの値です。私たちはそれがどのように見えるかを知ることを本当に知っています。 それが何であれ、 "nltk"モジュールにエラーが発生します。 http://www.nltk.org/_modules/nltk/classify/naivebayes.htmlでNLTKソースコードから

@classmethod 
def train(cls, labeled_featuresets, estimator=ELEProbDist): 
    """ 
    :param labeled_featuresets: A list of classified featuresets, 
     i.e., a list of tuples ``(featureset, label)``. 

列車のパラメータは、()タプルのリストです。だから、あなたが渡しているものではない2の配列が2つ以上の配列の配列であるかのどちらかです。

+0

おそらくNLTKメソッドはこれには適していません。コードにsklearn-train-test-splitを適用するにはどうすればよいですか? – metalmks

+0

私はNLTKに精通していません。まず、training_setを出力して何が渡されているのかを確認することができます。また、ドキュメントが読まれていることを理解してください。 – MrJLP

関連する問題