Doc2Vec在线培训

时间:2018-12-04 15:15:06

标签: python python-3.x nlp gensim 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")

而且有效。比我想在我的词汇和模型中增加一些句子。 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模型使用了相同的方法,并且有效!

这可能是个问题吗?

1 个答案:

答案 0 :(得分:1)

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

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

因此,尚不支持。

另外,以这种方式进行增量训练的模型的 balance vector-compatibility 涉及很多模糊且困难的问题,如果可能的话,您应该使用混合在一起的旧数据和新数据重新训练模型,而不是尝试进行小幅更新。