我最近尝试通过http://textminingonline.com/dive-into-nltk-part-v-using-stanford-text-analysis-tools-in-python学习nltk包。 但我遇到了一个关于在Python中执行JAVA代码的问题:
import os
java_path = "C:\Program Files (x86)\Java\jre1.8.0_121\\bin\java.exe"
os.environ['JAVAHOME'] = java_path
os.environ['JAVAHOME']
事实证明:
'C:\\Program Files (x86)\\Java\\jre1.8.0_121\\bin\\java.exe'
然后我运行nltk代码:
import nltk
from nltk.tag.stanford import StanfordPOSTagger
english_postagger=StanfordPOSTagger('models/english-bidirectional-distsim.tagger','stanford-postagger.jar')
english_postagger.tag('hi')
然而:
`Error: Could not find or load main class`edu.stanford.nlp.tagger.maxent.MaxentTagger
我查看了stanford-postagger.jar'中的文档,MaxentTagger文件在那里: path to Maxent Tagger
我可以知道如何设置正确的课程路径吗?或其他方式来解决这个问题。 附: :我没有Java经验,但有Python经验。
答案 0 :(得分:0)
问题是您无法访问jar,因此这是一个CLASSPATH问题。我不肯定这会与nltk
一起使用,但我已经看到以前的答案设置os.environ["CLASSPATH"]= "/path/to/stanford-corenlp-full-2016-10-31"
解决了这个问题。
您可以从这里下载Stanford CoreNLP 3.7.0:
http://stanfordnlp.github.io/CoreNLP/download.html
如果你想在Python中使用我们的工具,我建议使用Stanford CoreNLP 3.7.0服务器并发出小型服务器请求(或使用stanza
库)。
如果您使用nltk
我认为发生的事情是Python只用subprocess
调用我们的Java代码,这实际上非常低效,因为不同的调用会重新加载所有模型。
这是我之前给出的答案,它更彻底地描述了这一点: