首页 > 解决方案 > Doc2Vec 在线培训

问题描述

我训练我的 doc2vec 模型:

data = ["Sentence 1",
        "Sentence 2",
        "Sentence 3",
        "Sentence 4"]

tagged_data = [TaggedDocument(words=word_tokenize(_d.lower()), tags[str(i)]) 
                              for i, _d in enumerate(data)]

训练部分:

model = Doc2Vec(size=100, window=10, min_count=1, workers=11, alpha=0.025, 
                min_alpha=0.025, iter=20)

model.build_vocab(tagged_data, update=False)

model.train(tagged_data,epochs=model.iter,total_examples=model.corpus_count)

保存模型:

model.save("d2v.model")

这是工作。比我想在我的词汇表和模型中添加一些句子。前任:

new_data = ["Sentence 5",
            "Sentence 6",
            "Sentence 7"]
new_tagged_data= 
[TaggedDocument(words=word_tokenize(_d.lower()),tags[str(i+len(data))]) 
                for i,_d in enumerate(new_data)]

而不是更新模型:

model.build_vocab(new_tagged_data, update=True)

model.train(new_tagged_data, 
            epochs=model.iter,total_examples=model.corpus_count)

但它不起作用。木星紧急关闭,没有任何回应。我对 word2vec 模型使用相同的方法,它可以工作!

这可能是什么问题?

标签: pythonpython-3.xnlpgensimdoc2vec

解决方案


build_vocab(..., update-True)功能仅在 gensim 中进行了实验性开发,Word2Vec尚未针对Doc2Vec. 尝试使用它时存在一个长期开放的崩溃错误Doc2Vec

https://github.com/RaRe-Technologies/gensim/issues/1019

所以,目前还不支持。

另外,以这种方式增量训练的模型的平衡向量兼容性有很多模糊和困难的问题,如果可能的话,您应该使用完整的新旧数据重新训练模型,混合一起,而不是尝试小的更新。


推荐阅读