【问题标题】:Is there a way to load pre-trained word vectors before training the doc2vec model?有没有办法在训练 doc2vec 模型之前加载预训练的词向量?
【发布时间】:2019-11-21 18:13:37
【问题描述】:

我正在尝试构建一个包含大约 10k 个句子的 doc2vec 模型,之后我将使用该模型在一些新句子的模型中找到最相似的句子。

我已经使用我拥有的语料库(10k 个句子)训练了一个 gensim doc2vec 模型。这个模型可以在某种程度上告诉我一个新句​​子是否与语料库中的某些句子相似。 但是,有一个问题:新句子中可能会出现语料库中不存在的单词,这意味着它们没有词嵌入。如果发生这种情况,预测结果将不会很好。 据我所知,经过训练的 doc2vec 模型确实有一个 doc 向量矩阵和一个词向量矩阵。所以我想的是加载一组预先训练好的词向量,其中包含大量的词,然后训练模型得到文档向量。是否有意义? gensim可以吗?或者有其他方法吗?

【问题讨论】:

    标签: gensim doc2vec


    【解决方案1】:

    与您可能猜到的不同,典型的Doc2Vec 训练不会首先训练词向量,然后使用这些词向量组成文档向量。相反,在使用词向量的模式中,词向量与 doc 向量一起以同时、交错的方式训练,两者一起变化。在一种快速且性能良好的模式下,PV-DBOW(gensim 中的dm=0)根本不训练或使用词向量。

    所以,gensim Doc2Vec 不支持从其他地方预加载状态,即使支持,它也可能不会提供您期望的好处。 (您可以深入挖掘源代码,也可以自己执行一系列初始化步骤来强制执行它。但是,如果单词在预加载集中,但不在在您的训练数据中,则训练其余的活动词将调整整个模型的方向与导入但未经训练的“外来”词不兼容。只有模型状态的交错、拔河联合训练才使各种向量在相关方面有意义彼此。)

    最直接和可靠的策略是尝试扩展您的训练语料库,方法是从相似/兼容的域中查找更多文档,以包含您以后可能遇到的任何单词的多个不同示例。 (如果您认为其他一些词向量足够适合您的领域,也许用于训练这些词向量的文本可以混合到您的训练语料库中。这是从中放置词/文档数据的合理方式在您的模型中处于同等地位的其他来源。)

    而且,随着新文档的到来,您还可以偶尔使用现已扩展的语料库从头开始重新训练模型,让新文档对模型的词汇量和建模强度做出同等贡献。

    【讨论】:

    • 非常感谢,这是一个非常专业和有用的答案。每当有一堆新文档到达时重新训练模型确实是一种实用的方法。
    猜你喜欢
    • 2017-06-26
    • 2018-12-10
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 2018-07-31
    • 2018-03-28
    • 2017-12-15
    相关资源
    最近更新 更多