| """Combine EXACT des hybrides par langue sur devhard (oracle lang), + verif LID.""" |
| import json, jiwer, itertools |
| ROWS=[json.loads(l) for l in open("/root/devhard/devhard_linsna.jsonl")] |
| H=json.load(open("/root/devhard_allhyps.json",encoding="utf-8")) |
| def comb(R,Hy): |
| pr=[(r,h) for r,h in zip(R,Hy) if r.strip()] |
| r=[x for x,_ in pr]; h=[x for _,x in pr] |
| w=jiwer.wer(r,h); c=jiwer.cer(r,h); return w,c,0.5*w+0.5*c |
| LIN=["lin_s4_best","joint_cont2_best","joint_cont_best","mms1b_lin_best"] |
| SNA=["sna_ps_best","joint_cont2_best","joint_cont_best"] |
| print("=== hybrides (oracle langue) ===") |
| res=[] |
| for a,b in itertools.product(LIN,SNA): |
| hy=[H[a][r["id"]] if r["lang"]=="lin" else H[b][r["id"]] for r in ROWS] |
| w,c,m=comb([r["text"] for r in ROWS],hy) |
| res.append((m,a,b,w,c)) |
| for m,a,b,w,c in sorted(res): |
| print(f" {m:.4f} lin<-{a:18s} sna<-{b:18s} (WER {w:.4f} CER {c:.4f})") |
| print() |
| print("=== references simples ===") |
| for n in ["joint_cont_best","joint_cont2_best"]: |
| w,c,m=comb([r["text"] for r in ROWS],[H[n][r["id"]] for r in ROWS]) |
| print(f" {m:.4f} {n} (WER {w:.4f} CER {c:.4f})") |
|
|