In breve:
from nltk import precision
a Long:
Questo è difficile. Il problema si è verificato a causa del modo in cui è stato imballato NLTK. Se guardiamo dir(nltk.metrics)
, non c'è niente al suo interno, oltre alignment_error_rate
>>> import nltk
>>> dir(nltk.metrics)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'alignment_error_rate']
BTW, nella versione bordo sanguinamento della NLTK, alignment_error_rate
è stato spostato a nltk.translate.metrics
, vedere https://github.com/nltk/nltk/blob/develop/nltk/translate/metrics.py#L10. Il pacchetto nltk.translate
è un po 'instabile perché è ancora in fase di sviluppo.
Tornando al pacchetto metriche, da https://github.com/nltk/nltk/blob/develop/nltk/metrics/__init__.py
, vediamo questo:
from nltk.metrics.scores import (accuracy, precision, recall, f_measure,
log_likelihood, approxrand)
from nltk.metrics.confusionmatrix import ConfusionMatrix
from nltk.metrics.distance import (edit_distance, binary_distance,
jaccard_distance, masi_distance,
interval_distance, custom_distance,
presence, fractional_presence)
from nltk.metrics.paice import Paice
from nltk.metrics.segmentation import windowdiff, ghd, pk
from nltk.metrics.agreement import AnnotationTask
from nltk.metrics.association import (NgramAssocMeasures, BigramAssocMeasures,
TrigramAssocMeasures, ContingencyMeasures)
from nltk.metrics.spearman import (spearman_correlation, ranks_from_sequence,
ranks_from_scores)
fondamentalmente, ciò significa che le funzioni del pacchetto metriche è stato codificato e spinto fino a nltk.metrics.__init__.py
manualmente. Quindi se le importazioni si fermano qui, dir(metrics)
, dovrebbero elencare tutte le metriche importate qui.
Ma a causa del livello più alto, a nltk.__init__.py
https://github.com/nltk/nltk/blob/develop/nltk/__init__.py#L131
, i pacchetti sono stati importati utilizzando:
from nltk.metrics import *
Ora tutte le metriche punteggio è stato importato al livello superiore che significa che si può fare:
>>> from nltk import precision
>>> from nltk import spearman_correlation
>>> from nltk import NgramAssocMeasures
Tuttavia, è ancora possibile accedere a qualsiasi modulo di livello intermedio compreso tra nltk.metrics
e non importato in nltk.metrics.__init__.py
. Ma devi usare gli spazi dei nomi corretti come le funzioni vengono salvate nella loro rispettiva directory.Si noti che questi non verranno visualizzati in dir(nltk.metrics)
ma sono modi validi per importare una funzione:.
>>> from nltk.metrics import spearman
>>> from nltk.metrics import paice
>>> from nltk.metrics import scores
<function precision at 0x7fb584a34938>
>>> scores.precision
>>> spearman.spearman_correlation
<function spearman_correlation at 0x7fb5842b3230>
>>> from nltk.metrics.scores import precision
>>> precision
<function precision at 0x7fb584a34938>
prova ad aggiungere e file vuoto chiamato '__init __ py' a' /usr/local/lib/python2.7/dist-packages/nltk/metrics' quindi python può riconoscerlo come modulo e importarlo da esso. – Cyrbil
Quale sistema operativo stai utilizzando? Come hai installato NLTK (pip o qualcos'altro)? Quale versione di NLTK e Python stai usando? Come hai importato nltk? Hai provato 'da nltk.metrics.score import precision? – alvas
Nota l'errore nel mio commento precedente, volevo dire, hai provato 'da nltk.metrics.scores import precision? – alvas