| import json, jiwer |
| ROWS=[json.loads(l) for l in open("/root/devhard/devhard_linsna.jsonl")] |
| H=json.load(open("/root/devhard_allhyps.json",encoding="utf-8")) |
| L=json.load(open("/root/lid_devhard.json")) |
| pred=L["pred"] |
| 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 |
| R=[r["text"] for r in ROWS] |
| def route(linm,snam,use_lid=True): |
| out=[] |
| for r in ROWS: |
| lg = (pred[r["id"]] if use_lid else r["lang"]) |
| if lg=="lug": lg="lin" |
| out.append(H[snam][r["id"]] if lg=="sna" else H[linm][r["id"]]) |
| return out |
| print("=== avec LID REEL (99.21%) ===") |
| for linm,snam,tag in [("lin_s4_best","sna_ps_best","HYBRIDE NEUF"), |
| ("joint_cont2_best","sna_ps_best","cont2+sna_ps"), |
| ("mms1b_lin_best","sna_ps_best","ANCIEN routeur (LB 0.7347)")]: |
| w,c,m=comb(R,route(linm,snam)) |
| wo,co,mo=comb(R,route(linm,snam,use_lid=False)) |
| print(f" {m:.4f} {tag:28s} lin<-{linm:18s} (oracle {mo:.4f}, cout LID {m-mo:+.4f})") |
| w,c,m=comb(R,[H["joint_cont_best"][r["id"]] for r in ROWS]); print(f" {m:.4f} joint_cont (LB 0.7449)") |
| w,c,m=comb(R,[H["joint_cont2_best"][r["id"]] for r in ROWS]); print(f" {m:.4f} joint_cont2 (LB 0.7408)") |
|
|