Spaces:
Running
Running
from functools import cmp_to_key | |
from compare_significance import check_significance | |
class ModelCompare(): | |
TASKS = ["propaganda_demonizace", | |
"propaganda_vina", | |
"propaganda_relativizace", | |
"propaganda_argumentace", | |
"propaganda_lokace", | |
"propaganda_nazor", | |
"propaganda_emoce", | |
"propaganda_fabulace", | |
"propaganda_nalepkovani", | |
"propaganda_zamereni", | |
"propaganda_zanr", | |
"propaganda_rusko", | |
"propaganda_strach", | |
"benczechmark_sentiment"] | |
def __init__(self, ranks:dict=None): | |
self.ranks = ranks | |
def compare_models(self, modelA_id, modelB_id): | |
if not self.ranks: | |
raise Exception("Missing model rankings") | |
res = self.ranks[modelA_id][modelB_id][self.current_task] | |
if res == True: | |
return 1 | |
elif res == False: | |
return -1 | |
else: | |
return -1 | |
def get_tasks_ranks(self, ranks:dict) -> dict: | |
'''Order models based on the significance improvement''' | |
self.ranks = ranks | |
tasks_ranks = {} | |
models = ranks.keys() | |
for task in self.TASKS: | |
self.current_task = task | |
tasks_ranks[task] = sorted(models, key=cmp_to_key(self.compare_models)) | |
return tasks_ranks | |
# models = { | |
# model1 : { | |
# task1 : order_idx | |
# task2 : order_idx | |
# task3 : order_idx | |
# } | |
# } | |