При использовании нлтк. перед функцией nltk - PullRequest
0 голосов
/ 07 ноября 2018

Я новичок в python и использую nltk, так что на самом деле у меня есть очень простой вопрос, но я нигде не мог найти ответ на этот вопрос.

Мне интересно, когда использовать nltk. перед функцией модуля nltk. Я работал над какой-то задачей, а в некоторых случаях она работала без ее использования, а в некоторых - нет. Я использую ноутбук Jupyter. (В примерах я написал только то, что импортировал, и последнюю команду).

Пример 1:

import nltk 
print (FreqDist(words).most_common(10))

Это прекрасно работало.

Пример 2:

import nltk
import math

print (FreqDist(words).most_common(10))

выдает сообщение об ошибке

NameError                                 Traceback (most recent call last)
<ipython-input-21-e68f77c40897> in <module>()
----> 1 print (FreqDist(file_words).most_common(10))

NameError: name 'FreqDist' is not defined

если я вставлю nltk до FreqDist, он будет работать

print (nltk.FreqDist(words).most_common(10))

Не работает ли без nltk. во втором примере, потому что я импортировал два модуля?

Спасибо!

1 Ответ

0 голосов
/ 08 ноября 2018

Цитировать из import this:

Пространства имен - одна из отличных идей - давайте сделаем больше таких!

А из Википедия :

Как правило, когда модуль импортируется, имена, определенные в модуле, определяются через пространство имен этого модуля и доступны из вызывающих модулей с помощью полного имени.

Например, в Python вместо:

import nltk
nltk.pos_tag(nltk.word_tokenize('This is a sentence.'))

Вы можете импортировать это:

from nltk import word_tokenize, pos_tag
pos_tag(word_tokenize('This is a sentence.'))

Возвращаясь к вопросу, где-то вверху должно быть FreqDist импортировано так:

from nltk import FreqDist

, чтобы вы могли видеть FreqDist без "полностью квалифицированного" nltk.FreqDist.

...