Какова подходящая модель LSTM для мультиклассовой классификации текста? Tensorflow 2.x - PullRequest
0 голосов
/ 15 марта 2020

Я работаю в проекте по предсказанию типа личности из теста Майерса-Бриггса . Я хотел бы получить подходящую модель LSTM для этой задачи классификации текстов мультикласса.

  • Метки : есть 16 типов личности
  • Набор данных содержит: 70 800 слов . Где был разделен на 80% для данных обучения и 20% для данных проверки.

Размер:

  • Данные обучения (X_train) : 56 640 слов.
  • Данные проверки (Y_val) : 14 160 слов.
train_data_padded.size
validation_padded.size

дополнено :

данные обучения и проверки дополняются максимальная длина 240 .

Например:

training_padded = tf.keras.preprocessing.sequence.pad_sequences(training_sequences,
                                                                  maxlen = 240,
                                                                  dtype = 'int32',
                                                                  padding = 'post',
                                                                  truncating = 'post',
                                                                  value = 0.0)

ФОРМА:

training padded: {train_data_padded.shape}
validation padded: {validation_padded.shape}

training padded: (236, 240)
validation padded: (59, 240)

Ожидаемый выход: Возможны два типа выхода:

  1. 1 вывод: где тип личности с большей точностью.
INTJ: 0,84%
16 выходных данных: , где дано 16 типов личности, показывающих каждый процент точности.
INTJ: 0,5 | INTP: 0,45 | ENTP: 0,8 | ... | ISFP: 0,20

Что я пробовал?: Я уже пробовал некоторые модели LSTM с веб-сайта TF, однако мне хотелось бы узнать ваш собственный ответ по этому топи c.

model = tf.keras.Sequential([
    tf.keras.layers.Embedding(56640, 240),
    tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(240)),
    tf.keras.layers.Dense(240, activation='relu'),
    # When we have multiple outputs, softmax convert outputs layers into a probability distribution.
    tf.keras.layers.Dense(16, activation='softmax')
    ])

#loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()

Прежде чем пытаться закрыть вопрос, пожалуйста, сделайте любое предложение, чтобы улучшить его, будет рассмотрен.

...