'Returns the base form of the given inflected verb, using a rule-based approach.'

def find_lemma(self, verb):

    v = verb.lower()
    if (not (v.startswith('ge') and v.endswith('t'))):
        for prefix in prefixes:
            if (v.startswith(prefix) and (v[len(prefix):] in self.inflections)):
                return (prefix + self.inflections[v[len(prefix):]])
    (b, suffix) = ((('    ' in v) and v.split()[:2]) or (v, ''))
    if b.endswith(('ln', 'rn')):
        return b
    for x in ('test', 'est', 'end', 'ten', 'tet', 'en', 'et', 'te', 'st', 'e', 't'):
        if b.endswith(x):
            b = b[:(- len(x))]
            break
    for (x, y) in (('ieb', 'eib'), ('ied', 'eid'), ('ief', 'auf'), ('ieg', 'eig'), ('iel', 'alt'), ('ien', 'ein'), ('iess', 'ass'), (u'ie\xdf', u'a\xdf'), ('iff', 'eif'), ('iss', 'eiss'), (u'i\xdf', u'ei\xdf'), ('it', 'eid'), ('oss', 'iess'), (u'\xf6ss', 'iess')):
        if b.endswith(x):
            b = (b[:(- len(x))] + y)
            break
    b = b.replace('eeiss', 'eiss')
    b = b.replace('eeid', 'eit')
    if ((not b.endswith(('e', 'l'))) and (not (b.endswith('er') and (len(b) >= 3) and (not (b[(-3)] in VOWELS))))):
        b = (b + 'e')
    if b.endswith(('hl', 'll', 'ul', 'eil')):
        b = (b + 'e')
    if (b.startswith('ge') and v.endswith('t')):
        b = b[2:]
    if b.endswith(('lnde', 'rnde')):
        b = b[:(-3)]
    if b.endswith(('ae', 'al', u'\xf6e', u'\xfce')):
        b = (b.rstrip('e') + 'te')
    if b.endswith(u'\xe4l'):
        b = (b + 'e')
    return ((suffix + b) + 'n')
