Gensim中的增量Word2Vec模型训练

Rab*_*ndi 4 python gensim word2vec deep-learning

我试图逐步训练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")
Run Code Online (Sandbox Code Playgroud)

goj*_*omo 10

默认情况下,gensim Word2Vec仅进行一次词汇发现。当您sentences向初始构造函数提供一个像您这样的语料库(它会进行自动词汇扫描训练)时,或者在您调用时,就会发生这种情况build_vocab()。虽然您可以继续拨打train(),但不会识别新词。

有支持(我认为是实验性的)的调用,可以build_vocab()使用新的文本示例和update=True参数来扩展词汇表。尽管这将使更多的train()呼叫训练新旧单词,但有许多警告:

  • 这样的顺序训练可能无法像提供所有示例那样交错地产生模型,或者模型不能做到自洽。(例如,持续的训练可能会使从后期批处理中学习到的单词偏离未重新呈现的较早批处理中的单词/单词感测远。)
  • 此类调用train()应使用可选参数之一来准确估计新批次的大小(用文字或示例表示),以便正确地完成学习率衰减和进度记录
  • 核心算法和基础理论并非基于这种批处理,学习率从高到低的多次重新启动,因此结果的解释(以及所得向量的相对强度/平衡)并不那么好-接地

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