4

我尝试从语料库中构建一个 Document-Term Meatrix。我使用的命令是:

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 creator 数据框中的可用变量为:MetaID

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

如果我不包括标记化,那么到这个阶段一切都很好。但是,当我使用以下更改运行代码时:

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

它挂起。我让它一夜之间运行,但没有结果。任何帮助将非常感激。

更新:

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

这个错误是什么意思?

4

2 回答 2

4

Neep Hazarika的解决方案并没有为我解决挂起问题。我通过指定默认线程数来解决它:

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

由于NGramTokenizer似乎挂在parallel::mclapply电话上,因此更改线程数似乎可以解决它。

于 2013-11-27T19:14:21.577 回答
0

找到了解决方案。

只需在调用 RWeka 例程之前初始化 JVM。所以开始:

库(rJava).jiit(参数=“-Xmx128g”)

在加载 RWeka 库之前。

于 2013-10-01T14:26:51.037 回答