2013-08-30 36 views
0

我有此线欲执行:功能重复地崩溃ř

tdm_english <- DocumentTermMatrix(doc.corpus, list(dictionary = dictionary_english)) 

doc.corpus具有长度191000和dictionary_english 48

我上的语料库3/4运行非常相同的线这一个的大小和所有运行在几分钟内(可能非平均5分钟)平稳。

现在该功能崩溃我的MacBook Pro。我运行了两次,两次都不得不强制退出R & RStudio经过一个多小时的计算。

有什么方法可以优化我的通话吗?

+0

请不要使用'crash'这个词来描述需要比您想象的更长的过程。 –

+0

不仅仅是更长的时间...我无法使用“停止”按钮停止它。 – CptNemo

+0

这是程序包作者定期将焦点返回到控制台的失败。我同意@PaulHeimstra的说法,你可以把它分页到虚拟内存。操作方式因操作系统而异。在Mac上,您可以运行ActivityMonitor.app来检查这一点。和往常一样......购买更多的内存;它非常便宜。 (你也可以搜索SO来获得最大化可用内存的建议,干净重启是第一个策略。) –

回答

1

我绕过了这个问题,使用TermDocumentMatrix而不是DocumentTermMatrix,这显然在大数据集上更稳定。

更新:我使它也与DocumentTermMatrix一起使用。正如DWin指出的那样,问题似乎是DocumentTermMatrix内存贪得无厌。我设法抑制了胃口。我在200k条记录上进行了测试,完成了这项工作,而不会使整个系统瘫痪。

tdm_english <- vapply(doc.corpus, DocumentTermMatrix, FUN.VALUE = numeric(1), list(dictionary = dictionary_english), USE.NAMES = FALSE) 
0

从您的描述听起来就像你内存不足。要检查这一点,打开Activity Monitor并启动R脚本。在Ac中检查系统内存选项卡。监视并查看发生了多少页面和页面输出。如果这个数字很重要,加上R进程的高内存使用率,这表明您的计算机内存不足,并且正在使用硬盘空间来弥补。这非常慢。

解决方案是使用较小的数据集,以块为单位处理数据,找到限制内存使用量或获取更多RAM的设置DocumentTermMatrix

+0

将数据帧分为两部分,分别处理每个部分然后重新加入它们呢?可以解决问题吗?它可以轻松完成吗?怎么样? (我看到封装plyr肯定要这样做) – CptNemo

+0

我没有足够的经验用'DocumentMatrix'来说明这是否可能。你可以尝试一下。 –