@@ -191,29 +191,41 @@ def score_blanc(
191191 assert len (preds ) > 0
192192 assert len (preds ) == len (refs )
193193
194- precisions , recalls , f1s = [], [], []
194+ prf = []
195195
196196 for pred , ref in zip (preds , refs ):
197+ if pred .coref_chains == ref .coref_chains :
198+ prf .append ((1 , 1 , 1 ))
199+ continue
200+
197201 max_span_size = _max_span_size (pred , ref )
198202 neleval_pred = _coref_doc_to_neleval_format (pred , max_span_size + 1 )
199203 neleval_ref = _coref_doc_to_neleval_format (ref , max_span_size + 1 )
200204
201205 p_num , p_den , r_num , r_den = pairwise (neleval_ref , neleval_pred )
202206 np_num , np_den , nr_num , nr_den = pairwise_negative (neleval_ref , neleval_pred )
203207
204- P_c = p_num / p_den
205- P_n = np_num / np_den
206- precisions .append ((P_c + P_n ) / 2.0 )
208+ # pred_has_one_entity = len(pred.coref_chains) == 1
209+ # pred_has_only_singletons = all([len(chain) == 1 for chain in pred.coref_chains])
210+ # ref_has_one_entity = len(ref.coref_chains) == 1
211+ # ref_has_only_singletons = all([len(chain) == 1 for chain in ref.coref_chains])
207212
208- R_c = r_num / r_den
209- R_n = nr_num / nr_den
210- recalls .append ((R_c + R_n ) / 2.0 )
213+ P_c = 0 if p_den == 0 else p_num / p_den
214+ P_n = 0 if np_den == 0 else np_num / np_den
211215
212- F_c = (2 * P_c * R_c ) / (P_c + R_c )
213- F_n = (2 * P_n * R_n ) / (P_n + R_n )
214- f1s .append ((F_c + F_n ) / 2.0 )
216+ R_c = 0 if r_den == 0 else r_num / r_den
217+ R_n = 0 if nr_den == 0 else nr_num / nr_den
215218
216- return mean (precisions ), mean (recalls ), mean (f1s )
219+ F_c = 0 if P_c + R_c == 0 else (2 * P_c * R_c ) / (P_c + R_c )
220+ F_n = 0 if P_n + R_n == 0 else (2 * P_n * R_n ) / (P_n + R_n )
221+
222+ prf .append (((P_c + P_n ) / 2.0 , (R_c + R_n ) / 2.0 , (F_c + F_n ) / 2.0 ))
223+
224+ return (
225+ mean ([m [0 ] for m in prf ]),
226+ mean ([m [1 ] for m in prf ]),
227+ mean ([m [2 ] for m in prf ]),
228+ )
217229
218230
219231def score_lea (
@@ -251,7 +263,6 @@ def lea_res_score(entity: List[Mention], entities: List[List[Mention]]) -> float
251263 precisions , recalls , f1s = [], [], []
252264
253265 for pred , ref in zip (preds , refs ):
254-
255266 precision_num = 0
256267 precision_den = 0
257268 for pred_chain in pred .coref_chains :
@@ -352,7 +363,6 @@ def score_mention_detection(
352363 f1_l = []
353364
354365 for pred , ref in zip (preds , refs ):
355-
356366 pred_mentions = doc_mentions (pred )
357367 ref_mentions = doc_mentions (ref )
358368
0 commit comments