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.