Python,NLTK:NameError:name' load_parser'没有定义

时间:2017-05-20 15:29:16

标签: python parsing nlp nltk nltk-book

我试图运行NLTK书籍here提供的示例:

>>> 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 个答案:

答案 0 :(得分:1)

自本书发布以来,存在相当多的命名空间更改。 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

E.g。

>>> 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"

答案 1 :(得分:0)

我删除了所有nltk_data文件,然后再次下载它们就可以了。