1

运行以下示例代码片段时出现有线错误

st = StanfordTagger('bidirectional-distsim-wsj-0-18.tagger')
st.tag('What is the airspeed of an unladen swallow ?'.split())

第一行工作正常,但第二行出现以下错误。

Could not create the Java virtual machine.

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/nltk-2.0.1rc1-   py2.6.egg/nltk/tag/stanford.py", line 51, in tag
return self.batch_tag([tokens])[0]
File "/usr/local/lib/python2.6/dist-packages/nltk-2.0.1rc1-py2.6.egg/nltk/tag/stanford.py", line 77, in batch_tag
stdout=PIPE, stderr=PIPE)
File "/usr/local/lib/python2.6/dist-packages/nltk-2.0.1rc1-py2.6.egg/nltk/internals.py", line 166, in java
raise OSError('Java command failed!')
OSError: Java command failed!

我尝试将 .usr/lib/jvm 添加到路径中,但仍然无法正常工作

4

2 回答 2

2

它也不适合我。所以我尝试了以下方法,它工作得很好。

st = POSTagger('path-to/stanford-postagger-full-2012-07-09/models/wsj-0-18-left3words.tagger','path-to/stanford-postagger-full-2012-07-09/stanford-postagger.jar')

并使用 nltk 的 tokenize 方法而不是 Python 的 split()

taggedSentence= st.tag(nltk.word_tokenize(sentence))
于 2012-08-02T07:11:37.443 回答
2

我看到这个问题已经过时了,但是这几天我因为未知原因遇到了同样的错误。这让我很头疼。但我找到了解决方案。

首先,我安装了 Oracle Java(这里是说明:如何在 Debian 或 Ubuntu VPS 上手动安装 Oracle Java

现在,我的 python 脚本告诉了我更多关于错误的信息。它输出如下内容:

Forking JVM: error=12, Cannot allocate memory or error=12, Not enough space 

在这里您可以阅读有关此类问题的更多信息:Forking the JVM

为了避免那个烦人的错误,我需要编辑/etc/sysctl.conf并添加以下内容:

vm.overcommit_memory = 1

然后重新启动系统以使更改生效。

于 2014-10-27T23:02:34.900 回答