Python, NLTK: NameError: имя 'load_parser' не определено

Я пытаюсь запустить этот пример из книги NLTK здесь:

>>> from nltk import load_parser
>>> cp = load_parser('grammars/book_grammars/sql0.fcfg')
>>> query = 'What cities are located in China'
>>> trees = list(cp.parse(query.split()))
>>> answer = trees[0].label()['SEM']
>>> answer = [s for s in answer if s]
>>> q = ' '.join(answer)
>>> print(q)
SELECT City FROM city_table WHERE Country="china"

но когда я набираю первую строку, это дает мне эту ошибку:

NameError: name 'load_parser' is not defined

Я пытался найти похожие вопросы, но ни у одного из них не было такой же проблемы. Как я могу это исправить?

2 ответа

Со времени выхода книги произошли некоторые изменения в пространстве имен. load_parser сейчас проживает в nltk.parse.util и импортируется в nltk.parse,

В последней версии NLTK, from nltk import load_parser должно сработать:

>>> import nltk
>>> nltk.__version__
'3.2.3'
>>> from nltk import load_parser

Возможно, в некоторых версиях NLTK пространство имен может быть неправильным. Или, может быть, вы как-то раньше загрязнили свое пространство имен. Если NameError происходит, затем импортируйте функцию из того места, где находится фактическая функция:

from nltk.parse import load_parser

Например

>>> from nltk.parse import load_parser
>>> cp = load_parser('grammars/book_grammars/sql0.fcfg')
>>> query = 'What cities are located in China'
>>> trees = list(cp.parse(query.split()))
>>> answer = trees[0].label()['SEM']
>>> answer = [s for s in answer if s]
>>> q = ' '.join(answer)
>>> print q
SELECT City FROM city_table WHERE Country="china"

Я удалил все файлы nltk_data и скачал их снова, и это сработало.

Другие вопросы по тегам