Как сохранить модель быстрого текста в формате vec? - PullRequest
1 голос
/ 11 октября 2019

Я обучил свою неконтролируемую модель с помощью функции fasttext.train_unsupervised () в python. Я хочу сохранить его как файл vec, поскольку я буду использовать этот файл для параметра pretrainedVectors в функции fasttext.train_supervised (). pretrainedVectors принимает только vec-файл, но у меня возникают проблемы при создании этого vec-файла. Кто-нибудь может мне помочь?

Ps. Я могу сохранить его в формате бин. Также было бы полезно, если бы вы предложили мне способ конвертировать bin-файл в vec-файл.

1 Ответ

0 голосов
/ 11 октября 2019

Для получения файла VEC, содержащего только все векторы слов, я черпал вдохновение из официального примера bin_to_vec .

from fastText import load_model

# original BIN model loading
f = load_model(YOUR-BIN-MODEL-PATH)
    lines=[]

# get all words from model
words = f.get_words()
print(str(len(words)) + " " + str(f.get_dimension()))
# line by line, you append vectors to VEC file
with open(YOUR-VEC-FILE-PATH,'a') as file_out:
    for w in words:
        v = f.get_word_vector(w)
        vstr = ""
        for vi in v:
            vstr += " " + str(vi)
        try:
            file_out.write(w + vstr+'\n')
        except:
            pass

Полученный файл VEC может быть большим. Чтобы уменьшить размер файла, вы можете настроить формат векторных компонентов.

Если вы хотите сохранить только 4 десятичных знака, вы можете заменить vstr += " " + str(vi) на
vstr += " " + "{:.4f}".format(vi)

...