Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

464
Visualizações
SpaCy: ¿cómo cargar vectores word2vec de noticias de Google?

Probé varios métodos para cargar los vectores word2vec de Google News ( 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')

Lo anterior da:

 MemoryError: Error assigning 18446744072820359357 bytes

También probé con los vectores empaquetados .gz; o cargándolos y guardándolos con gensim en un nuevo formato:

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

Este archivo contiene las palabras y sus vectores de palabras en cada línea. Intenté cargarlos con:

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

pero devuelve "0".

¿Cuál es la forma correcta de hacer esto?

Actualizar:

Puedo cargar mi propio archivo creado en spacy. Uso un archivo test.txt con "string 0.0 0.0 ...." en cada línea. Luego comprima este txt con .bzip2 en test.txt.bz2. Luego creo un archivo binario compatible con espacio:

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

Que puedo cargar en espaciosos:

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

¡Esto funciona! Sin embargo, cuando hago el mismo proceso para googlenews2.txt, aparece el siguiente error:

 lib/python3.6/site-packages/spacy/cfile.pyx in spacy.cfile.CFile.read_into (spacy/cfile.cpp:1279)() OSError:
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Para spacy 1.x, cargue los vectores de noticias de Google en gensim y conviértalos a un nuevo formato (cada línea en .txt contiene un solo vector: cadena, 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')

Elimina la primera línea del .txt:

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

Comprima el txt como .bz2:

 bzip2 googlenews.txt

Cree un archivo binario compatible con SpaCy:

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

Mueva googlenews.bin a /lib/python/site-packages/spacy/data/en_google-1.0.0/vocab/googlenews.bin de su entorno de python.

Luego carga los vectores de palabras:

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

o cargarlos después más tarde:

 nlp.vocab.load_vectors_from_bin_loc('googlenews.bin')
over 4 years ago · Santiago Trujillo Relatório

0

Sé que esta pregunta ya ha sido respondida, pero voy a ofrecer una solución más simple. Esta solución cargará vectores de noticias de Google en un objeto nlp espacioso en blanco.

 import gensim import spacy # Path to google news vectors google_news_path = "path\to\google\news\\GoogleNews-vectors-negative300.bin.gz" # Load google news vecs in gensim model = gensim.models.KeyedVectors.load_word2vec_format(gn_path, binary=True) # Init blank english spacy nlp object nlp = spacy.blank('en') # Loop through range of all indexes, get words associated with each index. # The words in the keys list will correspond to the order of the google embed matrix keys = [] for idx in range(3000000): keys.append(model.index2word[idx]) # Set the vectors for our nlp object to the google news vectors nlp.vocab.vectors = spacy.vocab.Vectors(data=model.syn0, keys=keys) >>> nlp.vocab.vectors.shape (3000000, 300)
over 4 years ago · Santiago Trujillo Relatório

0

Estoy usando spaCy v2.0.10.

Cree un archivo binario compatible con SpaCy:

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

Quiero resaltar que el código específico en la respuesta aceptada no funciona ahora. Encontré "AttributeError: ..." cuando ejecuto el código.

Esto ha cambiado en spaCy v2. write_binary_vectors se eliminó en v2. De la documentación de spaCy , la forma actual de hacer esto es la siguiente:

 $ python -m spacy init-model en /path/to/output -v /path/to/vectors.bin.tar.gz
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda