NLTK Kontext-Freie Grammatik Genaration
Arbeite ich an einem nicht-Englisch-parser mit Unicode-Zeichen. Für dass ich mich entschieden habe, NLTK.
Aber es erfordert einen vordefinierten Kontext-freie Grammatik wie folgt:
S -> NP VP
VP -> V NP | V NP PP
PP -> P NP
V -> "saw" | "ate" | "walked"
NP -> "John" | "Mary" | "Bob" | Det N | Det N PP
Det -> "a" | "an" | "the" | "my"
N -> "man" | "dog" | "cat" | "telescope" | "park"
P -> "in" | "on" | "by" | "with"
In meiner app, ich soll zu minimieren, hard-Codierung mit dem Einsatz von Regel-basierten Grammatik.
Zum Beispiel kann ich davon ausgehen, jedes Wort endet mit -ed oder -ing als verb. Daher sollte es für jeden gegebenen Kontext.
Wie kann ich füttern Grammatik-Regeln zu NLTK? Oder generieren Sie dynamisch mittels Finite-State-Maschine?
- Sie können gerne Lesen diese Antwort denn Sie schreiben CFG.
- Danke. Ich schaute, aber konnte es nicht verstehen. Gibt es eine Möglichkeit, ich kann füttern, python Variablen CFG ?
- Wenn Sie wollen, um automatisch zu lernen CFG-Regeln, können Sie versuchen, die Umsetzung dieser www.aclweb.org/anthology/O06-1004 =)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht suchen Sie ja
CFG.fromstring()
(ehemalsparse_cfg()
)?Vom Kapitel 7 des NLTK Buchs (aktualisiert NLTK 3.0):
Wenn Sie einen parser, dann haben einen Schritt hinzufügen von pos-Tags vor dem eigentlichen parsing-es gibt keinen Weg, um erfolgreich zu bestimmen, die POS-Tags eines Wortes aus dem Kontext. Für Beispiel, 'geschlossen' werden können, ein Adjektiv oder ein verb; ein POS-tagger wird herauszufinden, der richtige tag für Sie, aus dem Kontext des Wortes. Dann können Sie die Ausgabe des POS-tagger erstellen Sie Ihre CFG.
Können Sie eines der vielen vorhandenen POS-tagger. In NLTK, können Sie einfach etwas wie:
Ist die Ausgabe:
die Sie verwenden können, um eine Grammatik string und füttern
nltk.parse_cfg()
.Können Sie NLTK RegexTagger, die reguläre Ausdrücke Fähigkeit zu entscheiden, token. Dies ist genau das, du musst in deinem Fall. Als token mit der Endung 'ing' wird markiert als gerunds und token (mit der Endung 'ed' wird markiert mit verb Vergangenheit. siehe das Beispiel unten.
Beachten Sie, dass diese in der Reihenfolge ausgeführt, und die erste, die passt, wird angewendet. Jetzt
können wir einen tagger und es verwenden, um tag ein Satz. Nach diesem Schritt, ist es richtig, über einen
Fünftel der Zeit.
können Sie Kombination Tagger für die Verwendung gemeinsam mehrere tagger in einer Sequenz.
Können Sie nicht schreiben, diese Art von Regeln in nltk jetzt ohne jede Anstrengung, aber Sie können ein paar tricks.
Beispielsweise transkribieren Ihre Strafe in einer Art word-informative Etiketten und schreiben Sie Ihre Grammatik-Regeln entsprechend.
Beispiel (mit POS-Tags als Aufkleber):
wird:
Und Grammatik terminal-Regeln Beispiel:
Wenn das nicht genug ist, sollten Sie einen Blick für eine flexible Formalismus Umsetzung.