Як завантажувати розроблену модель FastText за допомогою Gensim?


21

Я спробував завантажити сюди розроблену модель FastText з цієї моделі Fasttext . Я використовую wiki.simple.en

from gensim.models.keyedvectors import KeyedVectors

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

Але, це показує наступні помилки

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

Запитання 1 Як я завантажую модель швидкого тексту за допомогою Gensim?

Питання 2 Також, завантаживши модель, я хочу знайти схожість між двома словами

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

Як це зробити?

Відповіді:


17

Ось посилання на методи, доступні для реалізації швидкого тексту в 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

Я отримую DeprecationWarning: Call to deprecated `load_fasttext_format` (use load_facebook_vectors. Тож я використовую from gensim.models.fasttext import load_facebook_model
Грушікеш Дхумал

8

Для використання .bin : load_fasttext_format()(як правило, містить повну модель з параметрами, nграм тощо).

Для використання .vec : load_word2vec_format(він містить ТОЛЬКІ слова-вектори -> немає nграм + ви не можете оновити модель).

Примітка :: Якщо ви зіткнулися з проблемами з пам'яттю чи ви не в змозі завантажити .bin моделей, а потім перевірити pyfasttext модель для того ж.

Кредити: Іван Менших (Gensim Maintainer)


1
"Для .bin .... ви можете продовжувати тренування після завантаження." Це неправда, оскільки в документації зазначається: "Через обмеження в API FastText ви не можете продовжувати навчання з завантаженою таким чином моделлю". radimrehurek.com/gensim/models/…
Андрій Дроздюк

Це більше не відповідає дійсності: DeprecationWarning: Застарене. Замість цього використовуйте gensim.models.KeyedVectors.load_word2vec_format.
mickythump

2

Двійковий формат FastText (який виглядає так, як ви намагаєтеся завантажити) не сумісний з форматом Gensim word2vec; перший містить додаткову інформацію про підслови, якими word2vecне користується.

На сторінці FastText Github є кілька обговорень цього питання (і вирішення цього питання). Коротше кажучи, вам доведеться завантажити текстовий формат (доступний за посиланням https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md ).

Завантаживши текстовий формат, ви можете використовувати Gensim, щоб зберегти його у двійковому форматі, що значно зменшить розмір моделі та пришвидшить подальше завантаження.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.