NLTK не может найти исполняемый файл Java - PullRequest
20 голосов
/ 13 сентября 2011

Я использую nltk.tag.stanford от NLTK, который должен вызывать исполняемый файл Java.

Я установил JAVAHOME в C: \ Program Files \ Java \ jdk1.6.0_25, где установлен мой jdk, но при запуске программы выдается ошибка

"NLTK was unable to find the java executable! Use the config_java() or set the JAVAHOME variable"

Потом я потратил 3 часа на его отладку и попробовал

config_java("C:/Program Files/Java/jdk1.6.0_25/")

config_java("C:/Program Files/Java/jdk1.6.0_25/bin/")
and those without the ending "/". 

Однако нлтк все еще не может его найти.

Кто-нибудь имеет представление о том, что происходит не так? Спасибо, looot!

Ответы [ 14 ]

1 голос
/ 11 февраля 2012

У меня тоже были проблемы с этим. Это была такая головная боль!

Я получил это, чтобы работать на моей машине (Win7_x64)

Замените 'jdk1.6.0_30' вашей версией jdk. Запустите эту команду:

config_java("C:/Program Files/Java/jdk1.6.0_30/bin/java.exe")
[Found C:/Program Files/Java/jdk1.6.0_30/bin/java.exe: C:/Program Files/Java/jdk1.6.0_30/bin/java.exe]

Я не знаю, почему так трудно было работать. Надеюсь, это поможет!

0 голосов
/ 13 сентября 2017

Я столкнулся с той же проблемой, и это то, что сработало для меня, и это действительно просто. Когда вы настраиваете переменную JavaHome, укажите путь к папке jdk на вашем компьютере, как показано ниже:

C: \ Program Files \ Java \ jdk \ - Это сработало

C: \ Program Files \ Java \ jdk - это не сработало

0 голосов
/ 10 сентября 2016

Этот ответ для Ubuntu 14.04.

комментирование двух строк в функции batch_tag в \ nltk \ tag \ stanford.py

Строки - строки 59 и 85.

config_java (options = self.java_options, verbose = False) и config_java (options = default_options, verbose = False) соответственно.

После комментирования строк я установил путь к исполняемому файлу Java так же, как указано в других ответах: nltk.internals.config_java ( "путь / к / javadk / бен / Java")

После этого все работало нормально.

0 голосов
/ 28 мая 2015

Я реализовал обходной путь для этого, потому что NLTK неправильно понимает значение переменной JAVA_HOME:

import os
if os.environ.get("JAVA_HOME") is not None and "/bin" not in os.environ["JAVA_HOME"]:
    os.environ["JAVAHOME"] = os.path.normpath(os.path.join(os.environ["JAVA_HOME"], "bin"))

Это в основном принимает правильное значение, которое вы имеете в JAVA_HOME, и создает NLTK-дружественную версию и сохраняет еев JAVAHOME.NLTK проверит оба, так что это найдет двоичный файл.Вы должны сделать это до того, как теггер будет создан, очевидно.

...