我在平台上使用R 3.0.1:x86_64-apple-darwin10.8.0(64位)
我正在尝试使用tm库中的tm_map。但是当我执行这段代码时
library(tm)
data('crude')
tm_map(crude, stemDocument)
我收到此错误:
Warning message:
In parallel::mclapply(x, FUN, ...) :
all scheduled cores encountered errors in user code
有没有人知道这方面的解决方案?
答案 0 :(得分:29)
我怀疑您没有安装SnowballC
软件包,这似乎是必需的。 tm_map
应该使用stemDocument
在所有文档上运行mclapply
。尝试在一个文档上运行stemDocument
函数,以便提取错误:
stemDocument(crude[[1]])
对我来说,我收到了一个错误:
Error in loadNamespace(name) : there is no package called ‘SnowballC’
所以我继续安装SnowballC
并且它有效。显然,SnowballC
应该是一种依赖。
答案 1 :(得分:17)
我刚碰到这个。它花了我一些挖掘但我发现了发生了什么。
我有一行代码'rdevel< - tm_map(rdevel,asPlainTextDocument)'
运行此操作会产生错误
In parallel::mclapply(x, FUN, ...) : all scheduled cores encountered errors in user code
> getOption("mc.cores", 2L) [1] 2 >
> rdevel <- tm_map(rdevel, asPlainTextDocument, mc.cores=1) Error in match.fun(FUN) : object 'asPlainTextDocument' not found > rdevel <- tm_map(rdevel, asPlainTextDocument, mc.cores=4) Warning message: In parallel::mclapply(x, FUN, ...) : all scheduled cores encountered errors in user code >
所以...有多个核心,而不是给你错误信息,'parallel'只是告诉你每个核心都有错误。没有帮助,平行! 我忘记了点 - 函数名称应该是'as.PlainTextDocument'!
所以 - 如果你收到此错误,请在'tm_map'调用中添加'mc.cores = 1'并再次运行。
答案 2 :(得分:11)
我在question找到了一个对我来说成功的答案:
Charles Copley在他的answer中表示他认为新的tm包需要明确定义lazy = TRUE
。
所以,你的代码看起来像这样
library(tm)
data('crude')
tm_map(crude, stemDocument, lazy = TRUE)
我也尝试过没有SnowballC,看看它是否是这两个答案的组合。它似乎没有影响结果。
答案 3 :(得分:3)
我一直面临同样的问题,但最终还是修好了。我的猜测是,如果我将语料库命名为&#34; longName&#34;或者&#34; companyNewsCorpus&#34;,我得到了这个问题,但是如果我使用语料库值作为&#34; a&#34;,它运作良好。真的很奇怪。
下面的代码提供了此线程中提到的相同错误消息
companyNewsCorpus <-Corpus(DirSource("SourceDirectory"),
readerControl = list(language="english"))
companyNewsCorpus <- tm_map(companyNewsCorpus,
removeWords, stopwords("english"))
但是如果我在下面转换它,它可以毫无问题地工作。
a <-Corpus(DirSource("SourceDirectory"),
readerControl = list(language="english"))
a <- tm_map(a, removeWords, stopwords("english"))
答案 4 :(得分:3)
我使用在Mac OS X 10.10.5上运行的英特尔四核I7在tm_map(*filename*, stemDocument, lazy = TRUE)
遇到了同样的问题,并收到以下警告:
在mclapply(content(x),FUN,...)中,计划的核心1在用户代码中遇到错误,该作业的所有值都将受到影响
我在下载Twitter数据后创建了一个语料库。
Charles Copley的解决方案也适用于我。 我在创建语料库后使用了{{1}},然后tm正常工作。
答案 5 :(得分:1)
在使用tm库的removeWords函数时,我也遇到了同样的问题。其他一些答案,例如将核心数设置为1,确实可以删除一组英语停用词,但是我还要删除我的语料库中的名字和姓氏的自定义列表,这些列表超过100,000每个字都很长。
其他任何建议都没有帮助解决这个问题,事实证明,通过一些试验和错误,removeWords似乎在向量中限制了1000个单词。所以我写了这个功能,为我解决了这个问题:
# Let x be a corpus
# Let y be a vector containing words to remove
removeManyWords <- function (x, y) {
n <- ceiling(length(y)/1000)
s <- 1
e <- 1000
for (i in 1:n) {
x <- tm_map(x, content_transformer(removeWords), y[s:e])
s <- s + 1000
e <- e + 1000
}
x
}
此函数基本上计算我想要移除的单词向量中有多少单词,然后将其除以1000并向上舍入为最接近的整数n。然后我们循环遍历单词向量以删除n次。使用此方法,我不需要使用lazy = TRUE或更改要使用的核心数,这可以从函数中的实际removeWords调用中看出。希望这有帮助!
答案 6 :(得分:0)
我正在研究Twitter数据,并且在尝试使用tm_map()
函数将所有文本转换为较低时,在原始问题中出现了同样的错误
Warning message: In parallel::mclapply(x, FUN, ...) :
all scheduled cores encountered errors in user code
安装和加载包SnowballC
完全解决了问题。希望这会有所帮助。
答案 7 :(得分:-1)
与此问题稍有关系,但对我来说固定的是 库(SnowballC)中的错误:Windows 10中没有名为“ SnowballC”的程序包以管理员身份执行R并重试安装,这次它可以正常工作