我在在线更新我的Word2Vec模型时遇到了问题。
我有一份文件,用它建立模型。但是这个文档可以用新单词进行更新,我需要在一般情况下更新词汇表和模型。
我知道在gensim 0.13.4.1中我们可以做到这一点
我的代码:
model = gensim.models.Word2Vec(size=100, window=10, min_count=5, workers=11, alpha=0.025, min_alpha=0.025, iter=20)
model.build_vocab(sentences, update=False)
model.train(sentences, epochs=model.iter, total_examples=model.corpus_count)
model.save('model.bin')在这之后我有了新的词汇。用于e.x.:
sen2 = [['absd', 'jadoih', 'sdohf'], ['asdihf', 'oisdh', 'oiswhefo'], ['a', 'v', 'b', 'c'], ['q', 'q', 'q']]
model.build_vocab(sen2, update=True)
model.train(sen2, epochs=model.iter, total_examples=model.corpus_count)有什么问题,我怎么解决我的问题?
发布于 2018-12-04 10:33:13
您的模型被设置为忽略少于5次出现的单词:min_count=5。实际上,它需要在一个build_vocab()调用中至少出现5次。(它不会记得之前有3次,然后看到2次新事件,然后对所有5次进行训练。它需要一批全部5次或更多次。)
如果您只使用显示的小数据集调用您的更新程序,则不会有新的单词进行删除。
更广泛地说,如果有可能的话,您应该使用所有新旧数据对整个模型进行再培训。这将确保新旧词具有同等的影响力,并根据它们的组合频率对任何单词进行适当处理。对Word2Vec模型进行小规模的增量更新可能会使较新的单词或继续重复出现的旧单词脱离原来(或更早的)批中训练出来的旧单词。(只有经过相同交错训练周期的单词才能在位置上相互调整。)
https://stackoverflow.com/questions/53610331
复制相似问题