首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决在R中将带注释的NLP模型转换为数据时的内存分配问题

如何解决在R中将带注释的NLP模型转换为数据时的内存分配问题
EN

Stack Overflow用户
提问于 2020-12-02 19:08:10
回答 1查看 69关注 0票数 0

我正在尝试将尺寸为1.2GB的带注释的NLP模型转换为dataframe。我在R中使用Udpipe软件包进行自然语言处理,代码如下:

代码语言:javascript
复制
# Additional Topic Models
# annotate and tokenize corpus
model <- udpipe_download_model(language = "english")
udmodel_english <- udpipe_load_model(model$file_model)
s <- udpipe_annotate(udmodel_english, cleaned_text_NLP)
options(java.parameters = "-Xmx32720m")
memory.limit(3210241024*1024)
x <- data.frame(s)

请注意,我有32 to内存,并将所有可用内存分配给R以运行代码。我还尝试删除存储在R环境空间中与运行上述代码无关的大型对象。R似乎不能为任务分配足够的内存,因此出现了以下错误消息:

代码语言:javascript
复制
Error in strsplit(x$conllu, "\n") : 
  could not allocate memory (4095 Mb) in C function 'R_AllocStringBuffer' 

我的问题有两个方面:

  1. 上面的错误消息意味着什么?
  2. 有什么解决方法可以解决这个问题?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-03 12:02:30

可能您有相当多的文档需要注释。最好用块注释,如https://cran.r-project.org/web/packages/udpipe/vignettes/udpipe-parallel.html所示

下面的代码将在两个核心上并行地注释50个文档,基本上可以执行data.frame命令。您将不再有这个问题,因为函数在50个文档的每个块上进行了结构化,而不是在完整的dataset上,显然注释文本的大小太大,无法适应R中的字符串缓冲区的限制,但是下面的代码将解决您的问题。

代码语言:javascript
复制
x <- udpipe(cleaned_text_NLP, udmodel_english, parallel.cores = 2L, parallel.chunksize = 50)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65114557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档