def test(self, save=True): embedding = self.sess.run(self.output) embeds1 = np.array([embedding[e] for e in self.kgs.test_entities1]) embeds2 = np.array([embedding[e] for e in self.kgs.test_entities2]) rest_12, _, _ = test(embeds1, embeds2, None, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=0, accurate=True) test(embeds1, embeds2, None, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=self.args.csls, accurate=True) if save: ent_ids_rest_12 = [(self.kgs.test_entities1[i], self.kgs.test_entities2[j]) for i, j in rest_12] rd.save_results(self.out_folder, ent_ids_rest_12)
def test(self, save=True): if self.args.test_method == "sa": beta = self.args.beta embeddings = np.concatenate( [self.vec_se * beta, self.vec_ae * (1.0 - beta)], axis=1) else: embeddings = self.vec_se embeds1 = np.array([embeddings[e] for e in self.kgs.test_entities1]) embeds2 = np.array([embeddings[e] for e in self.kgs.test_entities2]) rest_12, _, _ = test(embeds1, embeds2, None, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=0, accurate=True) test(embeds1, embeds2, None, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=self.args.csls, accurate=True) if save: rd.save_results(self.out_folder, rest_12)
def test(self, save=True): embeds1, embeds2, mapping = self._eval_test_embeddings() rest_12, _, _ = test(embeds1, embeds2, mapping, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=0, accurate=True) test(embeds1, embeds2, mapping, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=self.args.csls, accurate=True) if save: ent_ids_rest_12 = [(self.kgs.test_entities1[i], self.kgs.test_entities2[j]) for i, j in rest_12] rd.save_results(self.out_folder, ent_ids_rest_12)
def test_desc(self): print("test desc") test_links = pd.DataFrame(self.kgs.test_links) desc1 = self.e_desc.loc[test_links.values[:, 0]].values desc2 = self.e_desc.loc[test_links.values[:, 1]].values desc_em1 = self.word_em[desc1] desc_em2 = self.word_em[desc2] dem1, dem2 = self.session.run(fetches=[self.desc_embedding1, self.desc_embedding2], feed_dict={self.desc1: desc_em1, self.desc2: desc_em2}) test(dem1, dem2, None, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=self.args.csls, accurate=True)
def test(self, save=True): embeds1, embeds2, mapping = self._eval_test_embeddings() rest_12, _, _ = test(embeds1, embeds2, mapping, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=0, accurate=True) test(embeds1, embeds2, mapping, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=self.args.csls, accurate=True) if save: rd.save_results(self.out_folder, rest_12)
def test(self, save=True): mat = get_ent_embeds_from_attributes(self.kgs, self.eval_attribute_embeddings(), self.selected_attributes) embeds1 = mat[self.kgs.test_entities1, ] embeds2 = mat[self.kgs.test_entities2, ] rest_12, _, _, rest_21, _, _ = evaluation.test( embeds1, embeds2, None, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, csls_k=self.args.csls) if save: read.save_results(self.out_folder, rest_12)
def retest(self): dir = self.out_folder.split("/") new_dir = "" for i in range(len(dir) - 2): new_dir += (dir[i] + "/") exist_file = os.listdir(new_dir) new_dir = new_dir + exist_file[0] + "/" embeds = np.load(new_dir + "ent_embeds.npy") embeds1 = embeds[self.kgs.test_entities1] embeds2 = embeds[self.kgs.test_entities2] mapping = None print(self.__class__.__name__, type(self.__class__.__name__)) if self.__class__.__name__ == "GCN_Align": print(self.__class__.__name__, "loads attr embeds") attr_embeds = np.load(new_dir + "attr_embeds.npy") attr_embeds1 = attr_embeds[self.kgs.test_entities1] attr_embeds2 = attr_embeds[self.kgs.test_entities2] embeds1 = np.concatenate([embeds1 * self.args.beta, attr_embeds1 * (1.0 - self.args.beta)], axis=1) embeds2 = np.concatenate([embeds2 * self.args.beta, attr_embeds2 * (1.0 - self.args.beta)], axis=1) # if self.__class__.__name__ == "MTransE" or self.__class__.__name__ == "SEA" or self.__class__.__name__ == "KDCoE": if os.path.exists(new_dir + "mapping_mat.npy"): print(self.__class__.__name__, "loads mapping mat") mapping = np.load(new_dir + "mapping_mat.npy") print("conventional test:") test(embeds1, embeds2, mapping, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=0, accurate=True) print("conventional reversed test:") if mapping is not None: embeds1 = np.matmul(embeds1, mapping) test(embeds2, embeds1, None, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=0, accurate=True) else: test(embeds2, embeds1, mapping, self.args.top_k, self.args.test_threads_num, metric=self.args.eval_metric, normalize=self.args.eval_norm, csls_k=0, accurate=True) print("stable test:") stable_alignment(embeds1, embeds2, self.args.eval_metric, self.args.eval_norm, csls_k=0, nums_threads=self.args.test_threads_num) print("stable test with csls:") stable_alignment(embeds1, embeds2, self.args.eval_metric, self.args.eval_norm, csls_k=self.args.csls, nums_threads=self.args.test_threads_num)