43 lines
1.7 KiB
Python

"""TriviaQA (official source: mandarjoshi/trivia_qa, rc.wikipedia config).
rc.wikipedia = reading-comprehension WITH the Wikipedia evidence document
(open-book, aligned with evalscope's default); rc.nocontext is the
closed-book variant (pass --subset rc.nocontext).
"""
from ..sample import Sample
from ..registry import register_dataset
from ..spec import DatasetSpec
@register_dataset(
DatasetSpec(
name='trivia_qa',
source='mandarjoshi/trivia_qa', # official: https://huggingface.co/datasets/mandarjoshi/trivia_qa
subset='rc.wikipedia', # open-book (evalscope parity); --subset rc.nocontext for closed
split='validation',
prompt_style='trivia_es', # es open-book template
task_type='qa',
tags=['knowledge', 'openqa'],
description='TriviaQA with Wikipedia evidence (open-book); any alias counts.',
)
)
def trivia_qa():
def to_sample(record: dict) -> Sample:
answer = record['answer'] # {'value': ..., 'aliases': [...], ...}
targets = [answer['value']] + list(answer.get('aliases') or [])
# open-book (es parity): the FULL wiki_context list goes into the
# prompt as Content (es adapter: record['entity_pages']['wiki_context'])
entity = record.get('entity_pages') or {}
# keep the native shape (list[str] in real data); wrapping in list()
# would explode a bare string into chars -- es passes it through as-is
wiki_list = entity.get('wiki_context') or []
return Sample(
input=record['question'],
target=targets, # multi-target: any alias counts
metadata={'question_id': record.get('question_id'),
'evidence': wiki_list},
)
return to_sample