पायथन के साथ एक मजबूत टेक्स्ट क्लासिफायर बनाना: पाइपलाइनों और LinearSVC का उपयोग करना
सामग्री सूची
- टेक्स्ट वर्गीकरण का परिचय
- डेटासेट अवलोकन
- पर्यावरण सेटअप
- डेटा पूर्व-संसाधन
- TF-IDF के साथ वेक्टरकरण
- मशीन लर्निंग पाइपलाइन बनाना
- मॉडल को प्रशिक्षित करना
- मॉडल प्रदर्शन का मूल्यांकन
- पूर्वानुमान लगाना
- निष्कर्ष
- अतिरिक्त संसाधन
टेक्स्ट वर्गीकरण का परिचय
टेक्स्ट वर्गीकरण NLP में एक महत्वपूर्ण कार्य है जिसमें पहले से परिभाषित श्रेणियों को टेक्स्ट डेटा में सौंपा जाता है। इसके अनुप्रयोगों में भावना विश्लेषण, विषय लेबलिंग, कंटेंट फ़िल्टरिंग और भी बहुत कुछ शामिल हैं। एक टेक्स्ट क्लासिफायर बनाने के मुख्य कदमों में डेटा संग्रह, पूर्व-संसाधन, फीचर निष्कर्षण, मॉडल प्रशिक्षण और मूल्यांकन शामिल हैं।
इस गाइड में, हम TF-IDF वेक्टराइज़ेशन का उपयोग करके टेक्स्ट डेटा को संख्यात्मक फीचर्स में बदलने और एक स्ट्रीमलाइन पाइपलाइन के भीतर LinearSVC का उपयोग करके एक वर्गीकरण मॉडल बनाने पर ध्यान केंद्रित करेंगे। पाइपलाइनों का उपयोग यह सुनिश्चित करता है कि डेटा प्रोसेसिंग चरणों की श्रृंखला कुशलतापूर्वक प्रबंधित की जाती है, जिससे त्रुटियों का जोखिम कम होता है और पुनरुत्पादकता बढ़ती है।
डेटासेट अवलोकन
इस ट्यूटोरियल के लिए, हम Kaggle से मूवी रिव्यू डेटासेट का उपयोग करेंगे, जिसमें 64,720 मूवी रिव्यूज़ शामिल हैं जिन्हें सकारात्मक (pos
) या नकारात्मक (neg
) के रूप में लेबल किया गया है। यह डेटासेट बाइनरी सेंटिमेंट विश्लेषण कार्यों के लिए आदर्श है।
नमूना डेटा विज़ुअलाइज़ेशन:
fold_id | cv_tag | html_id | sent_id | text | tag |
---|---|---|---|---|---|
0 | cv000 | 29590 | 0 | कॉमिक बुक्स से अनुकूलित फिल्मों में बहुत कुछ है… | pos |
1 | cv000 | 29590 | 1 | शुरुआत के लिए, इसे एलन मूर ने बनाया था (…) | pos |
… | … | … | … | … | … |
पर्यावरण सेटअप
कोड में गोता लगाने से पहले, सुनिश्चित करें कि आपके पास आवश्यक पुस्तकालय इंस्टॉल हैं। आप इन्हें pip
का उपयोग करके इंस्टॉल कर सकते हैं:
1 |
pip install numpy pandas scikit-learn |
वैकल्पिक रूप से, यदि आप Anaconda का उपयोग कर रहे हैं:
1 |
conda install numpy pandas scikit-learn |
डेटा पूर्व-संसाधन
डेटा पूर्व-संसाधन आपके डेटासेट को मॉडलिंग के लिए तैयार करने में एक महत्वपूर्ण कदम है। इसमें डेटा लोड करना, गायब मानों को संभालना, और डेटासेट को प्रशिक्षण और परीक्षण सेटों में विभाजित करना शामिल है।
लाइब्रेरी आयात करना
1 2 3 4 5 |
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.svm import LinearSVC from sklearn.metrics import accuracy_score |
डेटासेट लोड करना
1 2 3 4 5 |
# Load the dataset data = pd.read_csv('movie_review.csv') # Display the first few rows data.head() |
नमूना आउटपुट:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
fold_id cv_tag html_id sent_id \ 0 0 cv000 29590 0 1 0 cv000 29590 1 2 0 cv000 29590 2 3 0 cv000 29590 3 4 0 cv000 29590 4 text tag 0 कॉमिक बुक्स से अनुकूलित फिल्मों में बहुत कुछ है... pos 1 शुरुआत के लिए, इसे एलन मूर ने बनाया था (...) pos 2 कहना गलत नहीं होगा कि मूर और केम्पबेल ने thoroughly researched... pos 3 किताब (या "ग्राफिक नॉवेल," यदि आप चाहें तो ...) pos 4 दूसरे शब्दों में, इस फिल्म को इसलिए नकारात्मक मत करें क्योंकि... pos |
फीचर चयन
हम text
कॉलम का उपयोग अपने फीचर (X
) के रूप में करेंगे और tag
कॉलम का उपयोग अपने लक्ष्य वेरिएबल (y
) के रूप में करेंगे।
1 2 |
X = data['text'] y = data['tag'] |
डेटासेट विभाजित करना
डेटा को प्रशिक्षण और परीक्षण सेटों में विभाजित करने से हमें अनदेखे डेटा पर मॉडल के प्रदर्शन का मूल्यांकन करने की अनुमति मिलती है।
1 2 3 4 |
from sklearn.model_selection import train_test_split # Split the dataset (80% training, 20% testing) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=1) |
TF-IDF के साथ वेक्टरकरण
मशीन लर्निंग मॉडल्स को संख्यात्मक इनपुट की आवश्यकता होती है। वेक्टरकरण टेक्स्ट डेटा को संख्यात्मक फीचर्स में बदलता है। जबकि CountVectorizer केवल शब्दों की आवृत्ति गिनता है, TF-IDF (टर्म फ्रीक्वेंसी-इनवर्स डॉक्युमेंट फ्रीक्वेंसी) एक भारित प्रतिनिधित्व प्रदान करता है जो महत्वपूर्ण शब्दों पर जोर देता है।
क्यों TF-IDF?
TF-IDF न केवल शब्दों की आवृत्ति का ध्यान रखता है, बल्कि उन शब्दों को डाउनस्केल भी करता है जो सभी दस्तावेजों में अक्सर प्रकट होते हैं, इस प्रकार व्यक्तिगत दस्तावेजों में शब्दों के महत्व को कैप्चर करता है।
मशीन लर्निंग पाइपलाइन बनाना
Scikit-learn की Pipeline
क्लास कई प्रोसेसिंग चरणों के एक सहज एकीकरण की अनुमति देती है। यह सुनिश्चित करती है कि सभी चरण क्रम में निष्पादित होते हैं और मॉडल प्रशिक्षण एवं मूल्यांकन को सरल बनाती है।
1 2 3 4 5 6 7 8 |
from sklearn.pipeline import Pipeline from sklearn.feature_extraction.text import TfidfVectorizer # Define the pipeline text_clf = Pipeline([ ('tfidf', TfidfVectorizer()), ('clf', LinearSVC()), ]) |
पाइपलाइन कम्पोनेंट्स:
- TF-IDF Vectorizer (
tfidf
): टेक्स्ट डेटा को TF-IDF फीचर वेक्टर में बदलता है। - Linear Support Vector Classifier (
clf
): वर्गीकरण कार्य को निष्पादित करता है।
मॉडल को प्रशिक्षित करना
पाइपलाइन को परिभाषित करने के बाद, प्रशिक्षण डेटा पर फिटिंग करके मॉडल को प्रशिक्षित करना शामिल है।
1 2 |
# Train the model text_clf.fit(X_train, y_train) |
आउटपुट:
1 2 3 4 |
Pipeline(steps=[ ('tfidf', TfidfVectorizer()), ('clf', LinearSVC()) ]) |
मॉडल प्रदर्शन का मूल्यांकन
परीक्षण सेट पर मॉडल की सटीकता का आंकलन इसके भविष्यवाणी क्षमताओं पर अंतर्दृष्टि प्रदान करता है।
1 2 3 4 5 6 7 8 |
from sklearn.metrics import accuracy_score # Make predictions on the test set y_pred = text_clf.predict(X_test) # Calculate accuracy accuracy = accuracy_score(y_pred, y_test) print(f'Accuracy: {accuracy:.2%}') |
नमूना आउटपुट:
1 |
Accuracy: 69.83% |
लगभग 69.83% की सटीकता यह संकेत देती है कि मॉडल ने लगभग 70% रिव्यूज़ को सही ढंग से वर्गीकृत किया है, जो एक आशाजनक प्रारंभिक बिंदु है। आगे के मूल्यांकन के लिए, मॉडल की प्रेसिजन, रिकॉल, और F1-स्कोर को समझने के लिए एक वर्गीकरण रिपोर्ट और एक कन्फ्यूजन मैट्रिक्स बनाने पर विचार करें।
पूर्वानुमान लगाना
एक बार मॉडल प्रशिक्षित हो जाने पर, यह नए टेक्स्ट डेटा को वर्गीकृत कर सकता है। यहां बताया गया है कि व्यक्तिगत रिव्यूज़ की भावना का पूर्वानुमान कैसे लगाया जाए:
1 2 3 4 5 6 7 8 9 |
# Example predictions sample_reviews = [ 'Fantastic movie! I really enjoyed it.', 'Avoid this movie at any cost, just not good.' ] predictions = text_clf.predict(sample_reviews) for review, sentiment in zip(sample_reviews, predictions): print(f'Review: "{review}" - Sentiment: {sentiment}') |
नमूना आउटपुट:
1 2 |
Review: "Fantastic movie! I really enjoyed it." - Sentiment: pos Review: "Avoid this movie at any cost, just not good." - Sentiment: neg |
मॉडल ने दिए गए उदाहरणों में सकारात्मक और नकारात्मक भावनाओं को सफलतापूर्वक भेदभाव किया है।
निष्कर्ष
एक टेक्स्ट क्लासिफायर बनाना कई महत्वपूर्ण चरणों में शामिल होता है, डेटा पूर्व-संसाधन और फीचर निष्कर्षण से लेकर मॉडल प्रशिक्षण और मूल्यांकन तक। Scikit-learn में पाइपलाइनों का उपयोग वर्कफ़्लो को सरल बनाता है, यह सुनिश्चित करता है कि प्रत्येक चरण लगातार और कुशलतापूर्वक निष्पादित होता है। जबकि यह गाइड TF-IDF वेक्टराइज़ेशन के साथ एक सरल LinearSVC मॉडल का उपयोग करती है, फ्रेमवर्क विभिन्न वेक्टराइज़ेशन तकनीकों और वर्गीकरण एल्गोरिदम के साथ प्रयोग की अनुमति देता है ताकि प्रदर्शन को और भी बढ़ाया जा सके।
अतिरिक्त संसाधन
- Scikit-learn दस्तावेज़ीकरण:
- ट्यूटोरियल:
- डेटासेट्स:
इस गाइड का पालन करके, आपके पास अब अपना खुद का टेक्स्ट क्लासिफायर बनाने और परिष्कृत करने के लिए मौलिक ज्ञान है, जिससे और उन्नत NLP अनुप्रयोगों के लिए मार्ग प्रशस्त होता है।