为现有的Doc2vec模型添加新词汇表

时间:2018-02-16 07:21:15

标签: word2vec gensim doc2vec

我已经拥有Doc2Vec模型。我用我的火车数据训练了它。

过了一段时间我想用Doc2Vec作为我的测试数据。我想将我的测试数据词汇添加到我现有模型的词汇表中。我怎样才能做到这一点? 我的意思是如何更新我的词汇量?

这是我的模特:

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

1 个答案:

答案 0 :(得分:0)

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

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

但是,虽然这种持续的增量训练在理论上是可行的,但它还需要做出很多关于应该进行多少训练的盲目选择,alpha学习率,以及在多大程度上也应重新训练旧例子保持模型的一致性。已经发表的一些小作品暗示了工作规则,盲目地做这件事可能会使模型的表现变得更糟,从而改善它。

(另外,虽然Doc2Vec的父类Word2Vec在其update=True步骤中提供了实验性的build_vocab()选项,以便以后进行词汇扩展,但它不是&#39 ;设计或测试时考虑到Doc2Vec,并且尝试使用它会导致内存故障崩溃:https://github.com/RaRe-Technologies/gensim/issues/1019

请注意,由于Doc2Vec是一种用于从文本创建要素的无监督方法,如果您的最终任务是使用Doc2Vec功能进行分类,那么有时候包含您的测试&##是明智的39; Doc2Vec训练集中的文本(没有类别标记),以便学习他们的单词和与其他单词的(无监督)关系。然后,单独的监督分类器将仅针对非测试项目及其已知标签进行训练。