Я хочу обучить языковой модели в Керасе, с помощью этого урока: https://machinelearningmastery.com/develop-word-based-neural-language-models-python-keras/
Мой вход состоит из: строк num: 4823744 максимальная строка: 20 Словарь Размер: 790609 Всего последовательностей: 2172328 Макс последовательностьДлина: 11
Как видно из этих строк:
num_words = 50
tokenizer = Tokenizer(num_words=num_words, lower=True)
tokenizer.fit_on_texts([data])
# determine the vocabulary size
vocab_size = len(tokenizer.word_index) + 1
Я использую токенизатор с num_words = 50. Параметр vocab_size берется из токенизатора, но он все же имеет больший размер (790 КБ).
Поэтому эта строка:
y = to_categorical(y, num_classes=vocab_size)
Вызывает ошибку памяти.
Это определение модели:
model = Sequential()
model.add(Embedding(vocab_size, 10, input_length=max_length-1))
model.add(LSTM(50))
model.add(Dense(vocab_size, activation='softmax'))
Как с этим справиться?
Я хочу иметь модель на уровне слов, а не на уровне символов. И я хочу взять хотя бы 10 тысяч самых распространенных слов.
Я думал о фильтрации слов заранее, но это может привести к тому, что языковая модель выучит ложные последовательности.
Как я могу это решить?
Спасибо