2015-09-28 2 views
6

Это мой кодNLTK: почему nltk не распознает переменную CLASSPATH для stanford-ner?

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 выглядит в убунту

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 

Кроме того, я попытался напечатать переменные окружения в питоне этого путь

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

И я Получать

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

Поэтому переменные Создаются!

Что не так?

Почему netk не распознает мои переменные окружающей среды?

+0

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

ответ

4

изменить файл .jar и переменные среды от stanford-ner-3.5.2.jar к stanford-ner.jar

видимо NLTK имеют name_pattern переменный в nltk_internals.py, который принимает только CLASSPATH, если она совпадает с регулярным выражением значения stanford-ner.jar

+2

или вы могли бы просто установить путь к классам родительской папки тоже, как 'os.environ [«CLASSPATH»] =«/ главная/Wolfgang/Загрузки/Стэнфорд-нер-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 черное командное окно будет всплескиваться около десяти секунд, пока оно обрабатывает ваш файл. Это должно возвращать ваш результат без ошибок.

0

Вот мой код:

from nltk.tag import StanfordNERTagger 
import os 

os.getenv('CLASSPATH') 

ВЫВОД: '/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 из here

Set Classpath export CLASSPATH=/home/admin-pc/Downloads/

работал для меня: р

Смежные вопросы