Python (NLTK) 中的成分树
Constituent tree in Python (NLTK)
我找到了这段代码 here:
# 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...我怀疑句法标记是否已定义 here。 NLTK 中不是定义了这些组合标签吗?这是重点吗?再者,chunker的最后一行{<V> <NP|PP>*}
,是不是使用上面定义的NP: {<DT>?<JJ>*<NN>}
和PP: {<P> <NP>}
?
在您发现的示例中,想法是使用句子的句法组成元素的常规名称来创建 chunker - 将句子分解为所需级别的解析器而是 coarse-grained 件。这种简单的(istic?)方法用于支持完整的句法分析——这需要将话语分解为 word-level 并在句子中用适当的功能标记每个词。
RegexParser
参数中定义的文法可以根据需要(以及它所适用的语句的结构)任意选择。这些规则可以重复出现——它们对应于 BNF 形式语法的规则。那么您的观察是有效的 - VP
的最后一条规则是指先前定义的规则。
我找到了这段代码 here:
# 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...我怀疑句法标记是否已定义 here。 NLTK 中不是定义了这些组合标签吗?这是重点吗?再者,chunker的最后一行{<V> <NP|PP>*}
,是不是使用上面定义的NP: {<DT>?<JJ>*<NN>}
和PP: {<P> <NP>}
?
在您发现的示例中,想法是使用句子的句法组成元素的常规名称来创建 chunker - 将句子分解为所需级别的解析器而是 coarse-grained 件。这种简单的(istic?)方法用于支持完整的句法分析——这需要将话语分解为 word-level 并在句子中用适当的功能标记每个词。
RegexParser
参数中定义的文法可以根据需要(以及它所适用的语句的结构)任意选择。这些规则可以重复出现——它们对应于 BNF 形式语法的规则。那么您的观察是有效的 - VP
的最后一条规则是指先前定义的规则。