Spaces:
Build error
Build error
import argparse | |
import os | |
import json | |
def main(): | |
parser = argparse.ArgumentParser() | |
parser.add_argument('map', metavar='MappingFile', type=str, help="Mapping JSON file.") | |
parser.add_argument('src', metavar='SourceFile', type=str, help="Results of span finder.") | |
parser.add_argument('dst', metavar='Destination', type=str, help="Output path.") | |
args = parser.parse_args() | |
assert os.path.exists(args.map), "Mapping file doesn't exist." | |
assert os.path.exists(args.src), "Rouce file not found." | |
k_raw = json.load(open(args.map)) | |
k_map = dict() | |
for kairos_event, content in k_raw.items(): | |
for fr in content['framenet']: | |
if fr['label'] in k_map: | |
print("Duplicate frame: " + fr['label']) | |
k_map[fr['label']] = kairos_event | |
inputs = list(map(json.loads, open(args.src).readlines())) | |
n_total = n_mapped = 0 | |
for line in inputs: | |
new_frames = list() | |
n_total += len(line['prediction']) | |
for fr in line['prediction']: | |
if fr['label'] in k_map: | |
fr['label'] = k_map[fr['label']] | |
new_frames.append(fr) | |
n_mapped += 1 | |
line['prediction'] = new_frames | |
with open(args.dst, 'w') as fp: | |
fp.write('\n'.join(map(json.dumps, inputs))) | |
print(f'Done. Among {n_total} frames, {n_mapped} are mapped to KAIROS ontology, others are omitted.') | |
if __name__ == '__main__': | |
main() | |