如何从 gensim Doc2Vec 获取词向量?

How to get word vectors from a gensim Doc2Vec?

我训练了一个 gensim.models.doc2vec.Doc2Vec 模型
d2v_model = Doc2Vec(句子, size=100, window=8, min_count=5, workers=4) 我可以通过 docvec = d2v_model.docvecs[0]

如何从经过训练的模型中获取词向量?

Doc2Vec 继承自 Word2Vec,因此您可以像在 Word2Vec 中一样访问词向量,直接通过索引模型:

wv = d2v_model['apple']

但是请注意,像纯 DBOW (dm=0) 这样的 Doc2Vec 训练模式不需要或创建词向量。 (对于许多用途,纯 DBOW 仍然工作得很好并且速度很快!)如果您确实从这样的模型访问词向量,它们将只是自动随机初始化的向量,没有任何意义。

只有当 Doc2Vec 模式本身共同训练单词向量时,如在 DM 模式(默认 dm=1)或向 DBOW 添加可选单词训练时(dm=0, dbow_words=1),单词-vectors 和 doc-vectors 都是同时学习的。

如果你想获得所有经过训练的文档向量,你可以很容易地使用 model.docvecs.doctag_syn0。如果要获取索引文档,可以使用model.docvecs[i]。 如果你训练的是Word2Vec模型,可以得到model.wv.syn0。 如果您想获得更多信息,请查看此 github 问题 link:(https://github.com/RaRe-Technologies/gensim/issues/1513)