【问题标题】:add new vocabulary to existing Doc2vec model向现有 Doc2vec 模型添加新词汇
【发布时间】:2018-02-17 07:25:57
【问题描述】:

我已经有一个 Doc2Vec 模型。我已经用我的训练数据对其进行了训练。

现在我想用 Doc2Vec 来处理我的测试数据。我想将我的测试数据词汇表添加到我现有模型的词汇表中。我怎样才能做到这一点? 我的意思是如何更新我的词汇量?

这是我的模型:

    model = model.load('my_model.Doc2vec')

【问题讨论】:

    标签: word2vec gensim doc2vec


    【解决方案1】:

    训练中没有出现的单词对Doc2Vec 没有任何意义,所以很常见的是,在以后的文本中遇到它们时会被忽略。

    如果您还可以进行更多训练(包括这些新词)以某种方式将它们与现有模型集成,那么向模型中添加新词才有意义。

    但是,虽然这种持续的增量训练在理论上是可行的,但它也需要在应该进行多少训练、以什么 alpha 学习率以及在多大程度上还应该重新训练旧样本以保持模型一致性。很少有已发表的工作建议使用经验法则,盲目地这样做可能会恶化模型的性能,也可能会改善它。

    (另外,虽然Doc2Vec、Word2Vec 的父类在其build_vocab() 步骤上提供了一个实验性的update=True 选项以供以后的词汇扩展使用,但它并未在设计或测试中使用Doc2Vec请注意,有一个未解决的问题,尝试使用它会导致内存故障崩溃:https://github.com/RaRe-Technologies/gensim/issues/1019。)

    请注意,由于 Doc2Vec 是一种从文本创建特征的无监督方法,如果您的最终任务是使用 Doc2Vec 特征进行分类,有时将您的“测试”文本(没有类标签)包含在Doc2Vec 训练集,以便它学习他们的单词以及与其他单词的(无监督)关系。然后,单独的监督分类器将仅在非测试项目及其已知标签上进行训练。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 2018-04-16
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多