2013-08-30 61 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'來說明這是否可能。你可以嘗試一下。 –