так что мне интересно, не могли бы вы взглянуть на это? Еще раз спасибо за вашу помощь, это бесценно!

даю текстовый классификатор твитов Клинтона и Трампа (данные можно найти наKaggle ).

Я делаю EDA и моделирование с использованиемquanteda пакет:

library(dplyr)
library(stringr)
library(quanteda)
library(lime)

#data prep
tweet_csv <- read_csv("tweets.csv")
tweet_data <- tweet_csv %>% 
  select(author = handle,
     text,
     retweet_count,
     favorite_count,
     source_url,
     timestamp = time) %>% 
mutate(date = as_date(str_sub(timestamp, 1, 10)),
     hour = hour(hms(str_sub(timestamp, 12, 19))),
     tweet_num = row_number()) %>% 
select(-timestamp)

# creating corpus and dfm
tweet_corpus <- corpus(tweet_data)

edited_dfm <- dfm(tweet_corpus, remove_url = TRUE, remove_punct = TRUE,     remove = stopwords("english"))

set.seed(32984)
trainIndex <- sample.int(n = nrow(tweet_csv), size =     floor(.8*nrow(tweet_csv)), replace = F)

train_dfm <- edited_dfm[as.vector(trainIndex), ]
train_raw <- tweet_data[as.vector(trainIndex), ]
train_label <- train_raw$author == "realDonaldTrump"

test_dfm <- edited_dfm[-as.vector(trainIndex), ]
test_raw <- tweet_data[-as.vector(trainIndex), ]
test_label <- test_raw$author == "realDonaldTrump"

# making sure train and test sets have the same features
test_dfm <- dfm_select(test_dfm, train_dfm)

# using quanteda's NB model
nb_model <- quanteda::textmodel_nb(train_dfm, train_labels)
nb_preds <- predict(nb_model, test_dfm) 


# defining textmodel_nb as classification model
class(nb_model)

model_type.textmodel_nb_fitted <- function(x, ...) {
  return("classification")
}

# a wrapper-up function for data preprocessing

get_matrix <- function(df){
  corpus <- corpus(df)
  dfm <- dfm(corpus, remove_url = TRUE, remove_punct = TRUE, remove = stopwords("english"))
}

тогда я определяю объяснитель - здесь нет проблем:

explainer <- lime(train_raw[1:5],
              model = nb_model,
              preprocess = get_matrix)

Но когда я запускаю объяснитель, даже на том же наборе данных, что и вexplainerЯ получаю ошибку:

explanation <- lime::explain(train_raw[1:5], 
                              explainer, 
                              n_labels = 1,
                              n_features = 6,
                              cols = 2,
                              verbose = 0)

Ошибка вgnett.textmodel_nb_fitted (x, newdata = newdata, type = type,: набор функций в newdata отличается от набора в обучающем наборе

Это как-то связано сquanteda а дфмс? Честно говоря, я не понимаю, почему это должно произойти. Любая помощь будет отличной, спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос