¿Cómo cargo el modelo entrenado FastText con Gensim?

21

Traté de cargar el modelo preformado fastText desde aquí el modelo Fasttext . Estoy usando wiki.simple.en

from gensim.models.keyedvectors import KeyedVectors

word_vectors = KeyedVectors.load_word2vec_format('wiki.simple.bin', binary=True)

Pero, muestra los siguientes errores

Traceback (most recent call last):
  File "nltk_check.py", line 28, in <module>
    word_vectors = KeyedVectors.load_word2vec_format('wiki.simple.bin', binary=True)
  File "P:\major_project\venv\lib\sitepackages\gensim\models\keyedvectors.py",line 206, in load_word2vec_format
     header = utils.to_unicode(fin.readline(), encoding=encoding)
  File "P:\major_project\venv\lib\site-packages\gensim\utils.py", line 235, in any2unicode
    return unicode(text, encoding, errors=errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position 0: invalid start byte

Pregunta 1 ¿Cómo cargo el modelo de texto rápido con Gensim?

Pregunta 2 Además, después de cargar el modelo, quiero encontrar la similitud entre dos palabras

 model.find_similarity('teacher', 'teaches')
 # Something like this
 Output : 0.99

¿Cómo hago esto?

Sabbiu Shah
fuente

Respuestas:

17

Aquí está el enlace para los métodos disponibles para la implementación de fasttext en gensim fasttext.py

from gensim.models.wrappers import FastText

model = FastText.load_fasttext_format('wiki.simple')

print(model.most_similar('teacher'))
# Output = [('headteacher', 0.8075869083404541), ('schoolteacher', 0.7955552339553833), ('teachers', 0.733420729637146), ('teaches', 0.6839243173599243), ('meacher', 0.6825737357139587), ('teach', 0.6285147070884705), ('taught', 0.6244685649871826), ('teaching', 0.6199781894683838), ('schoolmaster', 0.6037642955780029), ('lessons', 0.5812176465988159)]

print(model.similarity('teacher', 'teaches'))
# Output = 0.683924396754
Sabbiu Shah
fuente
Consigo DeprecationWarning: Call to deprecated `load_fasttext_format` (use load_facebook_vectors. Así que estoy usando from gensim.models.fasttext import load_facebook_model
Hrushikesh Dhumal
8

Para uso .bin : load_fasttext_format()(normalmente contiene un modelo completo con parámetros, ngrams, etc.).

Para uso .vec : load_word2vec_format(esto contiene SOLO vectores de palabras -> no ngrams + no puede actualizar un modelo).

Nota :: Si tiene problemas con la memoria o no puede cargar modelos .bin, compruebe el modelo de pyfasttext para el mismo.

Créditos: Ivan Menshikh (Gensim Maintainer)

Akash Kandpal
fuente
1
"Para .bin ... puedes continuar entrenando después de cargar". Esto no es cierto, como dice la documentación: "Debido a limitaciones en la API FastText, no puede continuar entrenando con un modelo cargado de esta manera". radimrehurek.com/gensim/models/…
Andriy Drozdyuk
Esto ya no es cierto: DeprecationWarning: En desuso. Utilice gensim.models.KeyedVectors.load_word2vec_format en su lugar.
mickythump
2

El formato binario FastText (que es lo que parece que está intentando cargar) no es compatible con el word2vecformato de Gensim ; el primero contiene información adicional sobre unidades de subpalabras, que word2vecno utiliza.

Hay una discusión sobre el problema (y una solución alternativa) en la página FastText Github. En resumen, deberá cargar el formato de texto (disponible en https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md ).

Una vez que haya cargado el formato de texto, puede usar Gensim para guardarlo en formato binario, lo que reducirá drásticamente el tamaño del modelo y acelerará la carga futura.

https://github.com/facebookresearch/fastText/issues/171#issuecomment-294295302

Fred
fuente