Есть три (или возможно даже больше) решения вашей проблемы:
Во-первых, использовать tm
пакет только для удаления слов. Оба пакета имеют дело с одними и теми же объектами, поэтому вы можете использовать tm
только для удаления слов и пакета RTextTools
. Даже если вы заглянете внутрь функции create_matrix
, она использует функции tm
.
Во-вторых, измените функцию create_matrix
. Например добавить входной параметр, как own_stopwords=NULL
и добавьте следующие строки:
# 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))
В-третьих, написать свою собственную функцию, что-то вроде этого:
# 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))])
}
давайте посмотрим, работает ли он:
# 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
НТН
Спасибо! Это прекрасно работает. Хотя, учитывая, что пакет RTextTools теряет часть функциональности (или теряет простую реализацию), вы бы рекомендовали использовать все это? (Над прилипанием к пакету tm) – user2175594
Я думаю, что это зависит от того, что из-за вашей матрицы и остановит вектор-слово. В общем, я бы сделал решение три, но если матрица и вектор стоп-слова слишком велики, вы можете получить проблемы с памятью. Чем я буду делать решение 2, добавьте строки, назовите его, например. 'create_matrix2', но это на файл и его источник. Чем вы можете использовать 'create_matrix2' так же, как и старая функция, но с новой функцией. – holzben