按Google加载完整的预训练word2vec模型是耗时且繁琐的,因此我想知道是否有机会删除某个频率以下的字词以将vocab
计数降低到例如200k字。
我在gensim
包中找到Word2Vec方法来确定单词频率并重新保存模型,但我不确定如何pop
/ remove
词汇来自再次保存之前预先训练好的模型。对于这样的操作,我无法在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
如何选择预训练word2vec模型的词汇子集?
答案 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
他们也参考了最近最小化模型的变化,但我知道这并不是你想要的。