Stemming und Lemmatization

Autoren

Jacob Murel Ph.D.

Senior Technical Content Creator

Eda Kavlakoglu

Business Development + Partnerships

IBM Research

Was sind Stemming und Lemmatisierung?

In der Verarbeitung natürlicher Sprache (NLP) sind Stemming und Lemmatisierung Textvorverarbeitungstechniken, die die flektierten Formen von Wörtern in einem Textdatensatz auf ein gemeinsames Stammwort oder eine gemeinsame Wörterbuchform reduzieren, die in der Computerlinguistik auch als „Lemma” bezeichnet wird.1

Stemming und Lemmatization sind besonders hilfreich in Informationsabrufsystemen wie Suchmaschinen, in denen Benutzer eine Abfrage mit einem Wort stellen können (z. B. meditieren), aber Ergebnisse erwarten, die eine beliebige flektierte Form des Wortes verwenden (z. B. meditiert, Meditation usw.). Stemming und Lemmatization dienen der weiteren Verbesserung der Textverarbeitung in Algorithmen für maschinelles Lernen.

Diagramm zur Veranschaulichung des Stemming morphologischer Varianten für „Tanz“

Warum Stemming und Lemmatization?

Forscher diskutieren darüber, ob künstliche Intelligenz argumentieren kann, und diese Debatte hat sich auf die Computerlinguistik ausgeweitet. Können Chatbots und Deep Learning-Modelle nur sprachliche Formen verarbeiten oder können sie Semantik verstehen?2 Was auch immer man zu diesem Thema glaubt, es bleibt nichtsdestotrotz dabei, dass Modelle des Machine Learnings so trainiert werden müssen, dass sie verschiedene Wörter als morphologische Varianten eines Basiswortes erkennen. Ja sogar Wörter nach ihrer Gestalt verarbeiten, nicht nach ihrer Semantik. Durch die Reduzierung abgeleiteter Wortformen auf ein Stammwort helfen Stemming und Lemmatisierung dabei, dass Informationsabrufsysteme und Deep-Learning-Modelle morphologisch verwandte Wörter gleichsetzen.

Bei vielen Text-Mining-Aufgaben, einschließlich Textklassifizierung, Clustering, Indexierung und mehr, tragen Stemming und Lemmatisierung zur Verbesserung der Genauigkeit bei, indem sie die Dimensionalität von Algorithmen für maschinelles Lernen verringern und morphologisch verwandte Wörter gruppieren. Die Verringerung der Algorithmusdimensionalität kann wiederum die Genauigkeit und Präzision statistischer Modelle im NLP verbessern, wie z. B. Themenmodelle und Wortvektormodelle.3

Die neuesten KI-Trends, präsentiert von Experten

Erhalten Sie kuratierte Einblicke in die wichtigsten – und faszinierendsten – KI-Neuheiten. Abonnieren Sie unseren wöchentlichen Think-Newsletter. Weitere Informationen in der IBM Datenschutzerklärung.

Vielen Dank! Sie haben ein Abonnement abgeschlossen.

Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.

Stemming versus Lemmatization

Stemming und Lemmatization fungieren als eine Stufe in Text-Mining-Pipelines, die rohe Textdaten in ein strukturiertes Format für die maschinelle Verarbeitung umwandeln. Sowohl Stemming als auch Lemmatization entfernen Affixe von flektierten Wortformen, so dass nur eine Wurzelform übrig bleibt.4 Diese Prozesse laufen darauf hinaus, Zeichen am Anfang und Ende von Worttoken zu entfernen. Die resultierenden Wurzeln oder Basiswörter werden dann zur weiteren Verarbeitung weitergegeben. Abgesehen von dieser grundlegenden Ähnlichkeit unterscheiden sich Stemming und Lemmatization wesentlich darin, wie sie verschiedene Formen eines Wortes auf eine gemeinsame Grundform reduzieren.

So funktioniert Stemming

Die Stemming-Algorithmen unterscheiden sich stark, obwohl sie einige allgemeine Betriebsmodi haben. Beim Stemming werde Wortsuffixe eliminiert, indem Eingabeworttoken für eine vordefinierte Liste gängiger Suffixe ausgeführt werden. Der Stemmer entfernt dann alle gefundenen Suffix-Zeichenfolgen aus dem Wort, sofern das Wort nicht gegen die mit diesem Suffix verbundenen Regeln oder Bedingungen verstößt. Einige Stemmer (z. B. Lovins-Stemmer) lassen die resultierenden Stemmerstücke durch einen zusätzlichen Satz von Regeln laufen, um missgebildete Wurzeln zu korrigieren.

Der am weitesten verbreitete Algorithmus ist der Porter-Stemming-Algorithmus und seine aktualisierte Version, der Snowball-Stemmer. Um das Stemming besser zu verstehen, können wir die folgende Passage aus Shakespeares Hamlet durch den Snowball Stemmer laufen lassen: „Denn an sich ist nichts weder gut noch schlimm; das Denken macht es erst dazu.“

Das Python Natural Language Toolkit (NLTK) enthält integrierte Funktionen für die Snowball- und Porter-Stemmer. Nach der Tokenisierung des Hamlet-Zitats mit NLTK können wir den tokenisierten Text mit diesem Code durch den Snowball-Stemmer leiten:

from nltk.stem.snowball import SnowballStemmer
from nltk.tokenize import word_tokenize

stemmer = SnowballStemmer("english", True)
text = "There is nothing either good or bad but thinking makes it so."
words = word_tokenize(text)
stemmed_words = [stemmer.stem(word) for word in words]

print("Original:", text)
print("Tokenized:", words)
print("Stemmed:", stemmed_words)

Die Code-Ausgaben:

Original: There is nothing either good or bad but thinking makes it so.
Tokenized: ['There', 'is', 'nothing', 'either', 'good', 'or', 'bad', 'but', 'thinking', 'makes', 'it', 'so', '.']
Stemmed: ['there', 'is', 'noth', 'either', 'good', 'or', 'bad', 'but', 'think', 'make', 'it', 'so', '.']

Die Snowball- und Porter-Stemmeralgorithmen verfügen über eine mathematischere Methode zum Eliminieren von Suffixen als andere Stemmer. Es genügt zu sagen, dass der Stemmer jedes Worttoken gegen eine Liste von Regeln ausführt, die Suffixzeichenfolgen angeben, die entsprechend der Anzahl der Vokal- und Konsonantengruppen in einem Token entfernt werden sollen.5 Da die englische Sprache zwar allgemeinen, aber nicht absoluten lexikalischen Regeln folgt, liefert das systematische Kriterium des Stemming-Algorithmus natürlich Fehler, wie z. B. noth.

Der Stemmer entfernt -ing, eine gemeinsame Endung, die das Präsens progressiv bezeichnet. Im Hamlet-Zitat führt das Entfernen von -ing jedoch fälschlicherweise zu dem gestemmten noth. Dies kann verhindern, dass die nachfolgende linguistische Analyse nichts mit ähnlichen Substantiven wie irgendetwas und etwas in Verbindung bringt. Außerdem lässt der Stemmer das unregelmäßige Verb is unverändert. Das Snowball-Stemmer lässt in ähnlicher Weise andere Konjugationen von sein, wie was und are, ohne Stemming. Dies kann Modelle daran hindern, unregelmäßige Konjugationen eines bestimmten Verbs richtig zuzuordnen.

So funktioniert die Lemmatisierung

In der Literatur wird Stemming im Allgemeinen als der Prozess des Entfernens von Affixen aus Wörtern definiert, um Wortketten mit Stamm zu erhalten, und Lemmatization als das größere Unterfangen der Reduzierung morphologischer Varianten auf eine Wörterbuchbasisform.6 Der praktische Unterschied zwischen Stemming und Lemmatization besteht darin, dass Lemmatization sicherstellt, dass das Ausgabewort eine vorhandene normalisierte Form des Wortes (z. B. Lemma) ist, die im Wörterbuch zu finden ist, während das Stemming lediglich allgemeine Suffixe am Ende von Worttoken entfernt.7

Da die Lemmatization darauf abzielt, die Grundformen des Wörterbuchs auszugeben, erfordert sie eine robustere morphologische Analyse als das Stemming. Das Part-of-Speech-Tagging (POS) ist ein entscheidender Schritt bei der Lemmatisierung. POS weist im Wesentlichen jedes Wort-Tag zu, das seine syntaktische Funktion im Satz bezeichnet. Das Python NLTK liefert eine Funktion für den Word-Net-Lemmatisierungsalgorithmus, mit dem wir die Hamlet Passage lemmatisieren können:

from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet
from nltk import word_tokenize, pos_tag
 
def get_wordnet_pos(tag):
    if tag.startswith('J'):
        return wordnet.ADJ
    elif tag.startswith('V'):
        return wordnet.VERB
    elif tag.startswith('N'):
        return wordnet.NOUN
    elif tag.startswith('R'):
        return wordnet.ADV
    else:         
        return wordnet.NOUN
       
def lemmatize_passage(text):
    words = word_tokenize(text)
    pos_tags = pos_tag(words)
    lemmatizer = WordNetLemmatizer()
    lemmatized_words = [lemmatizer.lemmatize(word, get_wordnet_pos(tag)) for word, tag in pos_tags]
    lemmatized_sentence = ' '.join(lemmatized_words)
    return lemmatized_sentence
 
text = "There is nothing either good or bad but thinking makes it so."
result = lemmatize_passage(text)
 
print("Original:", text)
print("Tokenized:", word_tokenize(text))
print("Lemmatized:", result)

Der Code gibt Folgendes zurück:

Original: There is nothing either good or bad but thinking makes it so.
Tokenized: ['There', 'is', 'nothing', 'either', 'good', 'or', 'bad', 'but', 'thinking', 'makes', 'it', 'so', '.']
Lemmatized: There be nothing either good or bad but think make it so .

Der WordNetLemmatizer reduziert, ähnlich wie der Snowball-Stemmer, Verbkonjugationen auf Basisformen – zum Beispiel Denken zu denken, Machen zu machen. Im Gegensatz zum Snowball-Stemming-Algorithmus identifiziert der Lemmatizer jedoch nichts als Substantiv und lässt seine Endung -ing unverändert, während sie is weiter in seine Grundform be ändert. Auf diese Weise fügt der Lemmatizer unregelmäßige Verbformen besser zusammen.

Mixture of Experts | 12. Dezember, Folge 85

KI entschlüsseln: Wöchentlicher Nachrichtenüberblick

Schließen Sie sich unserer erstklassigen Expertenrunde aus Ingenieuren, Forschern, Produktführern und anderen an, die sich durch das KI-Rauschen kämpfen, um Ihnen die neuesten KI-Nachrichten und Erkenntnisse zu liefern.

Begrenzungen

Stemming und Lemmatization unterstützen in erster Linie die Normalisierung englischsprachiger Textdaten. Beide Textnormalisierungstechniken unterstützen auch mehrere andere romanische Schriftsprachen wie Französisch, Deutsch und Spanisch. Andere Schriften, wie etwa Russisch, werden zusätzlich durch den Snowball-Stemmer unterstützt. Die Entwicklung von Stemming und Lemmatization Algorithmen für andere Sprachen, insbesondere Arabisch, ist ein aktuelles und laufendes Forschungsgebiet. Das Arabische ist unter anderem aufgrund seiner agglutinierenden Morphologie, seiner orthographischen Variationen und seiner lexikalischen Mehrdeutigkeit eine besondere Herausforderung.8 Insgesamt stellen solche Elemente eine systematische Methode zur Identifizierung von Basiswortformen unter morphologischen Varianten problematisch dar, zumindest im Vergleich zu englischen Wörtern.

Über diese generelle Begrenzung hinaus haben Stemming und Lemmatisierung ihre jeweiligen Nachteile. Wie das Hamlet-Beispiel zeigt, ist das Stemming ein relativ heuristischer, regelbasierter Prozess der Entfernung von Zeichenketten. Über- und Unterbelegung sind zwei häufig auftretende Fehler. Ersteres liegt vor, wenn zwei semantisch unterschiedliche Wörter auf dieselbe Wurzel reduziert werden (z. B. news auf new). Under-Stemmming liegt vor, wenn zwei Wörter, die semantisch miteinander verwandt sind, nicht auf dieselbe Wurzel reduziert werden (z. B. knavish und knave zu knavish bzw. knave ).9 Darüber hinaus entfernt das Stemming nur Suffixe aus Wörtern und kann daher unregelmäßige Verbformen oder Präfixe nicht berücksichtigen, wie dies bei der Lemmatisierung der Fall ist. Natürlich ist das Stemming relativ einfach und unkompliziert zu implementieren, während die Lemmatisierung je nach Größe der verarbeiteten Daten rechen- und zeitaufwändiger sein kann.

Weitere Lösungen
IBM® watsonx™ Orchestrate®

Mit IBM® watsonx Orchestrate können Sie ganz einfach skalierbare KI-Assistenten und Agenten entwickeln, sich wiederholende Aufgaben automatisieren und komplexe Prozesse vereinfachen.

Entdecken Sie watsonx Orchestrate
Tools und APIs zur Verarbeitung natürlicher Sprache

Steigern Sie den Geschäftswert der künstlichen Intelligenz mit einem leistungsstarken und flexiblen Portfolio aus Bibliotheken, Diensten und Anwendungen.

NLP-Lösungen erkunden
KI-Beratung und -Services

Erfinden Sie kritische Workflows und Abläufe neu, indem Sie KI einsetzen, um Erfahrungen, Entscheidungsfindung in Echtzeit und den geschäftlichen Nutzen zu maximieren.

KI-Services entdecken
Machen Sie den nächsten Schritt

Mit IBM® watsonx Orchestrate können Sie ganz einfach skalierbare KI-Assistenten und Agenten entwickeln, sich wiederholende Aufgaben automatisieren und komplexe Prozesse vereinfachen.

Entdecken Sie watsonx Orchestrate NLP-Lösungen erkunden