2017-05-20 1 views
1

に定義されていない私は、NLTK帳hereから提供されたこの例を実行しようとしています:のPython、NLTK:NameError:名「load_parserが」

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

私は同様の質問を探してみましたが、同じ問題はありませんでした。どうすれば修正できますか?

答えて

1

本リリース以降、かなりの名前空間の変更があります。 load_parserは現在nltk.parse.utilにあり、nltk.parseにインポートされています。 NLTK、from nltk import load_parserの最新バージョンが動作するはずで

:一部のNLTKのバージョンではたぶん

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

、名前空間が正しくない可能性があります。または、何らかの形で以前の名前空間を汚染してしまったかもしれません。 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" 
+0

githubソースコードではなく、実際の 'load_parser'ドキュメントへのリンクを提供しました。 – hongsy

0

すべてのnltk_dataファイルを削除して再度ダウンロードしたところ、正常に機能しました。