शक्तिशाली भाषा मॉडल + स्किकिट-लर्न = स्किकिट-एलएलएम। इस लाइब्रेरी की सहायता से चलते-फिरते पाठ विश्लेषण कार्य करें।
स्किकिट-एलएलएम एक पायथन पैकेज है जो बड़े भाषा मॉडल (एलएलएम) को स्किकिट-लर्न फ्रेमवर्क में एकीकृत करने में मदद करता है। यह पाठ विश्लेषण कार्यों को पूरा करने में मदद करता है। यदि आप स्किकिट-लर्न से परिचित हैं, तो आपके लिए स्किकिट-एलएलएम के साथ काम करना आसान होगा।
यह ध्यान रखना महत्वपूर्ण है कि स्किकिट-एलएलएम स्किकिट-लर्न का स्थान नहीं लेता है। स्किकिट-लर्न एक सामान्य प्रयोजन वाली मशीन लर्निंग लाइब्रेरी है लेकिन स्किकिट-एलएलएम विशेष रूप से पाठ विश्लेषण कार्यों के लिए डिज़ाइन किया गया है।
स्किकिट-एलएलएम के साथ शुरुआत करना
आरंभ करने के लिए स्किकिट-एलएलएम, आपको लाइब्रेरी स्थापित करने और अपनी एपीआई कुंजी कॉन्फ़िगर करने की आवश्यकता होगी। लाइब्रेरी स्थापित करने के लिए, अपना आईडीई खोलें और एक नया आभासी वातावरण बनाएं. इससे किसी भी संभावित लाइब्रेरी संस्करण विरोध को रोकने में मदद मिलेगी। फिर, टर्मिनल में निम्न कमांड चलाएँ।
pip install scikit-llm
यह कमांड स्किकिट-एलएलएम और इसकी आवश्यक निर्भरताएँ स्थापित करेगा।
अपनी एपीआई कुंजी को कॉन्फ़िगर करने के लिए, आपको अपने एलएलएम प्रदाता से एक कुंजी प्राप्त करनी होगी। OpenAI API कुंजी प्राप्त करने के लिए, इन चरणों का पालन करें:
के लिए आगे बढ़ें ओपनएआई एपीआई पेज. फिर विंडो के ऊपरी-दाएँ कोने में स्थित अपनी प्रोफ़ाइल पर क्लिक करें। चुनना एपीआई कुंजियाँ देखें. यह आपको ले जाएगा एपीआई कुंजियाँ पृष्ठ।
पर एपीआई कुंजियाँ पेज, पर क्लिक करें नई गुप्त कुंजी बनाएं बटन।
अपनी एपीआई कुंजी को नाम दें और पर क्लिक करें गुप्त कुंजी बनाएँ कुंजी उत्पन्न करने के लिए बटन। पीढ़ी के बाद, आपको कुंजी को कॉपी करके एक सुरक्षित स्थान पर संग्रहीत करना होगा क्योंकि OpenAI कुंजी को दोबारा प्रदर्शित नहीं करेगा। यदि आप इसे खो देते हैं, तो आपको एक नया उत्पन्न करना होगा।
पूर्ण स्रोत कोड a में उपलब्ध है गिटहब रिपॉजिटरी.
अब जब आपके पास अपनी एपीआई कुंजी है, तो अपना आईडीई खोलें और आयात करें एसकेएलएलएम कॉन्फिग स्किकिट-एलएलएम लाइब्रेरी से कक्षा। यह वर्ग आपको बड़े भाषा मॉडल के उपयोग से संबंधित कॉन्फ़िगरेशन विकल्प सेट करने की अनुमति देता है।
from skllm.config import SKLLMConfig
यह वर्ग आपसे अपनी OpenAI API कुंजी और संगठन विवरण सेट करने की अपेक्षा करता है।
# Set your OpenAI API key
SKLLMConfig.set_openai_key("Your API key")
# Set your OpenAI organization
SKLLMConfig.set_openai_org("Your organization ID")
संगठन आईडी और नाम समान नहीं हैं. संगठन आईडी आपके संगठन की एक विशिष्ट पहचानकर्ता है। अपनी संस्था की आईडी प्राप्त करने के लिए आगे बढ़ें ओपनएआई संगठन सेटिंग्स पृष्ठ और इसे कॉपी करें। अब आपने स्किकिट-एलएलएम और बड़े भाषा मॉडल के बीच संबंध स्थापित कर लिया है।
स्किकिट-एलएलएम के लिए आवश्यक है कि आपके पास भुगतान जैसी योजना हो। ऐसा इसलिए है क्योंकि नि:शुल्क परीक्षण ओपनएआई खाते में प्रति मिनट तीन अनुरोधों की दर सीमा है जो स्किकिट-एलएलएम के लिए पर्याप्त नहीं है।
नि:शुल्क परीक्षण खाते का उपयोग करने का प्रयास करने पर पाठ विश्लेषण करते समय नीचे दी गई त्रुटि के समान त्रुटि उत्पन्न होगी।
दर सीमा के बारे में अधिक जानने के लिए. के लिए आगे बढ़ें OpenAI दर सीमा पृष्ठ.
एलएलएम प्रदाता केवल OpenAI तक सीमित नहीं है। आप अन्य एलएलएम प्रदाताओं का भी उपयोग कर सकते हैं।
आवश्यक पुस्तकालय आयात करना और डेटासेट लोड करना
पांडा आयात करें जिसका उपयोग आप डेटासेट लोड करने के लिए करेंगे. इसके अलावा, स्किकिट-एलएलएम और स्किकिट-लर्न से, आवश्यक कक्षाएं आयात करें।
import pandas as pd
from skllm import ZeroShotGPTClassifier, MultiLabelZeroShotGPTClassifier
from skllm.preprocessing import GPTSummarizer
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.preprocessing import MultiLabelBinarizer
इसके बाद, उस डेटासेट को लोड करें जिस पर आप टेक्स्ट विश्लेषण करना चाहते हैं। यह कोड IMDB मूवी डेटासेट का उपयोग करता है। हालाँकि आप अपने स्वयं के डेटासेट का उपयोग करने के लिए इसमें बदलाव कर सकते हैं।
# Load your dataset
data = pd.read_csv("imdb_movies_dataset.csv")
# Extract the first 100 rows
data = data.head(100)
डेटासेट की केवल पहली 100 पंक्तियों का उपयोग करना अनिवार्य नहीं है। आप अपने संपूर्ण डेटासेट का उपयोग कर सकते हैं.
इसके बाद, फीचर्स और लेबल कॉलम निकालें। फिर अपने डेटासेट को ट्रेन और परीक्षण सेट में विभाजित करें।
# Extract relevant columns
X = data['Description']
# Assuming 'Genre' contains the labels for classification
y = data['Genre']
# Split the dataset into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
शैली कॉलम में वे लेबल हैं जिनका आप अनुमान लगाना चाहते हैं।
स्किकिट-एलएलएम के साथ शून्य-शॉट पाठ वर्गीकरण
जीरो-शॉट टेक्स्ट वर्गीकरण बड़े भाषा मॉडलों द्वारा पेश की जाने वाली एक सुविधा है। यह लेबल किए गए डेटा पर स्पष्ट प्रशिक्षण की आवश्यकता के बिना पाठ को पूर्वनिर्धारित श्रेणियों में वर्गीकृत करता है। यह क्षमता उन कार्यों से निपटने में बहुत उपयोगी है जहां आपको पाठ को उन श्रेणियों में वर्गीकृत करने की आवश्यकता होती है जिनकी आपने मॉडल प्रशिक्षण के दौरान आशा नहीं की थी।
स्किकिट-एलएलएम का उपयोग करके शून्य-शॉट पाठ वर्गीकरण करने के लिए, इसका उपयोग करें ज़ीरोशॉटजीपीटीक्लासिफ़ायर कक्षा।
# Perform Zero-Shot Text Classification
zero_shot_clf = ZeroShotGPTClassifier(openai_model="gpt-3.5-turbo")
zero_shot_clf.fit(X_train, y_train)
zero_shot_predictions = zero_shot_clf.predict(X_test)
# Print Zero-Shot Text Classification Report
print("Zero-Shot Text Classification Report:")
print(classification_report(y_test, zero_shot_predictions))
आउटपुट इस प्रकार है:
वर्गीकरण रिपोर्ट प्रत्येक लेबल के लिए मेट्रिक्स प्रदान करती है जिसका मॉडल पूर्वानुमान लगाने का प्रयास कर रहा है।
स्किकिट-एलएलएम के साथ मल्टी-लेबल जीरो-शॉट टेक्स्ट वर्गीकरण
कुछ परिदृश्यों में, एक ही पाठ एक साथ कई श्रेणियों से संबंधित हो सकता है। पारंपरिक वर्गीकरण मॉडल इससे जूझते हैं। दूसरी ओर स्किकिट-एलएलएम इस वर्गीकरण को संभव बनाता है। एकल पाठ नमूने में एकाधिक वर्णनात्मक लेबल निर्दिष्ट करने में मल्टी-लेबल शून्य-शॉट पाठ वर्गीकरण महत्वपूर्ण है।
उपयोग मल्टीलेबलजीरोशॉटजीपीटीक्लासिफायर यह अनुमान लगाने के लिए कि प्रत्येक पाठ नमूने के लिए कौन से लेबल उपयुक्त हैं।
# Perform Multi-Label Zero-Shot Text Classification
# Make sure to provide a list of candidate labels
candidate_labels = ["Action", "Comedy", "Drama", "Horror", "Sci-Fi"]
multi_label_zero_shot_clf = MultiLabelZeroShotGPTClassifier(max_labels=2)
multi_label_zero_shot_clf.fit(X_train, candidate_labels)
multi_label_zero_shot_predictions = multi_label_zero_shot_clf.predict(X_test)# Convert the labels to binary array format using MultiLabelBinarizer
mlb = MultiLabelBinarizer()
y_test_binary = mlb.fit_transform(y_test)
multi_label_zero_shot_predictions_binary = mlb.transform(multi_label_zero_shot_predictions)
# Print Multi-Label Zero-Shot Text Classification Report
print("Multi-Label Zero-Shot Text Classification Report:")
print(classification_report(y_test_binary, multi_label_zero_shot_predictions_binary))
उपरोक्त कोड में, आप उन उम्मीदवार लेबलों को परिभाषित करते हैं जिनसे आपका टेक्स्ट संबंधित हो सकता है।
आउटपुट नीचे दिखाया गया है:
यह रिपोर्ट आपको यह समझने में मदद करती है कि आपका मॉडल मल्टी-लेबल वर्गीकरण में प्रत्येक लेबल के लिए कितना अच्छा प्रदर्शन कर रहा है।
स्किकिट-एलएलएम के साथ टेक्स्ट वेक्टराइजेशन
टेक्स्ट वैश्वीकरण में टेक्स्ट डेटा को एक संख्यात्मक प्रारूप में परिवर्तित किया जाता है जिसे मशीन लर्निंग मॉडल समझ सकते हैं। स्किकिट-एलएलएम इसके लिए जीपीटीवेक्टराइज़र प्रदान करता है। यह आपको GPT मॉडल का उपयोग करके टेक्स्ट को निश्चित-आयामी वैक्टर में बदलने की अनुमति देता है।
आप टर्म फ़्रीक्वेंसी-इनवर्स दस्तावेज़ फ़्रीक्वेंसी का उपयोग करके इसे प्राप्त कर सकते हैं।
# Perform Text Vectorization using TF-IDF
tfidf_vectorizer = TfidfVectorizer(max_features=1000)
X_train_tfidf = tfidf_vectorizer.fit_transform(X_train)
X_test_tfidf = tfidf_vectorizer.transform(X_test)
# Print the TF-IDF vectorized features for the first few samples
print("TF-IDF Vectorized Features (First 5 samples):")
print(X_train_tfidf[:5]) # Change to X_test_tfidf if you want to print the test set
यहाँ आउटपुट है:
आउटपुट डेटासेट में पहले 5 नमूनों के लिए टीएफ-आईडीएफ वेक्टरकृत सुविधाओं का प्रतिनिधित्व करता है।
स्किकिट-एलएलएम के साथ पाठ सारांश
पाठ का सारांश उसकी सबसे महत्वपूर्ण जानकारी को संरक्षित करते हुए पाठ के एक टुकड़े को संक्षिप्त करने में मदद करता है। स्किकिट-एलएलएम GPTSummarizer प्रदान करता है, जो उपयोग करता है जीपीटी मॉडल पाठ का संक्षिप्त सारांश उत्पन्न करने के लिए।
# Perform Text Summarization
summarizer = GPTSummarizer(openai_model="gpt-3.5-turbo", max_words=15)
summaries = summarizer.fit_transform(X_test)
print(summaries)
आउटपुट इस प्रकार है:
उपरोक्त परीक्षण डेटा का सारांश है।
एलएलएम के शीर्ष पर एप्लिकेशन बनाएं
स्किकिट-एलएलएम बड़े भाषा मॉडल के साथ पाठ विश्लेषण के लिए संभावनाओं की दुनिया खोलता है। बड़े भाषा मॉडलों के पीछे की तकनीक को समझना महत्वपूर्ण है। यह आपको उनकी ताकत और कमजोरियों को समझने में मदद करेगा जो इस अत्याधुनिक तकनीक के शीर्ष पर कुशल एप्लिकेशन बनाने में आपकी सहायता कर सकता है।