2017-07-12 2 views
0

Je reçois cette erreur pour AttributeError: l'objet 'NoneType' n'a aucun attribut 'items. Le code est le suivant:AttributeError: l'objet 'NoneType' n'a aucun attribut 'items' pour classifier = nltk.NaiveBayesClassifier.train (formation_set)

import nltk 
import random 
from nltk.corpus import movie_reviews 
from nltk.classify import NaiveBayesClassifier 
from nltk.probability import FreqDist 

documents = [ (list(movie_reviews.words(fileid)), category) 
      for category in movie_reviews.categories() 
       for fileid in movie_reviews.fileids(category)] 


random.shuffle(documents) 

all_words = [] 
for w in movie_reviews.words(): 
all_words.append(w.lower()) 

all_words =nltk.FreqDist(all_words) 

word_features = list(all_words.keys())[:3000] 
print (word_features) 

def find_features(documents): 
    words = set(documents) 
    features = {} 
    for w in word_features: 
     features[w] = (w in words) 


featuresets = [(find_features(rev), category) for (rev, category) in 
documents] 

training_set = featuresets[:1500] 
testing_set = featuresets[1500:] 


classifier = nltk.NaiveBayesClassifier.train(training_set) 

print ("Naive Bayes Classifier Algo Accuracy: ",nltk.classify.accuracy(classifier, testing_set))*100) 

classifier.show_most_informative_features(15) 

J'ai suivi un tutoriel vidéo et c'est le même code là. Là, il fonctionne très bien, mais ici, il montre l'erreur suivante:

AttributeError: 'NoneType' object has no attribute 'items' 

pour la ligne

classifier = nltk.NaiveBayesClassifier.train(training_set)

Quelle est la raison et la solution?

Répondre

0

Vous ne renvoyez pas la liste à partir de la fonction. Dans votre fonction find_feature, utilisez:

def find_features(documents): 
    words = set(documents) 
    features = {} 
    for w in word_features: 
     features[w] = (w in words) 
    return features #ADD THIS LINE