[英]pre-trained Word2Vec with LSTM, predict next word in sentence
我有文字语料库。 对于预处理数据,我使用gensim Word2Vec对所有文本进行了矢量化处理。 我不明白我做错了什么。 作为基础,我已经进行了此讨论(以及不错的教程), 预测下一个单词 。 代码: 源代码 。
作为输入,我有句子行。 我要接受每一行,然后接受此行的word [0]->预测word [1]。 然后使用word [0]和word [1]预测word [3],依此类推直到行尾。
在本教程中,每次都会预测单词的固定长度。 我所做的:
def on_epoch_end(epoch, _):
print('\nGenerating text after epoch: %d' % epoch)
for sentence in inpt:
word_first=sentence.split()[0]
sample = generate_next(word_first, len(sentence))
print('%s... -> %s' % (word_first, sample))
我选择第一个单词,然后用它生成所有单词。 作为第二个参数,我给出了句子的长度(不是num_generated=10
),如本教程所述。 但这对我完全没有帮助。 每次我输出预测长度为随机(在我看来)的单词序列时。
我在做什么错以及如何解决?
我的测试脚本:
texts = [
'neural network',
'this',
'it is very',
]
for text in texts:
print('%s... -> %s' % (text, generate_next(text, num_generated=5)))
输出:
neural network... -> neural network that making isometry adopted riskaverting
this... -> this dropout formalize locally secondly spectrogram
it is very... -> it is very achievable machinery our past possibly
您可以看到输出的长度是num_generated加输入的长度。
我猜您希望看到所有输出的长度都为num_generated
。 但这不是generate_next
工作方式。 此函数实际上生成num_generated
单词,并将它们附加到原始输入。
如果要输出固定长度的输出,请尝试:
generate_next(text, num_generated=5-len(text.split()))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.