我正在嘗試使用tm
對R中的大數據進行文本挖掘。在R的大數據中使用tm的語料庫功能
我碰到內存問題頻繁(如can not allocation vector of size....
),並使用故障排除這些問題的確定方法,如
- 使用64位R
- 嘗試不同的操作系統(WINDOWS,Linux和Solaris等)
- 設置
memory.limit()
其最大 - 確保足夠的RAM和計算可在服務器上(其中有)
- 麥荷蘭國際集團自由使用的
gc()
- 剖析瓶頸代碼
- 分手大作戰到多個較小的操作
然而,試圖在一百萬左右的文本字段的矢量運行Corpus
的時候,我遇到稍微有點不同的內存錯誤,我不知道如何解決這個問題。錯誤是:
> ds <- Corpus(DataframeSource(dfs))
Error: memory exhausted (limit reached?)
可以(也應該)我在從源數據框中行的塊運行Corpus
增量然後結合的結果?有沒有更有效的方法來運行它?
產生此錯誤的數據大小取決於運行該錯誤的計算機,但如果您將內置的crude
數據集複製到足夠大的文檔中,則可以複製該錯誤。
UPDATE
我一直在嘗試,試圖更小CORPA結合,即
test1 <- dfs[1:10000,]
test2 <- dfs[10001:20000,]
ds.1 <- Corpus(DataframeSource(test1))
ds.2 <- Corpus(DataframeSource(test2))
,雖然我都沒有成功,我也發現tm_combine
這是supposed to solve this exact problem。唯一的問題是,出於某種原因,我的64位版本R 3.1.1和最新版本tm
找不到函數tm_combine
。也許它出於某種原因從軟件包中刪除了?我調查...
> require(tm)
> ds.12 <- tm_combine(ds.1,ds.2)
Error: could not find function "tm_combine"
是你所有的代碼在一個單一的功能?或者一個腳本? – 2014-08-27 17:36:52
這是一個腳本 – 2014-08-27 17:37:41
我猜你的代碼可能會製作太多副本......但我會等待專家。 – 2014-08-27 17:38:56