Mah*_*hsa 5 python gensim google-news word2vec word-embedding
我正在使用gensim库从GoogleNews数据集中加载经过预训练的单词向量。该数据集包含300万个维度的3000000个词向量。当我想加载GoogleNews数据集时,出现内存错误。我曾经尝试过此代码而没有内存错误,而且我不知道为什么现在会收到此错误。我已经检查了很多网站来解决此问题,但我无法理解。这是我加载GoogleNews的代码:
import gensim.models.keyedvectors as word2vec
model=word2vec.KeyedVectors.load_word2vec_format("GoogleNews-vectors-negative300.bin",binary=True)
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
File "/home/mahsa/PycharmProjects/tensor_env_project/word_embedding_DUC2007/inspect_word2vec-master/word_embeddings_GoogleNews.py", line 8, in <module>
model=word2vec.KeyedVectors.load_word2vec_format("GoogleNews-vectors-negative300.bin",binary=True)
File "/home/mahsa/anaconda3/envs/tensorflow_env/lib/python3.5/site-packages/gensim/models/keyedvectors.py", line 212, in load_word2vec_format
result.syn0 = zeros((vocab_size, vector_size), dtype=datatype)
MemoryError
Run Code Online (Sandbox Code Playgroud)
有谁能够帮助我?谢谢。
仅加载原始向量将需要...
3,000,000字* 300尺寸* 4字节/维= 3.6GB
...的可寻址内存(加上字键到索引位置映射的一些开销)。
此外,一旦您要执行most_similar()-type操作,将创建矢量的单位长度归一化版本-这将需要另外3.6GB。(如果只在单位范数向量之间进行余弦相似度比较,则可以通过1st强制显式来代替原始向量,节省额外的内存model.init_sims(replace=True)。)
因此,您通常只希望在具有至少8GB RAM的计算机上执行全部操作。(在全数组most_similar()查找过程中进行任何交换都会使操作非常缓慢。)
如果其他任何东西正在使用Python堆空间,则可能是MemoryError您所看到的。
该load_word2vec_format()方法还有一个可选limit参数,该参数将仅加载提供的向量数量-因此您可以limit=500000用来将内存需求减少约5/6倍。(而且,由于GoogleNews和向量集通常按频率从高到低的顺序排列,因此您会获得500K的频率最高的单词。频率较低的单词通常价值不高,甚至不如矢量,因此忽略它们可能不会造成太大伤害。)
| 归档时间: |
|
| 查看次数: |
3163 次 |
| 最近记录: |