Gensim으로 FastText 사전 훈련 된 모델을 어떻게로드합니까?


21

여기 Fasttext model 에서 fastText pretrained 모델을로드하려고했습니다 . 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
Hrushikesh Dhumal

8

들어 .BIN 사용 : load_fasttext_format()(이것은 일반적으로 매개 변수, ngrams 등 전체 모델을 포함).

들어 .vec 사용 : load_word2vec_format(이것은 단지 워드 벡터를 포함 -> 당신 + 더 ngrams이 모델을 업데이트 할 수 없습니다).

참고 :: 메모리에 문제가 있거나 .bin 모델을로드 할 수없는 경우 pyfasttext 모델이 동일한 지 확인하십시오 .

크레딧 : Ivan Menshikh (Gensim 관리자)


1
".bin ....의 경우로드 후 교육을 계속할 수 있습니다." 설명서에 "FastText API의 제한으로 인해이 방법으로로드 된 모델로 교육을 계속할 수는 없습니다."와 같이 사실은 아닙니다. radimrehurek.com/gensim/models/…
Andriy Drozdyuk

더 이상 적용되지 않습니다 : 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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.