Làm cách nào để tôi tải mô hình tiền xử lý FastText với Gensim?


21

Tôi đã cố gắng tải mô hình tiền xử lý fastText từ đây mô hình Fasttext . Tôi đang sử dụng wiki.simple.en

from gensim.models.keyedvectors import KeyedVectors

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

Nhưng, nó cho thấy các lỗi sau

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

Câu hỏi 1 Làm cách nào để tải mô hình fasttext với Gensim?

Câu hỏi 2 Ngoài ra, sau khi tải mô hình, tôi muốn tìm sự tương đồng giữa hai từ

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

Làm thế nào để tôi làm điều này?

Câu trả lời:


17

Đây là liên kết cho các phương thức có sẵn để triển khai fasttext trong 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

Tôi nhận được DeprecationWarning: Call to deprecated `load_fasttext_format` (use load_facebook_vectors. Vì vậy, tôi đang sử dụng from gensim.models.fasttext import load_facebook_model
Hrushikesh Dhumal

8

Đối với .bin sử dụng: load_fasttext_format()(thông thường này chứa mô hình đầy đủ với các tham số, ngrams, v.v.).

Để sử dụng .vec : load_word2vec_format(phần này chỉ chứa các vectơ từ -> không ngrams + bạn không thể cập nhật mô hình).

Lưu ý :: Nếu bạn đang gặp vấn đề với bộ nhớ hoặc bạn không thể tải các mô hình .bin, thì hãy kiểm tra mô hình pyfasttext cho cùng.

Tín dụng: Ivan Menshikh (Người bảo trì Gensim)


1
"Đối với .bin .... bạn có thể tiếp tục đào tạo sau khi tải." Điều này không đúng, vì tài liệu nêu rõ: "Do những hạn chế trong API FastText, bạn không thể tiếp tục đào tạo với một mô hình được tải theo cách này." radimrehurek.com/gensim/models/ trộm
Andriy Drozdyuk 18/11/18

Điều này không còn đúng nữa: DeprecationWarning: Không dùng nữa. Thay vào đó, hãy sử dụng gensim.models.KeyedVector.load_word2vec_format.
mickythump

2

Định dạng nhị phân FastText (trông giống như bạn đang cố tải) không tương thích với word2vecđịnh dạng của Gensim ; cái trước chứa thông tin bổ sung về các đơn vị từ phụ, word2veckhông sử dụng.

Có một số thảo luận về vấn đề (và một cách giải quyết), trên trang FastText Github. Nói tóm lại, bạn sẽ phải tải định dạng văn bản (có sẵn tại https://github.com/facebookresearch/fastText/blob/master/pretrained-vector.md ).

Khi bạn đã tải định dạng văn bản, bạn có thể sử dụng Gensim để lưu định dạng nhị phân, điều này sẽ giảm đáng kể kích thước mô hình và tăng tốc độ tải trong tương lai.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.