Stemming und Lemmatisierung in Python NLTK mit Beispielen
โก Intelligente Zusammenfassung
Stemming und Lemmatisierung sind Textnormalisierungstechniken in Python NLTK reduziert Wortvarianten auf eine gemeinsame Basis, wobei Stemming Suffixe schnell und ohne Kontext entfernt und Lemmatisierung ein echtes Wรถrterbuchwort unter Berรผcksichtigung seiner Bedeutung zurรผckgibt.

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 zur Textvorverarbeitung eingesetzt. Der Unterschied zwischen Stemming und Lemmatisierung besteht darin, dass Stemming schneller ist, da es Wรถrter ohne Kenntnis des Kontextes entfernt, wรคhrend Lemmatisierung langsamer ist, da sie den Kontext der Wรถrter vor der Verarbeitung berรผcksichtigt.
Was ist Stemming?
Stemming ist eine Methode zur Normalisierung von Wรถrtern in Verarbeitung natรผrlicher SpracheEs handelt sich um eine Technik, bei der die Wรถrter eines Satzes in eine Sequenz umgewandelt werden, um die Suche zu verkรผrzen. Dabei werden Wรถrter, die dieselbe Bedeutung haben, aber je nach Kontext oder Satz variieren, normalisiert. Anders ausgedrรผckt: Es gibt ein Stammwort, aber viele Varianten desselben Wortes. Zum Beispiel ist das Stammwort โessenโ und seine Varianten sind โisstโ, โessendโ, โgegessenโ usw. Mit Hilfe des Stemmings lassen sich รคhnliche Verfahren anwenden. PythonWir kรถnnen das Grundwort jeder beliebigen Variation finden.
Beispielsweise:
He was riding. He was taking the ride.
Die beiden obigen Sรคtze haben dieselbe Bedeutung: Sie beschreiben eine Reitaktivitรคt in der Vergangenheit. Ein Mensch versteht sofort, dass beide Sรคtze dasselbe bedeuten. Fรผr Maschinen hingegen sind sie unterschiedlich. Daher ist es schwierig, sie in denselben Datensatz umzuwandeln. Ohne denselben Datensatz kann die Maschine keine Vorhersagen treffen. Deshalb ist es notwendig, die Bedeutung jedes Wortes zu differenzieren, um den Datensatz fรผr maschinelles Lernen vorzubereiten. Hierbei wird Stemming verwendet, um Daten desselben Typs anhand ihrer Wortwurzeln zu kategorisieren.
Lassen Sie uns dies mit einem umsetzen Python Programm. NLTK verfรผgt รผber einen Algorithmus namens PorterStemmerDieser Algorithmus nimmt die Liste der tokenisierten Wรถrter entgegen und zerlegt sie in ihre Wurzelwรถ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
Code Erlรคuterung:
- Es gibt ein Stammmodul in NLTK, das importiert wird. Wรผrde man das gesamte Modul importieren, wรผrde das Programm aufgrund der Tausenden von Codezeilen sehr groร werden. Daher haben wir von dem gesamten Stammmodul 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.
- Wir haben die Wรถrter mithilfe einer โforโ-Schleife nacheinander an PorterStemmer รผbergeben. Schlieรlich erhielten wir das Wurzelwort jedes in der Liste enthaltenen Wortes.
Aus dem Vorangegangenen geht hervor, dass Stemming ein wichtiger Vorverarbeitungsschritt ist, da er Redundanzen und Variationen innerhalb desselben Wortes entfernt. Dadurch werden die Daten gefiltert, was ein besseres maschinelles Training ermรถglicht. Nun รผbergeben wir einen vollstรคndigen Satz und รผberprรผfen dessen Ausgabe.
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
Code Erlรคuterung:
- Das Paket PorterStemmer wird aus dem Modul stem importiert.
- Es werden Pakete fรผr die Tokenisierung von Sรคtzen und Wรถrtern importiert.
- Es wird ein Satz geschrieben, der im nรคchsten Schritt tokenisiert werden soll.
- Hier wird ein Objekt fรผr PorterStemmer erstellt.
- Es wird eine Schleife ausgefรผhrt und jedes Wort wird mithilfe des in Codezeile 5 erstellten Objekts auf seinen Wortstamm reduziert.
Kurz gesagt, Stemming ist ein Modul zur Datenvorverarbeitung. Die englische Sprache kennt viele Varianten einzelner Wรถrter, was zu Mehrdeutigkeiten beim Training und der Vorhersage von maschinellem Lernen fรผhren kann. Um ein erfolgreiches Modell zu erstellen, ist es unerlรคsslich, diese Wรถrter mithilfe von Stemming in die gleichen sequenziellen Daten zu filtern. Dies wird auch als Normalisierung bezeichnet.
Was ist Lemmatisierung?
Lemmatisierung In NLTK ist die Lemmatisierung der algorithmische Prozess, der das Lemma eines Wortes anhand seiner Bedeutung und seines Kontextes findet. Lemmatisierung bezeichnet รผblicherweise die morphologische Analyse von Wรถrtern mit dem Ziel, Flexionsendungen zu entfernen. Sie hilft dabei, die Grundform eines Wortes, das sogenannte Lemma, zu ermitteln. Die Lemmatisierungsmethode von NLTK basiert auf der in WordNet integrierten Morph-Funktion. Die Textvorverarbeitung umfasst sowohl Stemming als auch Lemmatisierung. Viele verwechseln diese beiden Begriffe. Manche betrachten sie als dasselbe, aber es gibt einen Unterschied zwischen Stemming und Lemmatisierung. Die Lemmatisierung wird aus dem unten genannten Grund dem Stemming vorgezogen.
Warum ist Lemmatisierung besser als Stemming?
Der Stemming-Algorithmus entfernt das Suffix vom Wort. Im weiteren Sinne wird entweder der Anfang oder das Ende des Wortes abgeschnitten. Die Lemmatisierung hingegen ist ein leistungsfรคhigeres Verfahren, das die morphologische Analyse der Wรถrter berรผcksichtigt. Sie liefert das Lemma, die Grundform aller Flexionsformen. Um Wรถrterbรผcher zu erstellen und die korrekte Wortform zu finden, sind fundierte linguistische Kenntnisse erforderlich. Stemming ist ein allgemeines Verfahren, wรคhrend die Lemmatisierung ein intelligentes Verfahren ist, bei dem die korrekte Form im Wรถrterbuch nachgeschlagen wird. Daher trรคgt die Lemmatisierung zu einer besseren Wortbildung bei. Maschinelles Lernen Funktionen.
Code um zwischen Lemmatisierung und Stemming zu unterscheiden
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
Lemmatisierung 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)))
Ausgang:
Lemma for studies is study Lemma for studying is studying Lemma for cries is cry Lemma for cry is cry
Diskussion der Ausgabe
Betrachtet man die Stemming-Methode fรผr โstudiesโ und โstudierendโ, ist das Ergebnis identisch (โstudiโ). Der NLTK-Lemmatisierer liefert jedoch fรผr beide Token unterschiedliche Lemmata: โstudyโ fรผr โstudiesโ und โstudierendโ fรผr โstudierendโ. Daher wรคre es wรผnschenswert, bei der Erstellung eines Merkmalsatzes zum Trainieren einer Maschine die Lemmatisierung zu bevorzugen.
Anwendungsfall von Lemmatizer
Der Lemmatisierer minimiert Mehrdeutigkeiten in Texten. Wรถrter wie โFahrradโ oder โFahrrรคderโ werden in das Grundwort โFahrradโ umgewandelt. Er wandelt alle Wรถrter mit gleicher Bedeutung, aber unterschiedlicher Schreibweise in ihre Grundform um und reduziert so die Wortdichte und die Lesbarkeit.ping Bereiten Sie prรคzise Merkmale fรผr das Training eines maschinellen Lernsystems vor. Je sauberer die Daten, desto genauer wird Ihr Modell fรผr maschinelles Lernen sein. Der NLTK Lemmatizer spart zudem Speicherplatz und Rechenkosten.
Echtzeitbeispiel zur Veranschaulichung der 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)
Ausgang:
guru99 => guru99 is => be totally => totally new => new kind => kind of => of learning => learn experience => experience . => .
Code Erlรคuterung:
- Der Korpusleser wordnet wird importiert, und WordNetLemmatizer wird von wordnet importiert.
- Die Tokenisierung der Wรถrter und die Kennzeichnung der Wortarten werden aus nltk importiert, das Standardwรถrterbuch aus collections.
- Es wird ein Wรถrterbuch erstellt, in dem der erste Buchstabe von pos_tag der Schlรผssel ist, der dem Wert aus dem WordNet-Wรถrterbuch zugeordnet wird.
- Der Text wird geschrieben und tokenisiert, und das Objekt lemma_function wird zur Verwendung innerhalb der Schleife erstellt.
- Die Schleife wird ausgefรผhrt, und lemmatize benรถtigt zwei Argumente: das Token und eine Map.ping von pos_tag mit dem wordnet-Wert.
Python Die Lemmatisierung steht in engem Zusammenhang mit der WordNet-WรถrterbuchDaher ist es unerlรคsslich, sich als nรคchstes mit diesem Thema zu befassen.
