def read_tree(self, parent_line, token_line): parents = list(map(lambda x: int(x) - 1,parent_line.split())) tokens = token_line.strip().split() tree_nodes = dict() root = None for i in range(len(parents)): crnt_node_id = i if crnt_node_id not in tree_nodes.keys(): prev_node = None while True: if crnt_node_id == -1: break parent_node_id = parents[crnt_node_id] crnt_node = TreeNode() if prev_node is not None: crnt_node.add_child(prev_node) tree_nodes[crnt_node_id] = crnt_node crnt_node.idx = crnt_node_id crnt_node.token = tokens[crnt_node_id] #if trees[parent-1] is not None: if parent_node_id in tree_nodes.keys(): tree_nodes[parent_node_id].add_child(crnt_node) break elif parent_node_id == -1: root = crnt_node break else: prev_node = crnt_node crnt_node_id = parent_node_id return root