Gibt es eine Online-Resource oder ein Programm, das ich unter Linux installieren kann, das folgendes leistet?
Ich habe einen kurzen deutschen Text (typischerweise nur ein bis drei einfache Aussagesätze) und möchte von jedem Wort in dem Text die jeweilige Grundform (das lexikographische Lemma) wissen. Komposita sollen dabei wenn möglich in ihre Bestandteile zerlegt werden.
Zum Beispiel soll aus dem folgende Satz
Singlefrauen haben meist aufgeräumtere Wohnungen als Junggesellen.
das werden:
Single Frau, haben, meist, aufräumen, Wohnung, als, Junggeselle
Dabei ist mir relativ egal, ob im Fall von »aufgeräumtere« das Adjektiv »aufgeräumt« oder das Verb »aufräumen« ausgeben wird, solange die Eingabe von »aufgeräumt« genau dasselbe Ergebnis liefert.
Mir ist auch egal, ob ich ganze Sätze oder nur einzelne Wörter eingeben kann.
Etwas ähnliches wurde bereits hier gefragt: Lemma, Grundform-Lexikon deutscher Sprache Allerdings hatte der Fragesteller genau die umgekehrte Aufgabe im Visier (»Liefere mir alle Wortformen, die sich von einem gegebenem Lemma ableiten lassen«).
In einer Antwort auf die eben zitierte Frage wurde canoonet genannt. Ich glaube, canoonet wäre zwar prinzipiell sehr gut in der Lage, mein Problem zu lösen, allerdings ist der Output für menschliche Nutzer aufbereitet und ungeeignet um von einem Programm verarbeitet zu werden.
Dasselbe Problem scheint Wiktionary zu haben. Auch hier hat der Output kein Format, das eine einfache maschinelle Verarbeitung ermöglicht. Vielleicht habe ich aber auch nur Hinweise auf eine Programmierschnittstelle (API) übersehen, in diesem Fall bitte ich, mich mit der Nase darauf zu stoßen.
Ich benötige die Ausgabe der Grundformsuche in einer Form, die ohne hohen Aufwand von einem Computerprogramm verarbeitet werden kann.
Kontext
Wofür brauche ich das?
Dieser Abschnitt gehört eigentlich nicht mehr zur Frage, soll aber helfen den Fokus meiner Frage klarer herauszuarbeiten.
Seit nunmehr 14 Jahren betreibe ich die Datenbank des nutzlosen Wissens, die bereits mehr als 5000 veröffentlichte und rund 1000 noch unveröffentlichte Einträge beinhaltet. Es ist mittlerweile aussichtslos, bei dieser riesigen Menge an Fakten Duplikate durch manuelles Sichten ausfindig zu machen. Daher habe ich schon vor Jahren Programme geschrieben, die das automatisch erledigen sollen. Ich bin nun dabei diese Programme zu überarbeiten.
Die Duplikaterkennung soll z.B. erkennen, dass diese beiden Beiträge (fast) denselben Inhalt haben, obwohl sie unterschiedlich lang sind nur nur ein einziges Wort gemeinsam haben, das noch dazu auf semantischer Eben kaum Informationen enthält (»bis«):
- Wenn man Küchenschaben den Kopf abschneidet, leben sie noch bis zu 14 Tage lang weiter, dann verhungern sie.
- Geköpfte Kakerlaken sterben erst nach zwei bis drei Wochen.
Intern macht das Programm aus den beiden Eingaben das:
- Küche Schabe Insekt Kopf schneiden abschneiden leben 14 Tage Zeit verhungern Hunger
- köpfen Kopf Kakerlake Schabe Insekt sterben leben 2 3 Woche Zeit
Dass die beiden Beiträge Kandidaten für ein Duplikatspaar sind, wird anhand der fett hervorgehobenen Wörter erkannt.
Damit das gelingt, muss mein Programm Synonyme (Küchenschabe - Kakerlake) und Antonyme (leben - sterben) erkennen, es muss verwandte Begriffe erkennen (köpfen - Kopf), und es muss Überbegriffe wissen (Schabe = Insekt, Tag = Zeit).
Die eben beschriebenen Arbeiten sind alles Analysen auf semantischer Ebene, aber davor muss die Lemmatisierung stehen, also ein Umwandlungsprozess, der Wort-Variationen, die meist durch die Grammatik verursacht sind, vereinheitlicht. Das Vorhandensein von standardisierten Grundformen ist eine wichtige Voraussetzung, um nach Synonymen usw. zu suchen.
Der ganze Prozess soll automatisiert ablaufen. Das Programm soll der Reihe nach jeden einzelnen der rund 6000 Beiträge entweder als Ganzes, oder Wort für Wort an einen Lemmatisierungs-Automaten schicken, der dann entweder eine Liste der gefundenen Grundformen, oder eben die jeweilige Grundform zurückgibt. Unbekannte Wörter (Eigennamen, Rechtschreibfehler) sollen idealerweise zur Ausgabe einer kurzen Fehlermeldung führen, ohne dass dadurch die Verarbeitung bekannter Begriffe beeinträchtigt wird.
Das Ermitteln der Grundformen muss also ganz ohne menschliches Zutun erfolgen können.