STEMMING ALGORITHMS

Vorgetragen am 21.05.2001 von Adela Filzmayer-Margetic im Rahmen des Referats
"Computerlinguistische Methoden in der Textrepräsentation"



EINFÜHRUNG

TYPEN VON STEMMING ALGORITHMEN
  1. Table Lookup
  2. Successor Variety
  3. n-gramm Stemmers
  4. Affix Removal Stemmers
EVALUIERUNG


EINFÜHRUNG

Um die Suche nach relevanten Informationen zu verbessern, muss man Möglichkeiten finden, wie man unterschiedliche morphologische Varianten eines Suchbegriffs findet. Es liegt nahe, dass jemand, der an Dokumenten interessiert ist, die das Wort "engeneer" enthalten, wahrscheinlich auch solche Dokumente interessant finden wird, in denen die Wörter "engeneering" oder "engeneered" vorkommen. Dies kann man unter Anderem durch Konflation von Wörtern erreichen.

Unter der Konflation versteht man Kürzen, Kombinieren oder auch Zusammenfügen von Wörtern (Buchstabenfolgen!) und/oder "Wortelementen", um unterschiedliche morphologische Varianten eines Wortes zu matchen. Die Konflation kann auf zweierlei Weisen vorgenommen werden: manuell, indem man die regulären Ausdrücke benutzt, oder automatisch, mit Hilfe von geeigneten Programmen, sogenannten Stemmern.

Es liegt nahe, dass, außer dass durch das Stemming die Suche nach relevanten Dokumenten verbessert wird, als ein positives Begleiteffekt die Index-Dateien reduziert werden können, da in der Regel mehrere vollständige Terme ein und dasselbe Stem haben. Einigen Berichten zufolge werden die Index-Dateien manchmal um bis über 50% reduziert.

Stemming von Termen kann man entweder während der Indexierung, oder während der Suche vornehmen. Beide Ansätze haben sowohl ihre Vorteile als auch ihre Nachteile. Ein wichtiger Vorteil des Stemming während der Indexierung ist einerseits die Effizienz des Verfahrens - die Terme müssen dann nicht mehr während der Suche gestemmt werden - und andererseits eine Komprimierung der Index-Datei (was man beim Stemming während der Suche nicht hat!). Der Nachteil ist, dass die Information über den vollständigen Begriff verlorengeht, oder man braucht zusätzlichen Speicherplatz, wo sowohl der Begriff selbst als auch das entsprechende Stem gespeichert werden. Unter diesem Aspekt wäre das Stemming während der Suche geeigneter.

Nach der Methode der Konflation können Algorithmen bzw. Stemmer in mehrere Gruppen eingeteilt werden:

  1. Affix removal algorithms - entfernen die Präfixe und/oder die Suffixe und hinterlassen ein - manchmal auch etwas transformiertes - Stem.
  2. Successor variety stemmer - verwenden als Basis für Stemming Frequenzen von Buchstabensequenzen im Text.
  3. Stemmer nach der n-gramm Methode - konflatieren die Terme aufgrund ihrer gemeinsamen Digrammen oder n-grammen.
  4. Table lookup stemmer - die Terme und ihre entsprechenden Stems sind alle in einer Tabelle gespeichert.

Später werden diese Gruppen auch näher vorgestellt.

Es gibt mehrere Kriterien, die bei der Beurteilung der Stemmer in Betracht gezogen werden müssen. Das sind vor Allem:





TYPEN VON STEMMING ALGORITHMEN



1. Table Lookup

Alle Indexterme und ihre Stems sind in einer Tabelle gespeichert.

Term
Stem
engineering
engineered
engineer
engineer
engineer
engineer

Das Problem bei solchen Tabellen ist einerseits ein relativ großer Pflegeaufwand,weil sie ständig aktualisiert werden müssen; andererseits brauchen solche Tabellen auch viel Speicherplatz.




2. Successor Variety (die Nachfolger-Verschiedenheit)

Diese Stemmer basieren auf den Arbeiten aus dem Bereich der strukturalen Linguistik, die versucht, Wort- und Morphemgrenzen aufgrund der Distribution der Phoneme in einem großen Korpus zu determinieren; nur arbeitet ein Stemmer statt mit Phonemen mit Buchstaben und statt mit phonologisch transkribierten Ausdrücken mit dem Korpus.

Um die Methode entwickeln zu können, haben Hafer und Weis zunächst einige Begriffe definiert:

a --> ein Wort der Länge n;
ai --> Präfix von a mit der Länge i;
D --> Korpus;
Dai --> Teilmenge von D, die diejenigen Terme enthält, dessen ersten i Buchstaben genau dem ai entsprechen;
Sai --> die Zahl der distinktiven Buchstaben, die auf der Stelle i+1 vorkommen (man betrachtet eben die Teilmenge Dai!)

Die successor variety (die Nachfolger-Verschiedenheit) eines Strings haben sie definiert als die Zahl der unterschiedlichen Buchstaben, die diesem String in den Wörtern eines Textkorpus folgen.

Beispiel:

Innerhalb des Textkorpus

able, axle, accident, ape, about

wollen wir die Nachfolger-Verschiedenheit für das Wort "apple" bestimmen:

"a" wird im Textkorpus von vier unterschiedlichen Buchstaben gefolgt --> 4
"ap" wird im Textkorpus von einem Buchstaben gefolgt --> 1 ….. usw.


In einem großen Korpus (cca. 2000 Terme) wird sich mit jedem Buchstaben, der einem "Teilstring" hinzugefügt wird, die Nachfolger-Verschiedenheit erhöhen, bis die Grenze eines Segments erreicht wird; in dem Moment fällt sie wieder stark zurück. Diese Information wird benutzt, um die Stems zu identifizieren.

Aufgrund von so gewonnenen Nachfolger-Verschiedenheiten wird das gegebene Wort segmentiert; hier gibt es wieder mehrere Methoden:

Hafer und Weis haben die obigen Methoden experimentell evaluiert; ihre Schlussfolgerung war, dass keine von ihnen perfekte Resultate liefert, aber man kann sie kombinieren. Im obigen Beispiel wäre das Wort nach beiden Methoden - also nach complete word method und peak and plateau method - in "READ" und "ABLE" segmentiert.

Danach muss ein Segment als Stem selektiert werden. Dies geschieht nach folgendem Algorithmus:

if (first segment occurs in <=12 words in corpus)
    first segment is stem
else (second segment is stem)

Zur Erklärung des Algorithmus soll hinzugefügt werden, dass Hafer und Weis eine interessante Regelmäßigkeit festgestellt haben: nämlich, wenn ein Segment in mehr als 12 Wörtern im Korpus vorkommt, dann ist es ein Präfix; andererseits sind im Englischen mehrfache Präfixe äußerst selten - daher kann man nach einem Präfix das zweite Segment als Stem nehmen.




3. n-gramm Stemmers

Diese Stemmer funktionieren nach der shared-digramm(n-gramm)-Methode; einer Methode, die Adamson und Boreham entwickelt haben. Es werden Paare von Wörtern gebildet aufgrund ihrer gmeinsamen Digrammen. Zum Beispiel: die Wörter statistics und statistical haben sechs gemeinsame Digramme):

statistics => st ta at ti is st si ic cs
unique digrams = at cs ic is st ta ti

statistical => st ta at ti is st ti ic ca al
unique digrams = al at ca ic is st ta ti

Der Ahnlichkeitsmaß S zwischen den beiden Begriffen wird berechnet nach der Formel:

S =
2C

A + B

Dabei ist:


Aus diesen Daten wird eine Ähnlichkeitsmatrix erstellt:

word1
word2
word3
...
wordn-1
word1
 
S12
S13
S1...
S1(n-1)
word2
S21
 
S23
S2...
S2(n-1)
word3
S31
S32
 
S3...
S3(n-1)
...
S...1
S...2
S...3
 
S...(n-1)
wordn
Sn1
Sn2
Sn3
Sn...
Sn(n-1)

Im Realfall werden die meisten Wörter paarweise verglichen einen Ähnlichkeitsmaß gleich null haben, also die positiven Werte in der Matrix sind zestreut.




4. Affix Removal Stemmers

Diese Stemmers entfernen das Präfix/Suffix vom Term und hinterlassen das - manchmal transformierte - Stem. Ein ganz einfaches Beispiel eines solchen Stemmer wäre folgender Algorithmus:

If a word ends in "ies" but not "eies" or "aies"
    then "ies" -> "y"
If a word ends in "es" but not "aes", "ees" or "oes"
    then "es" -> "e"
If a word ends in "s", but not "us" or "ss"
    then "s" -> NULL

Meistens werden sogenannte iterative longest match stemmers verwendet; dabei wird immer nach bestimmten Regeln die längste mögliche Sequenz entfernt, und das Verfahren wird wiederholt bis keine Charaktere mehr entfernt werden können. Manchmal ist aber das Stem am Ende nicht korrekt konflatiert. Es gibt zwei Methoden, um das zu korrigieren.

Es gibt mehrere Stemmers nach dieser Methode: Lovins (1968), Salton (1968), Dawson (1974), Porter (1980) and Paice (1990). Der wohl bekannteste ist der Porter's Stemmer, und der wird hier auch näher dargestellt.




Porter algorithm

Porter algorithm besteht aus einer Reihe von Regeln, die die Konditionen und die Aktionen bestimmen:

Die Regeln sind in Schritte eingeteilt. Die Regeln in einem Schritt werden immer reihenweise geprüft und es kann immer nur eine Regel angewendet werden; sie sind nämlich so formuliert und geordnet, dass immer das längste mögliche Suffix entfernt wird.

Im Folgenden werden der Porters Algorithm sowie die in einzelne Schritte eingeteilte Regeln dargestellt.

step1a(word);
step1b(stem);
if (the second or third rule of step 1b was used)
    step1b1(stem);
step1c(stem);
step2(stem);
step3(stem);
step4(stem);
step5a(stem);
step5b(stem).



Step 1a Rules
Conditions Suffix Replacement Examples
NULL
sses
ss
caresses --> caress
NULL
ies
i
ponies --> poni
ties --> tie
NULL
ss
ss
carress --> carress
NULL
s
NULL
cats --> cat>

Step 1b Rules
Conditions Suffix Replacement Examples
(m>0)
eed
ee
feed --> feed
agreed --> agree
(*v*)
ed
NULL
plastered --> plaster
bled --> bled
(*v*)
ing
NULL
motoring --> motor
sing --> sing

Step 1b1 Rules
Conditions Suffix Replacement Examples
NULL
at
ate
conflat(ed) --> conflate
NULL
bl
ble
troubl(ing)--> trouble
NULL
iz
ize
siz(ed) --> size
(*d and not (*<L> or *<S> or *<Z>))
NULL
single letter
hopp(ing) --> hop
tann(ed) --> tan
fall(ing) --> fall
hiss(ing) --> hiss
fizz(ing) --> fizz
(m=1 and *o)
NULL
e
fail(ing) --> fail
fil(ing) --> file

Step 1c Rules
Conditions Suffix Replacement Examples
(*v*)
y
i
happy --> happi
sky --> sky

Step 2 Rules
Conditions Suffix Replacement Examples
(m>0)
ational
ate
relational --> relate
(m>0)
tional
tion
conditional --> condition
rational --> rational
(m>0)
enci
ence
valenci --> valence
(m>0)
anci
ance
hesitanci --> hesitance
(m>0)
izer
ize
digitizer --> digitize
(m>0)
abli
able
conformabli --> conformable
(m>0)
alli
al
radicalli --> radical
(m>0)
entli
ent
differentli --> different
(m>0)
eli
e
vileli --> vile
(m>0)
ousli
ous
analogousli --> analogous
(m>0)
ization
ize
vietnamization --> vietnamize
(m>0)
ation
ate
predication --> predicate
(m>0)
ator
ate
operator --> operate
(m>0)
alism
al
feudalism --> feudal
(m>0)
iveness
ive
decisiveness --> decisive
(m>0)
fulness
ful
hopefulness --> hopeful
(m>0)
ousness
ous
callousness --> callous
(m>0)
aliti
al
formaliti --> formal
(m>0)
iviti
ive
sensitiviti --> sensitive
(m>0)
biliti
ble
sensibiliti --> sensible

Step 3 Rules
Conditions Suffix Replacement Examples
(m>0)
icate
ic
triplicate --> triplic
(m>0)
ative
NULL
formative --> form
(m>0)
alize
al
formalize --> formal
(m>0)
iciti
ic
electriciti --> electric
(m>0)
ical
ic
electrical --> electric
(m>0)
ful
NULL
hopeful --> hope
(m>0)
ness
NULL
goodness --> good

Step 4 Rules
Conditions Suffix Replacement Examples
(m>1)
al
NULL
revival --> reviv
(m>1)
ance
NULL
allowance --> allow
(m>1)
ence
NULL
inference --> infer
(m>1)
er
NULL
airliner --> airlin
(m>1)
ic
NULL
gyroscopic --> gyroscop
(m>1)
able
NULL
adjustable --> adjust
(m>1)
ible
NULL
defensible --> defens
(m>1)
ant
NULL
irritant --> irrit
(m>1)
ement
NULL
replacement --> replac
(m>1)
ment
NULL
adjustment --> adjust
(m>1)
ent
NULL
dependent --> depend
(m>1)
ion
NULL
adoption --> adopt
(m>1)
ou
NULL
homologou --> homolog
(m>1)
ism
NULL
communism --> commun
(m>1)
ate
NULL
activate --> activ
(m>1)
iti
NULL
angulariti --> angular
(m>1)
ous
NULL
homologous --> homolog
(m>1)
ive
NULL
effective --> effect
(m>1)
ize
NULL
bowdlerize --> bowdler

Step 5a Rules
Conditions Suffix Replacement Examples
(m>1)
e
NULL
probate --> probat
rate --> rate
(m=1 and not *o)
e
NULL
cease --> ceas

Step 5b Rules
Conditions Suffix Replacement Examples
(m>1 and *d and *<L>)
NULL
single letter
controll --> control
roll --> roll






EVALUIERUNG

Es wurden mehrere Studien durchgeführt, in denen versucht wurde, die einzelnen Stemmer zu beurteilen; allerdings sind die Resultate manchmal: fraglich, weil die Berichte über die statistischen Ergebnissen fehlen, oder wegen der spezifischen Eigenschaften der Korpora. Im Algemeinen konnte man keine großen Unterschiede zwischen unterschiedlichen Verfahren feststellen. Tatsache ist, dass das Stemming fast immer die Effizienz des IR mehr oder weniger verbessert.

1987 haben z.B. Walker und Jones eine Studie über das Porter's Stemmer durchgeführt. Sie haben herausgefunden, dass ein schwaches Stemming das Recall erhöht, wobei die Präzision darunter nicht leidet (wie das bei starkem Stemming der Fall ist). Daher empfehlen sie eine automatische Benutzung von schwachem Stemming; nach dem starkem Stemming sollte man greifen erst wenn das schwache keine befriedigenden Resultate ergibt.

Außerdem hängen die Resultate manchmal auch von dem Wortschatz ab: der Stemmer angewandt auf einem spezifischen und homogenen Vokabular kann die Terme anders konflatieren als bei anderen Typen vom Vokabular.




Die Rolle des Stemmings beim Komprimieren von Index-Dateien

Nach experimentellen Untersuchungen wurden die Dateien meistens, je nach dem Stemmer und nach dem Korpus, um 30-40 % komprimiert, manchmal aber auch bis über 50%. In der Realität sind aber die Platzeinsparungen doch etwas niedriger; mit der Größe einer Datei sinkt nämlich auch die tatsächliche Reduktion, so wie wenn die Datei viele Zahlen oder Eigennamen enthält, oder auch viele Tippfehler.

Andererseits steigt die Kommpressionsrate - insbesondere bei den Affix removal Stemmer - wenn die Datei viele Terme mit Suffixen enthält.







Einige interessante Links:

http://rayuela.ieec.uned.es/cgi-bin/ircourse/stem2.perl (demo/Perl - Text-Eingabe)
http://ils.unc.edu/keyes/java/porter/index.html (demo/Java - 1-Wort-Eingabe)
http://www.pitt.edu/~steffi/porter.html (demo/Perl - 1-Wort-Eingabe)
http://maya.cs.depaul.edu/~mobasher/classes/ds575/software/stem.c (implementiert in C)
http://www.sims.berkeley.edu/courses/is202/f98/Lecture15/sld022.htm (einige fehlerhafte Konflationen des Porter Stemmer)




Literatur für diesen Teil des Referats:

W. Frakes and R. Baeza-Yates, editors: Information Retrieval: Data Structures and Algorithms. Prentice-Hall, 1992. (Kapitel 8)

Adela Filzmayer-Margetic, September 2001