Sto cercando di capire come usare il grosso pezzo a cascata di NLTK come da capitolo 7 del libro NLTK . Sfortunatamente, sto incontrando alcuni problemi quando eseguo misure di chunking non banali.
Cominciamo con questa frase:
"adventure movies between 2000 and 2015 featuring performances by daniel craig"
Sono in grado di trovare tutte le NP rilevanti quando utilizzo la seguente grammatica:
grammar = "NP: {<DT>?<JJ>*<NN.*>+}"
Tuttavia, non sono sicuro di come costruire strutture nidificate con NLTK. Il libro fornisce il seguente formato, ma mancano chiaramente alcune cose (ad es. Come si possono effettivamente specificare più regole?):
grammar = r"""
NP: {<DT|JJ|NN.*>+} # Chunk sequences of DT, JJ, NN
PP: {<IN><NP>} # Chunk prepositions followed by NP
VP: {<VB.*><NP|PP|CLAUSE>+$} # Chunk verbs and their arguments
CLAUSE: {<NP><VP>} # Chunk NP, VP
"""
Nel mio caso, vorrei fare qualcosa di simile al seguente:
grammar = "MEDIA: {<DT>?<JJ>*<NN.*>+}
RELATION: {<V.*>}{<DT>?<JJ>*<NN.*>+}
ENTITY: {<NN.*>}"
Mi viene in mente che un CFG potrebbe adattarsi meglio a questo, ma mi sono reso conto del supporto di NLTK per questa funzione circa 5 minuti fa (da questa domanda ), e non sembra che esista molta documentazione per la funzione.
Quindi, supponendo che mi piacerebbe usare un grosso pezzo a cascata per il mio compito, quale sintassi dovrei usare? Inoltre, è possibile specificare parole specifiche (ad es. "Diretto" o "recitato") quando utilizzo un grosso pezzo?