Download data/ea/dbp_wiki/tutorial/entity_alignment/utils.py from eduzrh/EvoRM: direct link, hf CLI and curl.
- Browser
- Download file 4.19 kB
-
https://huggingface.co/eduzrh/EvoRM/resolve/main/data/ea/dbp_wiki/tutorial/entity_alignment/utils.py
- Command line
-
hf download hf://eduzrh/EvoRM/data/ea/dbp_wiki/tutorial/entity_alignment/utils.py
-
curl -L -o utils.py https://huggingface.co/eduzrh/EvoRM/resolve/main/data/ea/dbp_wiki/tutorial/entity_alignment/utils.py
4.19 kB
| import itertools | |
| import numpy as np | |
| from openea.modules.load.kg import KG | |
| from openea.modules.load.kgs import KGs | |
| def find_alignment(sim_mat, k): | |
| nearest_k_neighbors = search_nearest_k(sim_mat, k) | |
| return nearest_k_neighbors | |
| def search_nearest_k(sim_mat, k): | |
| assert k > 0 | |
| neighbors = list() | |
| num = sim_mat.shape[0] | |
| for i in range(num): | |
| rank = np.argpartition(-sim_mat[i, :], k) | |
| pairs = [j for j in itertools.product([i], rank[0:k])] | |
| neighbors.append(pairs) | |
| assert len(neighbors) == num | |
| return neighbors | |
| def read_items(file_path): | |
| print("read items:", file_path) | |
| items = list() | |
| file = open(file_path, 'r', encoding='utf8') | |
| for line in file.readlines(): | |
| items.append(line.strip('\n').strip()) | |
| return items | |
| class MyKGs(KGs): | |
| def __init__(self, kg1: KG, kg2: KG, train_links, test_links, | |
| train_unlinked_entities1, valid_unlinked_entities1, test_unlinked_entities1, | |
| train_unlinked_entities2, valid_unlinked_entities2, test_unlinked_entities2, | |
| valid_links=None, mode='mapping', ordered=True): | |
| super().__init__(kg1, kg2, train_links, test_links, valid_links=valid_links, mode=mode, ordered=ordered) | |
| linked_label = 0. | |
| unlinked_label = 1. | |
| self.train_unlinked_entities1 = [(self.kg1.entities_id_dict.get(ent), unlinked_label) for ent in train_unlinked_entities1] | |
| self.valid_unlinked_entities1 = [(self.kg1.entities_id_dict.get(ent), unlinked_label) for ent in valid_unlinked_entities1] | |
| self.test_unlinked_entities1 = [(self.kg1.entities_id_dict.get(ent), unlinked_label) for ent in test_unlinked_entities1] | |
| self.train_linked_entities1 = [(ent, linked_label) for ent in self.train_entities1] | |
| self.valid_linked_entities1 = [(ent, linked_label) for ent in self.valid_entities1] | |
| self.test_linked_entities1 = [(ent, linked_label) for ent in self.test_entities1] | |
| self.train_null_data1 = self.train_unlinked_entities1 + self.train_linked_entities1 | |
| self.valid_null_data1 = self.valid_unlinked_entities1 + self.valid_linked_entities1 | |
| self.test_null_data1 = self.test_unlinked_entities1 + self.test_linked_entities1 | |
| print("training/valid/test/total null ea data in KG1:", | |
| len(self.train_null_data1), len(self.valid_null_data1), len(self.test_null_data1), | |
| len(self.train_null_data1) + len(self.valid_null_data1) + len(self.test_null_data1), | |
| self.kg1.entities_num) | |
| self.train_unlinked_entities2 = [(self.kg2.entities_id_dict.get(ent), unlinked_label) for ent in train_unlinked_entities2] | |
| self.valid_unlinked_entities2 = [(self.kg2.entities_id_dict.get(ent), unlinked_label) for ent in valid_unlinked_entities2] | |
| self.test_unlinked_entities2 = [(self.kg2.entities_id_dict.get(ent), unlinked_label) for ent in test_unlinked_entities2] | |
| self.train_linked_entities2 = [(ent, linked_label) for ent in self.train_entities2] | |
| self.valid_linked_entities2 = [(ent, linked_label) for ent in self.valid_entities2] | |
| self.test_linked_entities2 = [(ent, linked_label) for ent in self.test_entities2] | |
| self.train_null_data2 = self.train_unlinked_entities2 + self.train_linked_entities2 | |
| self.valid_null_data2 = self.valid_unlinked_entities2 + self.valid_linked_entities2 | |
| self.test_null_data2 = self.test_unlinked_entities2 + self.test_linked_entities2 | |
| print("training/valid/test/total null ea data in KG2:", | |
| len(self.train_null_data2), len(self.valid_null_data2), len(self.test_null_data2), | |
| len(self.train_null_data2) + len(self.valid_null_data2) + len(self.test_null_data2), | |
| self.kg2.entities_num) | |
| def viz_sim_list(sim_list, interval=0.1): | |
| num = int(1 / interval) | |
| nums = [] | |
| for i in range(num): | |
| nums.append(round(i * interval, 1)) | |
| nums.append(1.0) | |
| sim_nums = [0] * num | |
| for sim in sim_list: | |
| idx = int(sim * 10) | |
| sim_nums[idx] += 1 | |
| res = [] | |
| n_inst = len(sim_list) | |
| for sim in sim_nums: | |
| res.append(round(sim / n_inst, 3)) | |
| print(res) | |