Stanford NLTK NER 找不到Java SDK的问题
最近使用Stanford大学的NLP包进行NER识别,通过NLTK调用相应的包。发现无法找到Java文件,但是我已经安装好了JDK。
报告如下错误:
///
NLTK was unable to find the java file!
Use software specific configuration paramaters or set the JAVAHOME environment variable.
///
原因发现没有注册相应的Java环境变量。
#解决方案一,需要注册一下环境变量:
由于我使用的是Windows系统,所以需要打开我的电脑属性找到相应环境变量按钮添加即可。
这里需要注意的是,添加完以后可能并不能马上生效,我用的是Spyder,所以需要重新启动一下Spyder。再执行python程序。
#解决方案二,文件中添加环境变量:
如果不想手动设置环境变量的话,可以在代码中加入如下行:
—
import os, sys
JAVA_HOME = r"C:\Program Files\Java\jdk1.8.0_191\bin\java.exe"
os.environ.setdefault(‘JAVA_HOME’, JAVA_HOME)
—
上面C盘的java.exe是我本地的位置。另外要注意,虽然提示的是找不到“JAVAHOME”,但实际上需要添加“JAVA_HOME”变量。
而且要注意,Windows下面绝对路径的字符串前要加“r”,这个不要忘了。
#一个例子:
import os, sys
from nltk.tag import StanfordNERTagger
# set the JAVA_HOME environment:
JAVA_HOME = r"C:\Program Files\Java\jdk1.8.0_191\bin\java.exe"
os.environ.setdefault('JAVA_HOME', JAVA_HOME)
eng_tagger = StanfordNERTagger(model_filename=r'C:\z\model\nlp\stanford-ner-2018-02-27\classifiers\english.all.3class.distsim.crf.ser.gz',path_to_jar=r'C:\z\model\nlp\stanford-ner-2018-02-27\stanford-ner.jar')
print(eng_tagger.tag('Mr. Zhao solved this problem, who is a student from Tsinghua Univercity.'.split()))