Árbol constituyente en Python (NLTK)

Sep 27 2020

He encontrado este código aquí :

# Import required libraries 
import nltk 
nltk.download('punkt') 
nltk.download('averaged_perceptron_tagger') 
from nltk import pos_tag, word_tokenize, RegexpParser 
   
# Example text 
sample_text = "The quick brown fox jumps over the lazy dog"
   
# Find all parts of speech in above sentence 
tagged = pos_tag(word_tokenize(sample_text)) 
   
#Extract all parts of speech from any text 
chunker = RegexpParser(""" 
                       NP: {<DT>?<JJ>*<NN>}    #To extract Noun Phrases 
                       P: {<IN>}               #To extract Prepositions 
                       V: {<V.*>}              #To extract Verbs 
                       PP: {<P> <NP>}          #To extract Prepostional Phrases 
                       VP: {<V> <NP|PP>*}      #To extarct Verb Phrases 
                       """) 
  
# Print all parts of speech in above sentence 
output = chunker.parse(tagged) 
print("After Extracting\n", output) 

Según tengo entendido, este código define PP, NP y VP ... Mi duda es que las etiquetas sintácticas ya están definidas aquí . ¿No están definidas estas etiquetas compuestas en NLTK? ¿Ese es el punto? Además, en la última fila de la chunker {<V> <NP|PP>*}, está usando el se ha definido anteriormente NP: {<DT>?<JJ>*<NN>}y PP: {<P> <NP>}?

Respuestas

1 sophros Sep 28 2020 at 14:28

En el ejemplo que encontró, la idea es usar los nombres convencionales para los elementos constitutivos sintácticos de las oraciones para crear un fragmento , un analizador que descompone las oraciones en un nivel deseado de piezas bastante generales. Este enfoque simple (¿istico?) Se usa a favor de un análisis sintáctico completo, lo que requeriría dividir las expresiones a nivel de palabra y etiquetar cada palabra con la función adecuada en la oración.

La gramática definida en el parámetro de RegexParserdebe elegirse arbitrariamente según la necesidad (y la estructura de las expresiones a las que se aplicará). Estas reglas pueden ser recurrentes, corresponden a las de la gramática formal BNF . Su observación es entonces válida: la última regla para se VPrefiere a las reglas definidas previamente.