मुख्य सामग्री पर जाएँ

Transformers और Hugging Face का उपयोग: एक परिचय

Transformers को समझें और वास्तविक जीवन की समस्याओं को सुलझाने के लिए उनकी शक्ति का उपयोग करें।
· 15 मि॰ पढ़ें

AI के साथ खोजें

परिचय

पिछले कुछ दशकों में NLP (नेचुरल लैंग्वेज प्रोसेसिंग) में शोधकर्ताओं के व्यापक योगदान ने विभिन्न क्षेत्रों में नवाचारपूर्ण परिणाम दिए हैं। नीचे व्यवहार में नेचुरल लैंग्वेज प्रोसेसिंग के कुछ उदाहरण दिए गए हैं:

  • Apple का Siri पर्सनल असिस्टेंट, जो उपयोगकर्ताओं की रोज़मर्रा की गतिविधियों जैसे अलार्म लगाना, संदेश भेजना, सवालों के जवाब देना आदि में मदद कर सकता है।
  • चिकित्सा क्षेत्र के शोधकर्ता NLP का उपयोग तेज़ दवा खोज का मार्ग प्रशस्त करने के लिए करते हैं।  
  • भाषा अनुवाद एक और उत्कृष्ट अनुप्रयोग है क्योंकि यह हमें संचार बाधाओं को पार करने देता है।  

यह संकल्पनात्मक ब्लॉग Transformers को कवर करने का लक्ष्य रखता है, जो नेचुरल लैंग्वेज प्रोसेसिंग में अब तक बनाए गए सबसे शक्तिशाली मॉडलों में से एक है। Recurrent neural networks की तुलना में उनके फ़ायदों को समझाने के बाद, हम आपके Transformers संबंधी समझ का निर्माण करेंगे। फिर, हम आपको Huggingface transformers का उपयोग करते हुए कुछ वास्तविक दुनिया के केस सीनारियो से गुजरेंगे।

आप हमारे कोड-अलॉन्ग के साथ Hugging Face के साथ NLP एप्लिकेशन बनाना भी और गहराई से सीख सकते हैं।

Recurrent Network — Transformers से पहले का स्वर्णिम दौर 

Transformers की मूल अवधारणा में जाने से पहले, आइए संक्षेप में समझते हैं कि recurrent मॉडल क्या होते हैं और उनकी सीमाएँ क्या हैं।

Recurrent नेटवर्क encoder-decoder आर्किटेक्चर अपनाते हैं, और हम इन्हें मुख्यतः तब उपयोग करते हैं जब इनपुट और आउटपुट दोनों ही किसी परिभाषित क्रम में अनुक्रम होते हैं। Recurrent नेटवर्क के कुछ प्रमुख अनुप्रयोग हैं मशीन अनुवाद और टाइम सीरीज़ डेटा मॉडलिंग।

Recurrent नेटवर्क के साथ चुनौतियाँ 

मान लीजिए कि निम्नलिखित फ़्रेंच वाक्य का अंग्रेज़ी में अनुवाद करना है। एन्कोडर को दिया गया इनपुट मूल फ़्रेंच वाक्य है, और डिकोडर द्वारा अनूदित आउटपुट उत्पन्न किया जाता है।

Encoder

भाषा अनुवाद के लिए recurrent नेटवर्क का एक सरल चित्रण

  • इनपुट फ़्रेंच वाक्य एन्कोडर को एक-एक शब्द कर के भेजा जाता है, और उसी क्रम में डिकोडर के माध्यम से शब्द embeddings उत्पन्न होते हैं, जिससे इनका प्रशिक्षण धीमा हो जाता है।
  • वर्तमान शब्द की hidden state पिछले शब्दों की hidden states पर निर्भर करती है, जिससे उपयोग की गई कंप्यूट शक्ति चाहे जितनी भी हो, समानांतर गणना कर पाना असंभव हो जाता है। 
  • लंबे नेटवर्क होने पर sequence-to-sequence न्यूरल नेटवर्क्स में exploding gradients की समस्या आती है, जिससे उनका प्रदर्शन खराब हो सकता है। 
  • Long Short-Term Memory (LSTM) नेटवर्क, जो recurrent नेटवर्क का ही एक प्रकार हैं, vanishing gradient को कम करने के लिए पेश किए गए थे, लेकिन ये sequence मॉडलों से भी अधिक धीमे होते हैं। 

क्या यह अच्छा नहीं होगा कि हमारे पास ऐसा मॉडल हो जो recurrent नेटवर्क के फ़ायदों को संग्रहीत करे और साथ ही समानांतर गणना भी संभव बना दे? 

यहीं पर transformers बहुत काम आते हैं।

NLP में transformers क्या हैं?

Transformers एक नया, सरल लेकिन शक्तिशाली न्यूरल नेटवर्क आर्किटेक्चर है जिसे Google Brain ने 2017 में अपने प्रसिद्ध शोध पत्र “Attention is all you need” के साथ पेश किया। यह recurrent नेटवर्क में दिखने वाली क्रमिक गणना के बजाय attention तंत्र पर आधारित है। 

Transformers के मुख्य घटक क्या हैं?

Recurrent नेटवर्क की तरह, transformers में भी दो मुख्य ब्लॉक होते हैं: encoder और decoder, जिनमें से प्रत्येक में self-attention तंत्र होता है। Transformers के पहले संस्करण में RNN और LSTM आधारित encoder-decoder आर्किटेक्चर था, जिसे बाद में self-attention और feed-forward नेटवर्क से बदल दिया गया।

निम्नलिखित अनुभाग में transformers के प्रत्येक ब्लॉक के मुख्य घटकों का एक सामान्य अवलोकन दिया गया है। 

components of transformers

Transformers की सामान्य आर्किटेक्चर (लेखक द्वारा अनुकूलित)

इनपुट वाक्य प्रीप्रोसेसिंग चरण

इस भाग में दो मुख्य चरण शामिल हैं: (1) इनपुट वाक्य के embeddings का निर्माण, और (2) इनपुट वाक्य में प्रत्येक शब्द का positional वेक्टर गणना करना। सभी गणनाएँ सोर्स वाक्य (एन्कोडर ब्लॉक से पहले) और टार्गेट वाक्य (डिकोडर ब्लॉक से पहले) दोनों के लिए समान तरीके से की जाती हैं। 

इनपुट डेटा का embedding

इनपुट डेटा के embeddings बनाने से पहले, हम टोकनाइज़ेशन करते हैं, फिर प्रत्येक व्यक्तिगत शब्द का embedding बनाते हैं, बिना वाक्य में उनके आपसी संबंधों पर ध्यान दिए। 

Positional encoding

टोकनाइज़ेशन कार्य इनपुट वाक्य में विद्यमान संबंध की किसी भी धारणा को हटा देता है। Positional encoding प्रत्येक शब्द के लिए एक संदर्भ वेक्टर बनाकर मूल चक्रीय प्रकृति को पुनः निर्मित करने का प्रयास करता है। 

Encoder ब्लॉक 

पिछले चरण के अंत में, हमें प्रत्येक शब्द के लिए दो वेक्टर मिलते हैं: (1) embedding और (2) उसका संदर्भ वेक्टर। इन वेक्टरों को जोड़कर प्रत्येक शब्द के लिए एकल वेक्टर बनाया जाता है, जिसे फिर एन्कोडर को भेजा जाता है। 

मल्टी-हेड attention

जैसा कि पहले उल्लेख किया गया, हमने संबंध की सारी धारणा खो दी है। Attention लेयर का उद्देश्य इनपुट वाक्य के विभिन्न शब्दों के बीच विद्यमान संदर्भ संबंधों को पकड़ना है। यह चरण अंततः प्रत्येक शब्द के लिए एक attention वेक्टर उत्पन्न करता है।

पोज़िशन-वाइज़ फ़ीड-फ़ॉरवर्ड नेटवर्क (FFN)

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

Decoder ब्लॉक

डिकोडर ब्लॉक में तीन मुख्य लेयर्स होती हैं: masked multi-head attention, multi-head attention, और एक position-wise feed-forward नेटवर्क। अंतिम दो लेयर्स हम पहले से समझ चुके हैं, जो एन्कोडर में भी समान हैं। 

डिकोडर नेटवर्क के प्रशिक्षण के दौरान समीकरण में आता है, और इसे दो मुख्य इनपुट मिलते हैं: (1) उस इनपुट वाक्य के attention वेक्टर जिन्हें हम अनुवाद करना चाहते हैं और (2) अंग्रेज़ी में अनूदित लक्ष्य वाक्य। 

तो, masked multi-head attention लेयर की ज़िम्मेदारी क्या है?

अगले अंग्रेज़ी शब्द को उत्पन्न करते समय, नेटवर्क को फ़्रेंच वाक्य के सभी शब्दों का उपयोग करने की अनुमति है। हालाँकि, लक्ष्य अनुक्रम (अंग्रेज़ी अनुवाद) में किसी दिए गए शब्द से निपटते समय, नेटवर्क को केवल पिछले शब्दों तक ही पहुँचना चाहिए क्योंकि अगले शब्द उपलब्ध कराने से नेटवर्क “चीट” करेगा और ठीक से सीखने का प्रयास नहीं करेगा। यहीं पर masked multi-head attention लेयर अपने सभी फ़ायदे देती है। यह अगले शब्दों को शून्य में बदलकर मास्क कर देती है ताकि उन्हें attention नेटवर्क द्वारा उपयोग न किया जा सके। 

Masked multi-head attention लेयर का परिणाम शेष लेयर्स से होकर गुजरता है ताकि संभाव्यता स्कोर उत्पन्न करके अगले शब्द की भविष्यवाणी की जा सके। 

यह आर्किटेक्चर निम्नलिखित कारणों से सफल रहा:

  • प्रत्येक लेयर पर कुल गणनात्मक जटिलता RNNs की तुलना में कम है। 
  • इसने पुनरावृत्ति (recurrence) की आवश्यकता को पूरी तरह समाप्त कर दिया और अनुक्रम के समानांतरकरण को संभव बनाया, जबकि RNNs इनपुट को अनुक्रम में अपेक्षित करते हैं। 
  • RNNs लंबी दूरी के अनुक्रमों से सीखने में कुशल नहीं हैं क्योंकि नेटवर्क में फॉरवर्ड और बैकवर्ड सिग्नल के पाथ लंबे होते हैं। Self-attention का उपयोग करके इस पाथ को छोटा किया जाता है, जो सीखने की प्रक्रिया में सुधार करता है।

NLP में ट्रांसफ़र लर्निंग

Transformers जैसे गहरे न्यूरल नेटवर्क्स को शुरू से प्रशिक्षित करना आसान नहीं है, और इसमें निम्नलिखित चुनौतियाँ आ सकती हैं: 

  • लक्षित समस्या के लिए आवश्यक मात्रा में डेटा खोजना समय-साध्य हो सकता है
  • ऐसे गहरे नेटवर्क को प्रशिक्षित करने के लिए GPUs जैसी आवश्यक कंप्यूटिंग संसाधन प्राप्त करना बहुत महंगा हो सकता है।  

ट्रांसफ़र लर्निंग का उपयोग करने से प्रशिक्षण समय कम करने, नए मॉडलों के प्रशिक्षण को तेज़ करने और प्रोजेक्ट डिलीवरी समय घटाने जैसे कई फ़ायदे मिल सकते हैं।

कल्पना करें कि आपको Mandingo भाषा का Wolof में अनुवाद करने के लिए शुरू से एक मॉडल बनाना है, जो दोनों ही लो-रिसोर्स भाषाएँ हैं। इन भाषाओं से संबंधित डेटा इकट्ठा करना महंगा है। इन सभी चुनौतियों से गुजरने के बजाय, आप नए मॉडल के प्रशिक्षण की शुरुआत करने के लिए पहले से प्रशिक्षित गहरे न्यूरल नेटवर्क्स का पुन: उपयोग कर सकते हैं। 

ऐसे मॉडलों को किसी और (व्यक्ति, संगठन आदि) द्वारा विशाल कॉर्पस पर प्रशिक्षित किया गया है, उपलब्ध कराया गया है, और फ़्रेंच से अंग्रेज़ी जैसे भाषा अनुवाद कार्यों पर बहुत अच्छे से काम करने के लिए आंका गया है। 

यदि आप NLP में नए हैं, तो यह Introduction to Natural Language Processing in Python कोर्स आपको वास्तविक दुनिया की समस्याएँ हल करने के लिए मूलभूत कौशल प्रदान कर सकता है।

लेकिन गहरे न्यूरल नेटवर्क्स के पुन: उपयोग से आपका क्या मतलब है?

मॉडल का पुन: उपयोग करने में आपके उपयोग-केस से मिलते-जुलते प्री-ट्रेन मॉडल का चयन करना, आपके लक्षित कार्य के इनपुट-आउटपुट पेयर डेटा को परिष्कृत करना, और अपने डेटा का उपयोग कर प्री-ट्रेन मॉडल के हेड को पुनः प्रशिक्षित करना शामिल है। 

Transformers के आने से निम्न अत्याधुनिक ट्रांसफ़र लर्निंग मॉडल विकसित हुए हैं: 

  • BERT, जिसका पूरा नाम है Bidirectional Encoder Representations from Transformers, 2018 में Google के शोधकर्ताओं द्वारा विकसित किया गया। यह named entity recognition, sentiment analysis, question-answering, text-summarization आदि जैसे सबसे आम भाषा कार्यों को हल करने में मदद करता है। BERT के बारे में अधिक पढ़ें इस NLP ट्यूटोरियल में।
  • GPT3 (Generative Pre-Training-3), जिसे OpenAI के शोधकर्ताओं ने प्रस्तावित किया। यह एक मल्टी-लेयर ट्रांसफ़ॉर्मर है, जिसका मुख्य उपयोग किसी भी प्रकार का पाठ जनरेट करना है। GPT मॉडल दिए गए प्रश्न पर मानव-सदृश पाठ प्रतिक्रियाएँ उत्पन्न करने में सक्षम हैं। यह शानदार लेख आपको बता सकता है कि GPT3 को क्या अनोखा बनाता है, इसे संचालित करने वाली तकनीक क्या है, उसके जोखिम और उसकी सीमाएँ क्या हैं।

Hugging Face Transformers का परिचय

Hugging Face एक AI समुदाय और मशीन लर्निंग प्लेटफ़ॉर्म है, जिसे 2016 में Julien Chaumond, Clément Delangue, और Thomas Wolf ने बनाया। इसका उद्देश्य NLP का लोकतांत्रिकरण करना है, ताकि डेटा साइंटिस्ट्स, AI प्रैक्टिशनर्स और इंजीनियर्स को अत्याधुनिक ट्रांसफ़ॉर्मर आर्किटेक्चर पर आधारित 20,000 से अधिक प्री-ट्रेन मॉडल्स तक तुरंत पहुँच मिल सके। इन मॉडलों को इन पर लागू किया जा सकता है:

  • टेक्स्ट, 100 से अधिक भाषाओं में, जैसे वर्गीकरण, सूचना निष्कर्षण, प्रश्नोत्तर, जनरेशन और अनुवाद जैसे कार्यों के लिए। 
  • स्पीच, जैसे ऑडियो वर्गीकरण और स्पीच रिकग्निशन कार्यों के लिए। 
  • विज़न में ऑब्जेक्ट डिटेक्शन, इमेज क्लासिफिकेशन, सेगमेंटेशन।
  • टैब्युलर डेटा में रिग्रेशन और क्लासिफिकेशन समस्याएँ। 
  • रीइनफ़ोर्समेंट लर्निंग ट्रांसफ़ॉर्मर्स। 

Hugging Face Transformers लगभग 2000 डेटा सेट और लेयर्ड APIs भी प्रदान करता है, जिससे प्रोग्रामर लगभग 31 लाइब्रेरीज़ का उपयोग करके उन मॉडलों के साथ आसानी से इंटरैक्ट कर सकते हैं। इनमें से अधिकांश डीप लर्निंग लाइब्रेरीज़ हैं, जैसे Pytorch, Tensorflow, Jax, ONNX, Fastai, Stable-Baseline 3, आदि। 

ये कोर्स क्रमशः गहरी कन्वोल्यूशनल न्यूरल नेटवर्क्स बनाने के लिए Pytorch और Tensorflow का उपयोग करने का एक अच्छा परिचय हैं। Hugging Face Transformers का एक अन्य घटक है Pipelines। 

Transformers में Pipelines क्या हैं?

  • ये विभिन्न कार्यों पर inference करने के लिए pipeline() मेथड के माध्यम से एक उपयोग में सरल API प्रदान करते हैं।
  • ये प्रत्येक नेचुरल लैंग्वेज प्रोसेसिंग कार्य की संपूर्ण प्रक्रिया को समाहित करने के लिए उपयोग किए जाते हैं, जैसे टेक्स्ट क्लीनिंग, टोकनाइज़ेशन, एम्बेडिंग आदि।

pipeline() मेथड की संरचना निम्न प्रकार है: 

from transformers import pipeline

# To use a default model & tokenizer for a given task(e.g. question-answering)
pipeline("<task-name>")

# To use an existing model
pipeline("<task-name>", model="<model_name>")

# To use a custom model/tokenizer
pipeline('<task-name>', model='<model name>',tokenizer='<tokenizer_name>')

Hugging Face ट्यूटोरियल : संपादन प्रगति पर …

अब जबकि आपको Transformers और Hugging Face प्लेटफ़ॉर्म की बेहतर समझ हो गई है, हम आपको निम्नलिखित वास्तविक दुनिया के परिदृश्यों से गुज़ारेंगे: भाषा अनुवाद, ज़ीरो-शॉट क्लासिफिकेशन के साथ अनुक्रम वर्गीकरण, सेंटिमेंट एनालिसिस, और प्रश्नोत्तर। 

डेटा सेट्स के बारे में जानकारी

यह डेटासेट Datacamp’s Dataset पर उपलब्ध है, जिसे Facebook द्वारा समृद्ध किया गया है और प्रकाशन से पहले किसी लेख की लोकप्रियता की भविष्यवाणी करने के लिए बनाया गया था। विश्लेषण description कॉलम पर आधारित होगा। अपने उदाहरणों को स्पष्ट करने के लिए, हम डेटा से केवल तीन उदाहरणों का उपयोग करेंगे। 

नीचे डेटा का संक्षिप्त विवरण दिया गया है। इसमें 14 कॉलम और 1428 पंक्तियाँ हैं।

import pandas as pd
# Load the data from the path
data_path = "datacamp_workspace_export_2022-08-08 07_56_40.csv"
news_data = pd.read_csv(data_path, error_bad_lines=False)




# Show data information
news_data.info()

info dataset

भाषा अनुवाद

MarianMT एक कुशल मशीन अनुवाद फ़्रेमवर्क है। यह अंदर से MarianNMT इंजन का उपयोग करता है, जिसे Microsoft और University of Edinburgh तथा Adam Mickiewicz University in Poznań जैसी कई शैक्षणिक संस्थाओं द्वारा शुद्ध C++ में विकसित किया गया है। यही इंजन वर्तमान में Microsoft Translator सेवा के पीछे है। 

University of Helsinki के NLP समूह ने Hugging Face Transformers पर कई अनुवाद मॉडलों को ओपन-सोर्स किया है और वे सभी निम्न फ़ॉर्मेट में हैं: Helsinki-NLP/opus-mt-{src}-{tgt} जहाँ {src} और {tgt} क्रमशः स्रोत और लक्ष्य भाषाओं से मेल खाते हैं। 

तो, हमारे मामले में, स्रोत भाषा अंग्रेज़ी (en) और लक्ष्य भाषा फ़्रेंच (fr) है।

MarianMT उन मॉडलों में से एक है जिन्हें पहले Marian का उपयोग करके Opus पर एकत्रित समानांतर डेटा पर प्रशिक्षित किया गया था।

  • MarianMT को Transformers के अलावा sentencepiece की आवश्यकता होती है:
pip install transformers sentencepiece
from transformers import MarianTokenizer, MarianMTModel



  • प्री-ट्रेन मॉडल चुनें, tokenizer प्राप्त करें और प्री-ट्रेन मॉडल को लोड करें
# Get the name of the model
model_name = 'Helsinki-NLP/opus-mt-en-fr'

# Get the tokenizer
tokenizer = MarianTokenizer.from_pretrained(model_name)
# Instantiate the model
model = MarianMTModel.from_pretrained(model_name)
  • निम्नलिखित फ़ंक्शन की मदद से प्रत्येक स्रोत (अंग्रेज़ी) टेक्स्ट के आगे विशेष टोकन >>{tgt}<< जोड़ें।
def format_batch_texts(language_code, batch_texts):
    formated_bach = [">>{}<< {}".format(language_code, text) for text in     

                batch_texts]
return formated_bach
  • बैच अनुवाद लॉजिक लागू करें, जहाँ बैच अनुवाद किए जाने वाले टेक्स्ट की सूची है।
def perform_translation(batch_texts, model, tokenizer, language="fr"):

  # Prepare the text data into appropriate format for the model
  formated_batch_texts = format_batch_texts(language, batch_texts)
 
  # Generate translation using model
  translated = model.generate(**tokenizer(formated_batch_texts,

                                          return_tensors="pt", padding=True))

  # Convert the generated tokens indices back into text
  translated_texts = [tokenizer.decode(t, skip_special_tokens=True) for t in translated]
 
  return translated_texts
  • पिछले descriptions के सैंपल्स पर अनुवाद चलाएँ
# Check the model translation from the original language (English) to French
translated_texts = perform_translation(english_texts, trans_model, trans_model_tkn)

# Create wrapper to properly format the text
from textwrap import TextWrapper
# Wrap text to 80 characters.
wrapper = TextWrapper(width=80)

for text in translated_texts:
  print("Original text: \n", text)
  print("Translation : \n", text)
  print(print(wrapper.fill(text)))
  print("")

French translation

ज़ीरो-शॉट क्लासिफिकेशन

अधिकांश समय, किसी मशीन लर्निंग मॉडल को प्रशिक्षित करने के लिए सभी संभावित लेबल/टार्गेट पहले से ज्ञात होना आवश्यक होता है, यानी यदि आपके प्रशिक्षण लेबल science, politics, या education हैं, तो आप healthcare लेबल की भविष्यवाणी तब तक नहीं कर पाएंगे जब तक आप अपने मॉडल को उस लेबल और उसके अनुरूप इनपुट डेटा को शामिल करते हुए फिर से प्रशिक्षित न करें। 

यह शक्तिशाली दृष्टिकोण लगभग 15 भाषाओं में, बिना उम्मीदवार लेबल्स को देखे हुए भी, किसी टेक्स्ट के लक्ष्य की भविष्यवाणी करना संभव बनाता है। हम इस मॉडल को बस हब से लोड करके उपयोग कर सकते हैं। 

यहाँ लक्ष्य है कि हम प्रत्येक पिछले description की श्रेणी वर्गीकृत करने का प्रयास करें—चाहे वह tech, politics, security, या finance हो। 

  • pipeline मॉड्यूल आयात करें
from transformers import pipeline
  • उम्मीदवार लेबल परिभाषित करें। ये वही हैं जिन्हें हम भविष्यवाणी करना चाहते हैं: tech, politics, business, या finance
candidate_labels = ["tech", "politics", "business", "finance"]
  • मल्टीलिंगुअल विकल्प के साथ क्लासिफ़ायर परिभाषित करें
my_classifier = pipeline("zero-shot-classification",  

                           model='joeddav/xlm-roberta-large-xnli')
  • पहले और आखिरी descriptions पर भविष्यवाणी चलाएँ 
#For the first description
prediction = my_classifier(english_texts[0], candidate_labels, multi_class = True)
pd.DataFrame(prediction).drop(["sequence"], axis=1)

Text predicted finance

टेक्स्ट मुख्य रूप से finance के बारे में भविष्यवाणी किया गया 

यह परिणाम दिखाता है कि टेक्स्ट समग्र रूप से 81% पर finance के बारे में है। 

आखिरी description के लिए, हमें निम्नलिखित परिणाम मिलता है:

#For the last description
prediction = my_classifier(english_texts[-1], candidate_labels, multi_class = True)
pd.DataFrame(prediction).drop(["sequence"], axis=1)

Text predicted tech

टेक्स्ट मुख्य रूप से tech के बारे में भविष्यवाणी किया गया 

यह परिणाम दिखाता है कि टेक्स्ट समग्र रूप से 95% पर tech के बारे में है।

सेंटिमेंट एनालिसिस

अधिकांश मॉडल जो सेंटिमेंट क्लासिफिकेशन करते हैं, उन्हें उचित प्रशिक्षण की आवश्यकता होती है। Hugging Face का pipeline मॉड्यूल किसी विशिष्ट मॉडल का नाम बताकर, जो हब पर उपलब्ध है, सेंटिमेंट एनालिसिस की भविष्यवाणियाँ चलाना आसान बना देता है। 

  • किए जाने वाले कार्य का चयन करें और संबंधित मॉडल लोड करें। यहाँ, हम डिस्टिल्ड BERT बेस मॉडल का उपयोग करके सेंटिमेंट क्लासिफिकेशन करना चाहते हैं। 
model_checkpoint = "distilbert-base-uncased-finetuned-sst-2-english"

distil_bert_model = pipeline(task="sentiment-analysis", model=model_checkpoint)
  • मॉडल तैयार है! आइए अंतिम दो वाक्यों के पीछे के अंतर्निहित सेंटिमेंट का विश्लेषण करें। 
# Run the predictions
distil_bert_model(english_texts[1:])

model predicted text

मॉडल ने पहले टेक्स्ट को 96% कॉन्फिडेंस के साथ नकारात्मक सेंटिमेंट वाला भविष्यवाणी किया, और दूसरे को 52% कॉन्फिडेंस के साथ सकारात्मक सेंटिमेंट वाला। 

यदि आप सेंटिमेंट एनालिसिस कार्यों पर और अधिक खोज करना चाहते हैं, तो यह Python Sentiment Analysis कोर्स आपको Python का उपयोग करके अपना स्वयं का सेंटिमेंट एनालिसिस क्लासिफ़ायर बनाने और NLP की मूल बातें समझने के कौशल प्रदान करेगा।

प्रश्नोत्तर (Question Answering)

कल्पना कीजिए कि आप Apple पर बनी रिपोर्ट से कहीं लंबी रिपोर्ट से निपट रहे हैं, और आपको केवल उल्लिखित घटना की तारीख में रुचि है। पूरी रिपोर्ट पढ़कर मुख्य जानकारी खोजने के बजाय, हम Hugging Face के प्रश्नोत्तर मॉडल का उपयोग कर सकते हैं जो हमें वांछित उत्तर प्रदान करेगा। 

यह मॉडल को उचित संदर्भ (Apple की रिपोर्ट) और वह प्रश्न देकर किया जा सकता है जिसका उत्तर हमें खोजना है।

  • transformers से प्रश्नोत्तर क्लास और tokenizer आयात करें
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
  • मॉडल को उसके नाम और tokenizer का उपयोग करके इंस्टैंशिएट करें। 
model_checkpoint = "deepset/roberta-base-squad2"

task = 'question-answering'
QA_model = pipeline(task, model=model_checkpoint, tokenizer=model_checkpoint)
  • प्रश्न पूछकर और संदर्भ निर्दिष्ट करके मॉडल से अनुरोध करें। 
QA_input = {
          'question': 'when is Apple hosting an event?',
          'context': english_texts[-1]
          }
  • मॉडल का परिणाम प्राप्त करें
model_response = QA_model(QA_input)
pd.DataFrame([model_response])

Apple event date

मॉडल ने 97% के उच्च कॉन्फिडेंस के साथ उत्तर दिया कि Apple का इवेंट 10 सितंबर को है। 

निष्कर्ष

इस लेख में, हमने recurrent नेटवर्क्स से transformers तक नैचुरल लैंग्वेज टेक्नोलॉजी के विकास और Hugging Face ने अपनी प्लेटफ़ॉर्म के माध्यम से NLP के उपयोग का कैसे लोकतंत्रीकरण किया है, इसे कवर किया। 

यदि आप अभी भी transformers का उपयोग करने को लेकर संकोच में हैं, तो हमारा मानना है कि अब उन्हें आज़माने और अपने व्यावसायिक मामलों में मूल्य जोड़ने का समय है।

FAQ Transformers और Hugging Face

Hugging Face ट्रांसफ़ॉर्मर क्या है?

Hugging Face transformers एक प्लेटफ़ॉर्म है जो समुदाय को Hugging Face hub से उपलब्ध अत्याधुनिक प्री-ट्रेन मॉडलों तक पहुँचने और उनका उपयोग करने के लिए APIs प्रदान करता है। 

प्री-ट्रेन ट्रांसफ़ॉर्मर क्या है?

एक प्री-ट्रेन ट्रांसफ़ॉर्मर वह ट्रांसफ़ॉर्मर मॉडल है जिसे किसी (व्यक्ति या उद्योग) द्वारा प्रशिक्षित और मान्य किया गया है, और जिसे हम समान कार्य के लिए शुरुआती बिंदु के रूप में उपयोग कर सकते हैं।

क्या Hugging Face का उपयोग मुफ़्त है?

Hugging Face समुदाय और संगठन दोनों संस्करण प्रदान करता है। समुदाय संस्करण में मुफ़्त (सीमाओं के साथ) और प्रो संस्करण शामिल है, जिसकी कीमत $9 प्रति माह है। दूसरी ओर, संगठनों के लिए Lab और एंटरप्राइज़ समाधान शामिल हैं, जो निःशुल्क नहीं हैं।

Hugging Face पर कौन-सा फ़्रेमवर्क उपयोग होता है?

Hugging Face लगभग 31 लाइब्रेरीज़ के लिए APIs प्रदान करता है। इनमें से अधिकांश डीप लर्निंग की हैं, जैसे Pytorch, Tensorflow, Jax, ONNX, fastai, Stable-Baseline 3, आदि।

Hugging Face पर कौन-सी प्रोग्रामिंग भाषा उपयोग होती है?

कुछ प्री-ट्रेन मॉडलों को Javascript, Python, Rust, और Bash/Shell में मल्टीलिंगुअल डिनॉइज़िंग टास्क का उपयोग करके प्रशिक्षित किया गया है। यह Python Natural Language Processing कोर्स आपको सामान्य टेक्स्ट क्लीनिंग कार्यों को सफलतापूर्वक करने के लिए प्रासंगिक कौशल हासिल करने में मदद कर सकता है

विषय