在Gensim Word2vec中,如何减小现有模型的vocab大小?

时间:2019-07-10 10:37:59

标签: gensim word2vec vocabulary

在Gensims word2vec api中,我训练了一个模型,在该模型中,我用max_final_vocab = 100000初始化了模型,并使用model.save()保存了模型 (这给了我一个.model文件,一个.model.trainables.syn1neg.npy和一个.model.wv.vectors.npy文件。)

我不需要进一步训练模型,所以只使用

就可以了
model = gensim.models.Word2Vec.load("train.fr.model")
kv = model.wv
del model


此处显示的kv变量。现在,我只想使用 top N个单词(在我的情况下为N = 40000)而不是整个单词。甚至尝试减少我能找到的词汇量的唯一方法是

import numpy as np
emb_matrix = np.load("train.fr.model.wv.vectors.npy")
emb_matrix.shape
# (100000, 300)
new_emb_matrix = emb_matrix[:40000]
np.save("train.fr.model.wv.vectors.npy", new_emb_matrix)

如果我再次加载此模型,则词汇表的长度仍为100000。

我想减少模型或model.wv的词汇量,同时保留可用的模型。再培训不是一种选择。

1 个答案:

答案 0 :(得分:2)

from gensim.models import KeyedVectors

model = KeyedVectors.load_word2vec_format('train.fr.model', limit=1000)

使用可选的limit参数来减少将从 Word2Vec 模型文件中加载的向量的数量。