使用 Gensim 减少 Google 的 Word2Vec 模型

Reduce Google's Word2Vec model with Gensim

通过 Google 加载完整的预训练 word2vec 模型非常耗时且乏味,因此我想知道是否有机会删除低于特定频率的单词以带来 vocab 计数下降到例如20 万字。

我在gensim包中找到了Word2Vec方法来确定词频并再次重新保存模型,但我不知道如何pop/remove vocab在再次保存之前从预先训练的模型中提取。我在 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

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

你知道这个开放的 list/set 预训练模型吗 - 也许替代模型会对大型 Google 模型有益? :)

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

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

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

因此,以下内容应该大致满足您的要求:

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