термин частота - обратная частота документа - PullRequest
0 голосов
/ 05 февраля 2019

Когда я добавил «есть» во втором документе и аргумент weighting = weightTfIdf должен уменьшить вес «есть», но это не так.varImp(fit) всегда один и тот же?Поэтому, пожалуйста, запустите код с несколькими «есть» и с одним «есть» и посмотрите результат train и varImp(fit).Надеюсь, что вы можете помочь, большое спасибо заранее.

library(caret)
library(tm)
### Training data.
data <- c('Cats like to chase mice.', 'Dogs like to eat eat eat eat eat eat big bones.')
corpus <- VCorpus(VectorSource(data))

corpus <- tm_map(corpus , removePunctuation)
corpus <- tm_map(corpus , removeNumbers)
corpus <- tm_map(corpus , content_transformer(tolower))
corpus <- tm_map(corpus , removeWords, stopwords("en"))
corpus <- tm_map(corpus , stripWhitespace)
corpus <- tm_map(corpus, stemDocument)

dtm <- tm::DocumentTermMatrix(corpus,
                              control = list(weighting=weightTfIdf))


train <- as.matrix(dtm); train
train <- cbind(train, c(0, 1))
colnames(train)[ncol(train)] <- 'y'
train <- as.data.frame(train)
train$y <- as.factor(train$y)

### Train.
fit <- train(y ~ ., data = train, method = 'bayesglm')
varImp(fit)

### Check accuracy on training.
predict(fit, newdata = train)

### Test data.
data2 <- c('Bats eat bugs.')
corpus <- VCorpus(VectorSource(data2))
dtm <- DocumentTermMatrix(corpus, control = list(dictionary = Terms(dtm), removePunctuation = TRUE, stopwords = TRUE, stemming = TRUE, removeNumbers = TRUE))
test <- as.matrix(dtm)

### Check accuracy on test.
predict(fit, newdata = test)
...