@@ -1205,13 +1205,18 @@ def der_ce_from_preds(preds) -> dict:
12051205 )
12061206 return {"der_ce" : round (total_der , 4 ), "n" : len (inputs )} # evaluator already returns %
12071207
1208- def item_der_from_preds (preds ) -> list [float ]:
1209- ders = []
1208+ def item_der_from_preds (preds ) -> list [float | None ]:
1209+ ders : list [ float | None ] = []
12101210 for pred , gt in zip (preds , gts , strict = True ):
1211- _ , _ , d , _ , _ = E .caculate_errors_on_sentences (
1212- [pred ], [gt ], gt_missing_diacritic_is_error = False
1213- )
1214- ders .append (float (d ))
1211+ try :
1212+ _ , _ , d , _ , _ = E .caculate_errors_on_sentences (
1213+ [pred ], [gt ], gt_missing_diacritic_is_error = False
1214+ )
1215+ ders .append (float (d ))
1216+ except ZeroDivisionError :
1217+ # paragraph carries no scorable haraqat positions; the
1218+ # aggregate call skips it, single-item calls cannot
1219+ ders .append (None )
12151220 return ders
12161221
12171222 teacher_preds = windowed_paragraphs (teacher , tok , inputs , window = window )
@@ -1221,11 +1226,12 @@ def item_der_from_preds(preds) -> list[float]:
12211226 "teacher" : der_ce_from_preds (teacher_preds ),
12221227 "student" : der_ce_from_preds (student_preds ),
12231228 }
1229+ t_ders = item_der_from_preds (teacher_preds )
1230+ s_ders = item_der_from_preds (student_preds )
12241231 result ["paired_bootstrap" ] = paired_bootstrap ([
12251232 s - t
1226- for s , t in zip (
1227- item_der_from_preds (student_preds ), item_der_from_preds (teacher_preds ), strict = True
1228- )
1233+ for s , t in zip (s_ders , t_ders , strict = True )
1234+ if s is not None and t is not None
12291235 ])
12301236 result ["gate_delta" ] = round (result ["student" ]["der_ce" ] - result ["teacher" ]["der_ce" ], 4 )
12311237 result ["gate_pass" ] = result ["gate_delta" ] <= 0.5
0 commit comments