이전 글에서 ROUGE에 대해 알아보았다. 다음으로 BLEU를 알아보겠다.
BLEU는 2002년 BLEU: a Method for Automatic Evaluation of Machine Translation 논문에서 설명한 개념으로 여러 단계의 n-gram을 사용하여 사람이 입력한 Reference에 비해 기계가 번역한 Candidate의 품질이 어떠한지 측정하는 지표이다.
BLEU를 구하기 위해서는 먼저 n-gram이 무엇인지 알아야 한다. n-gram은 n개의 인접한 기호를 순서대로 묶은 나열을 말한다.
예를 들어 아래 문장을 어절 단위로 기호를 구분한다고 해보자.
나는 너를 너무 좋아해
이때 1-gram과 2-gram은 다음과 같다.
1-gram (unigram)
[나는], [너를], [너무], [좋아해]
2-gram (bigram)
[나는 너를], [너를 너무], [너무 좋아해]
3-gram (trigram)
[나는 너를 너무], [너를 너무 좋아해]
BLEU를 구하는 공식은 아래와 같다. 차근차근 뜯어보자.
는 Brevity Penalty를 의미한다. 말 그대로 기계가 만든 번역의 길이가 짧을 수록 큰 패널티를 주는 것이다. 는 candidate의 길이, 은 reference의 길이이다. 기계가 만든 게 더 길면 1로 둬서 패널티를 안 주지만 더 짧다면 패널티를 준다.
은 n-gram을 얼마까지 쓸지를 나타낸다.
은 각 n-gram에 대한 weight이다. 일반적으로는 uniform weights인 을 사용할 수 있다.
은 n-gram에 대한 precision으로 아래와 같이 구한다.
예를 들어 BLEU-2를 구하고 uniform weight을 사용하며 번역 결과가 아래와 같이 나왔다고 해보자.
Ref: 나는 너를 너무 좋아해
Can: 나는 너무 좋아해 너를
우선 과 가 같으므로 는 1이다.
Ref 1-gram: [나는], [너를], [너무], [좋아해]
Can 1-gram: [나는], [너무], [좋아해], [너를]
을 구해보자. 위에서 모든 덩어리가 겹치므로 4/4 = 1이다.
Ref 2-gram: [나는 너를], [너를 너무], [너무 좋아해]
Can 2-gram: [나는 너무], [너무 좋아해], [좋아해 너를]
에서는 can의 길이가 3, 겹친게 1이므로 1/3이다.
uniform weight을 사용하므로 , 는 모두 1/2이다.
이제 모든 걸 합쳐보자.
참고로 의 분자가 0이 될 수도 있는데 그렇게 되면 값이 가 되고 결국 BLEU가 0이 된다.
[1] Kishore Papineni, Salim Roukos, Todd Ward, and Wei-Jing Zhu. 2002. Bleu: a Method for Automatic Evaluation of Machine Translation. In Proceedings of the 40th Annual Meeting of the Association for Computational Linguistics, pages 311–318, Philadelphia, Pennsylvania, USA. Association for Computational Linguistics.