~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * * Regeln zum Porter-Stemmer für das Ungarische * * * Legende: V = Vokal K = Konsonant KB = Konsonantenverbindung konsD = langer K (Doppelkonsonant) konsV2 = kurzer K-Verbindung (i.r.R. 2 Buchstaben) konsV3 = langer K-Verbindung mit 3 Buchstaben konsV4 = langer K-Verbindung mit 4 Buchstaben END = Endung R1 = - Beginnt das Wort mit V -> Wortteil hinter dem ersten K - Beginnt das Wort mit K -> Wortteil hinter dem ersten V - Enthält das Wort nur V oder nur K/KB/KD -> leeres Wort ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I. VORBEREITUNG: stem(wort) V = 'aáeéiíoóöõuúüû' (õ[ő], û[ű]) K = 'bcdfghjklmnpqrstvwxyz' konsD = ['bb', 'ff', 'hh', 'jj', 'kk', 'mm', 'pp', 'rr', 'vv', 'gg', 'll', 'nn', 'tt', 'cc', 'zz', 'dd', 'ss'] KB = ['cs', 'dz', 'dzs', 'gy', 'ly', 'ny', 'ty', 'zs'] konsV2 = ['cs', 'dz', 'dzs', 'gy', 'ly', 'ny', 'sz', 'ty', 'zs'] konsV3 = ['ggy', 'lly', 'nny', 'tty', 'ccs', 'zzs', 'ddz', 'ssz'] konsV4 = ['ddzs'] 1. Wenn Stoppwortliste aktiviert + Wort in der Stoppwortliste => AUSGABE 2. Das Wort wird in Kleinbuchstaben umgewandelt. 3. Gültiges Wort: enthält mind. 1 V und 1 K. 4. Position von R1 wird angelegt. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ II. BEARBEITUNG: stem(wort) - es wird immer die längere Endung gesucht (wenn ... --> dann Entfernung von ...) (wenn ... --> dann Ersetzung von ... //> durch ...) END muss immer in R1 sein 1. CC+END in R1 --> C+'al' / C+'el' 2. END in R1 --> 'képpen'; --> 'onként', 'enként', 'anként'; --> 'képp', 'ként'; --> 'ban', 'ben', 'nak', 'nek', 'val', 'vel', 'tól', 'tõl', 'ról', 'rõl', 'ból', 'bõl', 'hoz', 'hez', 'höz', 'nál', 'nél', 'ért', 'kor'; --> 'ba', 'be', 'ra', 're', 'ig', 'at', 'et', 'ot', 'öt', 'ul', 'ül', 'vá', 'vé', 'en', 'on', 'an', 'ön'; --> 'n', 't' 2a. in 2. etwas entfernt --> Auslaut='á' //> 'a'; Auslaut='é' //> 'a' 3. 'ánként' / 'án' //> 'a'; 'én' //> 'e' 4. END in R1 --> 'astul', 'estül', 'stul', 'stül'; --> 'ástul' //> 'a'; --> 'éstül' //> 'e' 5. CC + END --> C+'á', C+'é' 6. 'áké', 'áéi' //> 'a'; 'éké', 'ééi', 'éé' //> 'e'; END in R1 --> 'oké', 'öké', 'aké', 'eké', 'ké', 'éi', 'é' 7. 'ánk', 'ájuk', 'ám', 'ád', 'á' //> 'a'; 'énk', 'éjük', 'ém', 'éd', 'é' //> 'e'; END in R1 --> 'ünk', 'unk', 'nk', 'juk', 'jük', 'uk', 'ük', 'em', 'om', 'am', 'm', 'od', 'ed', 'ad', 'öd', 'd', 'ja', 'je', 'a', 'e', 'o' 8. 'áim', 'áid', 'ái', 'áink', 'áitok', 'áik' //> 'a'; 'éim', 'éid', 'éi', 'éink', 'éitek', 'éik' //> 'e'; END in R1 --> 'jaim', 'jeim', 'aim', 'eim', 'im', 'jaid', 'jeid', 'aid', 'eid', 'id', 'jai', 'jei', 'ai', 'ei', 'i', 'jaink', 'jeink', 'eink', 'aink', 'ink', 'jaitok', 'jeitek', 'aitok', 'eitek', 'itek', 'jeik', 'jaik', 'aik', 'eik', 'ik' 9. 'ák' //> 'a'; 'ék' //> 'e'; END in R1 --> 'ök', 'ok', 'ek', 'ak', 'k' 10. END in R1 --> 'obb', 'abb', 'ebb'; --> 'bb'; ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ => AUSGABE