如何获取新段落的段落向量?

How to get paragraph vector for a new paragraph?

我有一组用户及其内容(每个用户 1 个文档,其中包含该用户的推文)。我计划为每个用户使用大小为 N 的分布式向量表示。一种方法是在推特数据上采用预训练的词向量并对它们进行平均以获得用户的分布式向量。我打算更好地使用 doc2vec results.But 我不太确定我是否理解 Distributed Representations of Sentences and Documents 中给出的 DM 模型。

我知道我们正在为每个段落分配一个向量,并且在预测下一个词时我们正在使用它,然后反向传播错误以更新段落向量和词向量。如何使用它来预测新段落的段落向量?

编辑:任何用于 gensim 计算新文档段落向量的玩具代码将不胜感激。

以下代码基于gensim的doc2vec tutorial. We can instantiate and train a doc2vec模型生成大小为300的嵌入,上下文window大小为10,如下所示:

from gensim.models.doc2vec import Doc2Vec
model = Doc2Vec(size=300, window=10, min_count=2, iter=64, workers=16)
model.train(train_corpus, total_examples=model.corpus_count, epochs=model.iter)

训练完我们的模型后,我们可以计算一个新的未见过文档的向量,如下所示:

doc_id = random.randint(0, len(test_corpus))
inferred_vector = model.infer_vector(test_corpus[doc_id])
sims = model.docvecs.most_simlar([inferred_vector], topn=len(model.docvecs))

这将 return 测试文档的 300 维表示,并根据余弦相似度从训练集中计算前 N 个最相似的文档。