Source code for eval_framework.benchmarks.arc_de
"""ARC German (ARC-DE)."""
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.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 ClozeStyle, answer_key_to_index
[docs]
@final
class ArcDeReader(ChoiceReader):
"""Reads an ARC-DE row into choice fields: the German question, its answer texts, and the correct index.
``answerKey`` arrives as either a 1-based number or a letter; ``answer_key_to_index`` normalises both,
which also frees the reader from caring how many answers a given row offers.
"""
[docs]
@override
def read(self, item: dict[str, Any]) -> ChoiceFields:
return ChoiceFields(
raw_question=item["question_de"],
choices=item["choices_de"]["text"],
correct_index=answer_key_to_index(item["answerKey"]),
)
[docs]
def arc_de(dataset: DatasetPolicy | None = None) -> Benchmark:
"""ARC-DE as cloze/ranked classification.
https://huggingface.co/datasets/LeoLM/ArcChallenge_de
"""
dataset_policy = dataset if dataset is not None else pinned_by_framework("LeoLM/ArcChallenge_de")
return ComposedBenchmark.choice(
id="ARC_DE",
display_name="ARC German",
reader=ArcDeReader(),
styler=ClozeStyle(question_prefix="Frage: ", cue_text="Antwort:"),
sample_split="test",
fewshot_split="validation",
dataset_policy=dataset_policy,
language=Language.DEU,
)
ARC_DE_BENCHMARK: Benchmark = arc_de()