如何提取带括号分析的语法产生规则?

Pro*_*ltk 3 python parsing nlp nltk context-free-grammar

我有一个例句。“开门。” 我解析了一个句子以获取括号内的解析输出,如下所示。

(S(VP(VB打开)(NP(DT the)(NN门)))(..))

我需要提取产生已解析输出的CFG语法规则。我可以这样手动将它们写出来:

grammar = CFG.fromstring("""   
S -> VP NP   
NP -> Det N   
VP -> V   
Det ->'the '   
N -> 'door'   
V -> 'Open'   
""")  
Run Code Online (Sandbox Code Playgroud)

但这很耗时,如何自动生成带括号的语法规则?

RAV*_*AVI 5

您可以使用Tree.productions()方法从Tree获取CFG规则。

例:

from nltk import Tree

t = Tree.fromstring("(S (VP (VB open) (NP (DT the) (NN door))) (. .))")
print t.productions()
Run Code Online (Sandbox Code Playgroud)

输出:

[S -> VP ., VP -> VB NP, VB -> 'open', NP -> DT NN, DT -> 'the', 
 NN -> 'door', . -> '.']
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请检查-NLTK Tree Productions