【问题标题】:Continue training a Doc2Vec model继续训练 Doc2Vec 模型
【发布时间】:2015-05-10 19:04:33
【问题描述】:

Gensim 的official tutorial 明确指出可以继续训练(加载的)模型。我知道根据文档,无法继续训练从 word2vec 格式加载的模型。但即使从头生成模型然后尝试调用train 方法,也无法访问提供给train 的LabeledSentence 实例的新创建标签。

>>> 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


    【解决方案1】:

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

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

    另外,您可能需要关注以下讨论: https://groups.google.com/forum/#!topic/gensim/UZDkfKwe9VI

    更新:如果您想在已经训练好的模型中添加新词,请在此处查看在线 word2vec: http://rutumulkar.com/blog/2015/word2vec/

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2020-09-30
        • 2019-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-28
        • 2020-06-20
        • 1970-01-01
        • 2018-07-31
        相关资源
        最近更新 更多