Pohon konstituen dengan Python (NLTK)

Sep 27 2020

Saya menemukan kode ini di sini :

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

Seperti yang saya pahami, kode ini mendefinisikan PP, NP dan VP ... Keraguan saya adalah bahwa tag sintaksis sudah ditentukan di sini . Bukankah tag yang dibuat ini ditentukan dalam NLTK? Apakah itu intinya? Selanjutnya, pada baris terakhir dari chunker {<V> <NP|PP>*}, apakah menggunakan definisi di atas NP: {<DT>?<JJ>*<NN>}dan PP: {<P> <NP>}?

Jawaban

1 sophros Sep 28 2020 at 14:28

Dalam contoh yang Anda temukan, idenya adalah menggunakan nama konvensional untuk elemen konstituen sintaksis kalimat untuk membuat chunker - parser yang memecah kalimat ke tingkat yang diinginkan dari potongan berbutir kasar. Pendekatan sederhana (istic?) Ini digunakan untuk mendukung penguraian sintaksis penuh - yang akan memerlukan pemecahan ucapan ke tingkat kata dan memberi label pada setiap kata dengan fungsi yang sesuai dalam kalimat.

Tata bahasa yang ditentukan dalam parameter dari RegexParserharus dipilih secara sewenang-wenang tergantung pada kebutuhan (dan struktur ucapan yang akan diterapkan). Aturan ini dapat berulang - sesuai dengan tata bahasa formal BNF . Pengamatan Anda kemudian valid - aturan terakhir untuk VPmengacu pada aturan yang ditentukan sebelumnya.