将输出(上下文)嵌入保存在 word2vec(gensim 实现)中作为最终模型

Saving output (context) embeddings in word2vec (gensim implementation) as a final model

我研究了 word2vec 在 gensim 中的实现,我知道输入向量在 syn0 中,输出向量在 syn1 中,如果负采样则在 syn1neg 中。

我知道我可以像这样访问输入和输出嵌入之间的相似性:

outv = KeyedVectors()
outv.vocab = model.wv.vocab
outv.index2word = model.wv.index2word  
outv.syn0 = model.syn1neg 
inout_similars = outv.most_similar(positive=[model['cousin']])

我的问题是,是否可以将输出嵌入(来自 syn1syn1neg 矩阵)保存为最终模型。例如,当 model.save() 时,它会输出输出嵌入(或者在 word2vec.py 的代码中我可以访问和修改它的确切位置)。我需要这个以便将这些输出嵌入用作分类器的输入。我以前用蛮力方法做过,所以我想轻松访问输出嵌入。

您的对象 outv 作为 KeyedVectors 的一个实例,有自己的 save() 方法(继承自 gensim/utils.py 中定义的 SaveLoad 超类)和 save_word2vec_format() 方法。每个人都会以一种您可以稍后重新加载到 Python 代码中的方式保存它们。