Spaces:
Running
Running
import json | |
import glob | |
import re | |
def has_word(sentence, word): | |
pattern = r"\b" + re.escape(word) + r"\b" | |
match = re.search(pattern, sentence) | |
if match: | |
return True | |
else: | |
return False | |
def remove_special_chars(s): | |
pattern = r"[^a-zA-Z0-9\s]" | |
s = re.sub(pattern, "", s) | |
return s | |
for model in glob.glob('./answer_save/*'): | |
print(model, ':') | |
result_list = sorted(glob.glob(f'{model}/*.json')) | |
for task_result_path in result_list: | |
taskname = task_result_path.split('/')[-1] | |
taskname = taskname.split('.')[0] | |
if taskname not in ['IIIT5K', 'svt', 'IC13_857', 'IC15_1811', 'svtp', 'ct80', | |
'cocotext', 'ctw', 'totaltext', 'HOST']: | |
continue | |
correct = 0 | |
num = 0 | |
with open(task_result_path, 'r') as f: | |
dict = json.load(f)[:100] | |
for i in range(len(dict)): | |
gt_answers = dict[i]['gt_answers'] | |
answer = dict[i]['answer'] | |
gt_answers = remove_special_chars(gt_answers).lower() | |
answer = remove_special_chars(answer).lower() | |
if has_word(answer, gt_answers): | |
correct+=1 | |
num+=1 | |
print(f'{taskname:10s}:{float(correct)/num*100:.2f}') | |
print('=' * 32) | |