从磁盘上的大文本文件创建词汇表时出错

时间:2018-02-22 10:52:33

标签: text2vec

我尝试从https://cran.r-project.org/web/packages/text2vec/vignettes/files-multicore.html执行示例但是使用我的文件“text” - 3.7Gb纯文本,使用Perl脚本从维基百科XML转储构建 - 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模型没有任何错误。

1 个答案:

答案 0 :(得分:0)

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