在脚本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)时,我得到了相同的内存问题。这让我觉得我实际上没有为程序分配更多内存。我可以做些什么来测试我分配的内存量,并实际分配更多内存?
答案 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的内存。如果有人找到了解决方案,我将非常有兴趣了解它。