Я пробовал несколько способов загрузки векселей word2vec в новостях google (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. Я использую файл test.txt с "строкой 0.0 0.0...." в каждой строке. Затем запишите этот txt с.bzip2 в test.txt.bz2. Затем я создаю совместимый двоичный файл:
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: