Gensim Word2Vec 模型:切割尺寸
Gensim Word2Vec model: Cut dimensions
我在 geinsim 中有一个训练有素的 word2vec 模型,有 300 个维度,我想将维度削减到 100 个(只需删除最后 200 个维度)。使用 python 最简单、最有效的方法是什么?
您可以将输出模型保存在 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 模型。
您应该能够 trim KeyedVectors
实例中的维度,然后保存它 – 这样您就不必对磁盘上的格式做任何特殊的事情。例如:
kv = w2v_model.wv
kv.vectors = kv.vectors[:,0:100] # keeps just 1st 100 dims
kv.vector_size = 100
现在 kv
可以保存(作为 gensim
的原生 .save()
或交换格式 .save_word2vec_format()
),或者只是作为原始尺寸。
(虽然较大嵌入的任何 100 个维度可能与其他任何维度一样好,但您将以任意方式失去 300 个维度的一些表现力。用 100 个维度重新训练以begin with 可能会做得更好,或者使用某种降维算法,实际上,这可能一定会给你留下 "most expressive" 100 个维度。)
我在 geinsim 中有一个训练有素的 word2vec 模型,有 300 个维度,我想将维度削减到 100 个(只需删除最后 200 个维度)。使用 python 最简单、最有效的方法是什么?
您可以将输出模型保存在 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 模型。
您应该能够 trim KeyedVectors
实例中的维度,然后保存它 – 这样您就不必对磁盘上的格式做任何特殊的事情。例如:
kv = w2v_model.wv
kv.vectors = kv.vectors[:,0:100] # keeps just 1st 100 dims
kv.vector_size = 100
现在 kv
可以保存(作为 gensim
的原生 .save()
或交换格式 .save_word2vec_format()
),或者只是作为原始尺寸。
(虽然较大嵌入的任何 100 个维度可能与其他任何维度一样好,但您将以任意方式失去 300 个维度的一些表现力。用 100 个维度重新训练以begin with 可能会做得更好,或者使用某种降维算法,实际上,这可能一定会给你留下 "most expressive" 100 个维度。)