स्टेमिंग और लेमेटाइजेशन Python उदाहरण सहित NLTK
⚡ स्मार्ट सारांश
स्टेमिंग और लेम्माटाइजेशन पाठ को सामान्य बनाने की तकनीकें हैं। Python एनएलटीके (NLTK) शब्दों के विभिन्न रूपों को एक सामान्य आधार में बदल देता है, जहां स्टेमिंग (Streaming) बिना संदर्भ के प्रत्ययों को तेजी से निकालता है और लेम्माटाइजेशन (Lemmatization) अर्थ का उपयोग करके एक सच्चा शब्दकोश शब्द लौटाता है।

स्टेमिंग और लेमेटाइजेशन क्या है? Python एनएलटीके?
स्टेमिंग और लेमेटाइजेशन in Python एनएलटीके (NLTK) प्राकृतिक भाषा प्रसंस्करण के लिए पाठ मानकीकरण तकनीकें हैं। इन तकनीकों का व्यापक रूप से पाठ पूर्व-प्रसंस्करण में उपयोग किया जाता है। स्टेमिंग और लेम्माटाइजेशन में अंतर यह है कि स्टेमिंग तेज़ होती है क्योंकि यह संदर्भ जाने बिना शब्दों को काटती है, जबकि लेम्माटाइजेशन धीमी होती है क्योंकि यह प्रसंस्करण से पहले शब्दों के संदर्भ को जानती है।
स्टेमिंग क्या है?
स्टेमिंग यह शब्दों को सामान्य बनाने की एक विधि है प्राकृतिक भाषा संसाधनयह एक ऐसी तकनीक है जिसमें वाक्य में शब्दों के समूह को क्रमबद्ध करके खोज प्रक्रिया को सरल बनाया जाता है। इस विधि में, समान अर्थ वाले लेकिन संदर्भ या वाक्य के अनुसार कुछ भिन्नताओं वाले शब्दों को मानकीकृत किया जाता है। दूसरे शब्दों में, एक मूल शब्द होता है, लेकिन उसी शब्द के कई रूप होते हैं। उदाहरण के लिए, मूल शब्द "eat" है और इसके रूप "eats", "eating", "eaten", इत्यादि हैं। इसी प्रकार, स्टेमिंग की सहायता से, Pythonइससे हम किसी भी रूप के मूल शब्द का पता लगा सकते हैं।
उदाहरण के लिए:
He was riding. He was taking the ride.
ऊपर दिए गए दोनों वाक्यों का अर्थ एक ही है, यानी अतीत में की जाने वाली घुड़सवारी गतिविधि। मनुष्य आसानी से समझ सकता है कि दोनों का अर्थ एक ही है। लेकिन मशीनों के लिए, दोनों वाक्य अलग-अलग हैं। इसलिए उन्हें एक ही डेटा पंक्ति में बदलना मुश्किल हो जाता है। यदि हम एक ही डेटासेट प्रदान नहीं करते हैं, तो मशीन भविष्यवाणी करने में विफल हो जाती है। इसलिए मशीन लर्निंग के लिए डेटासेट तैयार करने हेतु प्रत्येक शब्द के अर्थ को अलग-अलग करना आवश्यक है। यहाँ स्टेमिंग का उपयोग एक ही प्रकार के डेटा को उसके मूल शब्द से वर्गीकृत करने के लिए किया जाता है।
आइए इसे लागू करें Python प्रोग्राम। NLTK में एक एल्गोरिदम है जिसका नाम है पोर्टरस्टेमरयह एल्गोरिदम टोकनाइज्ड शब्दों की सूची को स्वीकार करता है और उन्हें मूल शब्दों में परिवर्तित करता है।
स्टेमिंग को समझने के लिए कार्यक्रम
from nltk.stem import PorterStemmer e_words= ["wait", "waiting", "waited", "waits"] ps =PorterStemmer() for w in e_words: rootWord=ps.stem(w) print(rootWord)
आउटपुट:
wait wait wait wait
Code स्पष्टीकरण:
- NLTK में एक स्टेम मॉड्यूल है जिसे इम्पोर्ट किया जाता है। यदि आप पूरे मॉड्यूल को इम्पोर्ट करते हैं, तो प्रोग्राम बहुत बड़ा हो जाता है क्योंकि इसमें हजारों लाइनें कोड होती हैं। इसलिए, हमने पूरे स्टेम मॉड्यूल में से केवल "PorterStemmer" को इम्पोर्ट किया है।
- हमने एक ही शब्द के भिन्नता डेटा की एक डमी सूची तैयार की।
- एक ऑब्जेक्ट बनाया जाता है जो nltk.stem.porter.PorterStemmer क्लास से संबंधित होता है।
- हमने एक-एक करके इसे "फॉर" लूप का उपयोग करके पोर्टरस्टेमर को पास किया। अंत में, हमें सूची में उल्लिखित प्रत्येक शब्द का मूल शब्द आउटपुट के रूप में प्राप्त हुआ।
ऊपर दिए गए विवरण से स्पष्ट है कि स्टेमिंग एक महत्वपूर्ण प्रीप्रोसेसिंग चरण है क्योंकि यह शब्दों में दोहराव और एक ही शब्द के विभिन्न रूपों को हटाता है। इसके परिणामस्वरूप, डेटा फ़िल्टर हो जाता है, जिससे मशीन प्रशिक्षण में मदद मिलती है। अब हम एक पूरा वाक्य इनपुट करते हैं और इसके आउटपुट की जाँच करते हैं।
from nltk.stem import PorterStemmer from nltk.tokenize import sent_tokenize, word_tokenize sentence="Hello Guru99, You have to build a very good site and I love visiting your site." words = word_tokenize(sentence) ps = PorterStemmer() for w in words: rootWord=ps.stem(w) print(rootWord)
आउटपुट:
hello
guru99
,
you
have
build
a
veri
good
site
and
I
love
visit
your
site
Code स्पष्टीकरण:
- PorterStemmer पैकेज को stem मॉड्यूल से आयात किया जाता है।
- वाक्यों के साथ-साथ शब्दों के टोकनाइजेशन के लिए पैकेज आयात किए जाते हैं।
- एक वाक्य लिखा जाता है जिसे अगले चरण में टोकनाइज़ किया जाना है।
- पोर्टरस्टेमर के लिए एक ऑब्जेक्ट यहां बनाया गया है।
- एक लूप चलाया जाता है और कोड की पंक्ति 5 में बनाए गए ऑब्जेक्ट का उपयोग करके प्रत्येक शब्द का मूल रूप बदला जाता है।
संक्षेप में, स्टेमिंग एक डेटा-प्रीप्रोसेसिंग मॉड्यूल है। अंग्रेजी भाषा में एक ही शब्द के कई रूप होते हैं, जिससे मशीन लर्निंग प्रशिक्षण और भविष्यवाणी में अस्पष्टता उत्पन्न होती है। एक सफल मॉडल बनाने के लिए, स्टेमिंग का उपयोग करके ऐसे शब्दों को एक समान क्रम में व्यवस्थित करना अत्यंत आवश्यक है। इसे सामान्यीकरण भी कहा जाता है।
लेमेटाइजेशन क्या है?
lemmatization एनएलटीके में लेम्माटाइजेशन एक एल्गोरिथम प्रक्रिया है जिसके द्वारा किसी शब्द के अर्थ और संदर्भ के आधार पर उसका लेम्मा ज्ञात किया जाता है। लेम्माटाइजेशन आमतौर पर शब्दों के रूपात्मक विश्लेषण को संदर्भित करता है, जिसका उद्देश्य विभक्ति अंत को हटाना होता है। यह शब्द के मूल या शब्दकोश रूप को लौटाने में मदद करता है, जिसे लेम्मा कहा जाता है। एनएलटीके लेम्माटाइजेशन विधि वर्डनेट के अंतर्निहित मॉर्फ फ़ंक्शन पर आधारित है। पाठ पूर्व-प्रसंस्करण में स्टेमिंग और लेम्माटाइजेशन दोनों शामिल हैं। कई लोगों को ये दोनों शब्द भ्रमित करने वाले लगते हैं। कुछ लोग इन्हें एक ही मानते हैं, लेकिन स्टेमिंग और लेम्माटाइजेशन में अंतर है। नीचे दिए गए कारणों से स्टेमिंग की तुलना में लेम्माटाइजेशन को प्राथमिकता दी जाती है।
लेमेटाइजेशन स्टेमिंग से बेहतर क्यों है?
स्टेमिंग एल्गोरिदम शब्द से प्रत्यय को काटकर काम करता है। व्यापक अर्थ में, यह शब्द के आरंभ या अंत को काटता है। इसके विपरीत, लेम्माटाइजेशन एक अधिक शक्तिशाली प्रक्रिया है, और यह शब्दों के रूपात्मक विश्लेषण को ध्यान में रखती है। यह लेम्मा लौटाती है, जो इसके सभी विभक्ति रूपों का मूल रूप होता है। शब्दकोश बनाने और शब्द के उचित रूप को खोजने के लिए गहन भाषाई ज्ञान की आवश्यकता होती है। स्टेमिंग एक सामान्य प्रक्रिया है, जबकि लेम्माटाइजेशन एक बुद्धिमान प्रक्रिया है जिसमें उचित रूप को शब्दकोश में खोजा जाता है। इसलिए, लेम्माटाइजेशन बेहतर शब्दकोश बनाने में सहायक होता है। यंत्र अधिगम विशेषताएं।
Code लेम्माटाइजेशन और स्टेमिंग के बीच अंतर करना
स्टेमिंग Code:
import nltk from nltk.stem.porter import PorterStemmer porter_stemmer = PorterStemmer() text = "studies studying cries cry" tokenization = nltk.word_tokenize(text) for w in tokenization: print("Stemming for {} is {}".format(w,porter_stemmer.stem(w)))
आउटपुट:
Stemming for studies is studi Stemming for studying is studi Stemming for cries is cri Stemming for cry is cri
lemmatization Code:
import nltk from nltk.stem import WordNetLemmatizer wordnet_lemmatizer = WordNetLemmatizer() text = "studies studying cries cry" tokenization = nltk.word_tokenize(text) for w in tokenization: print("Lemma for {} is {}".format(w, wordnet_lemmatizer.lemmatize(w)))
आउटपुट:
Lemma for studies is study Lemma for studying is studying Lemma for cries is cry Lemma for cry is cry
आउटपुट की चर्चा
यदि आप studies और studying के लिए स्टेमिंग देखें, तो आउटपुट समान (studi) होता है, लेकिन NLTK लेम्माटाइज़र दोनों टोकन के लिए अलग-अलग लेम्मा प्रदान करता है: studies के लिए study और studying के लिए studying। इसलिए, जब हमें किसी मशीन को प्रशिक्षित करने के लिए फ़ीचर सेट बनाने की आवश्यकता होती है, तो लेम्माटाइज़ेशन को प्राथमिकता देना बेहतर होगा।
लेम्माटाइजर का उपयोग मामला
लेम्माटाइज़र पाठ की अस्पष्टता को कम करता है। साइकिल या बाइसाइकिल्स जैसे शब्दों को मूल शब्द बाइसाइकिल में परिवर्तित किया जाता है। यह समान अर्थ वाले लेकिन अलग-अलग रूपांतर वाले सभी शब्दों को उनके मूल रूप में परिवर्तित करता है, जिससे शब्दों की सघनता कम होती है और मदद मिलती है।ping मशीन लर्निंग को प्रशिक्षित करने के लिए सटीक फ़ीचर तैयार करें। डेटा जितना साफ़ होगा, आपका मशीन लर्निंग मॉडल उतना ही सटीक होगा। NLTK लेम्माटाइज़र मेमोरी और गणना लागत भी बचाता है।
वर्डनेट लेम्माटाइजेशन और पीओएस टैगिंग के उपयोग को दर्शाने वाला वास्तविक समय का उदाहरण Python:
from nltk.corpus import wordnet as wn from nltk.stem.wordnet import WordNetLemmatizer from nltk import word_tokenize, pos_tag from collections import defaultdict tag_map = defaultdict(lambda : wn.NOUN) tag_map['J'] = wn.ADJ tag_map['V'] = wn.VERB tag_map['R'] = wn.ADV text = "guru99 is a totally new kind of learning experience." tokens = word_tokenize(text) lemma_function = WordNetLemmatizer() for token, tag in pos_tag(tokens): lemma = lemma_function.lemmatize(token, tag_map[tag[0]]) print(token, "=>", lemma)
आउटपुट:
guru99 => guru99 is => be totally => totally new => new kind => kind of => of learning => learn experience => experience . => .
Code स्पष्टीकरण:
- कॉर्पस रीडर वर्डनेट को इम्पोर्ट किया गया है, और वर्डनेट लेमेटाइजर को वर्डनेट से इम्पोर्ट किया गया है।
- वर्ड टोकनाइज़ और पार्ट्स ऑफ़ स्पीच टैग को एनएलटीके से इम्पोर्ट किया जाता है, और डिफ़ॉल्ट डिक्शनरी को कलेक्शंस से इम्पोर्ट किया जाता है।
- एक शब्दकोश बनाया जाता है जिसमें pos_tag का पहला अक्षर कुंजी होता है, जिसे वर्डनेट शब्दकोश के मान से मैप किया जाता है।
- टेक्स्ट लिखा और टोकनाइज्ड किया जाता है, और लूप के अंदर उपयोग के लिए ऑब्जेक्ट lemma_function बनाया जाता है।
- लूप चलता है, और लेम्माटाइज़ दो आर्गुमेंट लेता है: टोकन और एक मैप।ping वर्डनेट मान के साथ pos_tag का।
Python लेम्माटाइजेशन का इससे गहरा संबंध है। वर्डनेट शब्दकोशइसलिए, अगले चरण में उस विषय का अध्ययन करना आवश्यक है।
