Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """Generate a standalone HTML demo from real teacher labels.""" | |
| import json | |
| from pathlib import Path | |
| from collections import defaultdict | |
| LABELS_FILE = Path("/Users/cccmmd/InfoLens/artifacts/tiny_nla/teacher_labels_hq.json") | |
| OUTPUT_HTML = Path("/Users/cccmmd/InfoLens/experiments/tiny_nla/demo_activation_translator.html") | |
| with open(LABELS_FILE) as f: | |
| labels = json.load(f) | |
| by_text = defaultdict(list) | |
| for r in labels: | |
| by_text[r["text_idx"]].append(r) | |
| sentences = [] | |
| for tid in sorted(by_text): | |
| recs = sorted(by_text[tid], key=lambda x: x["pos"]) | |
| sent = recs[0]["text"] | |
| tokens = [] | |
| for r in recs: | |
| tokens.append({ | |
| "text": r["token_text"], | |
| "pos": r["pos"], | |
| "top5": r["top_tokens"], | |
| "explanation": r["teacher_explanation"], | |
| "norm": round(r["activation_norm"], 1), | |
| }) | |
| sentences.append({"text": sent, "tokens": tokens}) | |
| if len(sentences) >= 5: | |
| break | |
| sentences_json = json.dumps(sentences, ensure_ascii=False) | |
| # Read template | |
| import os | |
| template_path = Path(__file__).parent / "demo_template.html" | |
| html = template_path.read_text(encoding="utf-8") | |
| html = html.replace("__SENTENCES_DATA__", sentences_json) | |
| OUTPUT_HTML.write_text(html, encoding="utf-8") | |
| print(f"Demo written to {OUTPUT_HTML}") | |
| print(f"Sentences: {len(sentences)}, tokens: {sum(len(s['tokens']) for s in sentences)}") |