gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:00:32 25 4
gpt4 key购买 nike

我尝试了几种加载谷歌新闻 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')

以上给出:

MemoryError: Error assigning 18446744072820359357 bytes

我也尝试过使用 .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')

然后该文件在每一行包含单词及其单词向量。我尝试加载它们:

en_nlp.vocab.load_vectors('googlenews2.txt')

但它返回“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')

我可以加载到 spacy 中:

nlp.vocab.load_vectors_from_bin_loc('test.bin')

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

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

OSError:

最佳答案

对于 spacy 1.x,将 Google 新闻向量加载到 gensim 中并转换为新格式(.txt 中的每一行都包含一个向量:string, vec):

from gensim.models.word2vec import Word2Vec
from gensim.models import KeyedVectors
model = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
model.wv.save_word2vec_format('googlenews.txt')

删除.txt的第一行:

tail -n +2 googlenews.txt > googlenews.new && mv -f googlenews.new googlenews.txt

将txt压缩为.bz2:

bzip2 googlenews.txt

创建兼容 SpaCy 的二进制文件:

spacy.vocab.write_binary_vectors('googlenews.txt.bz2','googlenews.bin')

将 googlenews.bin 移动到 python 环境的/lib/python/site-packages/spacy/data/en_google-1.0.0/vocab/googlenews.bin。

然后加载词向量:

import spacy
nlp = spacy.load('en',vectors='en_google')

或稍后加载它们:

nlp.vocab.load_vectors_from_bin_loc('googlenews.bin')

关于python - SpaCy:如何加载 Google 新闻 word2vec 向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42094180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com