我在geinsim中有300个尺寸的训练有素的word2vec模型,并希望将尺寸切割为100(简单地删除最后200个尺寸)。使用python的最简单,最有效的方法是什么?
答案 0 :(得分:4)
您可以将输出模型保存在word2vec format中。确保将其另存为文本文件(.txt)。 word2vec格式如下
第一行是<vocabulary_size> <embedding_size>
。在您的情况下,<embedding_size>
将为300
。
其余的行将是<word><TAB><300 floating point numbers space separated>
。现在,您可以在python中轻松解析此文件,并丢弃每行中的最后200个浮点。请务必更新第一行中的<embedding_size>
。将其另存为新文件(可选)。现在,您可以使用load_word2vec_format()将此新文件作为新的word2vec模型加载。
如果能解决您的问题,请亲自投票。
答案 1 :(得分:0)
您应该能够在julia> fit.param
2-element Array{Float64,1}:
3349.999986535933
49.99999203625603
实例中修剪尺寸,然后将其保存-因此,您不必对磁盘上的格式做任何特殊的事情。例如:
KeyedVectors
现在可以保存kv = w2v_model.wv
kv.vectors = kv.vectors[:,0:100] # keeps just 1st 100 dims
kv.vector_size = 100
(作为kv
的本机gensim
或交换格式.save()
),也可以将其保存为原始尺寸的子集。
(尽管较大嵌入的任意100个维度与其他嵌入都一样好,但是您将以任意方式失去300个维度的表达能力。首先要对100个维度进行重新训练可能会做得更好,或者使用某种降维算法,实际上可能要确保为您保留“最具表现力”的100个维度。)