我了解到,您在培训期间将段落ID当作doc2vec中的新单词(DM方法,在图上保留)。训练输出是上下文词。训练完模型后,假设我想给一个新文档嵌入1个。
我是否将每个单词送入网络,然后取平均值进行嵌入?还是有另一种方法?
我可以将其提供给gensim,但我试图了解其工作原理。
答案 0 :(得分:2)
在模型批量训练期间,就像文档向量训练一样,逐渐将候选doc-vector推向更好地预测文本的单词。因此,在培训结束时,您将获得与文本一起提供的所有标识符的文档向量。
您可以从gensim
Doc2Vec
模型中通过标识符的索引样式索引查找(在gensim') you provided during training:
model.docvecs [tag]`
后期训练,为了获得新文本的文档向量,使用了推理过程。模型保持冻结状态,并为文本形成一个新的随机候选向量(就像那些开始对文本进行批量训练的向量一样)。然后,以一种完全类似于训练的方式,将其逐渐微调,以更好地预测单词–但是仅更改了这一新的候选向量。 (所有模型的内部重量保持不变。)
您可以通过infer_vector()
方法来计算这样的新向量,该方法采用应该经过预处理的单词令牌列表,就像训练期间提供的文本一样:model.infer_vector(words)
。
答案 1 :(得分:1)
我认为使用上述冻结模型的方法,只有随机的新段落向量和重新训练应该会更有效,但是我看到一条声明,即简单地使用句子中所有词向量的平均值在某些情况下会更有效。