def add_inverse_edge_vectors(self): print 'adding edge vectors for inverse edge labels ...' assert self.edge_vectors_map is not None and self.edge_vectors_map num_edge_labels = len(self.edge_vectors_map) edge_labels_list = self.edge_vectors_map.keys() print 'edge_labels_list', edge_labels_list for curr_edge_label in edge_labels_list: print '**********************************' # curr_edge_label_inverse = el.get_inverse_of_edge_label(curr_edge_label) print '({},{})'.format(curr_edge_label, curr_edge_label_inverse) # if not self.is_overwrite: assert curr_edge_label_inverse not in self.edge_vectors_map, 'inverse edge label already present' # curr_edge_label_vec = self.edge_vectors_map[curr_edge_label] assert len(curr_edge_label_vec.shape) == 1 assert curr_edge_label_vec.shape[0] == 10000 # curr_edge_label_matrix = curr_edge_label_vec.reshape(100,100) curr_edge_label_vec = None print 'curr_edge_label_matrix', curr_edge_label_matrix # curr_edge_label_matrix_inv = np.linalg.pinv(curr_edge_label_matrix) curr_edge_label_matrix = None print 'curr_edge_label_matrix_inv', curr_edge_label_matrix_inv # curr_edge_label_vec_inverse = curr_edge_label_matrix_inv.flatten() curr_edge_label_matrix_inv = None self.edge_vectors_map[curr_edge_label_inverse] = curr_edge_label_vec_inverse # assert len(self.edge_vectors_map) == 2*num_edge_labels
def process_dot_file_fr_edgelabel_nodes_map(self, curr_amr_dot_file): nodes = self.get_nodes_frm_dot_file(curr_amr_dot_file) #iterate over each child of each node to add the tuple in a map with key representing edge label and list of tuples as a value for curr_node in nodes.itervalues(): for curr_children_key in curr_node.children: if curr_children_key.lower().endswith('-of'): curr_children_key_inv = el.get_inverse_of_edge_label(curr_children_key) is_inverse_edge = True else: curr_children_key_inv = curr_children_key is_inverse_edge = False if curr_children_key_inv not in self.edgelabel_nodes_map: self.edgelabel_nodes_map[curr_children_key_inv] = [] for child in curr_node.children[curr_children_key]: if is_inverse_edge: curr_tuple = (curr_node.get_name_formatted(), child.get_name_formatted()) else: curr_tuple = (child.get_name_formatted(), curr_node.get_name_formatted()) if curr_tuple not in self.edgelabel_nodes_map[curr_children_key_inv]: self.edgelabel_nodes_map[curr_children_key_inv].append(curr_tuple)