2015-09-28 8 views
6

これは私のコードNLTK:なぜnltkはstanford-nerのCLASSPATH変数を認識しませんか?

from nltk.tag import StanfordNERTagger 
st = StanfordNERTagger('english.all.3class.distsim.crf.ser.gz') 

であると私はこれは私の.bashrc。また、私はPythonの本では、環境変数を印刷しようとしたのUbuntuで

export CLASSPATH=/home/wolfgang/Downloads/stanford-ner-2015-04-20/stanford-ner-3.5.2.jar 
export STANFORD_MODELS=/home/wolfgang/Downloads/stanford-ner-2015-04-20/classifiers 

のように見えるものである

NLTK was unable to find stanford-ner.jar! Set the CLASSPATH 
    environment variable. 

を取得方法

import os 
os.environ.get('CLASSPATH') 

と私はそのための変数が設定されている

'/home/wolfgang/Downloads/stanford-ner-2015-04-20/stanford-ner-3.5.2.jar' 

を受け取ります!

何が間違っていますか?

私の環境変数を認識する理由は何ですか?

+0

http://stackoverflow.com/a/34112695/610569 – alvas

答えて

4

変更がstanford-ner-3.5.2.jarからstanford-ner.jar

に.jarファイルと環境変数が明らかにNLTKだけCLASSPATHを受け入れるnltk_internals.pyname_pattern変数を持っている、それは価値stanford-ner.jar

+2

か、あまりにもはos.environ 'のように親フォルダにクラスパスを設定することができ[ 'CLASSPATH'] =「/ home/wolfgang/Downloads/stanford-ner-2015-04-20 "'これらのオプション(親フォルダまたはstanford-ner.jar)は私のために働いていました。 – psun

+0

あなたは正しいです!これは私の問題を解決しました。 –

1

の正規表現と一致した場合、これはありますPATHを設定するための正しい方法:

st = StanfordNERTagger('C:\Python26\Lib\stanford-ner\classifiers\english.all.3class.distsim.crf.ser.gz','C:\Python26\Lib\stanford-ner\stanford-ner.jar') 

は、両方のファイルを見つけるための正しいパスを与えます。それでもJava環境変数エラーがある場合は、Java環境が構成されていないことを意味します。これを設定するには、[マイコンピュータ] - > [プロパティ] - > [詳細設定]を選択します。これらの設定が何をするかを示すビデオがあります。これを行うと、環境が適切に設定されていれば、pythonファイルを実行すると、ファイルを処理する間に黒いコマンドウィンドウが約10秒間飛びます。これはエラーなしで結果を返します。ここで

0

は私のコードです:

from nltk.tag import StanfordNERTagger 
import os 

os.getenv('CLASSPATH') 

OUTPUT:here

から '/home/user/Downloads/stanford-ner.jar'

from nltk.tokenize import sent_tokenize, word_tokenize 

st = StanfordNERTagger("english.all.3class.distsim.crf.ser.gz") 

ダウンロードスタンフォード-ner.jar

クラスパスを設定するexport CLASSPATH=/home/admin-pc/Downloads/

は私の仕事:P

関連する問題