继续训练 Doc2Vec 模型

问题描述 投票:0回答:2

Gensim 的官方教程明确指出可以继续训练(加载的)模型。我知道根据文档,不可能继续训练从

word2vec
格式加载的模型。但即使从头开始生成模型,然后尝试调用
train
方法,也无法访问提供给
LabeledSentence
train
实例新创建的标签。

>>> sentences = [LabeledSentence(['first', 'sentence'], ['SENT_0']), LabeledSentence(['second', 'sentence'], ['SENT_1'])]
>>> model = Doc2Vec(sentences, min_count=1)
>>> print(model.vocab.keys())
dict_keys(['SENT_0', 'SENT_1', 'sentence', 'first', 'second'])
>>> sentence = LabeledSentence(['third', 'sentence'], ['SENT_2'])
>>> model.train([sentence])
>>> print(model.vocab.keys())

# At this point I would expect the key 'SENT_2' to be present in the vocabulary, but it isn't
dict_keys(['SENT_0', 'SENT_1', 'sentence', 'first', 'second'])

是否有可能用新句子继续在 Gensim 中训练 Doc2Vec 模型?如果可以,如何实现?

neural-network gensim
2个回答
5
投票

我的理解是,这对于任何新标签来说都是不可能的。只有当新数据与旧数据具有相同标签时,我们才能继续训练。因此,我们正在训练或重新调整已学词汇的权重,但无法学习新词汇。

在训练期间添加新标签/单词/句子有一个类似的问题:https://groups.google.com/forum/#!searchin/word2vec-toolkit/online$20word2vec/word2vec-toolkit/L9zoczopPUQ/_Zmy57TzxUQJ

此外,您可能想关注此讨论: https://groups.google.com/forum/#!topic/gensim/UZDkfKwe9VI

更新:如果您想向已经训练好的模型添加新单词,请查看此处的在线 word2vec: https://rutumulkar.com/ml-notes/word2vec/representation%20learning/2015/08/22/word2vec.html


2
投票

根据 gensim 文档,doc2vec 不支持在线/增量训练。

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

我仍然可以向现有的 doc2vec 模型添加新文档(但有些由于分段错误而崩溃),但大多数类似的查询不适用于新添加的文档(因此这种方法似乎没用)。

© www.soinside.com 2019 - 2024. All rights reserved.