Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
 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)
Beispiel #7
0
    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)