Es gibt drei (oder möglich, noch mehr) Lösungen für Ihr Problem:
Verwenden Sie zuerst das tm
Paket nur für Worte zu entfernen. Beide Pakete befassen sich mit den gleichen Objekten, daher können Sie tm
nur zum Entfernen von Wörtern und als RTextTools
Paket verwenden. Auch wenn Sie in die Funktion create_matrix
schauen, werden tm
Funktionen verwendet.
Zweitens, ändern Sie die create_matrix
Funktion. Zum Beispiel einen Eingabeparameter wie own_stopwords=NULL
hinzufügen und fügen Sie die folgenden Zeilen:
# existing line
corpus <- Corpus(VectorSource(trainingColumn),
readerControl = list(language = language))
# after that add this new line
if(!is.null(own_stopwords)) corpus <- tm_map(corpus, removeWords,
words=as.character(own_stopwords))
Drittens, eine eigene Funktion, so etwas schreiben:
# excluder function
remove_my_stopwords<-function(own_stw, dtm){
ind<-sapply(own_stw, function(x, words){
if(any(x==words)) return(which(x==words)) else return(NA)
}, words=colnames(dtm))
return(dtm[ ,-c(na.omit(ind))])
}
lass uns einen Blick, ob es funktioniert:
# let´s test it
data(NYTimes)
data <- NYTimes[sample(1:3100, size=10,replace=FALSE),]
matrix <- create_matrix(cbind(data["Title"], data["Subject"]))
head(colnames(matrix), 5)
# [1] "109" "200th" "abc" "amid" "anniversary"
# let´s consider some "own" stopwords as words above
ostw <- head(colnames(matrix), 5)
matrix2<-remove_my_stopwords(own_stw=ostw, dtm=matrix)
# check if they are still there
sapply(ostw, function(x, words) any(x==words), words=colnames(matrix2))
#109 200th abc amid anniversary
#FALSE FALSE FALSE FALSE FALSE
HTH
Vielen Dank! Das funktioniert perfekt. Auch wenn das RTextTools-Paket einen Teil der Funktionalität verliert (oder eine einfache Implementierung verliert), empfehlen Sie, alles zu verwenden? (Überkleben mit dem tm-Paket) – user2175594
Ich denke, es hängt von der seit Ihrer Matrix und Stop-Word-Vektor. Im Allgemeinen würde ich Lösung drei tun, aber wenn die Matrix und der Stoppwortvektor zu groß sind, können Speicherprobleme auftreten. Dann würde ich Lösung 2 machen, die Zeilen hinzufügen, sie z. B. benennen. 'create_matrix2', aber es in einer Datei und Quelle es. Dann können Sie 'create_matrix2' genauso verwenden wie die alte Funktion, aber mit der neuen Funktion. – holzben