मैं Gensim के साथ FastText प्रीट्रेन मॉडल को कैसे लोड करूं?


21

मैंने फास्टटेक्स प्रीट्रेन मॉडल को फास्टटेक्स मॉडल से लोड करने की कोशिश की । मैं 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 मैं फास्टेक्स्ट मॉडल को जेनसिम के साथ कैसे लोड करूं?

प्रश्न 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()(इस आम तौर पर पैरामीटर, ngrams, आदि के साथ पूरा मॉडल शामिल हैं)।

के लिए .vec उपयोग: load_word2vec_format(यह केवल शब्द-वैक्टर शामिल -> आप + कोई ngrams एक मॉडल को अद्यतन नहीं कर सकते हैं)।

नोट :: यदि आप स्मृति के साथ समस्याओं का सामना कर रहे हैं या आप .bin मॉडल लोड नहीं कर पा रहे हैं, तो उसी के लिए pyfasttext मॉडल की जाँच करें ।

श्रेय: इवान मेन्शिख (जेनसिम मेंटेनर)


1
"Forbin .... लोडिंग के बाद आप प्रशिक्षण जारी रख सकते हैं।" यह सच नहीं है, जैसा कि दस्तावेज में कहा गया है: "फास्टटेक्स एपीआई में सीमाओं के कारण, आप इस तरह से लोड किए गए मॉडल के साथ प्रशिक्षण जारी नहीं रख सकते।" radimrehurek.com/gensim/models/…
एंड्री Drozdyuk

यह अब सच नहीं है: DeprecationWarning: पदावनत। इसके बजाय gensim.models.KeyedVectors.load_word2vec_format का उपयोग करें।
मिकिथम्प

2

फास्टटेक्स बाइनरी प्रारूप (जो कि ऐसा लगता है कि आप लोड करने की कोशिश कर रहे हैं) गेंसिम के word2vecप्रारूप के अनुरूप नहीं है ; पूर्व में सब-वे यूनिट के बारे में अतिरिक्त जानकारी होती word2vecहै , जिसका उपयोग नहीं किया जाता है।

FastText Github पेज पर इस मुद्दे (और वर्कअराउंड) की कुछ चर्चा है। संक्षेप में, आपको पाठ प्रारूप ( https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md पर उपलब्ध ) लोड करना होगा ।

एक बार जब आप पाठ प्रारूप को लोड कर लेते हैं, तो आप इसे बाइनरी प्रारूप में सहेजने के लिए गेंसिम का उपयोग कर सकते हैं, जो नाटकीय रूप से मॉडल के आकार को कम करेगा, और भविष्य के लोडिंग को गति देगा।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.