Deklinierte Ordnungszahlwörter automatisch generieren

Ich beschäftige mich gerade mit dem automatischem Produzieren von Sätzen, die mit Werten aus einer Datenbank befüllt werden. Das Ziel ist, beispielsweise solche Sätze zu erhalten:

  • ‚Müller ist beim Ranking auf dem elften Platz.‘
  • ‚Der vierte Platz wird von Maier belegt.‘
  • ‚Der 18. Platz wird von Schmidt belegt.‘


Als Basis benutze ich ein Template, z.B. dieses für den ersten Satz:

  • ‚$$$Name$$$ ist beim Ranking auf dem $$$Platz$$$ Platz.‘

Es treten zwei grundsätzliche Probleme auf:

  • 1. Aus der Datenbank kommen Zahlen als Integer, also 1, 2, 3, …, es werden aber für den Zahlenbereich Null bis einschliesslich Dreizehn Ordinalia (erster, zweiter, dritter, …) und darüber hinaus Ordinalzahlen benötigt.
  • 2. Die Ordinalia müssen dekliniert werden, man muss ja nicht gleich sehen, dass es sich um ‚Computed Content‘ handelt.

Es hat etwas gedauert, bis ich die elementaren Zusammenhänge hatte, der letzte Deutschunterricht ist schon Jahrzehnte her. Das hier sind die grammatikalischen Anforderungen an eine Funktion zur Erzeugung von deklinierten Ordinalia:

  • Stamm: eins, zwei, drei, vier, …
  • Stammabweichungen: ers (erster), drit (dritter), sieb (siebter), ach (achter)
  • Deklinationsgrad: schwach, gemischt, stark
  • Kasus (Fall)
  • Numerus (Anzahl)
  • Genus (Geschlecht)

Auf dieser Grundlage habe ich die folgende Funktion als ‚Proof of Concept‘ geschrieben:

Der Aufruf geht folgendermaßen:

Download, PHP, Webapplication, Webentwicklung