NLP 논문을 읽다보면 정말 자주 나오는 것 같다.
우선 precision과 recall을 먼저 알고 넘어가야한다.
이미지 분류 모델처럼 cross-entropy loss와 같이 일반적인 loss 방법들을 사용하면 NLP에서 맞지 않을 수 있다.
가령 문장 생성 task에서 한 문장이나 단어를 빼먹거나 문장을 더 많이 생성한다면 현재 상황을 제대로 반영하지 못한다.
예를 들어 I love you -> Oh I love you로 예측했다고 하면, 결론적으로 이 모델은 하나도 맞추지 못한 것이다. 하지만 이 경우는 Oh를 제외하기만 하면 모두 맞는 모델인데 기존 평가방법들은 이러한 정보를 반영하지 못한다.
그래서 precision과 recall 개념을 이용한다.
Reference : Half of my heart is in Havana ooh na na
Predicted : Half as my heart is in Obama ooh na
위와 같은 문장에서
위에서 precision 결과인 78과 recall 결과인 70의 산술평균을 구할 수도 있고 기하평균을 구할 수도, 조화평균을 구할 수도있다.
이 평균내는 방법들은 산술평균이 가장 크고 그 다음이 기하, 마지막이 조화순으로 크다.(산술 > 기하 > 조화)
조화평균을 이용하여 보다 작은 값에 더 많은 가중치를 부여한다.
F-measure는 precision과 recall의 조화평균이다.
하지만
Reference : Half of my heart is in Havana ooh na na
Predicted : Havana na in heart my is Half ooh oh na
이러한 경우에서는 Precision, recall, F-measure 모두 100%가 된다. 하지만 순서가 전혀 맞지 않은 상태이다.
그래서 더 나아가 성능평가로 BLEU score를 사용한다.
model 1 : Half as my heart is in Obama ooh na
model 2 : Havana na in heart my is Half ooh of na
이러한 상황일 때 각 n-gram Precision과 BLEU는 아래와 같다.
(brevity penalty는 문장의 길이를 말한다.)
BLEU Score가 왜 NLP에서 중요한 지를 느낄 수 있었다.
그리고 요즘 Action Segmentation에 대해서 공부하고 있는데, 이 task도 시계열 예측을 따르고 이 문장생성과 비슷한 점이 많아보여 BLEU를 사용해도 좋을 것 같다는 생각이 문득 들었다.
영어에서는 띄어쓰기를 기준으로 단어를 나눌 수 있어서 BLEU 스코어를 계산하기 비교적 수월할 것 같은데요.
한국어에서는 어미에 따라 스코어가 달라질 수 있지 않을까요?
'생각했지만' <-> '생각하면'
한국어에서 이런 경우를 어떻게 평가하는지 알아보면 좋을 것 같습니다!