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()
я получаю следующее сообщение об ошибке при выполнении этого кода ...Python NLTK Classifier.train (trainfeats) ... ValueError: нужно больше, чем 1 значение для распаковки
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
ошибка приходит из классификатора = NaiveBayesClassifier.train (trainfeats), и я не уверен, почему. Я уже делал что-то подобное раньше, и мои швы тренировки будут в том же формате, что и тогда ... образец из формата приведен ниже ...
[[({'me': True, 'af Истинно, «это»: «Правда», «радость»: «Правда», «высокая»: «Правда», «кальян»: «Правда», «получил»: «Правда», «pos»)]]
какое другое значение имеет значение trainfeats нужно создать классификатор? выделенный текст
У вас есть два набора скобок вокруг круглых скобок: список, единственным элементом которого является список, единственным элементом которого является кортеж. Этот кортеж содержит словарь и строку. Возможно, у вас слишком много оберток, поэтому распаковка видит только один элемент. – Prune