我使用python中的fasttext.train_unsupervised()函数训练了我的非监督模型。我想将其保存为vec文件,因为我将在fasttext.train_supervised()函数中将此文件用于pretrainedVectors参数。 pretrainedVectors仅接受vec文件,但是我在创建此vec文件时遇到了麻烦。有人可以帮我吗?
Ps。我可以将其保存为bin格式。如果您建议我将bin文件转换为vec文件的方法,也将很有帮助。
答案 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