我想用gensim从快速文本库加载经过预先训练的多语种单词嵌入;在这里,链接到嵌入:
https://fasttext.cc/docs/en/crawl-vectors.html
特别是,我想加载以下单词嵌入:
Gensim提供了以下两个加载快速文本文件的选项:
gensim.models.fasttext.load_facebook_model(path, encoding='utf-8')
- _Load the input-hidden weight matrix from Facebook’s native fasttext .bin output file._
- _load\_facebook\_model() loads the full model, not just word embeddings, and enables you to continue model training._
gensim.models.fasttext.load_facebook_vectors(path, encoding='utf-8')
- _Load word embeddings from a model saved in Facebook’s native fasttext .bin format._
- _load\_facebook\_vectors() loads the word embeddings only. Its faster, but does not enable you to continue training._
资料来源Gensim文档:https://radimrehurek.com/gensim/models/fasttext.html#gensim.models.fasttext.load_facebook_model
因为我的笔记本只有8GB内存,所以我继续获得MemoryErrors,或者加载需要很长时间(最多几分钟)。
是否有一个选项可以从磁盘加载这些大型模型,以提高内存效率?
发布于 2019-12-11 19:54:18
由于向量通常需要的可寻址内存至少与其磁盘上存储的内存一样多,因此将这些矢量的全功能版本加载到只有8GB RAM的机器上是很困难的。特别是:
一旦您开始对这些向量执行最常见的操作--找到目标单词/向量的most_similar()
单词列表-- gensim实现还需要缓存一组已标准化为单位长度的单词向量,这几乎使gensim当前版本的
。
如果您只使用向量,而不进行进一步的培训,那么您肯定希望只使用load_facebook_vectors()
选项。
如果您愿意放弃模型的能力来合成新的向量,而不是在训练中看到的,那么您可以选择从纯文本.vec
文件中只加载一个完整单词向量的子集。例如,仅加载第1 500 K向量:
from gensim.models.keyedvectors import KeyedVectors
KeyedVectors.load_word2vec_format('cc.de.300.vec', limit=500000)
由于这类向量通常被排序为将频繁出现的单词放在第一位,所以经常丢弃低频单词的长尾并不是很大的损失。
https://stackoverflow.com/questions/59282572
复制相似问题