Konstituierender Baum in Python (NLTK)

Sep 27 2020

Ich habe diesen Code hier gefunden :

# 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) 

Soweit ich weiß, definiert dieser Code PP, NP und VP ... Mein Zweifel ist, dass die syntaktischen Tags hier bereits definiert sind . Sind diese zusammengesetzten Tags nicht in NLTK definiert? Ist das der Punkt? Verwendet {<V> <NP|PP>*}es in der letzten Reihe des Chunkers außerdem das oben definierte NP: {<DT>?<JJ>*<NN>}und PP: {<P> <NP>}?

Antworten

1 sophros Sep 28 2020 at 14:28

In dem Beispiel, das Sie gefunden haben, besteht die Idee darin, die herkömmlichen Namen für syntaktische Bestandteile von Sätzen zu verwenden, um einen Chunker zu erstellen - einen Parser, der Sätze auf eine gewünschte Ebene von eher grobkörnigen Stücken aufteilt . Dieser einfache (istische?) Ansatz wird zugunsten einer vollständigen syntaktischen Analyse verwendet. Dazu müssten die Äußerungen auf Wortebene heruntergebrochen und jedes Wort mit der entsprechenden Funktion im Satz gekennzeichnet werden.

Die im Parameter von definierte Grammatik RegexParserist je nach Bedarf (und Struktur der Äußerungen, auf die sie angewendet werden soll) willkürlich zu wählen. Diese Regeln können wiederkehrend sein - sie entsprechen denen der formalen BNF- Grammatik. Ihre Beobachtung ist dann gültig - die letzte Regel für VPbezieht sich auf die zuvor definierten Regeln.