Initial commit
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import csv
|
||||
from pathlib import Path
|
||||
|
||||
from reflact.datasets.base import SplitDataLoader
|
||||
|
||||
|
||||
def _normalize_row(row: dict[str, str], index: int) -> dict:
|
||||
canary = str(row.get('canary') or '').strip()
|
||||
base_id = str(row.get('question_id') or row.get('id') or '').strip()
|
||||
if not base_id:
|
||||
base_id = f"{canary or 'sealqa'}:{index:04d}"
|
||||
return {
|
||||
'id': base_id,
|
||||
'question': str(row.get('question') or '').strip(),
|
||||
'ground_truth': str(row.get('answer') or row.get('ground_truth') or '').strip(),
|
||||
'answers': [str(row.get('answer') or row.get('ground_truth') or '').strip()],
|
||||
'task_type': str(row.get('topic') or 'sealqa').strip() or 'sealqa',
|
||||
'topic': str(row.get('topic') or 'sealqa').strip() or 'sealqa',
|
||||
'urls': str(row.get('urls') or '').strip(),
|
||||
'search_results': str(row.get('search_results') or '').strip(),
|
||||
'freshness': str(row.get('freshness') or '').strip(),
|
||||
'question_types': str(row.get('question_types') or '').strip(),
|
||||
'canary': canary,
|
||||
}
|
||||
|
||||
|
||||
class SealQADataLoader(SplitDataLoader):
|
||||
def load_split_items(self, split_path: str) -> list[dict]:
|
||||
path = Path(split_path)
|
||||
csv_files = sorted(path.glob('*.csv'))
|
||||
if not csv_files:
|
||||
raise FileNotFoundError(f'No .csv file found in {split_path}')
|
||||
with csv_files[0].open(encoding='utf-8', newline='') as f:
|
||||
reader = csv.DictReader(f)
|
||||
return [_normalize_row(row, idx) for idx, row in enumerate(reader, start=1)]
|
||||
Reference in New Issue
Block a user