Istnieją trzy (lub możliwe nawet więcej) do rozwiązania problemu:
pierwsze, użycie pakietu tm
tylko do usuwania słowa. Oba pakiety mają do czynienia z tymi samymi obiektami, dlatego można użyć tm
tylko do usuwania słów i do pakietu RTextTools
. Nawet gdy zaglądasz do funkcji create_matrix
, używa ona funkcji tm
.
Po drugie, zmodyfikuj funkcję create_matrix
. Na przykład dodać parametr wejściowy jak own_stopwords=NULL
i dodaj następujące linie:
# 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))
trzecie, napisać własną funkcję, coś jak to:
# 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))])
}
przejdźmy rzucić okiem, czy to działa:
# 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
Dzięki! To działa idealnie. Chociaż, biorąc pod uwagę, że pakiet RTextTools traci część funkcjonalności (lub traci łatwą implementację), czy poleciłbyś je wszystkie? (Nad trzymaniem się pakietu tm) – user2175594
Myślę, że to zależy od od twojej matrycy i zatrzymania wektora słowa. Ogólnie rzecz biorąc, zrobiłbym rozwiązanie trzecie, ale jeśli macierz i wektor słowa zatrzymania są zbyt duże, mogą wystąpić problemy z pamięcią. Następnie chciałbym zrobić rozwiązanie 2, dodać linie, nazwać je np. 'create_matrix2', ale plik i źródło. Niż można użyć 'create_matrix2' w taki sam sposób jak poprzednią funkcję, ale z nową funkcją. – holzben