Token-level F1: 각 토큰(단어)별로 라벨이 맞는지 확인
Entity-level F1: 전체 엔티티 단위로 완전히 맞는지 확인
문장: "김철수는 서울에서 삼성전자에 다닌다"
정답 라벨:
김철수는 → B-PER I-PER O
서울에서 → B-LOC O
삼성전자에 → B-ORG I-ORG O
다닌다 → O
모델 예측:
김철수는 → B-PER O O # "김철수" 중 "철수"를 놓침
서울에서 → B-LOC O # "서울" 정확히 맞춤
삼성전자에 → B-ORG I-ORG O # "삼성전자" 정확히 맞춤
다닌다 → O
Token-level은 부분적으로라도 맞으면 점수를 줌
Entity-level은 엔티티 전체가 완벽해야 점수를 줌
Token-level F1
세밀한 성능 분석**Entity-level F1
실제 서비스에서 사용할 때 (PII 마스킹, 정보 추출 등)Token-level F1
각 토큰별로 TP, FP, FN을 계산:
Precision = TP / (TP + FP)
Recall = TP / (TP + FN)
F1 = 2 × (Precision × Recall) / (Precision + Recall)
Entity-level F1
전체 엔티티 span으로 TP, FP, FN 계산:
Precision = 정확히 맞춘 엔티티 수 / 예측한 엔티티 수
Recall = 정확히 맞춘 엔티티 수 / 실제 엔티티 수
F1 = 2 × (Precision × Recall) / (Precision + Recall)
Entity-level이 더 엄격해서 점수가 낮게 나오는 게 일반적
보통 같은 모델이라도: