Как загрузить предварительно подготовленную модель 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

Вот ссылка на методы, доступные для реализации fasttext в 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()(обычно содержит полную модель с параметрами, ngrams и т. Д.).

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

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

Кредиты: Иван Меньших (сопровождающий Генсим)

Акаш Кандпал
источник
1
«Для .bin .... вы можете продолжить тренировку после загрузки». Это не так, как говорится в документации: «Из-за ограничений в FastText API вы не можете продолжить обучение с моделью, загруженной таким образом». 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/issues/171#issuecomment-294295302

Фред
источник