Windows 7コンピュータでRのためにwordnetパッケージを使用して並列処理を使用しようとしています。特に、私は名詞のリストの同義語を見つけようとしています。私は何をしようとしているのかを示すために、いくつかのサンプルコードを作成しましたが、それは正しく並行して実行されないようです。それは労働者を立ち上げ始めており、労働者の1人で計算していますが、他の人は計算していません。私が下で作ったリストは、各スロットに4ワードの長さがあります。利用可能なコアの数でリストを分割しようとしていて、リストのサブセットを各コアに送信しようとしています。次に、sapply関数は(並列ループ内の)4ワードの同義語を取得します。私もSnowfallでこれをやってみましたが、辞書をエクスポートすることができませんでした(sfExportはそれをしていないようでした)。私はforeachループ内で ".export"を使用していません。なぜなら、辞書には位置していないエラーも出ていますが、それを並列ループ内に置くことは、動作させるようです。どんな助けでも大歓迎です。r(Windows 7の場合)でのwordnetの並列使用
library(wordnet)
library(foreach)
library(doSMP)
library(rJava)
NbrOfCores <- 2
workers <- startWorkers(NbrOfCores) # number of cores
registerDoSMP(workers)
getDoParName() # check name of parallel backend
getDoParVersion() # check version of parallel backend
getDoParWorkers() # check number of workers
set.seed(1)
setDict<-setDict("C:\\Program Files (x86)\\WordNet\\2.1\\dict\\")
initDict<-initDict("C:\\Program Files (x86)\\WordNet\\2.1\\dict\\")
dict<-getDictInstance()
words <- list(c("cat", "dog", "bird"),c("mouse", "iguana", "fish"),c("car", "tree", "house"),c("shoe", "shirt", "hat"))
rows=length(words) #4
prow<-floor(rows/NbrOfCores) #2
nouns<-foreach(i=1:NbrOfCores, .combine = c, .packages ="wordnet","rJava") %dopar% {
setDict<-setDict("C:\\Program Files (x86)\\WordNet\\2.1\\dict\\")
initDict<-initDict("C:\\Program Files (x86)\\WordNet\\2.1\\dict\\")
dict<-getDictInstance()
foreach(j=(prow*(i-1)+1):(prow*i)) %do% sapply(words[[j]],synonyms,"NOUN")}
ありがとう、コードの。私は昨日、私の主な問題は私が自分の環境変数を適切に定義していなかったということでした。ユーザーとシステムにWNHOMEを定義する必要がありました。私はすでにWNSEARCHDIRを持っていましたが、WNHOMEなしでは辞書を見つけることができないようです。私はあなたのコードがより好きですが、私は最近doSMPに悩まされています。クラスターの開始と終了に関してはかなり予測できないので、私は雪(または降雪)に切り替えると思います。 –