~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * * Regeln zum Porter-Stemmer für das Deutsche * * * Legende: V = Vokal K = Konsonant STL = Stammlänge END = Endung R1 = Das Teilwort hinter der ersten VK-Folge; vor R1 müssen mind. 3 Buchstaben stehen. R2 = Das Teilwort im R1 hinter der ersten VK-Folge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I. VORBEREITUNG: stem(wort) V = 'aeiouyäüö' K = 'bcdfghjklmnpqrstvwxzßUY' 1. Wenn Wort in der Stoppwortliste => AUSGABE 2. Das Wort wird in Kleinbuchstaben umgewandelt. 3. Jedes 'ß' im Wort wird durch 'ss' ersetzt. 4. Für jede [Vokal+'u'+Vokal]-Folge im Wort: VuV > VUV 5. Für jede [Vokal+'y'+Vokal]-Folge im Wort: VyV > VYV ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ II. BEARBEITUNG: stem(wort) - es wird immer die längere Endung gesucht (wenn ... --> dann Entfernung von ...) 1. END in R1 --> 'e'/'em'/'en'/'ern'/'er'/'es' oder END in R1 + 'bdfghklmnrt' vor dem 's' --> 's' 2. END in R1 --> 'est'/'er'/'en' oder STL ab 4 + END in R1 + 'bdfghklmnt' vor dem 'st' --> 'st' 3a. STL ab 4 + END in R2 + vor END kein 'e' --> 'igend'/'igung' oder STL ab 4 + END in R2 --> 'end'/'ung' 3b. STL ab 4 + END in R2 + vor END kein 'e' --> 'ig'/'ik'/'isch' 3c. END in R1 --> 'erlich'/'enlich'/'erheit'/'enheit' oder STL ab 4 + END in R2 --> 'lich'/'heit' 3d. STL ab 4 + END in R2 --> 'lichkeit'/'igkeit' oder STL ab 4 + END in R2 --> 'keit' ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ III. NACHBEREITUNG: end_stemming(wort) 1. 'ä' > 'a' 2. 'ö' > 'o' 3. 'ü' > 'u' => AUSGABE 4. 'U' > 'u' 5. 'Y' > 'y'