在R中:我如何解决POS标签中的“Out of memory”错误?

时间:2016-06-07 14:58:41

标签: r twitter opennlp pos-tagger semantic-analysis

在R中,我有一个包含30条样本记录的数据,主要数据有20000条记录。记录是推文。 我从任何推文中提取bigrams,我使用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;
      }
  .
  .
  .
  }
}

1 个答案:

答案 0 :(得分:3)

当脚本在R中使用rJava时,通常会发生此问题,在我的情况下,我通过在加载库options(java.parameters = "- Xmx1024m")之前添加以下行来更改JVM的内存大小以更好地处理我的脚本。在包函数之后添加gc()以释放内存。有关详细信息,请查看this link