patrickvonplaten commited on
Commit
69b4144
1 Parent(s): 2e20d2b
Files changed (1) hide show
  1. load_all_model_info.py +93 -0
load_all_model_info.py ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ from huggingface_hub import HfApi, hf_hub_download
3
+ from huggingface_hub.repocard import metadata_load
4
+
5
+ import pandas as pd
6
+
7
+ METRICS_TO_NOT_DISPLAY = set(["ser"])
8
+ NO_LANGUAGE_MODELS = []
9
+
10
+ api = HfApi()
11
+ models = api.list_models(filter="robust-speech-event")
12
+
13
+ model_ids = [x.modelId for x in models]
14
+
15
+ metadatas = {}
16
+
17
+ for model_id in model_ids:
18
+ readme_path = hf_hub_download(model_id, filename="README.md")
19
+ metadatas[model_id] = metadata_load(readme_path)
20
+
21
+
22
+ all_model_results = {}
23
+ # model_id
24
+ # - dataset
25
+ # - metric
26
+ model_language_map = {}
27
+ # model_id: lang
28
+ for model_id, metadata in metadatas.items():
29
+ if "language" not in metadata:
30
+ NO_LANGUAGE_MODELS.append(model_id)
31
+ continue
32
+ lang = metadata["language"]
33
+ model_language_map[model_id] = lang if isinstance(lang, list) else [lang]
34
+ if "model-index" not in metadata:
35
+ all_model_results[model_id] = None
36
+ else:
37
+ result_dict = {}
38
+ for result in metadata["model-index"][0]["results"]:
39
+ dataset = result["dataset"]["type"]
40
+ metrics = [x["type"] for x in result["metrics"]]
41
+ values = [x["value"] if "value" in x else None for x in result["metrics"]]
42
+ result_dict[dataset] = {k: v for k, v in zip(metrics, values)}
43
+
44
+ all_model_results[model_id] = result_dict
45
+
46
+ # get all datasets
47
+ all_datasets = set(sum([list(x.keys()) for x in all_model_results.values() if x is not None], []))
48
+ all_langs = set(sum(list(model_language_map.values()), []))
49
+
50
+ # get all metrics
51
+ all_metrics = []
52
+ for metric_result in all_model_results.values():
53
+ if metric_result is not None:
54
+ all_metrics += sum([list(x.keys()) for x in metric_result.values()], [])
55
+
56
+ all_metrics = set(all_metrics) - METRICS_TO_NOT_DISPLAY
57
+
58
+ # get results table (one table for each dataset, metric)
59
+ all_datasets_results = {}
60
+ pandas_datasets = {}
61
+ for dataset in all_datasets:
62
+ all_datasets_results[dataset] = {}
63
+ pandas_datasets[dataset] = {}
64
+ for metric in all_metrics:
65
+ all_datasets_results[dataset][metric] = {}
66
+ pandas_datasets[dataset][metric] = {}
67
+ for lang in all_langs:
68
+ all_datasets_results[dataset][metric][lang] = {}
69
+ results = {}
70
+ for model_id, model_result in all_model_results.items():
71
+ is_relevant = lang in model_language_map[model_id] and model_result is not None and dataset in model_result and metric in model_result[dataset]
72
+ if not is_relevant:
73
+ continue
74
+
75
+ result = model_result[dataset][metric]
76
+ if isinstance(result, str):
77
+ "".join(result.split("%"))
78
+ try:
79
+ result = float(result)
80
+ except:
81
+ result = None
82
+ elif isinstance(result, float) and result < 1.0:
83
+ # assuming that WER is given in 0.13 format
84
+ result = 100 * result
85
+ results[model_id] = round(result, 2) if result is not None else None
86
+
87
+ results = dict(sorted(results.items(), key=lambda item: (item[1] is None, item[1])))
88
+ all_datasets_results[dataset][metric][lang] = [f"{k}: {v}" for k, v in results.items()]
89
+
90
+ data = all_datasets_results[dataset][metric]
91
+ data_frame = pd.DataFrame.from_dict(data, orient="index")
92
+ data_frame.fillna("", inplace=True)
93
+ pandas_datasets[dataset][metric] = data_frame