Doc2vec预测 - 我们是否对新段落的单词或段落ID进行平均?

问题描述 投票:1回答:2

我知道您在训练期间将段落ID视为doc2vec中的新词(DM方法,图中左侧)。训练输出是上下文单词。在训练模型之后,假设我想在给定新文档的情况下进行1次嵌入。

我是否将每个单词提供给网络,然后对其进行平均以获得嵌入?或者还有另一种方式吗?

我可以将它提供给gensim,但我试图了解它是如何工作的。

enter image description here

nlp word2vec word-embedding doc2vec
2个回答
2
投票

在模型批量训练期间,候选文档向量逐渐被推动以更好地预测文本的单词,就像单词矢量训练一样。因此,在培训结束时,您可以获得与文本一起提供的所有标识符的doc-vectors。

您可以通过标识符的doct样式索引查找从gensim Doc2Vec模型访问这些(在gensim') you provided during training:model.docvecs [tag]中称为'doctag')

训练后,为了获得新文本的doc-vector,使用推理过程。该模型被冻结,并且为该文本形成新的随机候选向量(就像那些开始对训练文本进行批量训练的向量)。然后它以一种完全类似于训练的方式逐渐轻推,以更好地预测单词 - 但只有这一个新的候选向量被改变。 (所有型号内部重量保持不变。)

您可以通过infer_vector()方法计算这样的新向量,该方法采用应该像训练期间提供的文本一样进行预处理的单词列表:model.infer_vector(words)


1
投票

我认为使用冻结模型的上述方法,只有随机的新段落向量和再训练应该更有效,但我看到一个声明,在某些情况下,简单地使用句子中所有单词向量的平均值更有效。

© www.soinside.com 2019 - 2024. All rights reserved.