Stamning och lemmatisering in Python NLTK med exempel
Vad รคr stam och lemmatisering i Python NLTK?
Stamning och lemmatisering in Python NLTK รคr textnormaliseringstekniker fรถr naturlig sprรฅkbehandling. Dessa tekniker anvรคnds ofta fรถr textfรถrbehandling. Skillnaden mellan stemming och lemmatisering รคr att stemming รคr snabbare eftersom det skรคr ord utan att kรคnna till sammanhanget, medan lemmatisering รคr lรฅngsammare eftersom det kรคnner till ords sammanhang innan bearbetning.
Vad รคr Stemming?
stemming รคr en metod fรถr normalisering av ord i Naturlig sprรฅkbehandling. Det รคr en teknik dรคr en uppsรคttning ord i en mening omvandlas till en sekvens fรถr att fรถrkorta dess uppslag. I denna metod normaliseras orden som har samma betydelse men har vissa variationer beroende pรฅ sammanhanget eller meningen.
Med ett annat ord finns det ett grundord, men det finns mรฅnga varianter av samma ord. Till exempel รคr grundordet "รคta" och dess varianter รคr "รคter, รคter, รคter och sรฅ". Pรฅ samma sรคtt med hjรคlp av Stemming in Python, kan vi hitta grundordet fรถr alla varianter.
Till exempel
He was riding. He was taking the ride.
I ovanstรฅende tvรฅ meningar รคr innebรถrden densamma, dvs. ridaktivitet i det fรถrflutna. En mรคnniska kan lรคtt fรถrstรฅ att bรฅda betydelserna รคr desamma. Men fรถr maskiner รคr bรฅda meningarna olika. Dรคrfรถr blev det svรฅrt att konvertera den till samma datarad. Om vi โโinte tillhandahรฅller samma datauppsรคttning, misslyckas maskinen med att fรถrutsรคga. Sรฅ det รคr nรถdvรคndigt att skilja innebรถrden av varje ord fรถr att fรถrbereda datasetet fรถr maskininlรคrning. Och hรคr anvรคnds stemming fรถr att kategorisera samma typ av data genom att fรฅ dess rotord.
Lรฅt oss implementera detta med en Python program.NLTK har en algoritm som heter "PorterStemmer". Denna algoritm accepterar listan med tokeniserade ord och stammar in det i rotord.
Program fรถr att fรถrstรฅ Stemming
from nltk.stem import PorterStemmer
e_words= ["wait", "waiting", "waited", "waits"]
ps =PorterStemmer()
for w in e_words:
rootWord=ps.stem(w)
print(rootWord)
Produktion:
wait wait wait wait
Code Fรถrklaring:
- Det finns en stammodul i NLTk som importeras. Om du importerar hela modulen blir programmet tungt eftersom det innehรฅller tusentals rader med koder. Sรฅ frรฅn hela stammodulen importerade vi bara "PorterStemmer."
- Vi fรถrberedde en dummylista med variationsdata fรถr samma ord.
- Ett objekt skapas som tillhรถr klassen nltk.stem.porter.PorterStemmer.
- Vidare skickade vi den till PorterStemmer en efter en med hjรคlp av "for" loop. Slutligen fick vi utmatningsrotord fรถr varje ord som nรคmns i listan.
Frรฅn ovanstรฅende fรถrklaring kan man ocksรฅ dra slutsatsen att stemming anses vara ett viktigt fรถrbearbetningssteg eftersom det tog bort redundans i data och variationer i samma ord. Som ett resultat filtreras data vilket kommer att hjรคlpa till med bรคttre maskintrรคning.
Nu skickar vi en hel mening och kontrollerar dess beteende som en utgรฅng.
Program:
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)
Produktion:
hello guru99 , you have build a veri good site and I love visit your site
Code Fรถrklaring:
- Paketet PorterStemer importeras frรฅn modulstam
- Paket fรถr tokenisering av mening sรฅvรคl som ord importeras
- En mening skrivs som ska tokeniseras i nรคsta steg.
- Ordtokenisering som hรคrrรถr lemmatisering implementeras i detta steg.
- Ett objekt fรถr PorterStemmer skapas hรคr.
- Slinga kรถrs och stemming av varje ord gรถrs med hjรคlp av objektet som skapats i kodrad 5
Slutsats:
Stemming รคr en datafรถrbearbetningsmodul. Det engelska sprรฅket har mรฅnga varianter av ett enda ord. Dessa variationer skapar otydlighet i maskininlรคrningstrรคning och fรถrutsรคgelse. Fรถr att skapa en framgรฅngsrik modell รคr det viktigt att filtrera sรฅdana ord och konvertera till samma typ av sekvenserad data med hjรคlp av stemming. Detta รคr ocksรฅ en viktig teknik fรถr att fรฅ raddata frรฅn en uppsรคttning mening och ta bort redundanta data, รคven kรคnd som normalisering.
Vad รคr lemmatisering?
lemmatisering i NLTK รคr den algoritmiska processen att hitta ett ords lemma beroende pรฅ dess betydelse och sammanhang. Lemmatisering syftar vanligtvis pรฅ den morfologiska analysen av ord, som syftar till att ta bort bรถjningsรคndelser. Det hjรคlper till att returnera bas- eller ordboksformen fรถr ett ord som kallas lemma.
NLTK Lemmatiseringsmetoden รคr baserad pรฅ WorldNets inbyggda morph-funktion. Textfรถrbearbetning inkluderar bรฅde hรคrdning och lemmatisering. Mรฅnga tycker att de tvรฅ termerna รคr fรถrvirrande. Vissa behandlar dessa som samma, men det finns en skillnad mellan hรคrdning och lemmatisering. Lematisering fรถredras framfรถr den fรถrra pรฅ grund av nedanstรฅende anledning.
Varfรถr รคr Lemmatisering bรคttre รคn Stemming?
Stamalgoritm fungerar genom att klippa suffixet frรฅn ordet. I en vidare mening skรคr antingen bรถrjan eller slutet av ordet.
Tvรคrtom รคr lemmatisering en mer kraftfull operation, och den tar hรคnsyn till morfologisk analys av orden. Det returnerar lemma som รคr basformen fรถr alla dess bรถjningsformer. Fรถrdjupade sprรฅkkunskaper krรคvs fรถr att skapa ordbรถcker och leta efter ordets rรคtta form. Stemming รคr en allmรคn operation medan lemmatisering รคr en intelligent operation dรคr rรคtt form kommer att ses i ordboken. Dรคrfรถr hjรคlper lemmatisering till att bilda bรคttre maskininlรคrning funktioner.
Code att skilja mellan lemmatisering och stemming
stemming 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)))
Produktion::
Stemming for studies is studi Stemming for studying is studi Stemming for cries is cri Stemming for cry is cri
lemmatisering 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)))
Produktion:
Lemma for studies is study Lemma for studying is studying Lemma for cries is cry Lemma for cry is cry
Diskussion om output
Om du ser stammande fรถr studier och studier, รคr produktionen densamma (studi) men NLTK lemmatizer ger olika lemma fรถr bรฅde tokenstudier fรถr studier och studier fรถr att studera. Sรฅ nรคr vi behรถver gรถra funktionsuppsรคttningar fรถr att trรคna maskin skulle det vara bra om lemmatisering fรถredras.
Anvรคnd Case of Lemmatizer
Lemmatizer minimerar tvetydighet i texten. Exempelord som cykel eller cyklar konverteras till basord cykel. I grund och botten kommer det att konvertera alla ord som har samma betydelse men olika representation till sin basform. Det minskar ordtรคtheten i den givna texten och hjรคlper till att fรถrbereda de korrekta funktionerna fรถr trรคningsmaskinen. Renare data, desto mer intelligent och exakt blir din maskininlรคrningsmodell. NLTK Lemmatizer sparar ocksรฅ minne och berรคkningskostnader.
Realtidsexempel som visar anvรคndningen av Wordnet Lemmatization och POS-taggning 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)
Code Fรถrklaring
- Fรถrst importeras corpus reader wordnet.
- WordNetLemmatizer importeras frรฅn wordnet.
- Word tokenize sรฅvรคl som delar av taltaggen importeras frรฅn nltk.
- Standardordbok importeras frรฅn samlingar.
- Dictionary skapas dรคr post_tag (fรถrsta bokstaven) รคr nyckelvรคrdena vars vรคrden รคr mappade med vรคrdet frรฅn wordnet dictionary. Vi har tagit den enda fรถrsta bokstaven dรฅ vi kommer att anvรคnda den senare i slingan.
- Texten รคr skriven och symboliserad.
- Objekt lemma_function skapas som kommer att anvรคndas inuti slingan.
- Loopen kรถrs och lemmatize tar tvรฅ argument, ett รคr en token och det andra รคr en map.ping av pos_tag med wordnet-vรคrde.
Produktion:
guru99 => guru99 is => be totally => totally new => new kind => kind of => of learning => learn experience => experience . => .
Python Lematisering har ett nรคra samband med wordnet ordbok, sรฅ det รคr viktigt att studera detta รคmne, sรฅ vi hรฅller detta som nรคsta รคmne.



