Короче:
from nltk import precision
При продолжительном:
Это сложно. Проблема возникла из-за того, что NLTK был упакован. Если мы посмотрим на dir(nltk.metrics)
, нет ничего внутри, кроме alignment_error_rate
>>> import nltk
>>> dir(nltk.metrics)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'alignment_error_rate']
BTW, в кровоточащих краях версии NLTK, alignment_error_rate
был перемещен в nltk.translate.metrics
см https://github.com/nltk/nltk/blob/develop/nltk/translate/metrics.py#L10. Пакет nltk.translate
немного нестабилен, потому что он все еще находится в стадии разработки.
Возвращаясь к пакету метрик, от https://github.com/nltk/nltk/blob/develop/nltk/metrics/__init__.py
, мы видим это:
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)
в основном, это означает, что функции из пакета метрик были вручную кодируются и толкнули до nltk.metrics.__init__.py
. Поэтому, если импорт остановится здесь, dir(metrics)
, были бы перечислены все импортируемые здесь показатели.
Но поскольку на более высоком уровне, в nltk.__init__.py
https://github.com/nltk/nltk/blob/develop/nltk/__init__.py#L131
, пакеты были импортированы с помощью:
from nltk.metrics import *
Теперь все метрики балл был импортирован на верхнем уровне означает, что вы можете сделать:
>>> from nltk import precision
>>> from nltk import spearman_correlation
>>> from nltk import NgramAssocMeasures
Но вы все равно можете получить доступ к любым модулям промежуточного уровня, которые находятся в пределах nltk.metrics
, которые не импортируются в nltk.metrics.__init__.py
. Но вы должны использовать правильные пространства имен как функции сохранения в соответствующем каталоге.Обратите внимание, что они не будут отображаться в dir(nltk.metrics)
, но действительные способы импорта функции:.
>>> 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>
попробуйте добавить и пустой файл с именем '__init __ py' в' /usr/local/lib/python2.7/dist-packages/nltk/metrics', поэтому python может распознать его как модуль для импорта из него. – Cyrbil
Какая ОС вы используете? Как вы установили NLTK (пип или что-то еще)? Какую версию NLTK и python вы используете? Как вы импортировали nltk? Вы пробовали 'from nltk.metrics.score import precision'? – alvas
Обратите внимание на опечатку в моем предыдущем комментарии, я хотел сказать, вы пробовали 'from nltk.metrics.scores import precision'? – alvas