我研究了 gensim 中的word2vec
实现,我知道输入向量在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 代码中的方式保存它们。