एक पेड़ से नेविगेट करने के How to iterate through all nodes of a tree? और How to navigate a nltk.tree.Tree? देखते हैं, पहले:
>>> from nltk.tree import Tree
>>> bracket_parse = "(S (VP (VB get) (NP (PRP me)) (ADVP (RB now))))"
>>> ptree = Tree.fromstring(bracket_parse)
>>> ptree
Tree('S', [Tree('VP', [Tree('VB', ['get']), Tree('NP', [Tree('PRP', ['me'])]), Tree('ADVP', [Tree('RB', ['now'])])])])
>>> for subtree in ptree.subtrees():
... print subtree
...
(S (VP (VB get) (NP (PRP me)) (ADVP (RB now))))
(VP (VB get) (NP (PRP me)) (ADVP (RB now)))
(VB get)
(NP (PRP me))
(PRP me)
(ADVP (RB now))
(RB now)
और क्या आप देख रहे हैं https://github.com/nltk/nltk/blob/develop/nltk/tree.py#L341 है:
>>> ptree.productions()
[S -> VP, VP -> VB NP ADVP, VB -> 'get', NP -> PRP, PRP -> 'me', ADVP -> RB, RB -> 'now']
ध्यान दें कि Tree.productions()
रिटर्न एक Production
वस्तु https://github.com/nltk/nltk/blob/develop/nltk/tree.py#L22 देख सकते हैं और https://github.com/nltk/nltk/blob/develop/nltk/grammar.py#L236।
आप व्याकरण के नियमों की एक स्ट्रिंग रूप चाहते हैं, तो आप या तो कर सकते हैं:
>>> for rule in ptree.productions():
... print rule
...
S -> VP
VP -> VB NP ADVP
VB -> 'get'
NP -> PRP
PRP -> 'me'
ADVP -> RB
RB -> 'now'
या
>>> rules = [str(p) for p in ptree.productions()]
>>> rules
['S -> VP', 'VP -> VB NP ADVP', "VB -> 'get'", 'NP -> PRP', "PRP -> 'me'", 'ADVP -> RB', "RB -> 'now'"]