निकटतम मिलान के लिए एंबेडिंग कैसे खोजें

Nikatatama Milana Ke Li E Embedinga Kaise Khojem



निकटतम मिलान के लिए एम्बेडिंग की खोज करने का अर्थ उन एम्बेडिंग को ढूंढना है जिनका एक-दूसरे से निकटतम अर्थ है। एम्बेडिंग एक वाक्य का वेक्टरियल प्रतिनिधित्व है जिसे विशिष्ट कार्यों के लिए इनपुट के रूप में भाषा मॉडल में फीड किया जाता है। हम यहां उस पद्धति और तकनीकों पर चर्चा करेंगे जिनका उपयोग समान एम्बेडिंग खोजने के लिए किया जा सकता है।

वाक्य - विन्यास

ऐसी कई तकनीकें और उपकरण मौजूद हैं जिनका उपयोग हम समानता के संदर्भ में उनके अंतर के आधार पर एम्बेडिंग के बीच अंतर खोजने के लिए कर सकते हैं। निम्नलिखित विधियाँ और उनके शामिल वाक्यविन्यास हैं जिनका उपयोग हम एम्बेडिंग समानताएँ खोजने के लिए करेंगे।







उन उल्लिखित बिंदुओं से, हम उन मॉडलों को जानते हैं जिनका उपयोग हम एम्बेडिंग के लिए समानता मिलान खोजने के लिए कर सकते हैं। अब, हम इनमें से प्रत्येक मॉडल का उपयोग करना सीखेंगे और इनमें से प्रत्येक मॉडल पर व्यक्तिगत उदाहरण लागू करेंगे।



उदाहरण 1: वर्ड एंबेडिंग के माध्यम से निकटतम मिलान को एम्बेड करना

समानता मिलान के लिए शब्द एम्बेडिंग को लागू करने से पहले, हमें एम्बेडिंग शब्द के बारे में जानना होगा। वर्ड एम्बेडिंग टेक्स्ट को वेक्टर (संख्यात्मक मान) के रूप में परिवर्तित करने की प्रक्रिया है क्योंकि हमारे सिस्टम केवल संख्यात्मक अंकों के रूप में इनपुट को समझते हैं।



इस कार्य को करने के कई अन्य तरीके हैं जिनमें वन-हॉट एन्कोडिंग शामिल है, लेकिन हम एम्बेडिंग शब्द का उपयोग करेंगे। इस तरह, एम्बेडिंग को तंत्रिका नेटवर्क के मॉडल (उदाहरण के लिए Word2vec या Glove) द्वारा पाठों से सीखा जा रहा है। शब्दों को उच्च-आयामी वेक्टर स्थान पर मैप किया गया है। वे सभी शब्द जो संदर्भ में समान हैं, निकटतम बिंदुओं पर मैप किए गए हैं। इस तरह, एम्बेडिंग पाठ में विभिन्न शब्दों के बीच संबंधों और समानताओं को पकड़ सकती है।





आइए एक वाक्य के लिए एक शब्द एम्बेडिंग बनाएं। एम्बेडिंग शब्द बनाने के लिए, पायथन 'जेनसिम' ढांचा प्रदान करता है। जेनसिम एक लाइब्रेरी पैकेज है जो 'वर्ड2वेक' मॉडल के उपयोग की अनुमति देता है जो एम्बेडिंग बनाने में मदद करता है। एम्बेडिंग को लागू करने के लिए, हम पहले अपने पायथन कंपाइलर्स पर जेनसिम इंस्टॉल करना सुनिश्चित करते हैं। फिर, जेनसिम से, हम 'वर्ड2वेक' मॉडल आयात करते हैं।

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



'वर्ड2वेक' मॉडल आयात करने के बाद, हम 'टेक्स्ट' निर्दिष्ट करते हैं। एक बार जब हम पाठ को निर्दिष्ट करते हैं, तो हम इस 'वर्ड2वेक' मॉडल को पाठ के साथ पास करके और न्यूनतम गिनती को '1' के बराबर सेट करके प्रशिक्षित करते हैं। अब, हम इस प्रशिक्षित को 'word2vec.wv.most_similar('consume')' मॉडल कहते हैं और उस शब्द को फीड करते हैं जिसके निकटतम एम्बेडिंग को हम जांचना चाहते हैं, जो इस उदाहरण में 'उपभोग' है। एम्बेडिंग परिणामों की जांच करने के लिए, हम मॉडल से आउटपुट प्रिंट करते हैं:

से एक राष्ट्र के रूप में मॉडल आयात Word2Vec
मूलपाठ = [ [ 'खरगोश' , 'है' , 'दाँत' ] ]
नमूना = Word2Vec ( मूलपाठ , min_count = 1 )
समान_एम्बेडिंग = नमूना। wv . सबसे_समान ( 'खरगोश' )
छपाई ( समान_एम्बेडिंग )

इस उदाहरण में, हम संदर्भ के संदर्भ में उनकी समानता की जांच करने के लिए 'word2vec' मॉडल का उपयोग करके टेक्स्ट के लिए शब्द एम्बेडिंग बनाते हैं और इसे पहले से संलग्न स्निपेट में देखा जा सकता है जो कोड का आउटपुट है जो समान एम्बेडिंग की जांच करता है 'उपभोग' शब्द का।

उदाहरण 2: बीईआरटी मॉडल के माध्यम से निकटतम खोज को एम्बेड करना

पूर्व-प्रशिक्षित प्राकृतिक भाषा प्रसंस्करण मॉडल मौजूद हैं जिनका उपयोग ग्रंथों के बीच समानता की गणना करने के लिए किया जा सकता है क्योंकि वे शब्दों के बीच प्रासंगिक संबंध को समझ और सीख सकते हैं। BERT 'वाक्य_ट्रांसफॉर्मर्स' से पूर्व-प्रशिक्षित भाषा मॉडल में से एक है और यह ग्रंथों के बीच समानताएं सीख सकता है। पाठों के बीच समानता खोजने के लिए, हमें पहले इस मॉडल को पाठ या वाक्यों के अनुरूप बनाना होगा।

एक बार यह पूरा हो जाने पर, हम एम्बेडिंग सीखने के लिए इस मॉडल का उपयोग कर सकते हैं। फिर, हम 'कोसाइन समानता' फ़ंक्शन का उपयोग करके ग्रंथों के बीच समानता की गणना कर सकते हैं। हम इस उदाहरण को ऑनलाइन पायथन प्लेटफ़ॉर्म पर लागू करते हैं जो 'Google कोलाब' है। मॉडल को बेहतर बनाने के लिए, हम (BERT) मॉडल लोड करते हैं। उस उद्देश्य के लिए, हम पहले 'सेंटेंसट्रांसफॉर्मर्स' को स्थापित और आयात करते हैं। फिर, हम SentenceTransformer का उपयोग करके मॉडल को उसके पूर्व-प्रशिक्षित मॉडल से लोड करते हैं। मॉडल को लोड करने के लिए, हम SentenceTransformer और BERT मॉडल को कुल मिलाकर '$SentenceTransformer('bert-base-nli-mean-tokens')' कहते हैं, जहां हम इनपुट पैरामीटर में BERT के पूर्व-प्रशिक्षित मॉडल का नाम निर्दिष्ट करते हैं और फिर हम इसे 'BERTmodel' वेरिएबल में सेव करते हैं।

इस मॉडल को लोड करने के बाद, अब हम चार पाठ निर्दिष्ट करते हैं, जिनमें से प्रत्येक में उनके बीच समानता की जांच करने के लिए एक वाक्य होता है। एक बार जब हम उदाहरण के लिए पाठ निर्दिष्ट कर लेते हैं, तो अब हम इस पाठ के लिए एम्बेडिंग बनाते हैं। हम 'एनकोड' फ़ंक्शन का उपयोग करके प्रत्येक पाठ के लिए व्यक्तिगत रूप से एम्बेडिंग बनाते हैं।

हम BERT मॉडल के उपसर्ग के साथ एन्कोडिंग फ़ंक्शन को 'BERTmodel.encoding ()' कहते हैं। फिर हम 'टेक्स्ट' और 'अधिकतम लंबाई' को पास करते हैं जिसे हमने इस फ़ंक्शन के मापदंडों के लिए '512' के बराबर तय किया है। हम प्रत्येक पाठ पर इस एन्कोडिंग फ़ंक्शन को कॉल करते हैं, और यह पाठ को एम्बेडिंग में परिवर्तित करता है।

अब, हम इनमें से प्रत्येक एम्बेडिंग का उपयोग करते हैं और इन एम्बेडिंग के बीच समानता खोजने के लिए उन्हें कोसाइन समानता फ़ंक्शन में प्रतिस्थापित करते हैं। कोसाइन समानता फ़ंक्शन का उपयोग पाठों/दस्तावेज़ों के वर्गीकरण और क्लस्टरिंग के लिए सभी प्राकृतिक भाषा प्रसंस्करण कार्यों में व्यापक रूप से किया जाता है।

इन एम्बेडिंग के बीच समानता खोजने के लिए, हम कोसाइन समानता फ़ंक्शन का उपयोग करते हैं और अन्य 3 के साथ वाक्य 0 की समानता की जांच करने के लिए एम्बेडेड वाक्य के मान को इंडेक्स '0' और अन्य एम्बेडेड वाक्य को '1 से 3' इंडेक्स के साथ प्रतिस्थापित करते हैं। वाक्य। कोसाइन समानता फ़ंक्शन आउटपुट मान -1 से 1 तक होते हैं। यहां, 1 बताता है कि दो एम्बेडिंग समान हैं और -1 कहता है कि दो एम्बेडिंग समान नहीं हैं। हमने कोड स्निपेट संलग्न किया है जो चार वाक्य एम्बेडिंग का उपयोग करके कोसाइन समानता फ़ंक्शन को लागू करने की विधि दिखाता है जिसे हमने पूर्व-प्रशिक्षित BERT मॉडल का उपयोग करके उदाहरणों में बनाया है।

!पिप वाक्य_ट्रांसफॉर्मर स्थापित करें
वाक्य = [
'चार साल पहले, बोतल और भी भरी हुई थी।',
'कुत्ते ने पिंजरे से और उस गली से भागने का सपना देखा जहां उसने अपने दोस्त को जाते देखा था।',
'वह शख्स कई महीनों से जेलिफ़िश के साथ खेल रहा था।',
'उसे अपनी अलमारी में एक घोंघा मिला।']
वाक्य_ट्रांसफॉर्मर्स से सेंटेंसट्रांसफॉर्मर आयात करें
बर्टमॉडल = सेंटेंसट्रांसफॉर्मर ('बर्ट-बेस-एनएलआई-मीन-टोकन')
वाक्य_एम्बेडिंग्स = Bertmodel.encode(वाक्य)
वाक्य_एम्बेडिंग्स.आकार
sklearn.metrics.pairways से cosine_similarity आयात करें
# वाक्य 0 के लिए कोसाइन समानता की गणना करें:
कोसाइन_समानता(
[वाक्य_एम्बेडिंग्स[0]],
वाक्य_एम्बेडिंग्स[1:])

आउटपुट में सरणी अन्य तीन वाक्यों के लिए 'वाक्य 0' का समानता मान प्रदर्शित करती है, उदाहरण के लिए 1, 2, और 3.

निष्कर्ष

हमने एम्बेडिंग के बीच समानता खोजने के तरीकों पर चर्चा की। हमने 'word2vec' जेनसिम मॉडल और पूर्व-प्रशिक्षित BERT मॉडल का उपयोग करके एम्बेडिंग के निकटतम मिलान की खोज करने के लिए दो अलग-अलग उदाहरण दिखाए।