1

在 R 中,我有一个包含 30 条记录的样本数据,主要数据有 20000 条记录。记录是推文。我从任何推文中提取二元组,并从 postagger 中使用。对于示例数据,这向我显示了错误

.jnew("opennlp.tools.postag.POSModel", .jcast(.jnew("java.io.FileInputStream", :
java.lang.OutOfMemoryError: Java 堆空间)

或者

.jnew("opennlp.tools.tokenize.TokenizerModel", .jcast(.jnew("java.io.FileInputStream", :
java.lang.OutOfMemoryError: 超过 GC 开销限制)

我该如何解决这个问题?

我的代码是:我该如何解决这个问题?

    for(i in 1:nrow(data1))
{
 .
 .
 .

 for(k in 1:length(bigrams))
 {
   s = as.String(bigrams[k])
   sent_token_annotator =openNLP:: Maxent_Sent_Token_Annotator()
   word_token_annotator = openNLP::Maxent_Word_Token_Annotator()
   a2 = annotate(s, list(sent_token_annotator, word_token_annotator))
   pos_tag_annotator = openNLP::Maxent_POS_Tag_Annotator()
   a3 = annotate(s, pos_tag_annotator, a2)
   a3w = subset(a3, type == "word")
   tags = sapply(a3w$features, `[[`, "POS")
   if(tags[1]=="JJ") 
    {
      if(tags[2]=="NN"||tags[2]=="NNS")
      {
        bigram_final[j]=bigrams[k]
        j=j+1;
      }
  .
  .
  .
  }
}
4

1 回答 1

4

当脚本在 R 中使用 rJava 时,通常会发生此问题,在我的情况下,我更改了 JVM 的内存大小以更能处理我的脚本,方法是在加载库之前添加以下行,options(java.parameters = "- Xmx1024m")我也在gc()要发布的包函数之后添加记忆。请检查此链接以获取更多信息。

于 2016-06-11T14:48:32.133 回答