Керас плохо работает по тексту - PullRequest
0 голосов
/ 24 января 2019

Итак, у меня есть набор данных с 30000 комментариями из социальных сетей, уже классифицированных в трех категориях (хулители, нейтралы и промоутеры). Чтобы построить модель, я следовал инструкциям на этом сайте: https://www.r -bloggers.com / как подготовить данные для nlp текстовой классификации с керасом и тензорным потоком /

В конце я получил что-то вроде этого:

 indice <- sample(nrow(total), replace = FALSE)
sample <- total[indice,]
n <- 1:round(nrow(sample)*0.8,0)


df.train <- sample[n,]
df.test <- sample[-n,]

df.train <- mutate(df.train, text = paste(`Monitoramento`, `Texto do Comentário`))


text <- df.train$text
max_features <- 8000
tokenizer <- text_tokenizer(num_words = max_features) 

tokenizer %>% fit_text_tokenizer(text) 

text_seqs <- texts_to_sequences(tokenizer, text) 

maxlen <- 100
batch_size <- 32 
embedding_dims <- 50 
filters <- 64
kernel_size <- 3 
hidden_dims <- 50 
epochs <- 5 


x_train <- text_seqs %>% pad_sequences(maxlen = maxlen)
y_train <- as.factor(df.train$`Sentimento do NPS`)

model <- keras_model_sequential() %>% 
  layer_embedding(max_features, embedding_dims, input_length = maxlen) %>%
  layer_dropout(0.2) %>%
  layer_conv_1d( filters, kernel_size, padding = "valid", activation = "relu", strides = 1 ) %>%
  layer_global_max_pooling_1d() %>%
  layer_dense(hidden_dims) %>%
  layer_dropout(0.2) %>% layer_activation("relu") %>%
  layer_dense(1) %>%
  layer_activation("sigmoid") %>%
  compile( loss = "binary_crossentropy", optimizer = "adam", metrics = "accuracy" ) 


hist <- model %>%
  fit(x_train, as.numeric(y_train), batch_size = batch_size, epochs = epochs, validation_split = 0.1)

Проблема в том, что модель действительно не работает. Используя Наивный Байес, я получил 80% точности, но в Керасе я едва достиг 10%. Что-то в предварительной обработке или в построении модели, вероятно, неправильно. Может кто-нибудь определить, что это такое?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...