Estou tentando descobrir como usar o chunker em cascata do NLTK conforme o Capítulo 7 do livro do NLTK . Infelizmente, estou tendo alguns problemas ao executar medidas de fragmentação não triviais.
Vamos começar com esta frase:
"adventure movies between 2000 and 2015 featuring performances by daniel craig"
Consigo encontrar todos os NPs relevantes quando uso a seguinte gramática:
grammar = "NP: {<DT>?<JJ>*<NN.*>+}"
No entanto, não sei como criar estruturas aninhadas com o NLTK. O livro apresenta o seguinte formato, mas há claramente algumas coisas que faltam (por exemplo, como alguém realmente especifica várias regras?):
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
"""
No meu caso, eu gostaria de fazer algo como o seguinte:
grammar = "MEDIA: {<DT>?<JJ>*<NN.*>+}
RELATION: {<V.*>}{<DT>?<JJ>*<NN.*>+}
ENTITY: {<NN.*>}"
Ocorre-me que um CFG pode ser mais adequado para isso, mas só tomei conhecimento do suporte do NLTK para essa função há cerca de 5 minutos ( desta pergunta ) e não parece haver muita documentação para o recurso.
Então, supondo que eu gostaria de usar um chunker em cascata para minha tarefa, que sintaxe eu precisaria usar? Além disso, é possível especificar palavras específicas (por exemplo, "direcionado" ou "agido") ao usar um chunker?