Frage

Ich suche Richtung und versuchen, Label dieses Problem:

Ich versuche, eine einfache Inferenzmaschine zu bauen (gibt es einen besseren Namen?) In Python, die eine Zeichenfolge nehmen und -

1 - Erstellen Sie eine Liste von Tokens, indem Sie einfach eine Liste von Leerzeichen getrennt Werte zu schaffen

2 - kategorisieren diese Token, mit regulären Ausdrücken

3 - ein höheren Regelsatz verwenden Entscheidungen über die Kategorisierungen machen basierend

Beispiel:

"90001" - ein Zeichen, entspricht den zipcode regex, eine Regel für existiert eine Zeichenfolge, die nur eine zipcode bewirkt, dass ein bestimmtes Verhalten auftritt

„30 + 14“ - drei Token, regexs für Zahlenwert und mathematische Operatoren Spiel, existiert eine Regel für ein numerisches durch einen mathematischen Operator gefolgt Wert durch einen anderen Zahlenwert gefolgt bewirkt, dass ein bestimmtes Verhalten zu auftreten

Ich kämpfe mit, wie am besten Schritt # 3, die höhere Ebene einer Reihe von Regeln zu tun. Ich bin sicher, dass einige Rahmen vorhanden sein muss. Irgendwelche Ideen? Auch, wie würden Sie dieses Problem charakterisieren? Regelbasiertes System, Expertensystem, Inferenzmaschine, etwas anderes?

Danke!

War es hilfreich?

Lösung

Ich bin sehr überrascht, dass der Schritt # 3 die ist, so dass Sie Probleme ...

Unter der Annahme, können Sie beschriften / kategorisieren richtig jedes Token (und das vor der Kategorisierung Sie die richtigen Token nicht finden, da es viele mehrdeutige Fälle geben kann, ...), die „Step # 3“ Problem scheint ein, dass könnte leicht mit einer kontextfreien Grammatik in Angriff genommen werden, wobei jede der gewünschten Aktionen (wie ZIP-Code-Nachschlag oder mathematische Ausdruck Berechnung ...) Symbole mit ihrer Produktionsregel selbst der möglichen Token-Kategorien gemacht wäre. Um dies zu verdeutlichen in BNF-Notation, könnten wir so etwas wie haben

<SimpleMathOperation> ::= <NumericalValue><Operator><NumericalValue>

Vielleicht ist Ihr Problem ist, dass, wenn es kompliziert wird, wird es schwierig, die gesamte Forderung in Bezug auf den nicht-Konflikt Grammatikregeln zum Ausdruck bringen. Oder vielleicht Ihre Sorge ist, dass eine dynamisch Regeln hinzufügen könnte, damit die Grammatik „Compilation“ Logik zwingt mit dem Programm integriert werden? Was auch immer die Sorge, ich denke, dass dieser dritte Schritt vergleichsweise trivial sein wird.

Auf der anderen Seite, und es sei denn, die verschiedenen Kategorien (und das darunter liegende Eingabetext) so sind, dass sie mit einer normalen Sprache beschrieben werden können, als auch (wie Sie scheinen in der Frage zu andeuten), einen Text-Parser und Sichter (Schritte # 1 und # 2, ...) ist in der Regel eine weniger als triviale Angelegenheit ..

Einige Beispiel-Python-Bibliotheken, die Grammatiken vereinfachen das Schreiben und Auswertung:

Andere Tipps

Es sieht aus wie Sie für „Grammatik-Inferenz“ (Grammatik Induktion) Bibliothek zu suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top