def span_f1(yi, span): max_f1 = 0 for start, stop in yi: if start[0] == span[0][0]: true_span = start[1], stop[1] pred_span = span[0][1], span[1][1] f1 = span_f1(true_span, pred_span) max_f1 = max(f1, max_f1) return max_f1
def span_f1(yi, span): max_f1 = 0 for start, stop in yi: if start[0] == span[0][0]: true_span = start[1], stop[1] pred_span = span[0][1], span[1][1] f1 = span_f1(true_span, pred_span) max_f1 = max(f1, max_f1) return max_f1
def f1_score(yi, ypi, xi): max_f1 = 0 for yij in yi: f1 = span_f1(yij, ypi) max_f1 = max(f1, max_f1) return max_f1
def span_f1(yi, y2i, ypi, yp2i): true_span = (np.argmax(yi.flatten()), np.argmax(y2i.flatten())+1) pred_span = (np.argmax(ypi.flatten()), np.argmax(yp2i.flatten())+1) f1 = span_f1(true_span, pred_span) return f1