В Gensim Word2vec, как уменьшить размер слов в существующей модели? - PullRequest
0 голосов
/ 10 июля 2019

В API Gensims word2vec я обучил модель, где я инициализировал модель с 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 Ответ

2 голосов
/ 10 июля 2019
from gensim.models import KeyedVectors

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

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

...