ValueError:加载GoogleNews-vectors-negative时数组太大

时间:2017-03-10 20:29:19

标签: python gensim

我正在尝试使用以下代码从Google加载预训练的单词向量:

from gensim import models
w = models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz', binary=True)

但我收到的错误告诉我

  

文件" C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ gensim \ models \ keyedvectors.py",第197行,在load_word2vec_format中       result.syn0 = zeros((vocab_size,vector_size),dtype = datatype)

     

ValueError:数组太大; arr.size * arr.dtype.itemsize大于最大可能大小。

有人可以建议一个可能的解决方案。提前谢谢。

1 个答案:

答案 0 :(得分:7)

这可能是因为您安装的Python使用32位寻址而触发,因此无法分配加载GoogleNews向量所需大小的数组。一些选择:

  • 切换到64位Python。请注意,完整的向量集需要3GB +才能加载,所以除非你有超过4GB的RAM,否则无论如何都很难使用全套。
  • 使用gensim的limit方法的可选load_word2vec_format()参数来仅读取文件中的某些早期条目。该文件似乎是最频繁到最不频繁的令牌顺序,因此通常早期的条目都是您需要的。例如,您可以尝试limit=500000只读取前500,000个条目(而不是全部300万个)