小编Jas*_*per的帖子

SpaCy:如何加载Google新闻word2vec向量?

我尝试了几种加载google news word2vec向量的方法(https://code.google.com/archive/p/word2vec/):

en_nlp = spacy.load('en',vector=False)
en_nlp.vocab.load_vectors_from_bin_loc('GoogleNews-vectors-negative300.bin')
Run Code Online (Sandbox Code Playgroud)

以上给出:

MemoryError: Error assigning 18446744072820359357 bytes
Run Code Online (Sandbox Code Playgroud)

我也试过.gz打包向量; 或者使用gensim将它们加载并保存为新格式:

from gensim.models.word2vec import Word2Vec
model = Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
model.save_word2vec_format('googlenews2.txt')
Run Code Online (Sandbox Code Playgroud)

然后,该文件包含每行上的单词及其单词向量.我试着加载它们:

en_nlp.vocab.load_vectors('googlenews2.txt')
Run Code Online (Sandbox Code Playgroud)

但它返回"0".

这样做的正确方法是什么?

更新:

我可以将自己创建的文件加载到spacy中.我在每一行使用带有"string 0.0 0.0 ...."的test.txt文件.然后使用.bzip2将此txt压缩到test.txt.bz2.然后我创建一个spacy兼容的二进制文件:

spacy.vocab.write_binary_vectors('test.txt.bz2', 'test.bin')
Run Code Online (Sandbox Code Playgroud)

我可以加载到spacy:

nlp.vocab.load_vectors_from_bin_loc('test.bin')
Run Code Online (Sandbox Code Playgroud)

这有效!但是,当我为googlenews2.txt执行相同的过程时,我收到以下错误:

lib/python3.6/site-packages/spacy/cfile.pyx in spacy.cfile.CFile.read_into (spacy/cfile.cpp:1279)()

OSError: 
Run Code Online (Sandbox Code Playgroud)

python nlp word2vec spacy

19
推荐指数
2
解决办法
9117
查看次数

标签 统计

nlp ×1

python ×1

spacy ×1

word2vec ×1