将矩阵转换回DocumentTermMatrix

时间:2016-04-06 11:13:45

标签: r twitter text-mining tm

我对文本挖掘很陌生,但我想在一段时间内分析推文。

我几周前从推特上发了推文,现在才开始分析它。我将DocumentTermMatrix保存为矩阵,并且很难将其转换回DocumentTermMatrix以对数据执行潜在的dirichlet分配。

scrap<- searchTwitter("#RepealThe8th", n=1500)
twscrap <- sapply(scrap, function(x) x$getText())
corpus1 <- Corpus(VectorSource(twscrap))
corpus1 <- tm_map(corpus1,
              content_transformer(function(x) iconv(x, to='UTF-8-MAC', sub='byte')),
              mc.cores=1)

corpus1 <- tm_map(corpus1, content_transformer(tolower), mc.cores=1)
corpus1 <- tm_map(corpus1, removePunctuation, mc.cores=1)
corpus1 <- tm_map(corpus1, function(x)removeWords(x,stopwords()), mc.cores=1)
corpus1 <- tm_map(corpus1, stemDocument, mc.cores=1)

myStopwords = c("https", "http");
idx = which(myStopwords == "r");
myStopwords = myStopwords[-idx];
corpus1 = tm_map(corpus1, removeWords, myStopwords);

corpus1 <- tm_map(corpus1, stripWhitespace) 
plaincorpus1 <- tm_map(corpus1, PlainTextDocument)
dtm <- DocumentTermMatrix(plaincorpus1, control = list(minWordLength = 3));
m <- as.matrix(dtm)

这就是我最初保存数据的方式

write.csv(m, "matrix.csv")

当我加载数据时,我无法将其恢复为DTM格式

m <- read.csv("matrix.csv",header=TRUE)
corpNR<-Corpus(DataframeSource(xNR))
dtmNR<-DocumentTermMatrix(corpNR)
dtmNR$dimnames$Terms <- colnames(xNR) #add terms to DocTermMetrix
str(dtmNR)
dtmNR$ncol <- length(dtmNR$dimnames$Terms) #give it the right no. of cols

这给了我一个右侧的DTM,但我不知道如何获得dtmNR $ i,dtmNR $ j或dtmNR $ v的正确数据

我也试过

library(qdap)
m1 <- as.Corpus(m)
#Error in data.frame(grouping, text.var, check.names = FALSE, stringsAsFactors = FALSE) : 
#  arguments imply differing number of rows: 2062, 1500
#dtm1 <- as.DocumentTermMatrix(m1)

dtm1 <- as.TermDocumentMatrix(m1)
#Error in .TermDocumentMatrix(t(x), weighting) : 
#  argument "weighting" is missing, with no default

1 个答案:

答案 0 :(得分:0)

不要把它写到像这样的csv文件中。

相反,请使用save(file='myDTM.RData', list=list(dtm)) # or similar;然后load('myDTM.RData')