Python中的StandPOSTagger"无法找到或加载主类"

时间:2017-04-04 15:04:56

标签: java python stanford-nlp text-mining

我最近尝试通过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经验。

1 个答案:

答案 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代码,这实际上非常低效,因为不同的调用会重新加载所有模型。

这是我之前给出的答案,它更彻底地描述了这一点:

cannot use pycorenlp for python3.5 through terminal