我有一個超過10M文檔的大型語料庫。每當我嘗試在多個內核的改造利用mc.cores的說法,我得到錯誤:無法獲取tm_map使用mc.cores參數
Error in FUN(content(x), ...) : unused argument (mc.cores = 10)
我在我目前的託管[R工作室15個可用內核。
# I have a corpus
> inspect(corpus[1])
<<VCorpus>>
Metadata: corpus specific: 0, document level (indexed): 0
Content: documents: 1
[[1]]
<<PlainTextDocument>>
Metadata: 7
Content: chars: 46
> length(corpus)
[1] 10255313
觀看時,我儘量讓轉換使用tm_map
library(tidyverse)
library(qdap)
library(stringr)
library(tm)
library(textstem)
library(stringi)
library(SnowballC)
例如發生了什麼
> corpus <- tm_map(corpus, content_transformer(replace_abbreviation), mc.cores = 10)
Error in FUN(content(x), ...) : unused argument (mc.cores = 10)
嘗試添加懶= T
corpus <- tm_map(corpus, content_transformer(replace_abbreviation), mc.cores = 10, lazy = T) # read the documentation, still don't really get what this does
改造後,如果我去例如
> corpus[[1]][1] I get:
Error in FUN(content(x), ...) : unused argument (mc.cores = 10)
而在此之前,我會得到:
> corpus.beforetransformation[[1]][1]
$content
[1] "here is some text"
我在做什麼錯在這裏?我如何使用mc.cores參數來使用更多的處理器?
重複的例子:
sometext <- c("cats dogs rabbits", "oranges banannas pears", "summer fall winter") %>%
data.frame(stringsAsFactors = F) %>% DataframeSource %>% VCorpus
corpus.example <- tm_map(sometext, content_transformer(replace_abbreviation), mc.cores = 2, lazy = T)
corpus.example[[1]][1]
其一,傳遞給'tm_map'通過'...'額外的參數傳遞給'FUN' 。所以你的'mc.cores'參數被傳遞給'content_transformer(replace_abbreviation)'。我*想*您可能需要使用並行程序包註冊一個羣集,然後使用'tm_parLapply_engine'函數告訴tm程序包使用該羣集,但這有點推測。 –
嘗試將mc.cores參數移至content_transformer,但出現同樣的錯誤。重新註冊一個羣集......讓我感到奇怪?我最初通過創建集羣來開始此任務,然後通過另一個SO員額被告知只使用mc.cores arg而不是這樣做 –
有關更多信息,請參閱tm軟件包文檔的第14頁。 https://cran.r-project.org/web/packages/tm/tm.pdf –