Eine der ersten Anwendungen der Kategorietheorie auf ein Thema außerhalb der algebraischen Geometrie war das Parsen! Die Schlüsselwörter, die Sie für Ihre Suche verwenden möchten, sind "Lambek-Kalkül" und "Kategoriale Grammatik".
Joachim Lambek hat die nichtkommutative lineare Logik erfunden, um die Satzstruktur zu modellieren. Die Grundidee ist, dass Sie grundlegende Teile der Sprache als typisiert bezeichnen und dann (sagen wir) englischen Adjektiven einen Funktionstyp zuweisen können, der Nominalphrasen in Nominalphrasen umwandelt. (zB "grün" wird als Funktion angesehen, die Substantive zu Substantiven macht, was bedeutet, dass "grüne Eier" gut typisiert sind, da "Eier" ein Substantiv ist).
Die Linearität ergibt sich aus der Tatsache, dass ein Adjektiv genau eine Nominalphrase als Argument verwendet, und die Nichtkommutativität ergibt sich aus der Tatsache, dass die Reihenfolge der Wörter in Sätzen von Bedeutung ist. Beispielsweise steht das Nomenargument eines Adjektivs nach dem Adjektiv ("grüne Eier"), wohingegen die Nomenphrase einer Präpositionalphrase vor den Präpositionalphrasen ("grüne Eier mit Ketchup") steht. Kategorisch gesehen möchten Sie eine (nicht symmetrische) monoidale Kategorie, die links und rechts geschlossen ist. Der Typ ist also der Typ einer Phrase, die den Typ , wenn links ein vorangestellt ist , und ist der Typ einer Phrase, die den Typ wenn folgtA ∖BBEINB / ABEINrechts, und der Typ ist der Typ einer Phrase, die durch Verketten von etwas vom Typ mit etwas vom Typ .A ∗ BEINB
Es stellt sich heraus, dass Lambek-Grammatiken kontextfreien Sprachen entsprechen, obwohl dies anscheinend ein ziemlich schwieriges Ergebnis ist - es ist einfach, CFGs als Teilmenge von Lambek-Grammatiken darzustellen, aber die andere Richtung wurde erst 1991 von Pentus festgelegt.
Eine gute Übung für den Leser (dh ich habe es nicht ausprobiert, aber ich denke, es wäre cool, es zu versuchen) ist die Verwendung des Lambek-Kalküls, um Valiants Darstellung der CYK-Analyse durch boolesche Matrixmultiplikation kategorisch neu zu formulieren Begriffe. Als Motivation zitiere ich aus Lambeks Aufsatz Die Mathematik der Satzstruktur von 1958 :
Der hier vorgestellte Kalkül ist formal identisch mit einem Kalkül, der von GD Findlay und dem vorliegenden Autor für eine Diskussion kanonischer Abbildungen in der linearen und multilinearen Algebra konstruiert wurde.
Es scheint, dass (kontextfreies) Parsen a la Parsec natürlich in Form der anwendbaren Typklasse ausgedrückt wird . Diese Klasse wird wiederum von sogenannten starken laxen monoiden Funktoren gut beschrieben , die in dieser sehr schönen theoretischen Frage und dieser schönen Stapelüberlauf-Frage erwähnt werden .
Im Allgemeinen sind Parsec-Parser Monaden , die sowohl in der CS-Theorie als auch in der Kategorietheorie so gut bekannt sind , dass ich nur nach Aufforderung Referenzen geben werde.
quelle