1
from __future__ import annotations
5
from mteb.evaluation.evaluators import RerankingEvaluator
10
class TestRerankingEvaluator:
11
def setup_method(self):
12
"""Setup any state tied to the execution of the given method in a class.
14
setup_method is invoked for every test method of a class.
16
self.evaluator = RerankingEvaluator([])
18
def test_mrr_at_k(self):
19
is_relevant = [1, 1, 1, 0, 0, 0, 0, 0, 0]
20
pred_ranking = [5, 2, 6, 1, 3, 4, 7, 8, 9]
22
assert self.evaluator.mrr_at_k_score(
23
is_relevant, pred_ranking, 10
24
) == pytest.approx(0.5, TOL)
25
assert self.evaluator.mrr_at_k_score(
26
is_relevant, pred_ranking, 3
27
) == pytest.approx(0.5, TOL)
28
assert self.evaluator.mrr_at_k_score(
29
is_relevant, pred_ranking, 1
30
) == pytest.approx(0, TOL)
33
is_relevant = [1, 1, 1, 0, 0]
34
pred_scores = [0.75, 0.93, 0.85, 0.76, 0.75]
36
assert self.evaluator.ap_score(is_relevant, pred_scores) == pytest.approx(