我想通过本教程在Keras中训练语言模型:https://machinelearningmastery.com/develop-word-based-neural-language-models-python-keras/
我的输入内容包括:行数: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来自令牌生成器,但它仍然是较大的大小(790K)。
因此,此行:
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'))
我该如何处理?
我确实想拥有单词级模型而不是字符级模型。而且我确实希望至少使用10K的最常用字词。
我曾考虑过事先过滤单词,但这可能会使语言模型学习错误的序列。
我该如何解决?
谢谢
Fasttext是计算大词汇量嵌入的一种更好的方法-它不需要每个单词都有字典条目。