我试图运行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
我尝试寻找类似的问题,但没有一个有同样的问题。我该如何解决?
答案 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文件,然后再次下载它们就可以了。