FastText pretrained modelini Gensim ile nasıl yüklerim?


21

Ben FastText pretrained modeli buradan Fasttext model yüklemeye çalıştım . Wiki.simple.en kullanıyorum

from gensim.models.keyedvectors import KeyedVectors

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

Ancak, aşağıdaki hataları gösterir

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

Soru 1 Gensim ile hızlı metin modelini nasıl yükleyebilirim?

Soru 2 Ayrıca, modeli yükledikten sonra, iki kelime arasındaki benzerliği bulmak istiyorum

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

Bunu nasıl yaparım?

Yanıtlar:


17

Gensim fasttext.py dosyasında fasttext uygulaması için kullanılabilecek yöntemlerin bağlantısı

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

Anladım DeprecationWarning: Call to deprecated `load_fasttext_format` (use load_facebook_vectors. Yani kullanıyorum from gensim.models.fasttext import load_facebook_model
Hrushikesh Dhumal

8

İçin .bin kullanım: load_fasttext_format()(bu tipik parametreler, ngrams, vb ile tam bir model içerir).

İçin .vec kullanım: load_word2vec_format(bu SADECE kelime vektörleri içeren -> Size + hiçbir ngrams bir modeli güncellemek olamaz).

Not :: Bellek ile ilgili sorun yaşıyorsanız veya .bin modellerini yükleyemiyorsanız, pyfasttext modelini kontrol edin .

Kredi: Ivan Menshikh (Gensim Bakımcısı)


1
".Bin için .... yükledikten sonra eğitime devam edebilirsiniz." Belgelerde belirtildiği gibi bu doğru değil: "FastText API'sindeki sınırlamalar nedeniyle, bu şekilde yüklenen bir modelle eğitime devam edemezsiniz." radimrehurek.com/gensim/models/…
Andriy Drozdyuk

Bu artık geçerli değil: Kullanım Dışı Uyarı: Kullanımdan kaldırıldı. Bunun yerine gensim.models.KeyedVectors.load_word2vec_format kullanın.
mickythump

2

FastText ikili biçimi (yüklemeye çalıştığınız gibi görünüyor) Gensim'in word2vecformatıyla uyumlu değildir ; ilki, alt sözcük birimleri hakkında kullanılmayan ek bilgiler word2veciçerir.

FastText Github sayfasında sorunla ilgili bir tartışma (ve bir geçici çözüm) var. Kısacası, metin biçimini yüklemeniz gerekir ( https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md adresinde bulunabilir ).

Metin biçimini yükledikten sonra, model boyutunu önemli ölçüde azaltacak ve gelecekteki yüklemeyi hızlandıracak şekilde Gensim'i ikili biçimde kaydetmek için kullanabilirsiniz.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.