在 Gensim Word2vec 中,如何减少现有模型的词汇量?

In Gensim Word2vec, how to reduce the vocab size of an existing model?

在 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 同时保留一个工作模型。再培训不是一种选择。

from gensim.models import KeyedVectors

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

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