【发布时间】:2018-02-17 07:25:57
【问题描述】:
我已经有一个 Doc2Vec 模型。我已经用我的训练数据对其进行了训练。
现在我想用 Doc2Vec 来处理我的测试数据。我想将我的测试数据词汇表添加到我现有模型的词汇表中。我怎样才能做到这一点? 我的意思是如何更新我的词汇量?
这是我的模型:
model = model.load('my_model.Doc2vec')
【问题讨论】:
我已经有一个 Doc2Vec 模型。我已经用我的训练数据对其进行了训练。
现在我想用 Doc2Vec 来处理我的测试数据。我想将我的测试数据词汇表添加到我现有模型的词汇表中。我怎样才能做到这一点? 我的意思是如何更新我的词汇量?
这是我的模型:
model = model.load('my_model.Doc2vec')
【问题讨论】:
训练中没有出现的单词对Doc2Vec 没有任何意义,所以很常见的是,在以后的文本中遇到它们时会被忽略。
如果您还可以进行更多训练(包括这些新词)以某种方式将它们与现有模型集成,那么向模型中添加新词才有意义。
但是,虽然这种持续的增量训练在理论上是可行的,但它也需要在应该进行多少训练、以什么 alpha 学习率以及在多大程度上还应该重新训练旧样本以保持模型一致性。很少有已发表的工作建议使用经验法则,盲目地这样做可能会恶化模型的性能,也可能会改善它。
(另外,虽然Doc2Vec、Word2Vec 的父类在其build_vocab() 步骤上提供了一个实验性的update=True 选项以供以后的词汇扩展使用,但它并未在设计或测试中使用Doc2Vec请注意,有一个未解决的问题,尝试使用它会导致内存故障崩溃:https://github.com/RaRe-Technologies/gensim/issues/1019。)
请注意,由于 Doc2Vec 是一种从文本创建特征的无监督方法,如果您的最终任务是使用 Doc2Vec 特征进行分类,有时将您的“测试”文本(没有类标签)包含在Doc2Vec 训练集,以便它学习他们的单词以及与其他单词的(无监督)关系。然后,单独的监督分类器将仅在非测试项目及其已知标签上进行训练。
【讨论】: