2017-03-21 1 views
0

Ich habe eine Grammatik, die etwas wie:Parsing Terminal-Symbole mit teilweise Übereinstimmung

S -> 'My' 'age' 'is' NUM 
NUM -> '18', '20' 

der Parser ich mit einer solchen Grammatik aufbauen können Sätze wie My age is 18 analysieren, aber wenn meine tatsächlichen Sätze so etwas wie My age is 20> ist - wo 20> bedeutet mehr als 20 - es scheitert.

Also frage ich: Gibt es eine Möglichkeit, den Parser zu zwingen, teilweise Übereinstimmungen bei Terminalsymbolen zu akzeptieren?

Vielen Dank im Voraus!

P.S. Ich bin ein ziemlich noob mit ntlk, also vielleicht nähere ich mich dem Problem auf die schlimmste Weise. Jeder Hinweis würde sehr geschätzt werden.

Antwort

2

Das CFG von Nltk ist ein Lehrwerkzeug, kein ernsthaftes NLP-Framework. Es bietet keine Unterstützung für irgendwelche offenen Vokabeln (was unweigerlich zu unbekannten Wörtern führen wird, einschließlich unbekannter Zahlen). Ihre beste Option ist die Vorverarbeitung Ihrer Eingabe, z. Ersetzen Sie alle Ziffern durch eine feste Zahl (oder ein Symbol wie #NUM#), das von Ihrer Grammatik erkannt wird. Wenn Sie dann die ursprünglichen Zahlen benötigen, können Sie die Parser-Ergebnisse nachbearbeiten und wieder einfügen.

Verwandte Themen