我试图训练由Gensim生成的逐步训练Word2Vec模型。但是我发现词汇大小不会增加,只有Word2Vec型号的权重更新。但是我需要更新词汇和模型大小。
#Load data
sentences = []
....................
#Training
model = Word2Vec(sentences, size=100)
model.save("modelbygensim.txt")
model.save_word2vec_format("modelbygensim_text.txt")
#Incremental Training
model = Word2Vec.load('modelbygensim.txt')
model.train(sentences)
model.save("modelbygensim_incremental.txt")
model.save_word2vec_format("modelbygensim_text_incremental.txt")
默认情况下,gensim word2vec仅一次词汇 - 发现一次。当您将像sentences
这样的语料库提供给初始构造函数(自动词汇can 和 train)或调用build_vocab()
时,它将发生。虽然您可以继续致电train()
,但不会识别新单词。
有支持(我将考虑实验)用新的文本示例调用build_vocab()
和一个update=True
参数来扩展词汇。虽然这会让进一步的train()
调用两个旧单词,但有许多警告:
- 这样的顺序训练可能不会导致模型像提供所有示例一样良好的模型,或者是自洽的。(例如,持续的培训可能会漂移单词,从较早的批次中任意地学习,而不是较早的批次。)
- 对
train()
的此类调用应使用可选参数之一,以准确估算新的批次大小(在单词或示例中),以便正确完成学习率的衰减和进度杂物 - 核心算法和基本理论并非基于此类批处理,而是从高低到低点的多次学习率重新启动,因此结果的解释以及结果向量的相对强度/平衡不是 - 不是等
如果尽可能,将所有示例组合到一个语料库中,然后进行一个大型词汇量,然后训练。