Suche verstehen
Wir helfen Ihnen dabei, die Such­anfragen Ihrer Kund*innen und Mit­ar­bei­­ter*innen zu ver­stehen und schnell re­le­vante Ergebnisse zu liefern.

Stemming bei der Verarbeitung von natürlichsprachlichen Texten

Die deutsche Sprache zeichnet sich durch ein reiches System von Wortformen aus. Die Flexion, d.h. die Beugung, von Worten findet sich in praktisch jedem Satz und muss deshalb auch bei der Verarbeitung von natürlichsprachlichen Texten berücksichtig werden. Stemming bietet sich als ein einfacher und meist kostenloser Ansatz, diese Wortformen gezielt zu behandeln. Wenn dieser Ansatz nicht ausreicht, kann die deutlich mächtigere Lemmatisierung eingesetzt werden.

Stemming zur Vereinheitlichung der Wortformen

Bei der Suche, aber auch beim Machine Learning, wird nach exakten Übereinstimmungen von Worten bzw. deren Wiederholungen gesucht. Dies führt dazu, dass z.B. „Haus“ und „Häuser“ oder „gehen“ und „ging“ nicht als Übereinstimmungen betrachtet werden, obwohl dies in vielen Fällen sinnvoll ist und bessere Ergebnisse liefert.

Beim Stemming werden Worte auf ihren Wortstamm zurückgeführt. Der Wortstamm muss dabei selbst kein eigenständiges Wort sein. So hat „Wolken“ beispielsweise den Wortstamm „Wolk“ und „Fenster“ „Fenst“.

Man könnte versuchen, dies mittels Ersetzung mit entsprechenden Wortlisten zu lösen, müsste aber schnell feststellen, dass eine sehr hohe Anzahl an Einträgen benötigt wird, um gute Ergebnisse zu erzielen. Nimmt man zusammengesetzte Worte mit in die Liste auf, steigt die Anzahl entsprechend weiter an. Daher wird versucht, dies durch einen alghoritmischen Ansatz zu lösen.

Da Stemming immer spezifisch für die jeweilige Sprache ist, werden wir uns im weiteren Verlauf ausschließlich auf die Implementierungen für Deutsch beziehen.

Grundsätzlich gelten die Aussagen auch für andere Sprachen, allerdings gibt es dabei u.U. andere Implementierungen und andere Spezialfälle.

Implementierungen

Apache Solr bietet 4 verschiedene Implementierung für das Stemming von deutschen Worten an:

  • SnowballPorterFilterFactory
  • GermanStemFilterFactory
  • GermanLightStemFilterFactory
  • GermanMinimalStemFilterFactory

Wie bei den meisten natürlichen Sprachen gibt es auch im Deutschen Unregelmäßigkeiten und Ausnahmen, die für einen algorithmischen Ansatz problematisch sein können.

Zu diesem Zweck können bei SnowballPorter eine Liste an Worten übergeben werden, die unverändert bleiben sollen.

Unabhängig davon lassen alle o.g. Implementierung Tokens, die als Keyword gekennzeichnet sind, unverändert.

In Solr werden die produzierten Wortstämme nur während der Suche verwendet und sind deshalb im Suchergebnis nicht direkt sichtbar. Allerdings unterscheiden sich die Implementierungen darin, welche Wortstämme welchen Worten zugeordnet werden und damit letztendlich welche Suchtreffer ermittelt werden.

Konkrete Beispiele

WortSnowballPorterGermanStemGermanLightStemGermanMinimalStem
TischTisch tisch Tisch Tisch
TischeTischtischTischTisch
TischlerTischltischlTischlTischl
MutterMuttmuttMuttMutt
MütterMuttmuttMüttMütt
BruderBrudbrudBrudBrud
BrüdernBrudbrudBrüdBrüder
TuchTuchtuchTuchTuch
TüchertuchtuchTüchTüch
TaschentuchTaschentuchtaschentuchTaschentuchTaschentuch
TaschentücherTaschentuchtaschentuchTaschentüchTaschentüch
TaschentüchernTaschentuchtaschentuchTaschentüchTaschentücher
schnellschnellschnellschnellschnell
schnellerschnellschnellschnellschnell
schnellstenschnellschnellstschnellschnellst
schnellsterschnellschnellstschnellschnellst
großgrossgrossgroßgroß
größergrossgrossgrößgröß
größtengrosstgrossgrößtgrößt
größtergrosstgrossgrößtgrößt

Wie leicht zu sehen ist, liefern die unterschiedlichen Implementierungen unterschiedliche Wortstämme. Man unterschiedet sie nach “Aggressivität”, was sich darin ausdrückt, wann welche Endungen entfernt werden.

Gut erkennbar ist dies beim Wort “Taschentüchern”: Die am wenigsten aggressive Implementierung GermanMinimalStem entfernt lediglich das “n”, während die anderen zusätzlich auch das “er” entfernen.

GermanLightStem und GermanMinimalStem behalten den Umlaut noch bei, während die beiden anderen Implementierungen den Umlaut ersetzen.

Das Beispiel „schnellsten“ zeigt aber auch, dass die aggressivere Implementierung nicht immer mehr Endungen entfernt.

Probleme und Beschränkungen

Konjugationen von unregelmäßigen Verben werden durch Stemmer im Allgemeinen schlecht abgebildet:

WortSnowballPorterGermanStemGermanLightStemGermanMinimalStem
gehengehgehgehgehe
gehegehgehgehgehe
gehstgehstgehstgehgehst
gehtgehtgehgehtgeht
ginggingginggingging
gingstginggingstginggingst
gegangengeganggeganggeganggegang
sehensehsehsehsehe
sehesehsehsehsehe
siehstsiehsiehstsiehsiehst
siehtsiehtsiehsiehtsieht
sahsahsahsahsah
sahstsahstsahstsahsahst
gesehengesehgesehgesehgeseh

Dies liegt z.B. an der Änderung des Vokals (Ablaut), der durch einen algorithmischen Ansatz kaum korrekt behandelt werden kann:

biegen  –  gebogen
saugen  –  gesogen
helfen  –  geholfen
schwimmen  –  geschwommen
lügen  –  gelogen

Ohne zusätzliche Informationen kann der ursprüngliche Vokal nicht ermittelt werden und bleibt somit erhalten.

Fazit

Stemming ist ein einfacher und effizienter Weg, mehrere zusammengehörige Worte als Variationen eines Wortes zu behandeln, indem sie auf den gleichen Wortstamm abgebildet werden. Vor allem bei Substantiven werden die verschiedenen Formen gut erkannt und behandelt.

Beim Einsatz in der Suche kann so die Treffermenge vergrößert werden, was einen positiven Einfluß auf die empfundene Suchqualität hat. Aber auch für andere Anwendungen, in denen natürlichsprachliche Texte verarbeitet werden, wie z.B. Machine Learning, kann Stemming die Ergebnisse verbessern.

Durch die Ausnahmen und Unregelmäßigkeiten der natürlichen Sprache sind rein algorithmische Ansätze aber immer Kompromisse. Für eine möglichst große Anzahl an Fällen liefern sie ein korrektes Ergebnis, produzieren jedoch in manchen Fällen fehlerhafte Ergebnisse. Die ermittelten Wortstämme sind häufig auch nicht geeignet, um sie direkt einem Endbenutzer anzuzeigen, weil sie teilweise keine eigenständigen Worte sind.

Als Alternative bietet sich das aufwändigere Lemmatisieren an. Dabei wird einem Wort nicht sein Wortstamm sondern seine Grundformen, das sogenannte Lemma, zugeordnet. Solche Lemmatizer setzen auf einen umfangreichen Wortschatz, mit dem sie die Schwächen von Stemmern vermeiden und so z.B. auch unregelmäßige Verben korrekt verarbeiten können.