gensim中的增量Word2Vec模型训练

时间:2017-03-12 09:58:27

标签: python deep-learning gensim word2vec

我试图逐步训练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")

1 个答案:

答案 0 :(得分:7)

默认情况下,gensim Word2Vec只进行一次词汇发现。当您向初始构造函数(执行自动词汇扫描训练)提供类似sentences的语料库时,或者当您调用build_vocab()时,会发生这种情况。虽然您可以继续致电train(),但不会识别任何新词。

支持(我会考虑实验性)使用新的文本示例调用build_vocab()update=True参数来扩展词汇表。虽然这会让更多的train()电话同时训练新旧词汇,但仍有许多警告:

  • 这样的顺序训练可能不会导致模型像交错的所有示例一样好或自相一致。 (例如,继续训练可能会在以后的批次中任意远离批次,而不是重新呈现的单词/后期批量学习。)
  • train()的此类调用应使用其中一个可选参数来准确估计新的批量大小(单词或示例),以便正确完成学习率衰减和进度记录
  • 核心算法和基础理论不是基于这样的批处理,并且学习率从高到低多次重启,因此结果的解释 - 以及结果向量的相对强度/平衡 - 不是

如果可能,将所有示例合并为一个语料库,然后进行一次大型词汇发现,然后进行培训。