Come carico il modello preinstallato FastText con Gensim?


21

Ho provato a caricare il modello preinstallato fastText da qui il modello Fasttext . Sto usando wiki.simple.en

from gensim.models.keyedvectors import KeyedVectors

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

Ma mostra i seguenti errori

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

Domanda 1 Come carico il modello fasttext con Gensim?

Domanda 2 Inoltre, dopo aver caricato il modello, voglio trovare la somiglianza tra due parole

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

Come faccio a fare questo?

Risposte:


17

Ecco il link per i metodi disponibili per l'implementazione di fasttext in 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

Ho capito DeprecationWarning: Call to deprecated `load_fasttext_format` (use load_facebook_vectors. Quindi sto usando from gensim.models.fasttext import load_facebook_model
Hrushikesh Dhumal il

8

Per l' uso .bin : load_fasttext_format()(in genere contiene un modello completo con parametri, ngram, ecc.).

Per l' uso .vec : load_word2vec_format(contiene SOLO vettori di parole -> nessun ngram + non è possibile aggiornare un modello).

Nota :: Se si riscontrano problemi con la memoria o non si è in grado di caricare modelli .bin, controllare lo stesso modello pyfasttext .

Crediti: Ivan Menshikh (Gensim Maintainer)


1
"Per .bin .... puoi continuare l'allenamento dopo il caricamento." Questo non è vero, come afferma la documentazione: "A causa delle limitazioni nell'API FastText, non è possibile continuare l'addestramento con un modello caricato in questo modo." radimrehurek.com/gensim/models/…
Andriy Drozdyuk

Questo non è più vero: DeprecationWarning: obsoleto. Utilizzare invece gensim.models.KeyedVectors.load_word2vec_format.
mickythump,

2

Il formato binario FastText (che sembra quello che stai cercando di caricare) non è compatibile con il word2vecformato di Gensim ; il primo contiene informazioni aggiuntive sulle unità di parole secondarie, che word2vecnon fanno uso di.

C'è qualche discussione sul problema (e una soluzione alternativa), nella pagina di FastText Github. In breve, dovrai caricare il formato del testo (disponibile su https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md ).

Dopo aver caricato il formato del testo, puoi usare Gensim per salvarlo in formato binario, il che ridurrà drasticamente le dimensioni del modello e accelererà il caricamento futuro.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.