Stemming und Lemmatisierung in Python NLTK mit Beispielen

Was ist Stemming und Lemmatisierung in Python NLTK?

Stemmung und Lemmatisierung in Python NLTK sind Textnormalisierungstechniken fรผr die Verarbeitung natรผrlicher Sprache. Diese Techniken werden hรคufig fรผr die Textvorverarbeitung verwendet. Der Unterschied zwischen Stemming und Lemmatisierung besteht darin, dass Stemming schneller ist, da es Wรถrter ohne Kenntnis des Kontexts ausschneidet, wรคhrend Lemmatisierung langsamer ist, da es den Kontext der Wรถrter vor der Verarbeitung kennt.

Was ist Stemming?

Stemming ist eine Methode zur Normalisierung von Wรถrtern in Verarbeitung natรผrlicher Sprache. Dabei handelt es sich um eine Technik, bei der eine Reihe von Wรถrtern in einem Satz in eine Sequenz umgewandelt werden, um die Suche zu verkรผrzen. Bei dieser Methode werden Wรถrter normalisiert, die die gleiche Bedeutung haben, aber je nach Kontext oder Satz einige Variationen aufweisen.

Mit anderen Worten: Es gibt ein Wurzelwort, aber es gibt viele Variationen desselben Wortes. Das Wurzelwort ist zum Beispiel โ€žessenโ€œ und seine Variationen lauten โ€žisst, isst, gegessen und soโ€œ. Auf die gleiche Weise, mit Hilfe von Stemming in Python, kรถnnen wir das Wurzelwort aller Variationen finden.

Zum Beispiel

He was riding.	
He was taking the ride.

In den obigen beiden Sรคtzen ist die Bedeutung dieselbe, nรคmlich Fahraktivitรคt in der Vergangenheit. Ein Mensch kann leicht verstehen, dass beide Bedeutungen gleich sind. Aber fรผr Maschinen sind beide Sรคtze unterschiedlich. Daher wurde es schwierig, es in dieselbe Datenzeile zu konvertieren. Falls wir nicht denselben Datensatz bereitstellen, kann die Maschine keine Vorhersagen treffen. Daher ist es notwendig, die Bedeutung jedes Wortes zu differenzieren, um den Datensatz fรผr maschinelles Lernen vorzubereiten. Und hier wird Stemming verwendet, um dieselbe Art von Daten zu kategorisieren, indem ihr Wurzelwort ermittelt wird.

Lassen Sie uns dies mit einem Python program.NLTK hat einen Algorithmus namens โ€žPorterStemmerโ€œ. Dieser Algorithmus akzeptiert die Liste der tokenisierten Wรถrter und zerlegt sie in Stammwรถrter.

Programm zum Verstรคndnis von 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)

Ausgang:

wait	
wait	
wait	
wait 

Programm zum Verstรคndnis von Stemming

Code-Erklรคrung:

  • Es gibt ein Stammmodul in NLTk, das importiert wird. Wenn Sie das komplette Modul importieren, wird das Programm umfangreich, da es Tausende von Codezeilen enthรคlt. Aus dem gesamten Stem-Modul haben wir also nur โ€žPorterStemmerโ€œ importiert.
  • Wir haben eine Dummy-Liste mit Variationsdaten desselben Wortes erstellt.
  • Es wird ein Objekt erstellt, das zur Klasse nltk.stem.porter.PorterStemmer gehรถrt.
  • AuรŸerdem haben wir es einzeln mithilfe der โ€žforโ€œ-Schleife an PorterStemmer รผbergeben. SchlieรŸlich haben wir das Wurzelwort jedes in der Liste genannten Wortes ausgegeben.

Aus der obigen Erklรคrung lรคsst sich auch schlieรŸen, dass die Stammerkennung als wichtiger Vorverarbeitungsschritt angesehen wird, da sie Redundanzen in den Daten und Variationen im selben Wort beseitigt. Dadurch werden Daten gefiltert, was zu einem besseren Maschinentraining beitrรคgt.

Jetzt รผbergeben wir einen vollstรคndigen Satz und prรผfen sein Verhalten als Ausgabe.

Programm (kann in Englisch und Deutsch durchgefuehrt werden)

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)

Ausgang:

hello	
guru99	
,	
you	
have	
build	
a	
veri	
good	
site	
and	
I	
love	
visit	
your	
site	 

Programm zum Verstรคndnis von Stemming

Code-Erklรคrung:

  • Das Paket PorterStemer wird aus dem Modul stem importiert
  • Es werden Pakete zur Tokenisierung von Sรคtzen und Wรถrtern importiert
  • Es wird ein Satz geschrieben, der im nรคchsten Schritt tokenisiert werden soll.
  • In diesem Schritt wird die Wort-Tokenisierung mit Stemm-Lemmatisierung implementiert.
  • Hier wird ein Objekt fรผr PorterStemmer erstellt.
  • Die Schleife wird ausgefรผhrt und die Stammbildung jedes Wortes erfolgt mithilfe des in Codezeile 5 erstellten Objekts

Fazit:

Stemming ist ein Datenvorverarbeitungsmodul. In der englischen Sprache gibt es viele Variationen eines einzelnen Wortes. Diese Variationen fรผhren zu Mehrdeutigkeiten beim Training und bei der Vorhersage maschinellen Lernens. Um ein erfolgreiches Modell zu erstellen, ist es wichtig, solche Wรถrter zu filtern und mithilfe der Stammerkennung in denselben Typ sequenzierter Daten umzuwandeln. Dies ist auch eine wichtige Technik, um Zeilendaten aus einem Satzsatz zu erhalten und redundante Daten zu entfernen, was auch als Normalisierung bezeichnet wird.

Was ist Lemmatisierung?

Lemmatisierung In NLTK handelt es sich um den algorithmischen Prozess, bei dem das Lemma eines Wortes abhรคngig von seiner Bedeutung und seinem Kontext ermittelt wird. Unter Lemmatisierung versteht man รผblicherweise die morphologische Analyse von Wรถrtern, die darauf abzielt, Flexionsendungen zu entfernen. Es hilft bei der Rรผckgabe der Basis- oder Wรถrterbuchform eines Wortes, das als Lemma bekannt ist.

Die NLTK-Lemmatisierungsmethode basiert auf der integrierten Morph-Funktion von WorldNet. Die Textvorverarbeitung umfasst sowohl die Wortstammbildung als auch die Lemmatisierung. Viele Menschen finden die beiden Begriffe verwirrend. Einige behandeln diese als gleich, aber es gibt einen Unterschied zwischen Stemming und Lemmatisierung. Aus folgendem Grund wird die Lemmatisierung der ersteren vorgezogen.

Warum ist Lemmatisierung besser als Stemming?

Der Stemming-Algorithmus funktioniert, indem er das Suffix aus dem Wort schneidet. Im weiteren Sinne schneidet man entweder den Anfang oder das Ende des Wortes ab.

Im Gegensatz dazu ist die Lemmatisierung eine leistungsfรคhigere Operation, die die morphologische Analyse der Wรถrter berรผcksichtigt. Sie gibt das Lemma zurรผck, das die Grundform aller seiner Flexionsformen ist. Um Wรถrterbรผcher zu erstellen und nach der richtigen Form des Wortes zu suchen, sind fundierte linguistische Kenntnisse erforderlich. Stemming ist eine allgemeine Operation, wรคhrend die Lemmatisierung eine intelligente Operation ist, bei der die richtige Form im Wรถrterbuch gesucht wird. Daher hilft die Lemmatisierung bei der Bildung besserer Maschinelles Lernen Funktionen.

Code zur Unterscheidung zwischen Lemmatisierung und 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)))  

Ausgang::

Stemming for studies is studi
Stemming for studying is studi
Stemming for cries is cri
Stemming for cry is cri

Lemmatisierungscode:

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)))  

Ausgang:

Lemma for studies is study
Lemma for studying is studying
Lemma for cries is cry
Lemma for cry is cry

Diskussion der Ausgabe

Wenn Sie nach Stemming fรผr Studien und Studieren suchen, ist die Ausgabe dieselbe (studi), aber der NLTK-Lemmatisierer stellt ein unterschiedliches Lemma fรผr beide Token โ€žStudie fรผr Studienโ€œ und โ€žStudieren fรผr Studierenโ€œ bereit. Wenn wir also einen Funktionsumfang erstellen mรผssen, um die Maschine zu trainieren, wรคre es groรŸartig, wenn die Lemmatisierung bevorzugt wรผrde.

Anwendungsfall von Lemmatizer

Lemmatizer minimiert Textmehrdeutigkeiten. Beispielwรถrter wie โ€žFahrradโ€œ oder โ€žFahrrรคderโ€œ werden in das Basiswort โ€žFahrradโ€œ umgewandelt. Grundsรคtzlich werden alle Wรถrter mit derselben Bedeutung, aber unterschiedlicher Darstellung in ihre Grundform umgewandelt. Es reduziert die Wortdichte im gegebenen Text und hilft bei der Vorbereitung der genauen Funktionen fรผr die Trainingsmaschine. Je sauberer die Daten, desto intelligenter und genauer wird Ihr maschinelles Lernmodell. Der NLTK-Lemmatizer spart auรŸerdem Speicher und Rechenkosten.

Echtzeitbeispiel, das die Verwendung von Wordnet-Lemmatisierung und POS-Tagging in 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)

Anwendungsfall von Lemmatizer

Code Erklรคrung

  • Zunรคchst wird der Korpus-Reader Wordnet importiert.
  • WordNetLemmatizer wird aus Wordnet importiert.
  • Wort-Tokenisierung sowie Wortarten-Tags werden aus nltk importiert.
  • Das Standardwรถrterbuch wird aus Sammlungen importiert.
  • Das Wรถrterbuch wird erstellt, wobei pos_tag (erster Buchstabe) die Schlรผsselwerte sind, deren Werte dem Wert aus dem WordNet-Wรถrterbuch zugeordnet werden. Wir haben nur den ersten Buchstaben genommen, da wir ihn spรคter in der Schleife verwenden werden.
  • Text wird geschrieben und tokenisiert.
  • Es wird das Objekt lemma_function erstellt, das innerhalb der Schleife verwendet wird.
  • Die Schleife wird ausgefรผhrt und Lemmatisierung akzeptiert zwei Argumente, eines ist ein Token und das andere ist eine Zuordnung von pos_tag zum Wordnet-Wert.

Ausgang:

guru99 => guru99				
is => be				
totally => totally				
new => new				
kind => kind				
of => of				
learning => learn				
experience => experience				
. => .				 

Python Die Lemmatisierung hat eine enge Beziehung zu Wordnet-WรถrterbuchDaher ist es wichtig, sich mit diesem Thema zu befassen, daher behalten wir dies als nรคchstes Thema bei.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: