我已经拥有Doc2Vec模型。我用我的火车数据训练了它。
过了一段时间我想用Doc2Vec作为我的测试数据。我想将我的测试数据词汇添加到我现有模型的词汇表中。我怎样才能做到这一点? 我的意思是如何更新我的词汇量?
这是我的模特:
model = model.load('my_model.Doc2vec')
答案 0 :(得分:0)
对于训练没有出现的单词对Doc2Vec
没有任何意义,所以很常见的是,在以后的文本中遇到它们时会被忽略。
如果您还可以进行更多培训(包括那些新单词),以某种方式将它们与现有模型集成,那么将新单词添加到模型中是有意义的。
但是,虽然这种持续的增量训练在理论上是可行的,但它还需要做出很多关于应该进行多少训练的盲目选择,alpha
学习率,以及在多大程度上也应重新训练旧例子保持模型的一致性。已经发表的一些小作品暗示了工作规则,盲目地做这件事可能会使模型的表现变得更糟,从而改善它。
(另外,虽然Doc2Vec
的父类Word2Vec
在其update=True
步骤中提供了实验性的build_vocab()
选项,以便以后进行词汇扩展,但它不是&#39 ;设计或测试时考虑到Doc2Vec
,并且尝试使用它会导致内存故障崩溃:https://github.com/RaRe-Technologies/gensim/issues/1019。
请注意,由于Doc2Vec
是一种用于从文本创建要素的无监督方法,如果您的最终任务是使用Doc2Vec
功能进行分类,那么有时候包含您的测试&##是明智的39; Doc2Vec
训练集中的文本(没有类别标记),以便学习他们的单词和与其他单词的(无监督)关系。然后,单独的监督分类器将仅针对非测试项目及其已知标签进行训练。