Prolog in der Computerlinguistik

In der Computerlinguistik nutzt man Prolog, um grammatische Muster zu untersuchen und Antworten aus Aussagen abzuleiten. Prolog ist eine logische Programmiersprache: Sie speichert Wissen als Fakten und Regeln und prüft bei einer Anfrage, ob daraus eine Antwort folgt.

Für eng umrissene Sprachaufgaben legt man Grammatikregeln fest und prüft sie an Beispielen. Prolog deutet beliebige Texte nicht selbstständig; die Analyse hängt von den zuvor festgelegten Wörtern, Strukturen und Regeln ab.

Prolog beschreibt Beziehungen

In vielen Programmiersprachen gibt man Schritt für Schritt an, welche Anweisungen der Computer ausführen soll. Prolog beschreibt vor allem Beziehungen und Bedingungen. Anschließend stellt man eine Anfrage, die das Programm zu beantworten versucht.

Dabei gleicht Prolog Ausdrücke miteinander ab. Dieses Verfahren heißt Unifikation: Prolog setzt passende Werte für Variablen ein, sodass zwei Ausdrücke zusammenpassen. Findet Prolog auf einem Lösungsweg keine passenden Werte, kehrt es zu einer früheren Entscheidung zurück und prüft eine andere Möglichkeit. Dieses Zurückgehen und Weitersuchen heißt Backtracking.

Prolog entwickelte sich auch aus Forschung zur Sprachverarbeitung. Anfang der 1970er-Jahre arbeiteten Alain Colmerauer und seine Mitarbeitenden an logischen Methoden für die Analyse des Französischen und für die Kommunikation zwischen Mensch und Maschine. Sprachverarbeitung gehörte damit zu den frühen Anwendungsfeldern der Sprache.

Fakten und Regeln ausführen

Ein Fakt hält eine einzelne Aussage fest. Zum Beispiel besagt wortart(hund, nomen)., dass „Hund“ als Nomen eingeordnet wird. Prolog kennt diese Einordnung nur, weil sie in seiner Wissensbasis steht. Diese enthält gespeicherte Fakten und Regeln.

Eine Regel beschreibt, wann eine Aussage aus anderen Aussagen folgt. Im folgenden Beispiel gilt eine Wortfolge als passend, wenn das erste Wort ein Nomen und das zweite ein Verb ist:

wortart(hund, nomen).
wortart(bellt, verb).

wortfolge(Wort1, Wort2) :-
    wortart(Wort1, nomen),
    wortart(Wort2, verb).

Die Anfrage wortfolge(hund, bellt). liefert eine Lösung, weil beide Fakten die Bedingungen der Regel erfüllen. Prolog kann so mehrere Aussagen miteinander verknüpfen. Für eine linguistische Analyse bedeutet das: Ein Programm kann prüfen, ob Wörter bestimmte Eigenschaften haben und ob diese Eigenschaften zu einer beschriebenen Struktur passen.

Die Regel erfasst allerdings nur eine Wortfolge aus Nomen und Verb. Sie prüft weder einen vollständigen Satzbau noch Bedeutung oder Kontext. Das Beispiel veranschaulicht, wie eine Regel eine Wortfolge prüft; es deckt keine vollständige Grammatik ab.

Grammatik mit DCGs

Prolog erlaubt es, Grammatikregeln mit Definite Clause Grammars, kurz DCGs, zu formulieren. Eine DCG kann eine Folge von Wörtern analysieren und daraus eine Struktur aufbauen. Die Grammatik kann außerdem dazu dienen, passende Wortfolgen zu erzeugen.

Die folgende kleine Grammatik beschreibt einen Satz mit Nominalphrase und Verbalphrase. Beide Teile müssen denselben Numerus haben, also dieselbe Zahlform, hier Singular:

satz --> nominalphrase(N), verbalphrase(N).

nominalphrase(N) --> artikel(N), nomen(N).
artikel(singular) --> [der].
nomen(singular) --> [hund].

verbalphrase(singular) --> verb(singular).
verb(singular) --> [bellt].

Die Anfrage phrase(satz, [der, hund, bellt]). liefert eine Lösung. Prolog erkennt dabei Artikel und Nomen als Nominalphrase und prüft, ob die Verbalphrase dazu passt. Die Variable N überträgt den Numerus zwischen den Satzteilen. Beim Durchsuchen der Grammatik vergleicht Prolog die Werte.

Diese Grammatik erkennt nur die ausdrücklich eingetragenen Wörter und das beschriebene Muster. Sie behandelt etwa weder weitere Satzstellungen noch Mehrdeutigkeit. Gerade diese Begrenzung macht sie als Lernbeispiel nützlich: Eine sprachliche Annahme wird zu einer prüfbaren Regel, und Fehler lassen sich auf konkrete Bedingungen zurückführen.

Wo Prolog hilfreich ist

Prolog eignet sich besonders, wenn die beteiligten sprachlichen Beziehungen klar benannt werden sollen. Eine Grammatik für ein begrenztes Satzmuster lässt sich direkt ausführen. Ebenso können Regeln festlegen, welche Merkmale zusammenpassen oder welche Schlussfolgerung aus mehreren Aussagen folgt.

Das unterstützt die Untersuchung einzelner Sprachphänomene. Wer zum Beispiel eine Regel zur Übereinstimmung von Satzteilen formuliert, kann gezielt passende und unpassende Beispiele abfragen. So wird sichtbar, welche Annahme die Analyse trägt und an welcher Stelle eine Regel fehlt oder zu weit gefasst ist.

Für Lernende ist der Ansatz deshalb anschaulich: Sie übersetzen eine sprachliche Beobachtung in Fakten und Regeln und prüfen danach, welche Anfragen Prolog beantworten kann. Das trainiert sowohl die präzise Beschreibung eines Phänomens als auch das Verständnis dafür, dass ein Computer nur mit den Informationen schlussfolgert, die tatsächlich repräsentiert sind.

Wo Regeln an Grenzen stoßen

Natürliche Sprache enthält Mehrdeutigkeiten, seltene Formen, unvollständige Äußerungen und Abhängigkeiten vom Kontext. Eine Grammatik kann mehrere Analysen für denselben Satz zulassen. Klassisches Prolog kann diese Möglichkeiten durchsuchen. Es nutzt aber nicht von sich aus statistische Wahrscheinlichkeiten, um die im jeweiligen Kontext plausibelste Lesart auszuwählen.

Auch die Suchstrategie spielt eine Rolle. Prolog prüft mögliche Beweiswege, also Folgen von Regeln, typischerweise mit Tiefensuche und Backtracking. Die Reihenfolge von Regeln und Teilzielen beeinflusst deshalb, wie lange eine Anfrage läuft und ob sie eine Lösung erreicht. Eine Schlussfolgerung ist zudem nur so vollständig wie die Fakten und Regeln, auf denen sie beruht.

Für offene Sprachverarbeitung reicht eine handgeschriebene Grammatik daher häufig nicht aus. Prolog passt besser zu Aufgaben, deren Bereich und Regeln sich klar eingrenzen lassen, oder zu Komponenten, die gemeinsam mit anderen Verfahren arbeiten.

Prolog mit datenbasierten Verfahren verbinden

Ein Beispiel für die Verbindung symbolischer Regeln mit datenbasierten Verfahren ist NLProlog, ein Forschungsmodell aus dem Jahr 2019. Es kombiniert einen Prolog-Schlussfolgerer mit Satzdarstellungen und einer trainierbaren Ähnlichkeitsfunktion. Die Regeln übernehmen dabei strukturierte Schlussfolgerungen; die trainierte Komponente hilft beim Umgang mit sprachlichen Ausdrücken.

In der Studie erreichte NLProlog auf den Entwicklungsdaten der Aufgabe MedHop eine Genauigkeit von 65,78 Prozent. Auf ausgewählten WikiHop-Teilaufgaben lagen die Ergebnisse je nach abgefragter Beziehung unterschiedlich. Für den verborgenen MedHop-Testdatensatz berichteten die Autorinnen und Autoren 29,3 Prozent. Die Werte beschreiben NLPrologs Ergebnisse auf diesen Datensätzen. Sie erlauben keine allgemeine Aussage zur Leistungsfähigkeit von Prolog und keinen direkten Vergleich mit heutiger Sprachverarbeitung insgesamt.

Die Kombination ist sinnvoll, wenn Regeln Schlussfolgerungen nachvollziehbar machen sollen und datenbasierte Bestandteile sprachliche Variabilität bearbeiten. Welche Aufteilung passt, hängt von der Aufgabe ab.