Вкратце:
from nltk import precision
Коротко:
Это сложно. Проблема возникла из-за того, как был упакован NLTK. Если мы посмотрим на dir(nltk.metrics)
, внутри него нет ничего, кроме alignment_error_rate
>>> import nltk
>>> dir(nltk.metrics)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'alignment_error_rate']
Кстати, в новейшей версии 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>
person
alvas
schedule
29.10.2015
__init__.py
в/usr/local/lib/python2.7/dist-packages/nltk/metrics
, чтобы python мог распознать его как модуль и импортировать из него. - person Cyrbil   schedule 28.10.2015from nltk.metrics.score import precision
? - person alvas   schedule 29.10.2015from nltk.metrics.scores import precision
? - person alvas   schedule 29.10.2015