0

我尝试从https://cran.r-project.org/web/packages/text2vec/vignettes/files-multicore.html执行示例,但使用我的文件“文本” - 3.7Gb 纯文本,从维基百科 XML 转储构建来自这里的 Perl 脚本 - http://mattmahoney.net/dc/textdata.html

setwd("c:/rtest")
library(text2vec)
library(doParallel)
N_WORKERS = 2
registerDoParallel(N_WORKERS)
it_files_par = ifiles_parallel(file_paths = "text")
it_token_par = itoken_parallel(it_files_par, preprocessor = tolower, tokenizer = word_tokenizer)
vocab = create_vocabulary(it_token_par)

这会导致错误:

Error in unserialize(socklist[[n]]) : error reading from connection

我有 8Gb RAM,从这个文件创建 word2vec 模型没有任何错误。

4

1 回答 1

0

首先,在单个文件上使用并行迭代器是没有意义的——每个文件都在一个单独的 R 工作进程中处理。所以这里会比刚才更糟itoken。它还涉及将每个工作人员的结果发送到主进程。在这里,我们看到结果太大而无法通过套接字发送。长话短说 - 只需使用itoken或将您的文件拆分为几个较小的文件。

于 2018-02-22T13:17:35.857 回答