Sto cercando di utilizzare NLTK per l'analisi semantica di navigazione parlato comandi come "andare a San Francisco", "dammi le indicazioni per 123 Main Street", eccanalisi semantica con NLTK
Ciò potrebbe essere fatto con un abbastanza semplice grammatica CFG come
S -> COMMAND LOCATION
COMMAND -> "go to" | "give me directions to" | ...
LOCATION -> CITY | STREET | ...
Il problema è che si tratta di non-atomiche (più di una parola-lungo) letterali, come "andare a", che NLTK non sembra essere impostato per (correggimi se sbaglio). L'attività di analisi ha il tag come prerequisito e tutti i tagger sembrano sempre taggare singole parole. Quindi, le mie opzioni sembrano essere:
a) Definire un tagger personalizzato che può assegnare tag non sintattici alle sequenze di parole anziché a singole parole (ad es. "Vai a": "COMANDO"). b) utilizzare le funzioni per aumentare la grammatica, per esempio, qualcosa come:
COMMAND -> VB[sem='go'] P[sem='to'] | ...
c) Usare un chunker per estrarre sottostrutture come il comando, quindi applicare un parser per il risultato. NLTK consente il chunker-> parser a cascata?
Alcune di queste opzioni sembrano contorte (hack). C'è un buon modo?