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
def from_xml(self, node, doc): self.type = node.nodeName for c in node.childNodes: if c.nodeType == c.ELEMENT_NODE: if is_phrase_type( c.nodeName ): p = Phrase() p.from_xml( c, doc ) self.children.append( p ) elif is_pos_type( c.nodeName ): w = Word() w.from_xml( c, doc ) self.words.append( w )