【问题标题】:Gensim: how to retrain doc2vec model using previous word2vec modelGensim:如何使用以前的 word2vec 模型重新训练 doc2vec 模型
【发布时间】:2016-08-31 14:21:26
【问题描述】:

使用 Doc2Vec 建模,我已经训练了一个模型并保存了以下文件:

1. model
2. model.docvecs.doctag_syn0.npy
3. model.syn0.npy
4. model.syn1.npy
5. model.syn1neg.npy

但是,我有一种新的方法来标记文档并想再次训练模型。因为已经从以前的版本中获得了词向量。有没有办法重用该模型(例如,将之前的 w2v 结果作为训练的初始向量)?有谁知道怎么做?

【问题讨论】:

    标签: python nlp gensim word2vec doc2vec


    【解决方案1】:

    我想通了,我们可以加载模型并继续训练。

    model = Doc2Vec.load("old_model")
    model.train(sentences)
    

    【讨论】:

    • 你可以这样做,但是 (1) 如果新的sentences 有新的词/标签,它们将被视为未知而被跳过; (2) 如果新的sentences 长度不同,进度报告和学习率衰减可能无法正确更新; (3) 它可能会在有用的值上为模型提供轻微的“领先优势”,并跳过初始词汇扫描,但不会导致 train() 本身运行得更快。
    • 最好将所有示例混合在一起进行训练。如果您调用train() 并使用正确的参数作为语料库大小的提示,您可以想象从先前加载的模型开始。或者,为了适应新的词汇/标签,您可以使用新的组合语料库执行build_vocab(),然后尝试通过手动复制原始模型中的向量来为模型提供“领先优势”。
    • @gojomo,谢谢。同意你的观点,如果时间允许,最好从头开始训练。否则,建议至少注意词汇覆盖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2016-08-17
    • 2019-07-12
    • 2018-07-31
    相关资源
    最近更新 更多