在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的词汇量,同时保留可用的模型。再培训不是一种选择。
答案 0 :(得分:2)
from gensim.models import KeyedVectors
model = KeyedVectors.load_word2vec_format('train.fr.model', limit=1000)
使用可选的limit
参数来减少将从 Word2Vec 模型文件中加载的向量的数量。