NLTK无法找到Java可执行文件

Tho*_*Chu 21 python java tags config nltk

我正在使用NLTK的nltk.tag.stanford,它需要调用java可执行文件.

我将JAVAHOME设置为安装了我的jdk的C:\ Program Files\Java\jdk1.6.0_25,但是在运行程序时出现错误

"NLTK was unable to find the java executable! Use the config_java() or set the JAVAHOME variable"
Run Code Online (Sandbox Code Playgroud)

然后我花了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 "/". 
Run Code Online (Sandbox Code Playgroud)

然而,nltk仍然无法找到它.

任何人都知道出了什么问题?谢谢你的loooot!

Ala*_*lan 54

如果设置JAVA_HOME环境对您没有帮助,请尝试以下操作:

config_java()不适合我.我将以下代码添加到我的代码中并且它有效:

import os
java_path = "C:/Program Files/Java/jdk1.7.0_11/bin/java.exe"
os.environ['JAVAHOME'] = java_path
Run Code Online (Sandbox Code Playgroud)

我正在运行Windows 7 64位

  • 您也可以更改JAVA_HOME环境变量并重新启动IDE (2认同)

duh*_*ime 7

我花了大约七个小时来解决这个问题,最后找到了解决方案.您可以将java目录直接写入internals.py文件(build 2.0.4)的第69和72行,如下所示:

##########################################################################
# Java Via Command-Line
##########################################################################

_java_bin = 'C:\Program Files\Java\jdk1.7.0_25\\bin\java.exe'
_java_options = []
# [xx] add classpath option to config_java?
def config_java(bin='C:\Program Files\Java\jdk1.7.0_25\\bin\java.exe', options=None, verbose=True):
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题.(我在32位Windows环境下工作)

  • 出色的工作 - 注意bin中'b'之前的双反斜杠......这是必须的. (2认同)

Ale*_*ure 5

protos1210的提示对我有用,只有一些小的改动.完整的答案是:

import nltk
nltk.internals.config_java("C:/Program Files/Java/jdk1.6.0_30/bin/java.exe")
Run Code Online (Sandbox Code Playgroud)

重新启动IDLE后,以下代码有效.

import nltk
path_to_model = "C:/Program Files/stanford-postagger-2012-05-22/models/english-bidirectional-distsim.tagger"
path_to_jar = "C:/Program Files/stanford-postagger-2012-05-22/stanford-postagger.jar"
tagger = nltk.tag.stanford.POSTagger(path_to_model, path_to_jar)
tokens = nltk.tokenize.word_tokenize("I hope this works!")
print tagger.tag(tokens)
Run Code Online (Sandbox Code Playgroud)

输出是:[('I','PRP'),('希望','VBP'),('this','DT'),('works','VBZ'),('!',' .')].

我永远无法识别我的JAVAHOME环境变量.


Ern*_*ill 2

我看了这里,文档似乎表明这个论点应该看起来像

config_java("C:/Program Files/Java/jdk1.6.0_25/bin/java")
Run Code Online (Sandbox Code Playgroud)