2017-02-20 8 views
-1

topicmodel 코드를 실행할 때 매우 이상한 오류가 발생했습니다. 기본적으로 사용자 주석이있는 .csv 파일이 있습니다. 나는 각각의 주석이 하나의 문서 인 dtm을 만들고 싶다. 나는 8k 개의 주석 샘플을 가져 와서 다음 코드를 사용했다.R : topicmodels, 2 개의 유사한 문서, 코드가 하나와 작동, 다른 코드와 일치하지 않음

> #LOAD LIBRARYS 
> 
> library(tm) 
> library(SnowballC) 
> library(stringr) 
> library(tictoc) 
> tic() 
> 
> #SET FILE LOCATION 
> file_loc <- "C:/Users/Andreas/Desktop/first8k.csv" 
> 
> #LOAD DOCUMENTS 
> Database <- read.csv(file_loc, header = FALSE) 
> require(tm) 
> 
> #PROCEED 
> Database <- Corpus(DataframeSource(Database)) 
> 
> Database <-tm_map(Database,content_transformer(tolower)) 
> 
> 
> Database <- tm_map(Database, removePunctuation) 
> Database <- tm_map(Database, removeNumbers) 
> Database <- tm_map(Database, removeWords, stopwords("english")) 
> Database <- tm_map(Database, stripWhitespace) 
> 
> 
> myStopwords <- c("some", "individual", "stop","words") 
> Database <- tm_map(Database, removeWords, myStopwords) 
> 
> Database <- tm_map(Database,stemDocument) 
> 
> 
> dtm <- DocumentTermMatrix(Database,   control=list(minDocFreq=2,minWordLength=2)) 
> 
> row_total = apply(dtm, 1, sum) 
> dtm.new = dtm[row_total>0,] 
> 
> removeSparseTerms(dtm, .99) 
> 
>>Outcome:DocumentTermMatrix (documents: 12753, terms: 194) 
>Non-/sparse entries: 66261/2407821 
>Sparsity   : 97% 
>Maximal term length: 11 
>Weighting   : term frequency (tf) 
> 
> #TOPICMODELLING 
> 
> library(topicmodels) 
> 
> 
> 
> burnin <- 100 
> iter <- 500 
> thin <- 100 
> seed <-list(200,5,500,3700,1666) 
> nstart <- 5 
> best <- TRUE 
> 
> 
> k <- 12 
> 
> 
> ldaOut <-LDA(dtm.new,k, method="Gibbs", control=list(nstart=nstart, seed = seed, best=best, burnin = burnin, iter = iter, thin=thin)) 
> 

그래서이 코드는 잘 동작한다. 내가 8K 의견, 또한 CSV 파일과 같은 형식의 또 다른 샘플을 채취하는 경우 등 다음과 같은 오류가 발생합니다

> library(tm) 
> library(SnowballC) 
> library(stringr) 
> library(tictoc) 
> tic() 
> 
> #SET FILE LOCATION 
> file_loc <- "C:/Users/Andreas/Desktop/try8k.csv" 
> 
> #LOAD DOCUMENTS 
> Database <- read.csv(file_loc, header = FALSE) 
> require(tm) 
> 
> #PROCEED 
> Database <- Corpus(DataframeSource(Database)) 
> 
> Database <-tm_map(Database,content_transformer(tolower)) 
> 
> 
> Database <- tm_map(Database, removePunctuation) 
> Database <- tm_map(Database, removeNumbers) 
> Database <- tm_map(Database, removeWords, stopwords("english")) 
> Database <- tm_map(Database, stripWhitespace) 
> 
> 
> myStopwords <- c("some", "individual", "stop","words") 
> Database <- tm_map(Database, removeWords, myStopwords) 
> 
> Database <- tm_map(Database,stemDocument) 
> 
> dtm <- DocumentTermMatrix(Database,control=list(minDocFreq=2,minWordLength=2)) 
> 
> row_total = apply(dtm, 1, sum) 
> dtm.new = dtm[row_total>0,] 
> 
> removeSparseTerms(dtm, .99) 
> 
>>Outcome:DocumentTermMatrix (documents: 9875, terms: 0) 
Non-/sparse entries: 0/0 
Sparsity   : 100% 
Maximal term length: 0 
Weighting   : term frequency (tf) 
> 
> #TOPICMODELLING 
> 
> library(topicmodels) 
> 
> 
> 
> burnin <- 100 
> iter <- 500 
> thin <- 100 
> seed <-list(200,5,500,3700,1666) 
> nstart <- 5 
> best <- TRUE 
> 
> 
> k <- 12 
> 
> 
> ldaOut <-LDA(dtm.new,k, method="Gibbs", control=list(nstart=nstart, seed = seed, best=best, burnin = burnin, iter = iter, thin=thin)) 

>Fehler in obj[[i]][[which.max(sapply(obj[[i]], logLik))]] : 
>attempt to select less than one element in get1index 

내가 DTM 뭔가를 추측 9875 개 문서하지만 전혀 용어가 그것이 말하는 이후 워킹되지 않는다 . 하지만 코드가 한 샘플에서는 작동하지만 다른 샘플에서는 작동하지 않는 이유를 전혀 알지 못합니다. 코드에서 잘못된 점을 찾았거나 다른 실수를 발견하면 알려주십시오.

미리 감사드립니다.

답변

-1

= 0 그래서 prob가 있습니다

+0

답장을 보내 주셔서 감사합니다. 하지만 제가 말씀 드렸듯이 제 2 데이터베이스는 비슷합니다. 그래서 두 번째 것은 물론 용어를 포함합니다. 내가 이해하지 못하는 것은 왜 R이 그 용어들을 걸러 내고 그렇지 않다는 것을 알아 차리지 못한다는 것이다. 그것의 전처리는 ... – Andres