html
TF-IDF को समझना: शब्दावली आवृत्ति-प्रतिलोम दस्तावेज़ आवृत्ति के साथ पाठ विश्लेषण को सुदृढ़ करना
प्राकृतिक भाषा प्रसंस्करण (एनएलपी) के क्षेत्र में, पाठ्य डेटा का प्रभावी रूप से विश्लेषण और समझना अत्यंत महत्वपूर्ण है। उपलब्ध अनेक तकनीकों में, शब्दावली आवृत्ति-प्रतिलोम दस्तावेज़ आवृत्ति (TF-IDF) पाठ को अर्थपूर्ण संख्यात्मक प्रतिनिधित्वों में बदलने के लिए एक शक्तिशाली उपकरण के रूप में उभरता है। यह व्यापक गाइड TF-IDF में गहराई से उतरती है, इसके मूल सिद्धांतों, लाभों, और पायथन की स्किकिट-लर्न लाइब्रेरी का उपयोग करके व्यावहारिक कार्यान्वयन का अन्वेषण करती है।
विषय सूची
- TF-IDF क्या है?
- TF-IDF का उपयोग क्यों करें?
- TF-IDF कैसे काम करता है
- पायथन में TF-IDF को लागू करना
- व्यावहारिक उदाहरण: फिल्म समीक्षा विश्लेषण
- TF-IDF के लाभ
- TF-IDF की सीमाएं
- निष्कर्ष
- आगे की पढ़ाई
TF-IDF क्या है?
शब्दावली आवृत्ति-प्रतिलोम दस्तावेज़ आवृत्ति (TF-IDF) एक संख्यात्मक सांख्यिकी है जो एक दस्तावेज़ में एक शब्द के महत्व को दस्तावेजों के संग्रह (कॉर्पस) की तुलना में दर्शाती है। यह सूचना पुनर्प्राप्ति, पाठ खनन, और एनएलपी में व्यापक रूप से उपयोग किया जाता है ताकि यह आंका जा सके कि एक शब्द एक बड़े डेटासेट में किसी विशेष दस्तावेज़ के लिए कितना प्रासंगिक है।
TF-IDF का उपयोग क्यों करें?
जहां सरल शब्द गणनाएँ (जैसे CountVectorizer से प्राप्त) शब्दों की कच्ची आवृत्तियाँ प्रदान करती हैं, वे कॉर्पस के भीतर उन शब्दों के महत्व का ख्याल नहीं रखतीं। "the," "is," और "and" जैसे सामान्य शब्द अक्सर प्रकट हो सकते हैं लेकिन उनमें थोड़ा ही सैडेटिक वजन होता है। TF-IDF इस समस्या का समाधान करता है अपने शब्द भारों को दस्तावेज़ों में उनके वितरण के आधार पर समायोजित करके, उन शब्दों पर जोर देते हुए जो अधिक अनूठे और सूचनात्मक हैं।
TF-IDF कैसे काम करता है
TF-IDF दो मीट्रिक को जोड़ता है:
- शब्दावली आवृत्ति (TF): मापता है कि एक शब्द एक दस्तावेज़ में कितनी बार प्रकट होता है।
\[
\text{TF}(t, d) = \frac{\text{शब्द } t \text{ का दस्तावेज़ } d \text{ में उपस्थित होने की संख्या}}{\text{दस्तावेज़ } d \text{ में कुल शब्दों की संख्या}}
\]
- प्रतिलोम दस्तावेज़ आवृत्ति (IDF): मापता है कि एक शब्द कितना महत्वपूर्ण है, उसके पूरे कॉर्पस में उपस्थिति को ध्यान में रखते हुए।
\[
\text{IDF}(t, D) = \log \left( \frac{\text{कुल दस्तावेजों की संख्या } N}{\text{दस्तावेजों की संख्या जिसमें शब्द } t \text{ शामिल है}} \right)
\]
TF-IDF स्कोर TF और IDF का गुणनफल होता है:
\[
\text{TF-IDF}(t, d, D) = \text{TF}(t, d) \times \text{IDF}(t, D)
\]
यह गणना सुनिश्चित करती है कि जो शब्द कई दस्तावेज़ों में सामान्य होते हैं उन्हें कम भार प्राप्त होता है, जबकि विशिष्ट दस्तावेज़ों के लिए अद्वितीय शब्दों को अधिक भार प्राप्त होता है।
पायथन में TF-IDF को लागू करना
पायथन की Scikit-learn लाइब्रेरी TfidfVectorizer
के माध्यम से TF-IDF को लागू करने के लिए मजबूत उपकरण प्रदान करती है। नीचे एक डेटासेट पर TF-IDF लागू करने के लिए चरण-दर-चरण गाइड दिया गया है।
डेटासेट सेट करना
हमारे व्यावहारिक उदाहरण के लिए, हम Kaggle से एक मूवी समीक्षा डेटासेट का उपयोग करेंगे। इस डेटासेट में 64,720 मूवी समीक्षाएँ शामिल हैं, जिन्हें सकारात्मक (pos
) या नकारात्मक (neg
) के रूप में लेबल किया गया है।
1234567
import numpy as npimport pandas as pdfrom sklearn.model_selection import train_test_split # Import Datadata = pd.read_csv('movie_review.csv')data.head()
नमूना आउटपुट:
123456
fold_id cv_tag html_id sent_id text tag0 0 cv000 29590 0 films adapted from comic books have had plenty... pos1 0 cv000 29590 1 for starters , it was created by alan moore ( ... pos2 0 cv000 29590 2 to say moore and campbell thoroughly researche... pos3 0 cv000 29590 3 the book ( or " graphic novel , " if you will ... pos4 0 cv000 29590 4 in other words , don't dismiss this film becau... pos
CountVectorizer का उपयोग करना
TF-IDF में गहराई से जाने से पहले, यह समझना फायदेमंद है कि CountVectorizer
क्या है, जो पाठ दस्तावेज़ों के संग्रह को टोकन गणनाओं के मैट्रिक्स में बदल देता है।
12345678910111213
from sklearn.feature_extraction.text import CountVectorizer corpus = [ 'This is the first document.', 'This document is the second document.', 'And this is the third one.', 'Is this the first document?'] vectorizer = CountVectorizer()X = vectorizer.fit_transform(corpus)print(vectorizer.get_feature_names_out())print(X.toarray())
आउटपुट:
12345
['and' 'document' 'first' 'is' 'one' 'second' 'the' 'third' 'this'][[0 1 1 1 0 0 1 0 1] [0 2 0 1 0 1 1 0 1] [1 0 0 1 1 0 1 1 1] [0 1 1 1 0 0 1 0 1]]
आउटपुट से, हम पाते हैं कि कॉर्पस में प्रत्येक शब्द की गिनती संख्यात्मक मैट्रिक्स रूप में प्रदर्शित होती है। हालांकि, यह विधि कॉर्पस में प्रत्येक शब्द के महत्व का ख्याल नहीं रखती है।
TfidfVectorizer को लागू करना
हमारे विश्लेषण को सुदृढ़ करने के लिए, TfidfVectorizer
पाठ डेटा को TF-IDF सुविधाओं में बदल देता है, शब्दों को उनके महत्व के आधार पर भार देता है।
123456
from sklearn.feature_extraction.text import TfidfVectorizer vectorizer = TfidfVectorizer()X = vectorizer.fit_transform(corpus)print(vectorizer.get_feature_names_out())print(X.toarray())
आउटपुट:
123456789
['and' 'document' 'first' 'is' 'one' 'second' 'the' 'third' 'this'][[0. 0.46979139 0.58028582 0.38408524 0. 0. 0.38408524 0. 0.38408524] [0. 0.6876236 0. 0.28108867 0. 0.53864762 0.28108867 0. 0.28108867] [0.51184851 0. 0. 0.26710379 0.51184851 0. 0.26710379 0.51184851 0.26710379] [0. 0.46979139 0.58028582 0.38408524 0. 0. 0.38408524 0. 0.38408524]]
अब TF-IDF मैट्रिक्स एक भारित प्रतिनिधित्व प्रदान करता है, जो पूरे कॉर्पस की तुलना में प्रत्येक दस्तावेज़ में शब्दों के महत्व को उजागर करता है।
मॉडलिंग के लिए डेटा तैयार करना
पूर्वानुमान मॉडल बनाने के लिए, हम अपने डेटासेट को प्रशिक्षण और परीक्षण सेटों में विभाजित करेंगे।
1234
X = data['text']y = data['tag'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=1)
व्यावहारिक उदाहरण: फिल्म समीक्षा विश्लेषण
TF-IDF का उपयोग करते हुए, हम मॉडल बना सकते हैं जो फिल्म समीक्षाओं को सकारात्मक या नकारात्मक के रूप में वर्गीकृत करता है। नीचे एक सुव्यवस्थित वर्कफ़्लो दिया गया है:
- डेटा लोडिंग & प्रीप्रोसेसिंग:
- डेटासेट को इम्पोर्ट करें।
- डेटा संरचना का अन्वेषण करें।
- किसी भी गुमशुदा मान या विषमताओं को संभालें।
- फीचर एक्सट्रैक्शन:
- पाठ डेटा को TF-IDF सुविधाओं में बदलने के लिए
TfidfVectorizer
का उपयोग करें।
- वैकल्पिक रूप से, मॉडल प्रदर्शन को बेहतर बनाने के लिए स्टॉप शब्दों को हटाएं:
1
vectorizer = TfidfVectorizer(stop_words='english')
- मॉडल निर्माण:
- एक वर्गीकरण एल्गोरिद्म चुनें (जैसे, लॉजिस्टिक रिग्रेशन, सपोर्ट वेक्टर मशीन)।
- प्रशिक्षण सेट पर मॉडल को प्रशिक्षित करें।
- परीक्षण सेट पर प्रदर्शन का मूल्यांकन करें।
- मूल्यांकन मीट्रिक:
- मॉडल के प्रदर्शन का आकलन करने के लिए सटीकता, प्रिसीजन, रिकॉल, F1-स्कोर, और ROC-AUC जैसी सामान्य मीट्रिक हैं।
नमूना कोड:
123456789101112131415161718
from sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import classification_report # Vectorizationvectorizer = TfidfVectorizer(stop_words='english')X_train_tfidf = vectorizer.fit_transform(X_train)X_test_tfidf = vectorizer.transform(X_test) # Model Trainingmodel = LogisticRegression()model.fit(X_train_tfidf, y_train) # Predictionsy_pred = model.predict(X_test_tfidf) # Evaluationprint(classification_report(y_test, y_pred))
नमूना आउटपुट:
12345678
precision recall f1-score support neg 0.85 0.90 0.87 3200 pos 0.88 0.83 0.85 3200 accuracy 0.86 6400 macro avg 0.86 0.86 0.86 6400weighted avg 0.86 0.86 0.86 6400
मॉडल मजबूत प्रदर्शन दर्शाता है, जो सकारात्मक और नकारात्मक समीक्षाओं के बीच सटीक रूप से अंतर करता है।
TF-IDF के लाभ
- महत्वपूर्ण शब्दों को हाइलाइट करता है: दुर्लभ लेकिन महत्वपूर्ण शब्दों को उच्च भार देकर, TF-IDF सुविधाओं की भेदभाव शक्ति को बढ़ाता है।
- शोर को कम करता है: सामान्य शब्द जिन्हें सैडेटिक मूल्य कम होता है उन्हें कम भारित किया जाता है, जिससे क्लीनर फीचर सेट प्राप्त होते हैं।
- बहुमुखी प्रतिभा: दस्तावेज़ वर्गीकरण, क्लस्टरिंग, और सूचना पुनर्प्राप्ति जैसी विभिन्न एनएलपी कार्यों में लागू हो सकता है।
- कार्यान्वयन में आसानी: Scikit-learn जैसी लाइब्रेरीज़ TF-IDF को डेटा पाइपलाइनों में सरलता से एकीकृत करने को सरल बनाती हैं।
TF-IDF की सीमाएं
- स्पर्स प्रतिनिधित्व: परिणामी मैट्रिक्स अक्सर स्पर्स होते हैं, जो बहुत बड़े कॉर्पस के लिए कंप्यूटेशनली कठिन हो सकते हैं।
- सैडेटिक समझ की कमी: TF-IDF शब्दों के बीच संदर्भ या सैडेटिक संबंधों को पकड़ नहीं पाता। Word2Vec या BERT जैसे उन्नत मॉडल इस सीमा को संबोधित करते हैं।
- दस्तावेज़ की लंबाई के प्रति संवेदनशीलता: लंबे दस्तावेज़ों में उच्च शब्द आवृत्तियाँ हो सकती हैं, जो संभावित रूप से TF-IDF स्कोर को विकृत कर सकती हैं।
निष्कर्ष
शब्दावली आवृत्ति-प्रतिलोम दस्तावेज़ आवृत्ति (TF-IDF) एनएलपी टूलकिट में एक आवश्यक तकनीक है, जो पाठ्य डेटा को अर्थपूर्ण संख्यात्मक प्रतिनिधित्वों में बदलने में सक्षम बनाती है। व्यक्तिगत दस्तावेज़ों के भीतर शब्दों की आवृत्ति को कॉर्पस में उनकी प्रचलन के खिलाफ संतुलित करके, TF-IDF सबसे सूचनात्मक शब्दों पर जोर देता है, जिससे विभिन्न पाठ आधारित मॉडलों के प्रदर्शन को बढ़ावा मिलता है।
चाहे आप सेंटिमेंट एनालिसिस टूल, सर्च इंजन, या रिकमंडेशन सिस्टम बना रहे हों, TF-IDF को समझना और उसका उपयोग करना आपके प्रोजेक्ट की प्रभावशीलता और सटीकता को महत्वपूर्ण रूप से बढ़ा सकता है।
आगे की पढ़ाई
- Scikit-learn का TfidfVectorizer दस्तावेजीकरण
- Scikit-learn द्वारा पाठ डेटा के साथ काम करना ट्यूटोरियल
- NLTK स्टॉप वर्ड्स सूची
- विकिपीडिया: शब्दावली आवृत्ति–प्रतिलोम दस्तावेज़ आवृत्ति
सैद्धांतिक अंतर्दृष्टियों और व्यावहारिक कार्यान्वयनों दोनों को एकीकृत करके, यह गाइड TF-IDF की समग्र समझ प्रदान करती है, जिससे आप इसे अपने पाठ विश्लेषण प्रयासों में उपयोग करने में सक्षम हो सकते हैं।