如何以vec格式保存快速文本模型?

时间:2019-10-11 08:46:05

标签: python word-embedding fasttext

我使用python中的fasttext.train_unsupervised()函数训练了我的非监督模型。我想将其保存为vec文件,因为我将在fasttext.train_supervised()函数中将此文件用于pretrainedVectors参数。 pretrainedVectors仅接受vec文件,但是我在创建此vec文件时遇到了麻烦。有人可以帮我吗?

Ps。我可以将其保存为bin格式。如果您建议我将bin文件转换为vec文件的方法,也将很有帮助。

2 个答案:

答案 0 :(得分:1)

要获取仅包含所有单词向量的VEC文件,我从bin_to_vec official example中得到了启发。

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)

答案 1 :(得分:1)

您应该在vec文件的第一行添加单词num和Dimension,而不要使用-preTrainedVectors para