मैंने एक मॉडल को प्रशिक्षित किया है:

from gensim.models import Word2Vec    

model = Word2Vec(master_sent_list,
                     min_count=5,   
                     size=300,      
                     workers=5,    
                     window=5,      
                     iter=30)  

इसे इस पोस्ट:

model.wv.save_word2vec_format("../moj_word2vec.txt")
!gzip ../moj_word2vec.txt
!python -m spacy init-model en ../moj_word2vec.model --vectors-loc ../moj_word2vec.txt.gz

सब कुछ ठीक दिखता है:

✔ Successfully created model
22470it [00:02, 8397.55it/s]j_word2vec.txt.gz
✔ Loaded vectors from ../moj_word2vec.txt.gz
✔ Sucessfully compiled vocab
22835 entries, 22470 vectors

फिर मैं मॉडल को किसी भिन्न नाम से लोड करता हूं:

nlp = spacy.load('../moj_word2vec.model/')

हालांकि कुछ गलत हो जाता है, क्योंकि मैं nlp पर सामान्य कमांड का उपयोग नहीं कर सकता; कि मैं model पर कर सकता हूं।

उदाहरण के लिए, ये कार्य:

model.wv.most_similar('police')
model.vector_size

लेकिन ये नहीं करते:

nlp.wv.most_similar('police')
AttributeError: 'English' object has no attribute 'wv'

nlp.most_similar('police')
AttributeError: 'English' object has no attribute 'most_similar'

nlp.vector_size
AttributeError: 'English' object has no attribute 'vector_size'

तो ऐसा लगता है कि लोडिंग में कुछ टूट गया है, या शायद बचत, क्या कोई कृपया मदद कर सकता है?

0
Falc 26 मार्च 2020, 20:54

1 उत्तर

सबसे बढ़िया उत्तर

कुछ भी नहीं टूटा है - आपसे बस गलत अपेक्षाएं हैं।

आपके nlp वैरिएबल में लोड किए गए spacy के मॉडल, gensim मॉडल क्लास के तरीकों का समर्थन नहीं करेंगे।

यह एक अलग पुस्तकालय, कोड, कक्षाएं और एपीआई है - जो स्वयं gensim कोड अंडर-द-हुड का उपयोग नहीं करता है - भले ही यह सादे सेट-ऑफ-वेक्टर को मैदान से आयात कर सकता है <कोड> कोड>word2vec_format.

(उदाहरण के लिए, आपके काम कर रहे gensim मॉडल पर type(model) या type(model.wv) के परिणामों की तुलना करें, फिर type(nlp) के spacy ऑब्जेक्ट जो बाद में बनाया गया है: पूरी तरह से अलग प्रकार, विभिन्न विधियों/गुणों के साथ।)

आपको इनमें से कुछ संयोजन का उपयोग करना होगा:

  • समतुल्य संचालन के लिए spacy दस्तावेज़ों की जाँच करना

  • यदि आपको gensim संचालन की आवश्यकता है, तो वैक्टर को gensim मॉडल वर्ग में लोड करें। उदाहरण के लिए:

from gensim.models.keyedvectors import KeyedVectors
wv = KeyedVectors.load_word2vec_format(filename)
# then do gensim ops on the `wv` object

(आप .save() पद्धति का उपयोग करके संपूर्ण gensim Word2Vec मॉडल को भी सहेज सकते हैं, जो इसे एक या अधिक फ़ाइलों में संग्रहीत करेगा पायथन अचार बनाना। फिर इसे gensim Word2Vec मॉडल में Word2Vec.load() का उपयोग करके पुनः लोड किया जा सकता है - हालांकि यदि आपको केवल देखने की आवश्यकता है शब्द-कुंजी द्वारा अलग-अलग शब्द-वेक्टर पर, आपको पूर्ण मॉडल की आवश्यकता नहीं है।)

2
gojomo 27 मार्च 2020, 00:23