使用Gensim减少Google的Word2Vec模型

时间:2017-02-25 17:38:06

标签: nlp gensim word2vec

Google加载完整的预训练word2vec模型是耗时且繁琐的,因此我想知道是否有机会删除某个频率以下的字词以将vocab计数降低到例如200k字。

我在gensim包中找到Word2Vec方法来确定单词频率并重新保存模型,但我不确定如何pop / remove词汇来自再次保存之前预先训练好的模型。对于这样的操作,我无法在KeyedVector classWord2Vec class中找到任何提示?

https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/word2vec.py https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/keyedvectors.py

如何选择预训练word2vec模型的词汇子集?

2 个答案:

答案 0 :(得分:7)

GoogleNews词向量文件格式不包含频率信息。但是,它似乎确实按照大致更频繁到更不频繁的顺序排序。

并且,load_word2vec_format()提供了一个可选的limit参数,该参数仅从给定文件中读取许多向量。

因此,以下内容应该大致按照您的要求进行:

goognews_wordecs = KeyedVectors.load_word2vec_format(`GoogleNews-vectors-negative300.bin.gz`, binary=True, limit=200000)

答案 1 :(得分:4)

你知道这个公开名单/一组预训练模型 - 或许另一个对巨型谷歌有益吗? :)

https://github.com/3Top/word2vec-api#where-to-get-a-pretrained-models

我不知道如何满足您的确切需求,但在Google小组上,我们讨论了可能有用的修剪模型:https://groups.google.com/forum/#!topic/gensim/wkVhcuyj0Sg

他们也参考了最近最小化模型的变化,但我知道这并不是你想要的。

https://github.com/RaRe-Technologies/gensim/pull/987