我训练了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模型使用了相同的方法,并且有效!
这可能是个问题吗?
答案 0 :(得分:1)
build_vocab(..., update-True)
功能仅在gensim中针对Word2Vec
进行了实验性开发,尚未针对Doc2Vec
进行过测试/调试。尝试与Doc2Vec
一起使用时,存在一个长期开放的崩溃错误:
https://github.com/RaRe-Technologies/gensim/issues/1019
因此,尚不支持。
另外,以这种方式进行增量训练的模型的 balance 和 vector-compatibility 涉及很多模糊且困难的问题,如果可能的话,您应该使用混合在一起的旧数据和新数据重新训练模型,而不是尝试进行小幅更新。