def tree_generate(node_name, index, pos, dependency_list, visited_list, reverse=False): """Generating a tree from the node name given :type index: int :type pos: str :type visited_list: list :type node_name: str :type dependency_list: list """ node = Node(node_name, pos, index=index) visited_list += [index] kids_index_name_pos = [(d[1][0], d[1][1], d[1][2]) for d in dependency_list if d[0][0] == index] for x in kids_index_name_pos: if x in visited_list: node.value = 1 node.addkid(Node(label=x[1], index=x[0], pos=x[2])) else: node.addkid( tree_generate(x[1], x[0], x[2], dependency_list, visited_list)) visited_list += [x] else: if Node.get_children(node): node.value += sum([g.value for g in Node.get_children(node)]) # print node.label, node.value, node.pos node.children.sort(key=lambda x: x.label, reverse=reverse) return node
def tree_generate(node_name, index, pos, dependency_list, visited_list, reverse=False): """Generating a tree from the node name given :type index: int :type pos: str :type visited_list: list :type node_name: str :type dependency_list: list """ node = Node(node_name, pos, index=index) visited_list += [index] kids_index_name_pos = [(d[1][0], d[1][1], d[1][2]) for d in dependency_list if d[0][0] == index] for x in kids_index_name_pos: if x in visited_list: node.value = 1 node.addkid(Node(label=x[1], index=x[0], pos=x[2])) else: node.addkid(tree_generate(x[1], x[0], x[2], dependency_list, visited_list)) visited_list += [x] else: if Node.get_children(node): node.value += sum([g.value for g in Node.get_children(node)]) # print node.label, node.value, node.pos node.children.sort(key=lambda x: x.label, reverse=reverse) return node
def order_children(rootnode): if len(rootnode.children) == 0: return # order children of the rootnode rootnode.children = sorted(Node.get_children(rootnode), key=lambda c: c.label) for cnode in Node.get_children(rootnode): order_children(cnode)
def treetostr(self, node): l = Node.get_label(node) t = None if isinstance(l, tuple): t, l = l if t == 'O': return '%s(%s)' % (l, ', '.join( map(self.treetostr, Node.get_children(node)))) return l
def get_children(node): """Returns the children of node""" return Node.get_children(node)
def ts(node): return 1 + sum(map(ts, Node.get_children(node)))
import zss # from simple_tree import Node from zss import Node, simple_distance def buildTree(state, node, chart): if state[4] == (): return else: for ptr in state[4]: child = Node(chart[ptr[0]][ptr[1]][0]) node.addkid(child) buildTree(chart[ptr[0]][ptr[1]], child, chart) rootNode1 = Node("Start", []) buildTree(root1, rootNode1, chart1) rootNode2 = Node("Start", []) buildTree(root2, rootNode2, chart2) print simple_distance(rootNode1, rootNode2) # for child in rootNode1.get_children(): # for chichild in child.get_children(): # print "parent is: ", chichild.get_label() # for chichichild in chichild.get_children(): # print chichichild.get_label() for child in Node.get_children(rootNode1): print Node.get_label(child)
def print_tree(node, tab_level=0): print(" " * tab_level, node.label) children = Node.get_children(node) for child in children: print_tree(child, tab_level + 1)