通过排除某些词汇表,可以更快地加载fasttext模型

时间:2017-06-18 13:09:18

标签: pandas scikit-learn nlp stanford-nlp fasttext

加载Facebook Research发布的预训练快速文本字矢量需要很长时间在本地机器上,我喜欢这样:

model =  fs.load_word2vec_format('wiki.en.vec') 
print(model['test']) # get the vector of the word 'test'

我正在寻求通过删除不会出现在我的数据集中的字词的wordvectors来减少加载时间。即我想将预训练的矢量模型减少到构成我需要分析的数据集的单词,这是预训练模型的一个子集。

我打算尝试通过提取我需要的wordvectors并保存到新模型来构建新模型,但类型将从 FastTextKeyedVectors 更改为 FastText

#model2 = gensim.models.Word2Vec(iter=1)
#model2 = FastText()
for word in words:
    if (word in model):
       model2[] = model[word]

如何减少加载时间?我的方法是否有意义,或者我走错了路?

1 个答案:

答案 0 :(得分:2)

如果可以迭代.vec格式,这将是消除您不想要的单词的最快方法。要知道这一点,您应该研究数据库的结构。如果它是接近xml格式的东西,那应该是可行的,并且如何在python中迭代xml文件被广泛记录。

然而,关于你的方法并且假设你只是以字典的形式加载RAM model,只是一个快速的提示,使用理解语法:

model={model[word] for word in model if word in mywords}

其中mywords是您要保留的字词列表。