Download data/ea/dbp_wiki/tutorial/entity_alignment/main.py from eduzrh/EvoRM: direct link, hf CLI and curl.
- Browser
- Download file 4.86 kB
-
https://huggingface.co/eduzrh/EvoRM/resolve/main/data/ea/dbp_wiki/tutorial/entity_alignment/main.py
- Command line
-
hf download hf://eduzrh/EvoRM/data/ea/dbp_wiki/tutorial/entity_alignment/main.py
-
curl -L -o main.py https://huggingface.co/eduzrh/EvoRM/resolve/main/data/ea/dbp_wiki/tutorial/entity_alignment/main.py
4.86 kB
| import argparse | |
| import os | |
| from openea.modules.load.kg import KG | |
| from openea.modules.load.read import read_relation_triples, read_links | |
| from mtranse import MTransEV2 | |
| from utils import read_items, MyKGs | |
| parser = argparse.ArgumentParser(description='NullEA') | |
| parser.add_argument('--training_data', type=str, default='./DBP2.0/zh_en/') | |
| parser.add_argument('--output', type=str, default='../../output/results/') | |
| parser.add_argument('--dataset_division', type=str, default='splits') | |
| parser.add_argument('--align_direction', type=str, default='left') | |
| parser.add_argument('--init', type=str, default='xavier') | |
| parser.add_argument('--alignment_module', type=str, default='mapping') | |
| parser.add_argument('--search_module', type=str, default='greedy') | |
| parser.add_argument('--neg_sampling', type=str, default='truncated', choices=['uniform', 'truncated']) | |
| parser.add_argument('--dim', type=int, default=128) | |
| parser.add_argument('--loss_norm', type=str, default='L2') | |
| parser.add_argument('--ent_l2_norm', type=bool, default=True) | |
| parser.add_argument('--rel_l2_norm', type=bool, default=True) | |
| parser.add_argument('--batch_size', type=int, default=20480) | |
| parser.add_argument('--embed_margin', type=float, default=1.5) | |
| parser.add_argument('--mapping_margin', type=float, default=1.0) | |
| parser.add_argument('--mapping_neg_num', type=int, default=1) | |
| parser.add_argument('--mapping_neg_weight', type=int, default=0.1) | |
| parser.add_argument('--neg_triple_num', type=int, default=1) | |
| parser.add_argument('--truncated_epsilon', type=float, default=0.9) | |
| parser.add_argument('--truncated_freq', type=int, default=10) | |
| parser.add_argument('--learning_rate', type=float, default=0.001) | |
| parser.add_argument('--optimizer', type=str, default='Adam') | |
| parser.add_argument('--batch_threads_num', type=int, default=4) | |
| parser.add_argument('--test_threads_num', type=int, default=1) | |
| parser.add_argument('--max_epoch', type=int, default=200) | |
| parser.add_argument('--eval_freq', type=int, default=10) | |
| parser.add_argument('--ordered', type=bool, default=True) | |
| parser.add_argument('--top_k', type=list, default=[1, 5, 10]) | |
| parser.add_argument('--eval_norm', type=bool, default=True) | |
| parser.add_argument('--start_valid', type=int, default=0) | |
| parser.add_argument('--stop_metric', type=str, default='mrr') | |
| parser.add_argument('--eval_metric', type=str, default='inner') | |
| args = parser.parse_args() | |
| print(args) | |
| def read_kgs_from_folder(training_data_folder, division, mode, ordered, direction): | |
| kg1_relation_triples, _, _ = read_relation_triples(training_data_folder + 'rel_triples_1') | |
| kg2_relation_triples, _, _ = read_relation_triples(training_data_folder + 'rel_triples_2') | |
| train_links = read_links(os.path.join(training_data_folder, division, 'train_links')) | |
| valid_links = read_links(os.path.join(training_data_folder, division, 'valid_links')) | |
| test_links = read_links(os.path.join(training_data_folder, division, 'test_links')) | |
| train_unlinked_ent1 = read_items(os.path.join(training_data_folder, division, 'train_unlinked_ent1')) | |
| valid_unlinked_ent1 = read_items(os.path.join(training_data_folder, division, 'valid_unlinked_ent1')) | |
| test_unlinked_ent1 = read_items(os.path.join(training_data_folder, division, 'test_unlinked_ent1')) | |
| train_unlinked_ent2 = read_items(os.path.join(training_data_folder, division, 'train_unlinked_ent2')) | |
| valid_unlinked_ent2 = read_items(os.path.join(training_data_folder, division, 'valid_unlinked_ent2')) | |
| test_unlinked_ent2 = read_items(os.path.join(training_data_folder, division, 'test_unlinked_ent2')) | |
| kg1 = KG(kg1_relation_triples, set()) | |
| kg2 = KG(kg2_relation_triples, set()) | |
| if direction == "left": | |
| two_kgs = MyKGs(kg1, kg2, train_links, test_links, | |
| train_unlinked_ent1, valid_unlinked_ent1, test_unlinked_ent1, | |
| train_unlinked_ent2, valid_unlinked_ent2, test_unlinked_ent2, | |
| valid_links=valid_links, mode=mode, ordered=ordered) | |
| else: | |
| assert direction == "right" | |
| train_links_rev = [(e2, e1) for e1, e2 in train_links] | |
| test_links_rev = [(e2, e1) for e1, e2 in test_links] | |
| valid_links_rev = [(e2, e1) for e1, e2 in valid_links] | |
| two_kgs = MyKGs(kg2, kg1, train_links_rev, test_links_rev, | |
| train_unlinked_ent2, valid_unlinked_ent2, test_unlinked_ent2, | |
| train_unlinked_ent1, valid_unlinked_ent1, test_unlinked_ent1, | |
| valid_links=valid_links_rev, mode=mode, ordered=ordered) | |
| return two_kgs | |
| if __name__ == '__main__': | |
| kgs = read_kgs_from_folder(args.training_data, args.dataset_division, args.alignment_module, | |
| args.ordered, args.align_direction) | |
| model = MTransEV2() | |
| model.set_args(args) | |
| model.set_kgs(kgs) | |
| model.init() | |
| model.run() | |
| model.test() | |