为stanford解析器提供更多内存

时间:2018-03-24 20:59:33

标签: memory stanford-nlp

在脚本lexparser.sh中,stanford解析器使用命令

运行
java -mx150m -cp "$scriptdir/*:" edu.stanford.nlp.parser.lexparser.LexicalizedParser \
 -outputFormat "penn,typedDependencies" edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz $*

然而,当解析一个包含59个单词的句子时,我得到了错误

*警告!!内存不足!那里没有足够的 记忆要运行所有游客。通过 JVM更多记忆,设置最大容量 LENGTH WITH -maxLength,或者PERHAPS你 让玩家重新回到使用 非常长时间的简单说明。 *

根据常见问题解答,350mb应该足以解析一个100字的句子。但是当我将-mx150m更改为-mx350m(或-mx1000m)时,我得到了相同的内存问题。这让我觉得我实际上没有为程序分配更多内存。我可以做些什么来测试我分配的内存量,并实际分配更多内存?

2 个答案:

答案 0 :(得分:0)

将最大堆大小指定为Java的正确方法是:

java -Xmx1g .....

不确定他们为什么在常见问题解答页面上只提到-mx而不是-Xmx

答案 1 :(得分:0)

我找到了以下行:

nltk.internals.config_java(options='-xmx4G')

在此线程中:How to parse large data with nltk stanford pos tagger in Python 但是它没有解决我的OSErrors。我从

开始的错误
  

OSError:Java命令失败:   ['/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java','-mx1000m',

让我相信它仍然只分配了1G的内存。如果有人找到了解决方案,我将非常有兴趣了解它。