mochirank / offline /_aggregate_labels.py
DawnOfJustize's picture
Initial HF Spaces deployment (orphan — no history)
7a9cfa1
Raw
History Blame Contribute Delete
1.7 kB
import json, csv
from pathlib import Path
results_dir = Path('C:/Users/salos/OneDrive/Desktop/MochiRank/data/label_results')
output_path = Path('C:/Users/salos/OneDrive/Desktop/MochiRank/data/teacher_labels.csv')
all_labels = []
missing = []
errors = []
for i in range(250):
padded = str(i).zfill(3)
p = results_dir / f'result_{padded}.json'
if not p.exists():
missing.append(padded)
continue
try:
with open(p, encoding='utf-8-sig') as f:
data = json.load(f)
if isinstance(data, list):
all_labels.extend(data)
elif isinstance(data, dict) and 'labels' in data:
all_labels.extend(data['labels'])
elif isinstance(data, dict):
for key in ('results', 'candidates', 'scores'):
if key in data:
all_labels.extend(data[key])
break
except Exception as e:
errors.append((padded, str(e)))
print(f'Loaded {len(all_labels)} labels from {250 - len(missing)} files')
if missing:
print(f'Missing {len(missing)} batches: {missing[:10]}')
if errors:
print(f'Parse errors in {len(errors)} files: {errors[:5]}')
output_path.parent.mkdir(exist_ok=True)
with open(output_path, 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['candidate_id','score','rationale','stratum'], extrasaction='ignore')
writer.writeheader()
writer.writerows(all_labels)
print(f'Saved {output_path} with {len(all_labels)} rows')
score_dist = {}
for lbl in all_labels:
s = str(lbl.get('score', '?'))
score_dist[s] = score_dist.get(s, 0) + 1
print('Score distribution:', dict(sorted(score_dist.items())))