Skip to content

Instantly share code, notes, and snippets.

@amotl
Last active February 17, 2024 15:27
Show Gist options
  • Save amotl/ad5ecda4579ad60bb6497b7ddabc8ad0 to your computer and use it in GitHub Desktop.
Save amotl/ad5ecda4579ad60bb6497b7ddabc8ad0 to your computer and use it in GitHub Desktop.
Conjugate German verbs into past participle

Example for natural language processing with Python

About

Conjugate verbs. Here: past participle in German grammar.

The lexicon for verb conjugation provided by the fine "Pattern" package contains about 2,000 common German verbs. For unknown verbs it will fall back to a rule-based approach with an accuracy of about 87%.

Credits

This program uses the "Pattern" package for natural language processing which is implemented in the Python programming language and is being conceived by the CLiPS (Computational Linguistics & Psycholinguistics) research center at the University of Antwerp. Cheers!

Setup

pip install pattern

See also

Pattern (University of Antwerp)

GermaNet (University of Tübingen)

Projekt deutscher Wortschatz (University of Leipzig)

SdeWaC corpus (University of Stuttgart)

Misc

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pattern.de import conjugate
from pattern.de import INFINITIVE, PRESENT, SG, SUBJUNCTIVE, PAST, PARTICIPLE
def infinitive_to_past_participle():
pheader(u'Conjugating infinitive to past participle')
words = ['sein', 'war', 'sehen', 'lesen', 'trinken', 'essen', 'rufen', 'anrufen', 'schwimmen']
conjugate_words(words, PAST+PARTICIPLE)
def past_participle_to_infinitive():
pheader(u'Conjugating past participle to infinitive')
words = ['gewesen', 'gesehen', 'gelesen', 'getrunken', 'gegessen', 'gerufen', 'angerufen', 'angeruft', 'geschwommen']
conjugate_words(words, INFINITIVE)
def past_participle_to_present():
pheader(u'Conjugating past participle to present')
words = ['gewesen', 'gesehen', 'gelesen', 'getrunken', 'gegessen', 'gerufen', 'angerufen', 'angeruft', 'geschwommen']
conjugate_words(words, PRESENT)
def conjugate_words(words, tense):
for word in words:
print(u'{: <12} => {}'.format(word, conjugate(word, tense)))
print()
def pheader(title):
length = len(title)
marker = u'-' * length
print(marker)
print(title)
print(marker)
if __name__ == '__main__':
infinitive_to_past_participle()
past_participle_to_infinitive()
past_participle_to_present()

Run program:

$ ./conjugate-de-past-participle.py                                                                                                                      

Enjoy its output:

-----------------------------------------
Conjugating infinitive to past participle
-----------------------------------------
sein         => gewesen
war          => gewesen
sehen        => gesehen
lesen        => gelesen
trinken      => getrunken
essen        => gegessen
rufen        => gerufen
anrufen      => angeruft
schwimmen    => geschwommen

-----------------------------------------
Conjugating past participle to infinitive
-----------------------------------------
gewesen      => sein
gesehen      => sehen
gelesen      => lesen
getrunken    => trinken
gegessen     => essen
gerufen      => rufen
angerufen    => anrufen
angeruft     => angerufen
geschwommen  => schwimmen

--------------------------------------
Conjugating past participle to present
--------------------------------------
gewesen      => ist
gesehen      => sieht
gelesen      => liest
getrunken    => trinkt
gegessen     => isst
gerufen      => ruft
angerufen    => ruft an
angeruft     => geruft an
geschwommen  => schwimmt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment