Doc2Vec 在线培训

Doc2Vec online training

我训练我的 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")

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

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 模型使用相同的方法并且它有效!

这可能有什么问题?

build_vocab(..., update-True) 功能仅在 gensim 中针对 Word2Vec 进行了实验性开发,尚未针对 Doc2Vec tested/debugged。尝试将它与 Doc2Vec:

一起使用时,存在一个长期打开的崩溃错误

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

因此,尚不支持。

另外,有很多与 balancevector-compatibility 相关的模糊和困难的问题,这些模型是增量训练的这样,如果可能的话,您应该使用混合在一起的完整旧数据和新数据重新训练模型,而不是尝试进行小的更新。