AttributeError: 'module' Objekt hat kein Attribut 'scores'
Ich eine Fehlermeldung, wenn man versucht, die Funktion precision
aus nltk.metrics.scores
. Ich habe versucht viele verschiedene Importe, aber ohne Erfolg.
Schaute ich in den Dateien auf meinem python-Verzeichnisse (siehe unten), und die Funktion ist da, aber nur "can' T touch this/that". Ich sah Sie an:
/usr/local/lib/python2.7/dist-packages/nltk/metrics
/usr/local/lib/python2.7/dist-packages/nltk/metrics/scores.py
Dies ist, was mein terminal zeigt mir:
File "/home/login/projects/python-projects/test.py", line 39, in <module>
precision = nltk.metrics.scores.precision(correct[CLASS_POS], predicted[CLASS_POS])
AttributeError: 'module' object has no attribute 'scores'
In meinen Recherchen stieß ich auf dieses link, die gibt mir zwei Optionen, aber ich weiß nicht, wie Sie Vorgehen, um entweder die:
- Der offensichtliche Grund dafür ist, dass die settings.py nicht das Verzeichnis, bla aufgelistet in
INSTALLED_APPS
. - Eine weniger offensichtliche Ursache: Sie erhalten außerdem diese Fehlermeldung, wenn das Verzeichnis noch nicht enthalten, eine Datei
__init__.py
.
- versuchen Sie, eine leere Datei namens
__init__.py
zu/usr/local/lib/python2.7/dist-packages/nltk/metrics
python so können erkannte es als Modul ein import aus es. - Welches OS verwenden Sie? Wie haben Sie NLTK (pip oder etwas anderes)? Welche version von NLTK und python verwenden Sie? Wie hast du den import nltk? Haben Sie versucht
from nltk.metrics.score import precision
? - Beachten Sie die Tippfehler in meinem vorherigen Kommentar, ich wollte sagen, Sie haben versucht, die
from nltk.metrics.scores import precision
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurz:
In langen:
Dies ist schwierig. Das Problem ist aufgetreten, weil, wie NLTK verpackt wurde. Wenn wir uns anschauen
dir(nltk.metrics)
es ist nichts drin, außeralignment_error_rate
BTW, in die bleeding edge version von NLTK,
alignment_error_rate
wurde verschoben, um dienltk.translate.metrics
finden Sie https://github.com/nltk/nltk/blob/develop/nltk/translate/metrics.py#L10 . Dienltk.translate
Paket ist ein wenig instabil, weil es immer noch unter-Entwicklung.Geht zurück auf die Metrik-Paket aus
https://github.com/nltk/nltk/blob/develop/nltk/metrics/__init__.py
, sehen wir dies:im Grunde bedeutet dies, dass die Funktionen aus der Metrik-Paket wurde manuell codiert und schob sich bis zu
nltk.metrics.__init__.py
. Also wenn die Importe stoppen hierdir(metrics)
würde aufgelistet haben all die Metriken importiert hier.Aber, weil auf der höheren Ebene, auf
nltk.__init__.py
https://github.com/nltk/nltk/blob/develop/nltk/__init__.py#L131
, die Pakete importiert wurde, mit:Nun alle Metriken Partitur importiert wurde, um die top-level-Bedeutung, die Sie tun können:
Aber können Sie immer noch Zugriff auf intermediate-level-Module, die innerhalb
nltk.metrics
, die nicht importiert werden sollen, innltk.metrics.__init__.py
. Aber Sie müssen mit den richtigen Namensräumen, wie die Funktionen, die gespeichert werden in Ihrem jeweiligen Verzeichnis. Beachten Sie, dass diese nicht zeigen, wird indir(nltk.metrics)
aber sind gültige Möglichkeiten, um import-Funktion:Ersetzen import nltk.Metriken, die durch diese :
Rufen Sie jetzt Präzision oder erzielt oder recall direkt.