[英]Constituent tree in Python (NLTK)
我在這里找到了這個代碼:
# 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)
據我了解,這段代碼定義了 PP、NP 和 VP……我的疑問是這里已經定義了句法標簽。 這些組合標簽不是在 NLTK 中定義的嗎? 這是重點嗎? 此外,在分塊器{<V> <NP|PP>*}
的最后一行,是否使用了上面定義的NP: {<DT>?<JJ>*<NN>}
和PP: {<P> <NP>}
?
在這個例子中,你發現這個想法是使用句子的句法構成元素的傳統名稱來創建一個詞塊分析器 - 一個解析器,將句子分解為所需級別的相當粗粒度的片段。 這種簡單(經典?)方法用於支持完整的句法解析——這需要將話語分解為單詞級別,並在句子中用適當的功能標記每個單詞。
RegexParser
的參數中定義的語法將根據需要(以及它所應用的話語的結構)任意選擇。 這些規則可以重復出現——它們對應於BNF形式語法的規則。 然后您的觀察是有效的 - VP
的最后一條規則是指先前定義的規則。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.