来自Stanford';s R coreNLP包抛出错误

来自Stanford';s R coreNLP包抛出错误,r,stanford-nlp,R,Stanford Nlp,我正在尝试使用coreNLP包。我运行了以下命令,遇到了超出GC开销限制的错误 错误如下: 从edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz加载分类器。。。rJava::.jnew(“edu.stanford.nlp.pipeline.StanfordCoreNLP”,basename(path))中出错: java.lang.OutOfMemoryError:超出GC开销限制 wrapup期间出错:无法打开

我正在尝试使用
coreNLP
包。我运行了以下命令,遇到了超出GC开销限制的错误

错误如下:

从edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz加载分类器。。。rJava::.jnew(“edu.stanford.nlp.pipeline.StanfordCoreNLP”,basename(path))中出错: java.lang.OutOfMemoryError:超出GC开销限制 wrapup期间出错:无法打开连接


我对Java了解不多,有人能帮我吗?

尝试了以下方法,但没有成功-

选项(java.parameters=“-Xmx1000m”)-增加堆大小
gc()-这将导致自动进行垃圾收集


在重启我的机器后,最终自己解决了

@indi我遇到了同样的问题(请参阅),但我找到了一个比简单重启更可重复的解决方案

init命令的完整语法为

initCoreNLP(libLoc, parameterFile, mem = "4g", annotators)
增加
mem
对我没有帮助,但我意识到你和我都被
ner
注释器(命名实体识别)中的一个分类器卡住了。因为我所需要的只是词性标记,所以我将init命令替换为以下命令:

initCoreNLP(mem = "8g", annotators = c("tokenize", "ssplit", "pos"))
这导致init命令在闪存中执行,并且没有内存问题。顺便说一句,我把
mem
增加到8g,只是因为我有那么多内存。我相信我可以把它保留在默认的4g,这样就可以了

我不知道您是否需要
ner
注释器。如果没有,则显式列出
注释器
参数。以下是可能值的列表:。只要选择那些你绝对需要完成工作的。如果确实需要
ner
,请再次找出所需的最小注释器集并指定它们


所以你(希望其他人)走吧

我找到了一个更通用的解决方案:增加rJava的堆空间,如下所述:

原因:依赖rJava的库的默认堆大小为512MB。相对来说,超过这个最大尺寸是比较容易的

解决方案:在rJava的选项支持中增加JVM堆大小:

options(java.parameters = "-Xmx4096m")
请注意,此步骤必须在加载任何包之前执行


然后我跑:

initCoreNLP(mem = "4g")

…整个CoreNLP加载并运行成功。

没有意识到在加载任何包之前必须执行设置java.parameters步骤!终于成功了!黄金帮助。
initCoreNLP(mem = "4g")