使用 Gensim 减少 Google 的 Word2Vec 模型
Reduce Google's Word2Vec model with Gensim
通过 Google 加载完整的预训练 word2vec 模型非常耗时且乏味,因此我想知道是否有机会删除低于特定频率的单词以带来 vocab
计数下降到例如20 万字。
我在gensim
包中找到了Word2Vec方法来确定词频并再次重新保存模型,但我不知道如何pop
/remove
vocab在再次保存之前从预先训练的模型中提取。我在 KeyedVector class
和 Word2Vec 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
他们还引用了最近关于最小化模型的更改,但我知道这并不是您想要的。
GoogleNews 词向量文件格式不包含频率信息。但是,它似乎确实按照大致更频繁到更不频繁的顺序进行排序。
并且,load_word2vec_format()
提供了一个可选的 limit
参数,该参数仅从给定文件中读取那么多向量。
因此,以下内容应该大致满足您的要求:
goognews_wordecs = KeyedVectors.load_word2vec_format(`GoogleNews-vectors-negative300.bin.gz`, binary=True, limit=200000)
通过 Google 加载完整的预训练 word2vec 模型非常耗时且乏味,因此我想知道是否有机会删除低于特定频率的单词以带来 vocab
计数下降到例如20 万字。
我在gensim
包中找到了Word2Vec方法来确定词频并再次重新保存模型,但我不知道如何pop
/remove
vocab在再次保存之前从预先训练的模型中提取。我在 KeyedVector class
和 Word2Vec 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
他们还引用了最近关于最小化模型的更改,但我知道这并不是您想要的。
GoogleNews 词向量文件格式不包含频率信息。但是,它似乎确实按照大致更频繁到更不频繁的顺序进行排序。
并且,load_word2vec_format()
提供了一个可选的 limit
参数,该参数仅从给定文件中读取那么多向量。
因此,以下内容应该大致满足您的要求:
goognews_wordecs = KeyedVectors.load_word2vec_format(`GoogleNews-vectors-negative300.bin.gz`, binary=True, limit=200000)