Source code for eval_framework.benchmarks.arc_ellamind

"""German ARC (EllaMind): https://huggingface.co/datasets/ellamind/arc-multilingual

Grade-school science questions in German. Every slice loads the single German config (``deu``); the
ARC-Easy and ARC-Challenge subjects are the rows of that config tagged by the ``arc_config`` column. Cloze
scores the full answer text, MC the letter labels, BPB only the ground-truth answer's bits-per-byte.
"""

from typing import Any, final, override

from eval_framework.choices import ChoiceFields, ChoiceReader
from eval_framework.composed import ComposedBenchmark
from eval_framework.contract import Benchmark
from eval_framework.subjects import ListOfSubjects
from eval_framework.tasks.base import Language
from eval_framework.tasks.dataset_loading import DatasetPolicy
from eval_framework.tasks.dataset_revisions import pinned_by_framework
from eval_framework.tasks.task_style import BPBStyle, ClozeStyle, MCStyle, TaskStyler, answer_key_to_index


[docs] @final class ArcEllamindReader(ChoiceReader): """Reads a German ARC item: the question and its answer options, with the correct one at ``answer_key`` (a letter A–E or a 1-based number)."""
[docs] @override def read(self, item: dict[str, Any]) -> ChoiceFields: return ChoiceFields( raw_question=item["question"], choices=item["choices"], correct_index=answer_key_to_index(item["answer_key"]), )
def _arc_ellamind_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark: # ARC-Easy and ARC-Challenge share the single "deu" config, tagged by the ``arc_config`` column. source = ( dataset if dataset is not None else pinned_by_framework("ellamind/arc-multilingual").subject_encoded_in_column( config="deu", column="arc_config" ) ) return ComposedBenchmark.choice( id=id, reader=ArcEllamindReader(), styler=styler, sample_split="test", fewshot_split="test", subjects=ListOfSubjects(["ARC-Easy", "ARC-Challenge"]), dataset_policy=source, language=Language.DEU, )
[docs] def arc_ellamind_cloze_de(dataset: DatasetPolicy | None = None) -> Benchmark: return _arc_ellamind_benchmark("ARC_ELLAMIND_CLOZE_DE", ClozeStyle.for_language(Language.DEU), dataset)
[docs] def arc_ellamind_mc_de(dataset: DatasetPolicy | None = None) -> Benchmark: return _arc_ellamind_benchmark("ARC_ELLAMIND_MC_DE", MCStyle.for_language(Language.DEU), dataset)
[docs] def arc_ellamind_bpb_de(dataset: DatasetPolicy | None = None) -> Benchmark: return _arc_ellamind_benchmark("ARC_ELLAMIND_BPB_DE", BPBStyle.for_language(Language.DEU), dataset)
ARC_ELLAMIND_BENCHMARKS: list[Benchmark] = [ arc_ellamind_cloze_de(), arc_ellamind_mc_de(), arc_ellamind_bpb_de(), ]