在线更新 Word2Vec

Online updating Word2Vec

在线更新我的 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)

出了什么问题,我该如何解决我的问题?

您的模型设置为忽略出现次数少于 5 次的单词:min_count=5。事实上,它需要在单个 build_vocab() 调用中至少出现 5 次。 (它不会记得之前有 3 个,然后看到 2 个新出现的,然后训练所有 5 个。它需要在一批中全部 5 个或更多。)

如果您只使用显示的小数据集调用更新,则不会有新词出现。

更一般地说,如果可能的话,您应该使用所有新旧数据重新训练整个模型。这将确保对旧词和新词给予同等的影响,并且任何词都会根据它们的组合频率得到适当的处理。对 Word2Vec 模型进行小的增量更新可能会导致新词或继续出现的旧词与仅在原始(或更早)批次中训练的旧词的有意义排列不一致。 (只有经过相同交错训练周期的单词才能相对于彼此完全调整位置。)