2015-09-28 60 views
6

這是我的代碼NLTK:爲什麼nltk不能識別stanford-ner的CLASSPATH變量?

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

,我得到

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

這是我的.bashrc看起來像在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 

而且,我想打印在python這個環境變量方式

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

而且我收到

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

因此變量被設置!

然後出了什麼問題?

爲什麼doe'snt nltk識別我的環境變量?

+0

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

回答

4

變化.jar文件和從stanford-ner-3.5.2.jarstanford-ner.jar

顯然NLTK環境變量具有一個nltk_internals.py可變name_pattern,其僅接受CLASSPATH如果它的值stanford-ner.jar

+2

或者也可以簡單地設置類路徑到父文件夾太像'os.environ [ 'CLASSPATH'] =「/家用/沃爾夫岡/下載/斯坦福大學NER,2015年4月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: '/home/user/Downloads/stanford-ner.jar'

from nltk.tokenize import sent_tokenize, word_tokenize 

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

下載斯坦福ner.jarhere

設置類路徑export CLASSPATH=/home/admin-pc/Downloads/

爲我工作:對