ฉันจะโหลดแบบจำลอง FastText ที่ผ่านการอบรมด้วย Gensim ได้อย่างไร


21

ผมพยายามที่จะโหลด fastText รุ่น pretrained จากที่นี่รุ่น 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ฉันจะโหลดโมเดล fasttext ด้วย 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(มีเพียง word-vectors -> ไม่มี nums + คุณไม่สามารถอัปเดตโมเดลได้)

หมายเหตุ :: หากคุณกำลังประสบปัญหากับหน่วยความจำหรือคุณไม่สามารถโหลดรุ่น. 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 (ซึ่งเป็นสิ่งที่ดูเหมือนว่าคุณกำลังพยายามโหลด) เข้ากันไม่ได้กับword2vecรูปแบบของ Gensim ; อดีตมีข้อมูลเพิ่มเติมเกี่ยวกับหน่วยย่อยซึ่ง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.