|
|
|
|
|
|
|
|
|
|
|
from typing import List, Tuple |
|
from enum import Enum |
|
|
|
|
|
|
|
|
|
from .kg_base_wrapper import KGBaseHandler |
|
from .swow_handler import SwowHandler |
|
from .conceptnet_handler import ConceptNetHandler |
|
from utils import read_json_file_2_dict, Data_Type |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class KGType(Enum): |
|
SWOW = 'swow' |
|
CSKG = 'cskg' |
|
CONCEPTNET = 'conceptnet' |
|
|
|
def load_kg_handler(kg_type: KGType): |
|
if kg_type.value == KGType.SWOW.value: |
|
return SwowHandler() |
|
elif kg_type.value == KGType.CONCEPTNET.value: |
|
return ConceptNetHandler() |
|
else: |
|
raise NotImplementedError() |
|
|
|
def _load_data_paths_metadata(): |
|
try: |
|
data = read_json_file_2_dict('data_config.json', store_dir='run_config') |
|
except: |
|
data = None |
|
return data |
|
|
|
def from_relations_path_2_relations(dataset_types: List[Data_Type], metadata): |
|
relations = [] |
|
print('metadata:', metadata) |
|
for dataset_type in dataset_types: |
|
qa_meta_data = metadata[dataset_type.value] |
|
filename_path, dir_data = qa_meta_data['local'] |
|
print(filename_path, dir) |
|
data = read_json_file_2_dict(filename_path, dir_data) |
|
relations.extend(data) |
|
return relations |
|
|
|
def KGHandler_to_str(kg_handler: KGBaseHandler) -> str: |
|
if isinstance(kg_handler, SwowHandler): |
|
return 'swow' |
|
elif isinstance(kg_handler, ConceptNetHandler): |
|
return 'conceptnet' |
|
else: |
|
raise NotImplementedError() |
|
|
|
def get_kg_qa_data_metadata(kg_handler: KGBaseHandler) -> Tuple[str, str]: |
|
kg_qa_data_path = _load_data_paths_metadata() |
|
if isinstance(kg_handler, SwowHandler): |
|
swow = kg_qa_data_path["swow"] |
|
return swow |
|
elif isinstance(kg_handler, ConceptNetHandler): |
|
conceptnet = kg_qa_data_path["conceptnet"] |
|
return conceptnet |
|
else: |
|
raise NotImplementedError() |