2013-09-26 3 views
3

Я пытаюсь построить документарно-мерцающую оболочку из корпуса. Команды, которые я использовал являются:Почему R зависает при использовании NGramTokenizer?

library(parallel) 
library(tm) 
library(RWeka) 
library(topicmodels) 
library(RTextTools) 
cl=makeCluster(detectCores()) 
invisible(clusterEvalQ(cl, library(tm))) 
invisible(clusterEvalQ(cl, library(RWeka))) 
invisible(clusterEvalQ(cl, library(topicmodels))) 
invisible(clusterEvalQ(cl, library(RTextTools))) 
myCorpus <-Corpus(DirSource("/home/neeph/Test/DMOZ_Business"), encoding="UTF-8", readerControl=list(reader=readPlain)) 
removeURL <- function(x) gsub("http[[:alnum:]]*", "", x) 
myCorpus <- tm_map(myCorpus, removeURL) 
removeAmp <- function(x) gsub("&amp;", "", x) 
myCorpus <- tm_map(myCorpus, removeAmp) 
removeWWW <- function(x) gsub("www[[:alnum:]]*", "", x) 
myCorpus <- tm_map(myCorpus, removeWWW) 
myCorpus <- tm_map(myCorpus, tolower) 
myCorpus <- tm_map(myCorpus, removeNumbers) 
myCorpus <- tm_map(myCorpus, removePunctuation) 
myCorpus <- tm_map(myCorpus, removeWords, stopwords("english")) 
myCorpus <- tm_map(myCorpus, removeWords, stopwords("SMART")) 
myCorpus <- tm_map(myCorpus, stripWhitespace) 
summary(myCorpus)  

В корпусе с 696 текстовых документов

Метаданные состоит из 2-х пар тег-значение и фрейм данных Доступные теги: create_date создатель Доступные переменные в данных кадр являются: MetaID

myDtm <- DocumentTermMatrix(myCorpus, control = list(wordLengths = c(1,Inf))) 

Все отлично работает ДО этой стадии, если я не включаю tokenizing. Однако, когда я запускаю код со следующим изменением:

dictCorpus <- myCorpus 
myDtm <- DocumentTermMatrix(myCorpus, control = list(wordlengths=c(1,Inf),tokenize=NGramTokenizer, dictionary=dictCorpus)) 

он висит. Я сохранил его на ночь, но никаких результатов. Любая помощь приветствуется.

Update:

summary(myDtm)  
Error in order(list(i = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, : 
    unimplemented type 'list' in 'orderVector1' 

Что означает эта ошибка?

ответ

0

Найдено решение.

Просто нужно инициализировать JVM перед вызовом процедур RWeka. Так что начните с:

библиотека (rJava) .jinit (параметры = "- Xmx128g")

перед загрузкой библиотеки RWeka.

3

Решение Neep Hazarika не устранило проблему зависания для меня. Я работал вокруг него, указав количество потоков по умолчанию:

# Sets the default number of threads to use 
options(mc.cores=1) 

С NGramTokenizer подвисает на parallel::mclapply вызова, меняя количество потоков, кажется, работает вокруг него.

Смежные вопросы