R을 사용하여 텍스트 마이닝에서 학기 논문을 작성하고 있습니다. Google의 과제는 기사의 음색 (양/음)을 추측하는 것입니다. 기사는 각 폴더에 저장됩니다. 트레이닝 샘플을 통해 학습 할 분류 시스템을 만들어야합니다. 코드를 다시 사용했습니다. http://www.youtube.com/watch?v=j1V2McKbkLo 마지막 줄을 제외한 전체 코드가 성공적으로 실행되었습니다. 다음은 코드입니다. 내가 이것을 실행하려고 할 때 외국 함수 호출에서 NA/NaN/Inf (arg 6)
tone<- c("Positive", "Negative")
folderpath <- "C:/Users/Tanmay/Desktop/R practice/Week8"
options(stringAsFactors = FALSE)
corpus<-Corpus(DirSource(folderpath))
corpuscopy<-corpus
summary(corpus)
inspect(corpus)
#Clean data
CleanCorpus <- function(corpus){
corpustemp <- tm_map(corpus, removeNumbers)
corpustemp <- tm_map(corpus, removePunctuation)
corpustemp <- tm_map(corpus, tolower)
corpustemp <- tm_map(corpus, removeWords, stopwords("english"))
corpustemp <- tm_map(corpus, stemDocument,language="english")
corpustemp <- tm_map(corpus, stripWhitespace)
return(corpustemp)
}
#Document term matrix
generateTDM <- function(tone,path) {
corpusdir <- sprintf("%s/%s",path,tone)
corpus<- Corpus(DirSource(directory=corpusdir ,encoding = "ANSI"))
corpustemp <- CleanCorpus(corpus)
corpusclean <- DocumentTermMatrix(corpustemp)
corpusclean <- removeSparseTerms(corpusclean , 0.7)
result <- list(Tone = tone, tdm = corpusclean)
}
tdm <- lapply(tone,generateTDM,path=folderpath)
#Attach tone
ToneBindTotdm <- function(tdm){
temp.mat <- data.matrix(tdm[["tdm"]])
temp.df <- as.data.frame(temp.mat)
temp.df <- cbind(temp.df,rep(tdm[["Tone"]]),nrow(temp.df))
colnames(temp.df)[ncol(temp.df)] <- "PredictTone"
return(temp.df)
}
Tonetdm <- lapply(tdm,ToneBindTotdm)
#Stack
Stacktdm <- do.call(rbind.fill,Tonetdm)
Stacktdm[is.na(Stacktdm)] <- 0
#Holdout
trainid <- sample(nrow(Stacktdm),ceiling(nrow(Stacktdm) * 0.7))
testid <- (1:nrow(Stacktdm)) [- trainid]
#knn
tdmone <- Stacktdm[,"PredictTone"]
tdmone.nl <- Stacktdm[, !colnames(Stacktdm) %in% "PredictTone"]
knnPredict <- knn(tdmone.nl[trainid,],tdmone.nl[testid,],tdmone[trainid],k=5)
, 내가 마지막 줄 (KNN)에서 오류가 발생했습니다 :
**Error in knn(tdmone.nl[trainid, ], tdmone.nl[testid, ], tdmone[trainid], :
NA/NaN/Inf in foreign function call (arg 6)
In addition: Warning messages:
1: In knn(tdmone.nl[trainid, ], tdmone.nl[testid, ], tdmone[trainid], :
NAs introduced by coercion
2: In knn(tdmone.nl[trainid, ], tdmone.nl[testid, ], tdmone[trainid], :
NAs introduced by coercion**
사람이 나를 도와 주 시겠어요. 또한 분류하는 다른 더 간단하고 더 나은 방법이있는 경우에 저에게 그 (것)들을 가르치십시오. 긴 게시물에 대해 고맙고 미안합니다.
"강요에 의해 도입 된 NAs"는 종종 함수에 전달한 객체가 생각한 것과 다른 유형이라는 것을 의미합니다. 그러나, [재현 가능한 예] (http://stackoverflow.com/q/5963269/1412059)가 없으면 조언을하기가 어렵습니다. – Roland
그러나 그것은 단지 경고의 권리입니다. 오류 메시지에 더 관심이있었습니다. – user2647221
글쎄, 하나의 함수는 그것이 'NA'값을 반환했다는 경고를합니다. 나는 당신이 그것이 적절하다고 생각하지 않는 이유를 이해하지 못합니다. 결국 오류 메시지는 다른 함수가 NA/NaN/Inf를 전달한다는 것을 알려줍니다. – Roland