Как бороться с большим vocab_size при обучении языковой модели в Keras? - PullRequest
0 голосов
/ 26 октября 2019

Я хочу обучить языковой модели в Керасе, с помощью этого урока: 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 тысяч самых распространенных слов.

Я думал о фильтрации слов заранее, но это может привести к тому, что языковая модель выучит ложные последовательности.

Как я могу это решить?

Спасибо

1 Ответ

0 голосов
/ 29 октября 2019

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

...