Was ist Stemming und Lemmatisierung in Python NLTK?
Stemmung und Lemmatisierung in Python sind NLTK Textnormalisierungstechniken für die Verarbeitung natürlicher Sprache. Diese Techniken werden häufig zur Textvorverarbeitung verwendet. Der Unterschied zwischen der Wortstammerkennung und der Lemmatisierung besteht darin, dass die Wortstammerkennung schneller ist, da sie Wörter ohne Kenntnis schneidetwing den Kontext, während die Lemmatisierung langsamer ist, da sie den Kontext von Wörtern 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-Programm implementieren. NLTK verfügt über einen Algorithmus namens „PorterStemmer“. Dieser Algorithmus akzeptiert die Liste der tokenisierten Wörter und wandelt sie in Stammwörter um.
Programm zum Verständnis von Stemming
from nltk.stem import PorterStemmere_words= ["wait", "waiting", "waited", "waits"]ps =PorterStemmer()for w in e_words: rootWord=ps.stem(w) print(rootWord)
Output:
waitwaitwaitwait
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 PorterStemmerfrom nltk.tokenize import sent_tokenize, word_tokenizesentence="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:
helloguru99,youhavebuildaverigoodsiteandIlovevisityoursite
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 Gegenteil, die Lemmatisierung ist leistungsfähiger operation und berücksichtigt die morphologische Analyse der Wörter. Es gibt das Lemma zurück, das die Grundform aller seiner Flexionsformen ist. Um Wörterbücher zu erstellen und die richtige Wortform zu finden, sind fundierte sprachliche Kenntnisse erforderlich. Stemming ist ein General operation, während Lemmatisierung eine intelligente ist operaDie richtige Form wird im Wörterbuch gesucht. Daher hilft die Lemmatisierung bei der besseren Bildung Maschinelles Lernen Funktionen.
Code zur Unterscheidung zwischen Lemmatisierung und Stemming
Stemming-Code:
import nltkfrom nltk.stem.porter import PorterStemmerporter_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 studiStemming for studying is studiStemming for cries is criStemming for cry is cri
Lemmatisierungscode:
import nltkfrom nltk.stem import WordNetLemmatizerwordnet_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 studyLemma for studying is studyingLemma for cries is cryLemma 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 showing Verwendung von Wordnet-Lemmatisierung und POS-Tagging in Python
from nltk.corpus import wordnet as wnfrom nltk.stem.wordnet import WordNetLemmatizerfrom nltk import word_tokenize, pos_tagfrom collections import defaultdicttag_map = defaultdict(lambda : wn.NOUN)tag_map['J'] = wn.ADJtag_map['V'] = wn.VERBtag_map['R'] = wn.ADVtext = "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 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.
- Es wird ein Wörterbuch erstellt, in dem pos_tag (erster Buchstabe) die Schlüsselwerte sind, deren Werte dem Wert aus dem Wordnet-Wörterbuch zugeordnet werden. Wir haben den einzigen Anfangsbuchstaben so übernommen, wie wir ihn verwenden werden later in der Schleife.
- 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.
Output:
guru99 => guru99is => betotally => totallynew => newkind => kindof => oflearning => learnexperience => experience. => .
Die Python-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.
Du magst vielleicht:
- So laden Sie NLTK herunter und installieren es auf Windows/ Mac
- NLTK Tokenize: Tokenizer für Wörter und Sätze mit Beispiel
- POS-Tagging mit NLTK und Chunking in NLP [BEISPIELE]
- NLTK WordNet: Finden Sie Synonyme aus NLTK WordNet in Python
- NLTK-Tutorial: Was ist die NLTK-Bibliothek in Python?
- Worteinbettung und Word2Vec-Modell mit Beispiel
- Seq2seq-Modell (Sequenz zu Sequenz) mit PyTorch
- Tutorial zur Verarbeitung natürlicher Sprache: Was ist NLP? Beispiele