728x90
BLEU
설명
- 기계 번역 성능을 평가하기 위한 지표 중 하나이다. 기계 번역 결과와 인간이 작성한 기계 번역에 대한 기준 번역을 비교하여 점수를 산출한다. (실제론 기계번역 뿐만 아니라 Style Transfer 등 다양한 자연어처리 task에서 사용된다.)
수식
예시
예측된 sentence: 빛이 쐬는 노인은 완벽한 어두운곳에서 잠든 사람과 비교할 때 강박증이 심해질 기회가 훨씬 높았다.
true sentence: 빛이 쐬는 사람은 완벽한 어둠에서 잠든 사람과 비교할 때 우울증이 심해질 가능성이 훨씬 높았다.
- 먼저 문장길이에 대한 과적합 보정을 하기 위해 보정계수를 구해야 한다.
- 이후. n-gram(1~4)을 통한 순서쌍들이 얼마나 겹치는지 측정(precision)하면 된다.
- n-gram: 문장에서 단어를 n개의 단어 뭉치로 끊어서 다음에 나올 단어를 예측하는 원리로, 단어 갯수에 기반한 통계적 접근 방법이다.
- 최종적으로 위 두 식을 곱해 아래와 같이 BLEU를 구하면 된다.
해석 가이드
Google Cloud에서 제공한 가이드에 따르면 각 스코어에 따라 아래와 같이 해석할 수 있다.
패키지: sacreBLEU
- 기존에 BLEU 구현체로 많은 사람들이 NLTK Package에 있는 BLEU 사용했지만, NLTK에 포함된 Mertic은 Origin BLEU Paper와 비교했을 때 Tokenization등 구현 부분에 다소 차이가 있었다. 따라서 BLEU Metric은 Tokenization을 어떻게 하느냐에 따라서 크게 달라지기 때문에 현재 Machine Translation에서는 NLTK의 BLEU를 사용하지 않는다.
- 따라서 현재 거의 모든 Language Generation Paper에서 sacreBLEU라는 구현체를 이용해 BLEU Score를 측정한다. sacreBLEU는 원본 BLEU Paper를 그대로 구현하였다.
huggingface를 활용한 사용 방법
아래의 홈페이지 참고
https://huggingface.co/spaces/evaluate-metric/sacrebleu
spBLEU
설명
- 서브워드 유형의 기계번역 결과에 대한 BLEU 점수를 계산하는 방식이다.
- 따라서 단어를 더 작은 조각으로 분할하여 토큰을 생성힌다.
- 예를들어, SentencePiece를 사용하여 서브워드 분할을 생성할 경우 "나는 사과를 좋아합니다” 는 "▁나는", "▁사과", "를", "▁좋아", "합니다”와 같이 분할될 것 이다.
- 각각 분할된 결과를 기반으로 BLEU 수식과 동일하게, 각 서브워드에 대한 정밀도를 계산하면 값을 구할 수 있다.
출처
- https://donghwa-kim.github.io/BLEU.html
- BLEU: a Method for Automatic Evaluation of Machine Translation
- https://www.jasonchoi.dev/posts/metrics-in-wmt
728x90
'Natural Language Processing' 카테고리의 다른 글
Self-paced Learning (0) | 2023.10.31 |
---|---|
[간단한 Review] Deep contextualized word representations (ELMo) (0) | 2023.05.22 |
댓글