AttributeError: 'liste' de l'objet n'a pas d'attribut "copier"
J'ai l'extrait de code suivant
classifier = NaiveBayesClassifier.train(train_data)
#classifier.show_most_informative_features(n=20)
results = classifier.classify(test_data)
et l'erreur affiche dans la ligne suivante
results = classifier.classify(test_data)
erreur:
Traceback (most recent call last):
File "trial_trial.py", line 46, in <module>
results = classifier.classify(test_data)
File "c:\Users\Amr\Anaconda\lib\site-packages\nltk\classify\naivebayes.py", line 88, in classify
return self.prob_classify(featureset).max()
File "c:\Users\Amr\Anaconda\lib\site-packages\nltk\classify\naivebayes.py", line 94, in prob_classify
featureset = featureset.copy()
AttributeError: 'list' object has no attribute 'copy'
Je pense que de l'extension de la liste de classe de base en python et ajouter la fonction de copie
mais je ne suis pas expert en python et je ne sais pas comment résoudre ce problème.
- Consultez la documentation des fonctions que vous utilisez et vérifiez que vous êtes de passage droit types d'argument.
- Le plus probable,
train_data
doit être un dictionnaire et non sur une liste. - c'est la source de classer les nltk.org/_modules/nltk/classify/naivebayes.html
- Comment avez-vous produire
test_data
? C'est un objet de la liste, mais laNaiveBayesClassifier.classify()
méthode attend un autre type tout à fait.
InformationsquelleAutor Amr Ragab | 2016-05-05
Vous devez vous connecter pour publier un commentaire.
NLTK classificateurs de travail avec ensembles de fonctionnalités; ce sont toujours des dictionnaires sur les noms de cartographie à une valeur. Vous êtes de passage dans une liste au lieu de cela, de sorte que vous ne sont pas productrices de fonctionnalités que par l'NLTK de la documentation. Le code prévoit un dictionnaire Python et Python dictionnaires ont
.copy()
méthode.Voir le NLTK tutoriel sur Apprendre à Classer Texte:
Également voir le Featuresets de la NLTK Classer la documentation de l'API:
Vous n'avez pas partagé ce type d'objets que l'
train_data
liste contient; si ceux-ci sont ensemble de fonctionnalités dictionnaires, vous souhaitez utiliserclassify_many()
à la place:Que la méthode ne prendre une liste, mais chaque élément doit encore être valide d'un ensemble de fonctionnalités.
La liste.méthode de copie ne fonctionne pas les deux en python 2.x et python 3.x, je me demande pourquoi il est encore dans la documentation.
Pour atteindre les résultats de la copie d'une liste, l'utilisateur de la liste de mots clés:
En option, vous pouvez copiez une liste par le tranchant:
Pourquoi voulez-vous faire?
si vous souhaitez définir une liste égal à un autre, vous pouvez le faire:
d'autre si vous voulez insérer une liste à l'intérieur d'un secondone vous pouvez utiliser append():