将输出(上下文)嵌入保存在 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']])
我的问题是,是否可以将输出嵌入(来自 syn1
或 syn1neg
矩阵)保存为最终模型。例如,当 model.save()
时,它会输出输出嵌入(或者在 word2vec.py
的代码中我可以访问和修改它的确切位置)。我需要这个以便将这些输出嵌入用作分类器的输入。我以前用蛮力方法做过,所以我想轻松访问输出嵌入。
您的对象 outv
作为 KeyedVectors
的一个实例,有自己的 save()
方法(继承自 gensim/utils.py
中定义的 SaveLoad
超类)和 save_word2vec_format()
方法。每个人都会以一种您可以稍后重新加载到 Python 代码中的方式保存它们。
我研究了 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']])
我的问题是,是否可以将输出嵌入(来自 syn1
或 syn1neg
矩阵)保存为最终模型。例如,当 model.save()
时,它会输出输出嵌入(或者在 word2vec.py
的代码中我可以访问和修改它的确切位置)。我需要这个以便将这些输出嵌入用作分类器的输入。我以前用蛮力方法做过,所以我想轻松访问输出嵌入。
您的对象 outv
作为 KeyedVectors
的一个实例,有自己的 save()
方法(继承自 gensim/utils.py
中定义的 SaveLoad
超类)和 save_word2vec_format()
方法。每个人都会以一种您可以稍后重新加载到 Python 代码中的方式保存它们。