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