In der vorliegenden Arbeit wurde ein System in der Programmiersprache Python implementiert, das formale Sprachen durch Verwendung des Lernverfahrens Identification by Enumeration identifiziert. Dafür können der Anwendung positive und negative Beispielwörter in Form von Strings vorgelegt werden. Auf Basis der angebotenen Informationen erzeugt das Programm formale Grammatiken als Hypothesen. Abhängig von der Konfiguration können so rechtslineare Grammatiken oder Grammatiken in Chomsky-Normalform als Hypothesen entstehen. Das System ist so gestaltet, dass der Lernprozess an beliebig wählbaren Stellen unterbrochen und zu einem späteren Zeitpunkt verlustfrei fortgesetzt werden kann.
Um valide Hypothesen zu finden, verwendet das Programm Hypothesengeneratoren. Diese zählen Grammatiken auf und erzeugen so eine Hypothesenmenge, die linear nach einer konsistenten Hypothese durchsucht wird. Das Alphabet, auf dem die zu lernende Sprache aufgebaut ist, kann durch den Benutzer definiert werden. Die Aufzählung der Grammatiken ist durch die Nutzung mehrerer aufzählender Objekte implementiert. Diese sind ineinander verschachtelt, um Mengen von Produktionsregeln zu erzeugen, aus denen Grammatiken generiert werden. Jedes dieser Objekte zählt bestimmte Teilstücke der Produktionsregeln auf, die abschließend zu Mengen zusammengefasst werden. Insgesamt wurden Enumeratorenklassen für die folgenden sechs Aufzählungen implementiert: (1) Terminalsymbole, (2) Nichtterminalsymbole, (3) rechte Seiten von Produktionsregeln, (4) linke Seiten von Produktionsregeln, (5) Produktionsregeln und (6) Produktionsregelmengen. Da alle enumerierenden Objekte von einer Basisklasse erben, wurde eine Generik erreicht, die es erlaubt, Aufzählungen beliebig zu kombinieren und zu erweitern. Für die Überprüfung der Konsistenz der Hypothesen wurden zwei Verfahren realisiert. Dabei gilt es, das Wortproblem zu lösen. Werden rechtslineare Grammatiken gelernt, erfolgt das mit Hilfe von Akzeptoren. Dabei wird die Hypothese in einen DEA überführt und das Beispielwort in diesen eingegeben. Bei Grammatiken in CNF werden Methoden des Natural Language Tool Kits (NLTK) verwendet.
In den durchgeführten Tests war das System in der Lage, einfache a-b-Sprachen zu lernen. Für komplexere Sprachen und Sprachen mit größerem Alphabetumfang hat sich der implementierte Lernprozess allerdings als zu laufzeitintensiv herausgestellt. Als Hauptursachen dafür konnten die Erzeugung der Hypothesenmenge und deren Durchsuchung identifiziert werden. Die meisten der generierten Grammatiken enthielten Produktionsregeln, die aufgrund unterschiedlicher Nichtterminalsymbole auf ihren linken und rechten Seiten keine Wortableitungen bilden konnten. Dadurch erwies sich das lineare Durchsuchen des Hypothesenraumes als zu ineffizient. Im Ausblick der vorliegenden Arbeit werden Ideen skizziert, um die erkannten Probleme zu beheben. Im Fokus steht das Erzeugen von kanonischen Produktionsregelmengen. Zusätzlich soll das Durchsuchen einer einzigen großen Hypothesenmenge aufgeteilt werden. Hierbei entstehen mehrere Ad-hoc-Hypothesenräume, deren Ergebnisse vereinigt werden müssen.