def word_feats(words):
return dict([(word, True) for word in words])
for tweet in negTweets:
words = re.findall(r"[\w']+|[.,!?;]", tweet) #splits the tweet into words
negwords = [(word_feats(words), 'neg')] #tag the words with feature
negfeats.append(negwords) #add the words to the feature list
for tweet in posTweets:
words = re.findall(r"[\w']+|[.,!?;]", tweet)
poswords = [(word_feats(words), 'pos')]
posfeats.append(poswords)
negcutoff = len(negfeats)*3/4 #take 3/4ths of the words
poscutoff = len(posfeats)*3/4
trainfeats = negfeats[:negcutoff] + posfeats[:poscutoff] #assemble the train set
testfeats = negfeats[negcutoff:] + posfeats[poscutoff:]
classifier = NaiveBayesClassifier.train(trainfeats)
print 'accuracy:', nltk.classify.util.accuracy(classifier, testfeats)
classifier.show_most_informative_features()
Je reçois l'erreur suivante lors de l'exécution de ce code ...Python NLTK Classifier.train (trainfeats) ... ValueError: besoin de plus de 1 valeur pour déballer
File "C:\Python27\lib\nltk\classify\naivebayes.py", line 191, in train
for featureset, label in labeled_featuresets:
ValueError: need more than 1 value to unpack
L'erreur vient de la ligne classifier = NaiveBayesClassifier.train (trainfeats) et je ne sais pas pourquoi. J'ai fait quelque chose comme ça avant, et mon train de train semble être dans le même format qu'alors ... un exemple du format est listé ci-dessous ...
[[({'moi': Vrai, 'af ': Vrai,' ceci ': Vrai,' joie ': Vrai,' haut ': Vrai,' narguilé ': Vrai,' obtenu ': Vrai},' pos ')]]
quelle autre valeur est ma trainfeats besoin de créer le classificateur? souligné texte
Vous avez deux ensembles de parenthèses entre parenthèses: une liste dont le seul élément est une liste dont le seul élément est un tuple. Ce tuple contient un dictionnaire et une chaîne. Peut-être avez-vous trop d'enveloppes, alors le déballage ne voit qu'un seul objet. – Prune