tm_映射在Mac上的R3.0.1中有parallel::McLappy错误

tm_映射在Mac上的R3.0.1中有parallel::McLappy错误,r,parallel-processing,tm,mclapply,R,Parallel Processing,Tm,Mclapply,我在平台上使用R3.0.1:x86_64-apple-darwin10.8.0(64位) 我正在尝试使用tm库中的tm_地图。但是当我执行这个代码时 library(tm) data('crude') tm_map(crude, stemDocument) 我得到这个错误: Warning message: In parallel::mclapply(x, FUN, ...) : all scheduled cores encountered errors in user code 有人

我在平台上使用R3.0.1:x86_64-apple-darwin10.8.0(64位)

我正在尝试使用tm库中的tm_地图。但是当我执行这个代码时

library(tm)
data('crude')
tm_map(crude, stemDocument)
我得到这个错误:

Warning message:
In parallel::mclapply(x, FUN, ...) :
  all scheduled cores encountered errors in user code

有人知道这方面的解决方案吗?

我怀疑您没有安装
SnowballC
软件包,这似乎是必需的
tm_map
应该使用
mclappy
在所有文档上运行
stemDocument
。尝试在一个文档上运行
stemDocument
函数,以便提取错误:

stemDocument(crude[[1]])
对我来说,我犯了一个错误:

Error in loadNamespace(name) : there is no package called ‘SnowballC’

所以我继续安装了
SnowballC
,它成功了。显然,
SnowballC
应该是一个依赖项。

我刚刚遇到了这个。我花了点时间挖掘,但我发现了发生的事情

  • 我有一行代码“rdevel getOption”(“mc.cores”,2L) [1] 2 >
  • 啊哈时刻!告诉“tm_地图”呼叫仅使用一个核心 >rdevel rdevel 所以。。。对于多个核心,而不是给你错误信息,“parallel”只是告诉你每个核心都有一个错误。没有帮助,平行! 我忘了点-函数名应该是'as.PlainTextDocument'


    因此-如果出现此错误,请将“mc.cores=1”添加到“tm_map”调用中,然后再次运行它。

    我一直面临相同的问题,但最终得到了修复。我的猜测是,如果我将语料库命名为“longName”或“companyNewsCorpus”,我就明白了问题所在,但如果我将语料库值命名为“a”,则效果很好。真奇怪

    下面的代码给出了与此线程中提到的相同的错误消息

    companyNewsCorpus  <-Corpus(DirSource("SourceDirectory"),
                                readerControl = list(language="english"))
    companyNewsCorpus <- tm_map(companyNewsCorpus, 
                                removeWords, stopwords("english")) 
    

    公司新闻语料库我找到了一个对我来说很成功的答案:
    Charles Copley在他的文章中指出,他认为新的tm包需要显式定义
    lazy=TRUE

    那么,您的代码将如下所示

    library(tm)
    data('crude')
    tm_map(crude, stemDocument, lazy = TRUE)
    

    我还尝试了不使用SnowballC的方法,看看这是否是这两个答案的组合。这似乎对结果没有任何影响。

    我在使用tm library的removeWords函数时也遇到了同样的问题。其他一些答案,例如将核心数设置为1,确实可以删除一组英语停止词,但是我还想从我的语料库中删除一个自定义的名字和姓氏列表,这些列表的长度都超过100000个单词

    其他任何建议都无助于解决这个问题,事实证明,通过一些尝试和错误,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
    
     }
    
    #设x为语料库
    #设y是一个包含要删除的单词的向量
    
    removeManyWords我在处理Twitter数据时,在尝试使用
    tm_map()
    函数将所有文本转换为小写时,在原始问题中遇到了相同的错误

    Warning message: In parallel::mclapply(x, FUN, ...) :   
    all scheduled cores encountered errors in user code
    

    安装和加载软件包
    SnowballC
    彻底解决了问题。希望这能有所帮助。

    我在使用Mac OS X 10.10.5上运行的英特尔四核I7时,在
    tm
    中遇到了同样的问题,并收到了以下警告:

    在mclappy(content(x),FUN,…)中,调度的核心1在用户代码中遇到错误,作业的所有值都将受到影响

    我在下载推特数据后创建了一个语料库

    查尔斯·科普利的解决方案对我也很有效。
    我在创建语料库后使用了:
    tm\u-map(*filename*,stemDocument,lazy=TRUE)
    ,然后tm正常工作。

    与这个问题略有关联,但是什么解决了这个问题 库中错误(SnowballC):没有名为“SnowballC”的包在Windows 10中以管理员身份执行R并重试安装,这次成功了

    a  <-Corpus(DirSource("SourceDirectory"), 
                readerControl = list(language="english"))
    a <- tm_map(a, removeWords, stopwords("english")) 
    
    library(tm)
    data('crude')
    tm_map(crude, stemDocument, lazy = TRUE)
    
    # 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
    
     }
    
    Warning message: In parallel::mclapply(x, FUN, ...) :   
    all scheduled cores encountered errors in user code