참고 자료
참고자료를 많이 참고했습니다. 좋은 글 써주셔서 감사드립니다. Thank you for your hard work :)
https://machinelearninginterview.com/topics/machine-learning/meteor-for-machine-translation/
시작하기 전에
'BLEU Score'의 한계를 지적하고 개선한 것이 'Meteor Score'다. 그러니, 당연히 'BLEU Score'부터 공부하고 오길 바란다. '어벤져스3: 인피니티워'는 안 봤는데 '어벤져스4: 엔드게임'을 보면 무슨 감동이 있고, 무슨 재미가 있겠냐 이말이다.
https://heygeronimo.tistory.com/20
BLEU Score 의 한계
- BLEU Score 는 'recall' 보다 'precision'에 가까운 성격을 지닌다. BLEU Score 를 구할 땐, 예측값(prediction)이 정답(reference)에 포함되었는지 확인한다. 하지만 반대로, 모든 정답이 예측값에 반영되었는지를 묻지 않는다.
- BLEU Score 는 의미적 유사도를 반영하지 못한다. 즉, 완전히 정답과 같아야만(Exact Match) 점수를 준다. 예컨대, '노랗다'와 '누렇다'가 유사하다는 걸 전혀 모른다. 실제로 BLEU Score 를 구해보면은 '하늘이 노랗다.'가 정답이면, '하늘이 누렇다.'와 '하늘이 파랗다.' 모두 틀렸다고 본다.
- words of cluster 를 잘 잡아내지 못한다. 보통 good match 인 경우, '정답으로 구성된 words of cluster' 와 '예측값으로 구성된 words of cluster'이 매우 근접하다고 한다. 근데, BLEU Score 는 그렇지 못하다.
→ 이 이야기를 왜 할까. 당연히 METEOR Score 는 이 문제를 해결하는데 이바지했기 때문이다.
METEOR Score 는 어떻게 구하는데?
구하는 과정을 차례대로 지켜보면, 어떻게 해결했는지도 나올 것이다.
ㄱ. Computing the alignments
Alignment 란?
예측값(generated text)와 정답(reference)를 위 그림처럼 잇는다. 이때, 잇는 방식은 '단어 대 단어'로 연결하거나, word embedding, dictionary 등을 활용한다.
chunk 란?
그리고 'chunk' 를 정의한다. 'chunk in an alignment' 란, '정답에 속하는 인접한 단어들과 연결된 인접한 단어들의 집합'을 의미한다. 뭔소리인지 모르실까봐, 위 그림을 손수 만들었으니 천천히 음미하며 읽어보시라. 위에서 chunk 의 개수는 3개가 된다.
chunk 의 개수가 최소화되길 바란다
chunk 의 정의를 이해했다면, alignment 에 따라 chunk 의 개수가 다양할 수 있다는 점을 이해했을 것이다. 이 점을 방지하고자, chunk 의 개수가 최소화되도록 alignment 를 잇기로 결정했다.
예컨대, 다음과 같은 두 문장이 있다고 가정하자.
- 예측값: The cat likes the bone.
- 정답: The cat loves the bone.
여기서, 예측값에 존재하는 'The'가 정답에 존재하는 ['The', 'the'] 중 하나로 alignment 를 만들 수 있다. 만일, 'the'를 선택한 경우 chunk 의 개수가 증가할 게 뻔하다. 이럴 땐, 'The'는 'The' 로, 'the'는 'the' 로 연결하자는 것이다.
ㄴ. Computing F - score
METEOR Score 는 Precision 뿐만 아니라 Recall 을 반영한 지표다. (하지만, F 를 구하는 공식을 보니 precision 의 영향력이 더 클 수 밖에 없는 것 같다. 1:9로 반영된 이유에 대해선 논문을 읽어봐야 할 것 같다.)
- m: 정답(reference)과 예측값(candidate)이 일치하는 개수 (unigram)
- w_t: 예측값의 단어의 개수
- w_r: 정답의 단어의 개수
그럼 위 예시는 alignment 가 모두 존재하기 때문에 F = 1이다. (왜 만점인 예시를 들어주신거지?)
ㄷ.Computing Chunk Penalty
chunk 의 개수는 이상적인 경우엔 1개다. 정답과 예측이 완전히 일치할 때, 가능하다. 하지만 현실에선 그럴 리가. 그래서 Chunk Penalty 는 Chunk 의 개수에 따라 달라지며, 많을수록 불리하다.
- C: chunk 의 개수
- U_m: 예측값의 단어의 개수
예시로 다시 구해보자.
chunk 의 개수는 3개다. 그리고 예측값의 단어의 개수는 6개다. 고로, C = 3 & U_m = 6 이다. 최종적으로 p = 1 / 16 이다.
ㄹ.Computing the overall METEOR score
구하는 공식은 다음과 같다. (1 - p) 가 추가되었으므로, chunk penalty 가 Meteor Score 에 영향을 미친다.
- 정답: The cat sits on the mat.
- 후보1: Mat on cat sits the the.
- 후보2: The cat on the mat sits.
하마터면, 후보1의 BLEU Score 가 후보2의 BLEU Score 랑 같을 뻔 했으나, 순서를 고려할 수 있어서 후보2가 chunk의 개수가 작기 때문에 점수가 더 높을 것이다.
METEOR Score 는 BLEU Score 의 한계를 정말로 극복했나?
1. Precision 뿐만 아니라 Recall 도 반영했다.
2. Alignment 를 만들 때, word embedding 이나 dictionary 등을 사용할 수 있어서 의미적 유사도를 반영할 수 있게 되었다.
3. words of cluster 가 정확히 무엇을 의미하는지 모르겠으나, chunk 라고 무방할 것 같다. chunk 의 개수를 점수에 반영하여, METEOR Score 값이 높으면 words 의 순서도 비슷하도록 설계했다.
'NLP > 용어정리' 카테고리의 다른 글
[용어정리] semicolon notation in probability (0) | 2022.12.30 |
---|---|
[용어 정리] oracle summary (0) | 2022.12.14 |
[용어정리] perplexity (0) | 2022.10.20 |
[용어정리] BLEU Score (1) | 2022.10.04 |
[용어정리] agnostic (0) | 2022.09.14 |