def traverseTree(self, tree): if type(tree) is Tree: print "LABEL: " + tree.label() if tree.label() == "ROOT": return self.traverseTree(tree[0]) #elif tree.label() == "S": # return self.traverseTree(tree[0]) else: p = Phrase() p.type = tree.label() word_idx = 0 for subtree in tree: if type(subtree) == Tree: if is_pos_type( subtree.label() ): w = Word() w.type = subtree.label() w.order = word_idx w.text = str( subtree[0] ) word_idx += 1 p.words.append(w) elif is_phrase_type( subtree.label() ): child_phrase = self.traverseTree( subtree ) p.children.append(child_phrase) return p return None