Gensim Word2Vec型号:切割尺寸

时间:2016-12-13 20:23:03

标签: python python-3.x gensim word2vec

我在geinsim中有300个尺寸的训练有素的word2vec模型,并希望将尺寸切割为100(简单地删除最后200个尺寸)。使用python的最简单,最有效的方法是什么?

2 个答案:

答案 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个维度。)