В Gensim Word2vec, как уменьшить размер словарного запаса существующей модели?

В 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. Теперь я хочу использовать только верхние 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, сохранив рабочую модель. Переподготовка не вариант.


person hanuta98    schedule 10.07.2019    source источник


Ответы (1)


from gensim.models import KeyedVectors

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

Используйте необязательный параметр limit, чтобы уменьшить количество векторов, загружаемых из файла модели Word2Vec.

person 0x01h    schedule 10.07.2019