aufgabe_7
index
sourcecode/aufgabe_7.py
sourcecode/prettycode/aufgabe_7.html

#-*- coding: UTF-8 -*-
#
# Aufgabe 7: Stemmer für deutsche Verben
# Author: Matthias Rebel, 731220

 
Modules
       
sys

 
Functions
       
checkAgainStopWordDictFor(verb)
der bis hier ermittelte Stamm kann auch in der StopWord Liste stehen > checkAgain
checkStopWordDictFor(verb)
überprüfe ob die Form und mögliche andere Formen (verb+n, verb[0:len(verb)-1]) im 
StopWordDict stehen, andernfalls analysiere das Verb von vorne und hinten
checkVpraefix(verb)
check for possible prefixes
checkVsuffix(verb)
check for paradigma suffix, die Längsten zuerst > bevorzugt 'test' gegenüber 'est' ...
createStopWordDict()
4.4.5 Liste starker/unregelmäßiger Verben, www.duden.de/produkte/downloads/duden04_verben.pdf
1. Stammform / 2., 3. Pers. Sg. Ind.; (Imperativ Sg.) / 2. Stammform / 1./3. Pers. Sg. Konj. II / 3. Stammform 
... allerdings fehlen z.B. bei 'sein' > 'bin' , 'sind' , 'seid' , '' :(

 
Data
        praefixe = set(['ab', 'an', 'auf', 'aus', 'be', 'bei', ...])
verbparadigmaPraefixe = {'ge': 1}
verbparadigmaSuffixe = {'e': 1, 'en': 3, 'end': 10, 'est': 7, 'et': 5, 'st': 4, 't': 2, 'te': 6, 'ten': 9, 'test': 11, ...}
irregularVerbForms

 
Demonstration
        localhost:sourcecode matthiasrebel$ python aufgabe_7.py
Enter a german verb: beistehen
the stem is 'steh'
localhost:sourcecode matthiasrebel$ python aufgabe_7.py
Enter a german verb: enttäuschen
the stem is 'täusch'
localhost:sourcecode matthiasrebel$ python aufgabe_7.py
Enter a german verb: werfe
'werfe' is a irregular verb,
so you get the three Stemforms (1st, 2nd, 3rd): ('werfen', 'warf', 'geworfen')
localhost:sourcecode matthiasrebel$ python aufgabe_7.py
Enter a german verb: totliebtest
the stem is 'lieb'
localhost:sourcecode matthiasrebel$ python aufgabe_7.py
Enter a german verb: gelobe
I am not sure, the stem is: gelob or lob