プラットフォームでR3.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
誰かがこれの解決策を知っていますか?
SnowballC
パッケージがインストールされていないようです。これは必須のようです。 tm_map
は、stemDocument
を使用してすべてのドキュメントでmclapply
を実行することになっています。 1つのドキュメントでstemDocument
関数を実行してみてください。そうすれば、エラーを抽出できます。
stemDocument(crude[[1]])
私の場合、エラーが発生しました:
Error in loadNamespace(name) : there is no package called ‘SnowballC’
だから私は先に進んでSnowballC
をインストールしました、そしてそれはうまくいきました。明らかに、SnowballC
は依存関係である必要があります。
私はちょうどこれに遭遇しました。少し掘り下げましたが、何が起こっているのかがわかりました。
コード行がありました 'rdevel <-tm_map(rdevel、asPlainTextDocument)'
これを実行するとエラーが発生しました
並列:: mclapply(x、FUN、...): スケジュールされたすべてのコアでユーザーコード でエラーが発生しました。
> getOption( "mc.cores"、2L) [1] 2 >
> rdevel <-tm_map(rdevel、asPlainTextDocument、mc.cores = 1) match.fun(FUN)のエラー:オブジェクト 'asPlainTextDocument'が見つかりません > rdevel <-tm_map(rdevel、asPlainTextDocument、mc.cores = 4) 警告メッセージ: 並列:: mclapply(x、FUN、...): スケジュールされたすべてのコアでユーザーコードでエラーが発生しました >
つまり...複数のコアがある場合、エラーメッセージを表示するのではなく、「parallel」は各コアにエラーがあったことを示します。役に立たない、並行して!ドットを忘れました-関数名は 'as.PlainTextDocument'であるはずです!
したがって、このエラーが発生した場合は、「mc.cores = 1」を「tm_map」呼び出しに追加して、再度実行してください。
Mac OS X10.10.5で実行されているIntelクアッドコアI7を使用してtm
で同じ問題が発生し、次の警告が表示されました。
Mclapply(content(x)、FUN、...)で、スケジュールされたコア1でユーザーコードでエラーが発生した場合、ジョブのすべての値が影響を受けます
Twitterのデータをダウンロードしてコーパスを作成していました。
CharlesCopleyのソリューションは私にも役立ちました。コーパスを作成した後、tm_map(*filename*, stemDocument, lazy = TRUE)
を使用しましたが、tmは正しく機能しました。
私は同じ問題に直面していますが、最終的にそれを修正しました。私の推測では、コーパスに「longName」または「companyNewsCorpus」という名前を付けると問題が発生しますが、コーパス値を「a」として使用するとうまく機能します。本当に変だ。
以下のコードは、このスレッドで言及されているのと同じエラーメッセージを示しています
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"))
また、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回削除します。このメソッドでは、関数内の実際のremoveWords呼び出しからわかるように、lazy = TRUEを使用したり、使用するコアの数を変更したりする必要はありませんでした。お役に立てれば!
Twitterデータで作業していて、tm_map()
関数を使用してすべてのテキストを下位に変換しようとしたときに、元の質問で同じエラーが発生しました
Warning message: In parallel::mclapply(x, FUN, ...) :
all scheduled cores encountered errors in user code
パッケージSnowballC
をインストールしてロードすると、問題は完全に解決しました。お役に立てれば。