Bagaimana cara memuat model pretrain FastText dengan Gensim?

21

Saya mencoba memuat model fastText pretrained dari sini model Fasttext . Saya menggunakan wiki.simple.en

from gensim.models.keyedvectors import KeyedVectors

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

Tapi, itu menunjukkan kesalahan berikut

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

Pertanyaan 1 Bagaimana cara memuat model fasttext dengan Gensim?

Pertanyaan 2 Juga, setelah memuat model, saya ingin menemukan kesamaan antara dua kata

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

Bagaimana saya melakukan ini?

Sabbiu Shah
sumber

Jawaban:

17

Berikut tautan untuk metode yang tersedia untuk implementasi fasttext di 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
sumber
Saya mengerti DeprecationWarning: Call to deprecated `load_fasttext_format` (use load_facebook_vectors. Jadi saya menggunakan from gensim.models.fasttext import load_facebook_model
Hrushikesh Dhumal
8

Untuk penggunaan .bin : load_fasttext_format()(ini biasanya berisi model lengkap dengan parameter, ngram, dll).

Untuk penggunaan .vec : load_word2vec_format(ini HANYA berisi vektor-kata -> tanpa ngram + Anda tidak dapat memperbarui model).

Catatan :: Jika Anda menghadapi masalah dengan memori atau Anda tidak dapat memuat model .bin, maka periksa model pyfasttext untuk hal yang sama.

Penghargaan: Ivan Menshikh (Gensim Maintainer)

Akash Kandpal
sumber
1
"Untuk .bin .... kamu dapat melanjutkan pelatihan setelah memuat." Ini tidak benar, karena dokumentasi menyatakan: "Karena keterbatasan dalam API FastText, Anda tidak dapat melanjutkan pelatihan dengan model yang dimuat dengan cara ini." radimrehurek.com/gensim/models/…
Andriy Drozdyuk
Ini tidak lagi benar: DeprecationWarning: Deprecated. Gunakan gensim.models.KeyedVectors.load_word2vec_format sebagai gantinya.
mickythump
2

Format biner FastText (yang sepertinya Anda coba muat) tidak kompatibel dengan word2vecformat Gensim ; yang pertama berisi informasi tambahan tentang unit kata kunci, yang word2vectidak digunakan.

Ada beberapa diskusi tentang masalah ini (dan solusinya), di halaman FastText Github. Singkatnya, Anda harus memuat format teks (tersedia di https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md ).

Setelah Anda memuat format teks, Anda dapat menggunakan Gensim untuk menyimpannya dalam format biner, yang secara dramatis akan mengurangi ukuran model, dan mempercepat pemuatan di masa mendatang.

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

Fred
sumber