Mein IBM Anmelden Abonnieren

Was ist Stemming?

29. November 2023

Autoren

Jacob Murel Ph.D.

Senior Technical Content Creator

Eda Kavlakoglu

Program Manager

Stemming ist eine von mehreren Techniken zur Textnormalisierung, die Rohtextdaten in ein lesbares Format für Aufgaben der natürlichen Sprachverarbeitung umwandelt.

Stemming ist eine Technik zur Textvorverarbeitung in der Verarbeitung natürlicher Sprache (NLP). Insbesondere handelt es sich um den Prozess der Reduzierung der flektierten Form eines Wortes auf einen sogenannten „Stamm“ oder eine Wurzelform, in der Linguistik auch als „Lemma“ bekannt.1 Es ist eine von zwei Hauptmethoden – die andere ist die Lemmatization –, die Flexionsvarianten innerhalb eines Textdatensatzes auf ein morphologisches Lexem reduziert. Dabei zielt Stemming darauf ab, die Textverarbeitung in Systemen für maschinelles Lernen und Informationsabruf zu verbessern.

Warum Stemming verwenden?

Maschinen, von Such- und Suchfunktionen bis hin zu Deep-Learning-Modellen, verarbeiten Sprache weitgehend formbasiert, und viele Forscher argumentieren, dass Computer die Bedeutung von Sprache nicht verstehen können.2 Während dieser letzte Punkt diskutiert wird, ist es dennoch so, dass Modelle des maschinellen Lernens trainiert werden müssen, um verschiedene Wörter als morphologische Varianten eines Grundwortes zu erkennen. Beispielsweise können Benutzer in Suchmaschinen oder Bibliothekskatalogen eine Abfrage mit einem Wort (z. B. Investieren) einreichen, erwarten jedoch Ergebnisse, die jede gebeugte Wortform verwenden (z. B. investieren, Investition, Investitionen usw.). Durch die Reduzierung von abgeleiteten Wortformen auf ein Stammwort hilft die Wortstammerkennung Informationsabfragesystemen, morphologisch verwandte Wörter gleichzusetzen.3

Bei vielen Text-Mining-Aufgaben, einschließlich Textklassifizierung, Clustering, Indexierung und mehr, trägt das Stemming zur Verbesserung der Genauigkeit bei, indem es die Dimensionalität von Algorithmen für maschinelles Lernen verringert und Wörter nach Konzepten gruppiert. Durch die Reduzierung der Dimensionalität des Algorithmus kann die Genauigkeit und Präzision statistischer NLP-Modelle, wie z. B. Themenmodelle und Worteinbettungen, verbessert werden.4 Durch Stemming erhöht sich die Genauigkeit bei der Ausführung verschiedener NLP-Aufgaben, wie z. B. der Stimmungsanalyse bei der Wortartenbestimmung. Auf diese Weise dient das Stemming als wichtiger Schritt bei der Entwicklung großer Sprachmodelle.

3D-Design aus Kugeln, die auf einer Schiene rollen

Die neuesten Erkenntnisse und Insights zu KI

Entdecken Sie von Experten kuratierte Erkenntnisse und Neuigkeiten zu KI, Cloud und mehr im wöchentlichen Newsletter Think. 

So funktioniert Stemming

Das Stemming ist eine Stufe in einer Text-Mining -Pipeline, die Rohtextdaten in ein strukturiertes Format für die maschinelle Verarbeitung umwandelt. Stemming entfernt im Wesentlichen Affixe von Wörtern und lässt nur die Grundform übrig.5 Dies läuft darauf hinaus, Zeichen vom Ende der Wort-Token zu entfernen. Abgesehen von dieser grundlegenden Ähnlichkeit unterscheiden sich die Algorithmen jedoch stark.

Mixture of Experts | Podcast

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.

Arten von Stemming-Algorithmen

Um die Unterschiede zwischen den Operationen der Stammalgorithmen zu untersuchen, können wir diese Zeile aus Shakespeares „Ein Sommernachtstraum“ verarbeiten: „Die Liebe sieht nicht mit den Augen, sondern mit dem Verstand, und darum ist der geflügelte Amor blind gemalt.“ Vor dem Stemming müssen Benutzer die Rohtextdaten tokenisieren. Der in Python Natural Language Toolkit (NLTK) integrierte Tokenizer gibt den zitierten Text wie folgt aus:

Tokenisiert: ['Love', 'looks', 'not', 'with', 'the', 'eyes', 'but', 'with', 'the', 'mind', ',', 'and', 'therefore', 'is', 'winged', 'Cupid', 'painted', 'blind', '.']

Indem wir die tokenisierte Ausgabe durch mehrere Stemmer laufen lassen, können wir beobachten, wie sich die Stemming-Algorithmen unterscheiden.

Lovins-Stemmer

Der Lovins-Stemmer ist der erste veröffentlichte Stemming-Algorithmus. Im Wesentlichen funktioniert es wie eine stark parametrisierte Such- und Ersetzungsfunktion. Es vergleicht jedes Eingabetoken mit einer Liste gängiger Suffixe, wobei jedes Suffix durch eine von 29 Regeln bedingt ist. Wenn eines der Suffixe der Liste in einem Token gefunden wird und das Entfernen des Suffixes keine der zugehörigen Suffixbedingungen verletzt, entfernt der Algorithmus dieses Suffix aus dem Token. Der gestemmte Token wird dann durch einen weiteren Regelsatz geführt, der häufige Fehlbildungen in gestemmten Wurzeln korrigiert, wie z. B. doppelte Buchstaben (z. B. wird aus hopping hopp und dann hop).6

 Dieser Code verwendet die Python-Stemming-Bibliothek7, um das tokenisierte Shakespeare-Zitat zu stemmen: 

from stemming.lovins import stem
from nltk.tokenize import word_tokenize
text = „Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind.“
words = word_tokenize(text)
stemmed_words = [stem(word) for word in words]

Die Code-Ausgaben:

Nach dem Stemming: ['Lov', 'look', 'not', 'with', 'th', 'ey', 'but', 'with', 'th', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'Cupid', 'paint', 'blind', '.']

Die Ausgabe zeigt, wie das Lovins-Stemming Konjugationen und Zeitformen korrekt in Grundformen umwandelt (z. B. wird aus painted paint), während die Pluralisierung eliminiert wird (z. B. wird eyes zu eye). Aber der Lovins-Stemming-Algorithmus gibt auch eine Reihe von schlecht geformten Stämmen zurück, wie z. B. lov, th und ey. Diese falsch gebildeten Wortstämme entstehen, wenn zu viele Zeichen entfernt werden. Wie so oft beim maschinellen Lernen helfen solche Fehler dabei, zugrunde liegende Prozesse aufzudecken.

Vergleicht man dies mit der Suffixliste von Lovins, so ist das einzelne Zeichen -e das längste Suffix, das sowohl zu love als auch zu the passt. Die einzige Bedingung, die an dieses Suffix geknüpft ist, lautet „Keine Einschränkungen beim Stemming“, was bedeutet, dass der Stemmer -e unabhängig von der Länge des verbleibenden Wortstamms entfernen kann. Leider enthält keiner der Stämme lov oder th eines der Merkmale, die der Lovins-Algorithmus verwendet, um falsch formatierte Wörter wie Doppelbuchstaben oder unregelmäßige Pluralformen zu identifizieren.8

Wenn solche falsch gebildeten Wortstämme dem Algorithmus entgehen, kann der Lovins-Stemmer semantisch nicht verwandte Wörter auf denselben Wortstamm reduzieren – zum Beispiel werden the, these und this alle auf th reduziert. Natürlich sind diese drei Wörter alles Demonstrativpronomen und haben daher eine gemeinsame grammatikalische Funktion. Aber andere Demonstrativpronomen wie that und those lassen sich nicht auf th reduzieren. Das bedeutet, dass die von Lovins generierten Stämme Wortgruppen nicht richtig darstellen.

Porter-Stemmer

Im Vergleich zum Lovins-Stemming verwendet der Porter-Stemming-Algorithmus einen mathematischeren Stemming-Algorithmus. Im Wesentlichen klassifiziert dieser Stemmer jedes Zeichen in einem bestimmten Token entweder als Konsonant (c) oder Vokal (v) und gruppiert nachfolgende Konsonanten als C und nachfolgende Vokale als V. Der Stemmer stellt somit jedes Wortzeichen als eine Kombination aus Konsonanten- und Vokalgruppen dar. Nach dieser Aufzählung durchläuft der Stemmer jedes Wort-Token eine Liste von Regeln, die die zu entfernenden Endzeichen entsprechend der Anzahl der Vokal-Konsonant-Gruppen in einem Token angeben.9 Da Englisch selbst allgemeinen, aber nicht absoluten lexikalischen Regeln folgt, kann das systematische Kriterium des Porter-Stemmer-Algorithmus zur Bestimmung der Suffixentfernung zu Fehlern führen.

Python NLTK enthält eine integrierte Porter-Stemmer-Funktion. Dieser Code wendet den Porter-Stemmer-Algorithmus auf das tokenisierte Shakespeare-Zitat an:

from nltk.stem import PorterStemmer
from nltk.tokenize import word_tokenize
porter_stemmer = PorterStemmer()
text = „Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind“
words = word_tokenize(text)
stemmed_words = [porter_stemmer.stem(word) for word in words]

Dieser Code gibt Folgendes zurück:

Stemmed: ['love', 'look', 'not', 'with', 'the', 'eye', 'but', 'with', 'the', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'cupid', 'paint', 'blind', '.']

Wie bei Lovins ändert Porter korrekt die Verbkonjugationen und die Pluralisierung von Substantiven. Obwohl die anderen missgebildeten Stämme von Lovins fehlen (z. B. Love to lov), entfernt der Porter-Stemming-Algorithmus dennoch fälschlicherweise -e vom Ende von therefore.

Gemäß der Porter-Stemmer-Methode zur Konsonant-Vokal-Gruppierung wird daher als CVCVCVCV oder C(VC)3V dargestellt, wobei der Exponent die Wiederholungen von Konsonant-Vokal-Gruppen angibt.

Einer der letzten Schritte des Algorithmus besagt, dass, wenn ein Wort keiner Wortstammerkennung unterzogen wurde und einen Exponentenwert von mehr als 1 hat, -e aus der Wortendung entfernt wird (falls vorhanden). Der Exponentenwert von therefore ist gleich 3 und enthält keines der in den anderen Bedingungen des Algorithmus aufgeführten Suffixe.10 So wird therefore zu therefor.

Zugegeben, dies ist der einzige Fehler des Porter-Stemmers, was vielleicht erklärt, warum es der am weitesten verbreitete Stemmer-Algorithmus ist. In der Tat diente der Porter-Stemmer als Grundlage für nachfolgende Stemming-Algorithmen.

Snowball-Stemmer

Der Snowball-Stemmer ist eine aktualisierte Version des Porter-Stemmers. Obwohl das Ziel darin besteht, einen robusteren Satz von Regeln für die Entscheidung über die Entfernung von Suffixen durchzusetzen, bleibt er dennoch anfällig für viele der gleichen Fehler. Ähnlich wie der Porter-Stemmer enthält Python NLTK eine integrierte Snowball-Stemmerfunktion:

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

stemmer = SnowballStemmer("english", True)
text = „Es gibt nichts Gutes oder Schlechtes, aber das Denken macht es dazu“
words = word_tokenize(text)
stemmed_words = [stemmer.stem(word) for word in words]

Das Ergebnis ist dasselbe wie beim Porter-Stemmer, der therefore fälschlicherweise auf therefor reduziert:

Stemmed: ['love', 'look', 'not', 'with', 'the', 'eye', 'but', 'with', 'the', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'cupid', 'paint', 'blind', '.']

Der Snowball-Stemmer unterscheidet sich vom Porter-Stemmer in zwei wesentlichen Punkten. Erstens: Während die Stemmer von Lovins und Porter nur die Wortstammfolge englischer Wörter ermitteln, kann der Stemmer von Snowball die Wortstammfolge von Texten in einer Reihe anderer romanischer Sprachen ermitteln, wie z. B. Niederländisch, Deutsch, Französisch und sogar Russisch. Zweitens kann der Snowball-Stemmer, wenn er über die Python NLTK-Bibliothek implementiert wird, Stoppwörter ignorieren. Stoppwörter sind eine nicht universelle Sammlung von Wörtern, die während der Vorverarbeitung aus einem Datensatz entfernt werden. Die vordefinierte Stoppliste des Snowball-Stemmer enthält Wörter ohne direkte begriffliche Definition, die eher eine grammatikalische als eine semantische Funktion haben. Zu den Stoppwörtern, die in der englischen Stoppliste für Snowball-Stemmer enthalten sind, gehören the, a, being und ähnliche.11

Lancaster-Stemmer

Viele Quellen beschreiben den Lancaster-Stemmer – auch bekannt als der Paice-Stemmer – als den aggressivsten Stemmer der englischen Sprache. Der Lancaster-Stemmer enthält eine Liste mit über 100 Regeln, die vorschreiben, welche Endzeichenfolgen, falls vorhanden, durch andere Zeichenfolgen ersetzt werden sollen, falls vorhanden. Der Stemmer durchläuft jedes Wort-Token und prüft es auf alle Regeln. Wenn die Endzeichenfolge des Tokens mit der einer Regel übereinstimmt, führt der Algorithmus den für die Regel beschriebenen Vorgang aus und lässt das neue, transformierte Wort erneut alle Regeln durchlaufen. Der Stemmer durchläuft alle Regeln, bis ein bestimmtes Token sie alle erfüllt, ohne transformiert zu werden.12

Obwohl in Python NLTK nicht verfügbar, ist der Lancaster-Stemmer in der Stemming-Bibliothek verfügbar:13

from stemming.paicehusk import stem
from nltk.tokenize import word_tokenize
text = „Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind.“
words = word_tokenize(text)
stemmed_words = [stem(word) for word in words]

Der Code gibt die tokenisierte Shakespeare-Passage wie folgt aus:

Stemmed: ['Lov', 'look', 'not', 'with', 'the', 'ey', 'but', 'with', 'the', ' mind', ',', 'and' , 'theref', '), 'wing', 'Cupid', 'paint', 'blind', '.']

Der iterative Ansatz des Lancaster Stemmers ist eindeutig der aggressivste unter den Stemmern, wie mit theref gezeigt wird. Erstens hat der Stemmer von Lancaster die Regel „e1>“. Diese Regel entfernt das einzelne Zeichen­-e ersatzlos. Nachdem der Algorithmus -e von therefore entfernt hat, führt er das neue therefor für jede Regel aus. Das neu transformierte Wort entspricht der Regel „ro2>“. Mit dieser Regel wird das aus zwei Zeichen bestehende Suffix entfernt –or ohne Ersatz. Der resultierende Stamm theref passt zu keiner der anderen Regeln des Algorithmus und wird daher als gestemmte Grundform zurückgegeben. Im Gegensatz zu Lovins hat der Lancaster-Algorithmus keine Möglichkeit, falsch geschriebene Wörter zu berücksichtigen.

Grenzen des Stemming

Sprachunterstützung

Es gibt viele englische Wortstammerkennungen sowie Wortstammerkennungen für andere Sprachen mit lateinischer Schrift. In jüngerer Zeit hat sich die Forschung der Entwicklung und Bewertung von Stemming-Algorithmen für nicht-römische Schriftsprachen zugewandt. Insbesondere Arabisch kann aufgrund seiner komplexen Morphologie und orthographischen Variationen eine Herausforderung darstellen. Eine Handvoll Studien vergleichen die Effizienz verschiedener arabischer Stemmer in Bezug auf Aufgaben wie die Klassifikation.14 Außerdem untersuchen Forscher die Genauigkeit von Stemming bei der Verbesserung von Aufgaben zum Informationsabruf in Tamil15 und Sanskrit.16

Über- und Unterstemming

Obwohl Forschungsergebnisse die Rolle des Stemming bei der Verbesserung der Genauigkeit von NLP-Aufgaben belegen, gibt es beim Stemming zwei Hauptprobleme, auf die Benutzer achten müssen. Überstemming liegt vor, wenn zwei semantisch unterschiedliche Wörter auf dieselbe Wurzel reduziert und somit zusammengelegt werden. Unterstemming bedeutet, dass zwei semantisch verwandte Wörter nicht auf dieselbe Wurzel reduziert werden.17 Ein Beispiel für Überstemming ist die Reduktion von wander auf wand durch den Lancaster-Stemmer, zwei semantisch unterschiedliche Begriffe im Englischen. Sowohl der Porter- als auch der Lovins-Stemmer verändern wander jedoch überhaupt nicht. Ein Beispiel für ein Unterstemming ist die Nicht-Reduktion des Porter-Stemmers von knavish zu knavish und knave zu knave, die beide denselben semantischen Ursprung haben. Im Vergleich dazu reduziert der Lovins-Stemmer beide Wörter auf knav.

Grundformbildung

Obwohl sie ähnliche Verwendungszwecke und Ziele haben, unterscheiden sich Stemming und Lemmatisierung in kleinen, aber entscheidenden Punkten. In der Literatur wird das Stemming oft als heuristischer beschrieben, bei dem im Wesentlichen häufige Suffixe von Wörtern entfernt werden, um ein Stammwort zu erzeugen. Im Gegensatz wird bei der Lemmatisierung eine detailliertere morphologische Analyse verschiedener Wörter durchgeführt, um eine Wörterbuch-Grundform zu bestimmen, wobei nicht nur Suffixe, sondern auch Präfixe entfernt werden. Obwohl das Stemming schneller und einfacher umzusetzen ist, bevorzugen viele Entwickler von Deep-Learning-Tools aufgrund des differenzierteren Stripping-Prozesses möglicherweise die Lemmatisierung.

Weitere Lösungen

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
Fußnoten

1 Ruslan Mitkov, Oxford Handbook of Computational Linguistics, 2. Auflage, Oxford University Press, 2014.

2 Emily Bender and Alexander Koller, „Climbing towards NLU: On Meaning, Form, and Understanding in the Age of Data,” Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, 2020 , S. 5185-5198 , https://aclanthology.org/2020.acl-main.463

3 Steven Bird, Ewan Klein und Edward Loper, Natural Language Processing with Python, O’Reilley, 2009.

4 Gary Miner, Dursun Delen, John Elder undrew Fast, Thomas Hill und Robert A. Nisbet, Practical Text Mining and Statistical Analysis for Non-Structured Text Data Applications, Academic Press, 2012.

5 Christopher Manning and Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 1999.

6 Julie Beth Lovins, „Development of a stemming algorithm“, Mechanical Translation and Computational Linguistics, Band 11, Nos. 1 und 2, 1968, S. 22–31, https://aclanthology.org/www.mt-archive.info/MT-1968-Lovins.pdf

7, 13 https://pypi.org/project/stemming/1.0

8 Julie Beth Lovins, „Development of a stemming algorithm“, Mechanical Translation and Computational Linguistics, Band 11, Nr. 1 und 2, 1968, S. 22–31, https://aclanthology.org/www.mt-archive.info/MT-1968-Lovins.pdf

9 Martin Porter, „Ein Algorithmus zum Entfernen von Suffixen“, Programm: Elektronische Bibliotheks- und Informationssysteme, Bd. 14, Nr. 3, 1980, S. 130–137, https://www.emerald.com/insight/content/doi/10.1108/eb046814/full/html 

10 Martin Porter, „An algorithm for suffix stripping”, Program: electronic library and information systems, Band 14, Nr. 3, 1980, S. 130-137, h ttps://www.emerald.com/insight/content/doi/10.1108/eb046814/full/html 

11 Martin Porter, „Snowball: A language for stemming algorithms“, 2001, https://snowballstem.org/texts/introduction.html

12 Chris Paice, „Another stemmer“, ACM SIGIR Forum, Band 24, Nr. 3, 1990, S. 56–61, https://dl.acm.org/doi/10.1145/101306.101310

14 Y. A. Alhaj, J. Xiang, D. Zhao, M. A. A. Al-Qaness, M. Abd Elaziz und A. Dahou, „A Study of the Effects of Stemming Strategies on Arabic Document Classification“, IEEE Access, Band 7, S. 32664–32671, https://ieeexplore.ieee.org/document/8664087. Janneke van der Zwaan, Maksim Abdul Latif, Dafne van Kuppevelt, Melle Lyklema, Christian Lange, „Are you sure your tool does what it is supposed to do? Validating Arabic root extraction“, Digital Scholarship in the Humanities, Band 36, 2021, S. 137–150, https://academic.oup.com/dsh/article/36/Supplement_1/i137/5545478

15 Ratnavel Rajalakshmi, Srivarshan Selvaraj, Faerie Mattins, Pavitra Vasudevan, Anand Kumar, "HOTTEST: Hate and Offensive content identification in Tamil using Transformers and Enhanced Stemming," Computer Speech & Language, Band 78, 2023, https://www.sciencedirect.com/science/article/abs/pii/S0885230822000870?via%3Dihub

16 Siba Sankar Sahu and Sukomal Pal, „Building a text retrieval system for the Sanskrit language: Exploring indexing, stemming, and searching issues,” Computer Speech & Language, Band 81, 2023, https://www.sciencedirect.com/science/article/abs/pii/S0885230823000372?via%3Dihub

17 Chris Paice, „Stemming,” Encyclopedia of Database Systems, Springer, 2020.