Python 3.x 使用python加载Freebase
我得到了freebase-vectors-skipgram1000-en.bin.gz 从…起 然后将其重命名为 freebase-vectors-skipgram1000-en.bin 并在我的代码中使用了它Python 3.x 使用python加载Freebase,python-3.x,utf-8,word2vec,freebase,Python 3.x,Utf 8,Word2vec,Freebase,我得到了freebase-vectors-skipgram1000-en.bin.gz 从…起 然后将其重命名为 freebase-vectors-skipgram1000-en.bin 并在我的代码中使用了它 import gensim.models.keyedvectors as word2vec gvc='freebase-vectors-skipgram1000-en.bin' model=word2vec.KeyedVectors.load_word2vec_format(gvc,bi
import gensim.models.keyedvectors as word2vec
gvc='freebase-vectors-skipgram1000-en.bin'
model=word2vec.KeyedVectors.load_word2vec_format(gvc,binary=True)
它给了我这个错误
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
我将非常感谢有关此问题的任何帮助。请使用此文件正确解包,而不是重命名您下载的内容:
$ gunzip -v freebase-vectors-skipgram1000-en.bin.gz
将压缩的
.gz
文件重命名为另一个没有.gz
的名称(但仍然是压缩的),通常会混淆使用该文件名作为文件格式提示的工具。要么保留文件的原始名称,要么真正解压它,加载就可以了。(Gensim也可以读取压缩的.gz
文件!)我使用.gz,现在它告诉我:数组太大了arr.size*arr.dtype.itemsize
大于最大可能大小。您可能会发现类似于/usr/bin/split-l 100
的命令非常有用。但最有可能的是,正如罗伊·谢德(Roy Scheider)的角色所宣布的,你需要一艘更大的船!获得内存更多的主机是合适的。非常感谢。是的,您可能需要更多的RAM。(即使您可以使用虚拟内存,这些模型上典型的most_simular()
操作也会触及每个元素,以找到前N个结果,这意味着任何交换都会对性能造成灾难性影响。)此外,如果您使用的是32位Python可执行文件(有时在Windows上仍然存在问题),您可能达到了阵列大小实现的限制。