-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsummary.py
More file actions
61 lines (54 loc) · 1.99 KB
/
Copy pathsummary.py
File metadata and controls
61 lines (54 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import mteb
import json
import os
import sys
from src.embedding_models_wrapper import STWrapper
import lmeb_benchmark
from mteb.benchmarks import get_benchmark
path = sys.argv[1]
results_list = os.listdir(path)
benchmark = "LMEB"
if len(sys.argv) > 2:
benchmark = sys.argv[2]
metric = "main_score"
if len(sys.argv) > 3:
metric = sys.argv[3]
results = {}
def get_tasks(names: list[str] | None, languages: list[str] | None = None, benchmark: str | None = None):
if benchmark:
tasks = mteb.get_benchmark(benchmark).tasks
else:
tasks = mteb.get_tasks(languages=languages, tasks=names)
return tasks
tasks = get_tasks(names=None, languages=None, benchmark=benchmark)
names = [t.metadata.name for t in tasks]
tasks = {name: task for name, task in zip(names, tasks)}
print('names', names)
split_tasks = {}
for task in results_list:
if task.split(".json")[0] not in names:
continue
name = task.split(".json")[0]
meta = tasks[name].metadata
with open(os.path.join(path, task)) as f:
result = json.load(f)
task_type = tasks[name].MemType
eval_split = list(result['scores'].keys())[0]
score = sum([ele[metric] for ele in result['scores'][eval_split]]) / len(result['scores'][eval_split])
results[name] = score
if task_type not in split_tasks:
split_tasks[task_type] = []
split_tasks[task_type].append(score)
final_scores = sum(results.values()) / len(results)
missed_tasks = [name for name in names if name not in results]
print('metric', metric)
print('missed tasks', missed_tasks)
print('Mean (Dataset)', len(results), round(final_scores*100, 2))
scores = []
for task_type in split_tasks:
print(task_type, len(split_tasks[task_type]), round(sum(split_tasks[task_type]) / len(split_tasks[task_type]) * 100, 2))
score = sum(split_tasks[task_type]) / len(split_tasks[task_type])
scores.append(score)
print('Mean (Type)', round(sum(scores) / len(scores)*100, 2))
for name in results:
print(name, round(results[name]*100, 2))