2

在本地机器上加载 Facebook Research 发布的预训练 fasttext wordvectors 需要很长时间,我喜欢这样:

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

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

我正要尝试通过提取我需要的词向量并保存到一个新模型来构建一个新模型,但是类型会从FastTextKeyedVectors更改为FastText

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

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

4

1 回答 1

3

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

但是,关于您的方法并假设您刚刚model以字典的形式将整个加载到 RAM 中,只是一个快速提示,请使用理解语法:

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

mywords您要保留的单词列表在哪里。

于 2017-06-18T13:22:20.457 回答