# NLP | Creating Shallow Tree

Prerequisite: Flattening Deep Tree

We have flattened a Deep Tree by only keeping the lowest level subtrees. But here we can keep the highest level subtrees instead.

Code #1 : Lets’ understand shallow_tree()

 from nltk.tree import Tree    def shallow_tree(tree):         children = []                for t in tree:         if t.height() < 3:             children.extend(t.pos())     else:         children.append(Tree(t.label(), t.pos()))                return Tree(tree.label(), children)

Code #2 : Evaluating

 from transforms import shallow_tree from nltk.corpus import treebank     print ("Deep Tree : \n", treebank.parsed_sents()[0])    print ("\nShallow Tree : \n", shallow_tree(treebank.parsed_sents()[0]) )

Output :

Deep Tree :
(S
(NP-SBJ
(NP (NNP Pierre) (NNP Vinken))
(,, )
(ADJP (NP (CD 61) (NNS years)) (JJ old))
(,, ))
(VP
(MD will)
(VP
(VB join)
(NP (DT the) (NN board))
(PP-CLR (IN as) (NP (DT a) (JJ nonexecutive) (NN director)))
(NP-TMP (NNP Nov.) (CD 29))))
(. .))

Shallow Tree :
Tree('S', [Tree('NP-SBJ', [('Pierre', 'NNP'), ('Vinken', 'NNP'), (', ', ', '),
('61', 'CD'), ('years', 'NNS'), ('old', 'JJ'), (', ', ', ')]),
Tree('VP', [('will', 'MD'), ('join', 'VB'), ('the', 'DT'), ('board', 'NN'),
('as', 'IN'), ('a', 'DT'), ('nonexecutive', 'JJ'), ('director', 'NN'),
('Nov.', 'NNP'), ('29', 'CD')]), ('.', '.')])

How it works ?

• shallow_tree() function creates new child trees by iterating over each of the top-level subtrees.
• The subtree is replaced by a list of its part-of-speech tagged children, if the height() of a subtree is less than 3.
• If children of a tree are the part-of-speech tagged leaves, the All other subtrees are replaced by a new Tree.
• Thus, eliminates all the nested subtrees while still retaining the top-level subtrees.

Code #3 : height

 print ("height of tree : ",         treebank.parsed_sents()[0].height())    print ("\nheight of shallow tree : ",         shallow_tree(treebank.parsed_sents()[0]).height())

Output :

height of tree : 7

height of shallow tree :3

My Personal Notes arrow_drop_up

Aspire to Inspire before I expire

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.