728x90
반응형
BLEU Score란?
BLEU(Bilingual Evaluation Understudy)는 기계번역의 품질을 평가하기 위해 개발된 자동 평가 지표입니다.
기본 개념
- 시스템이 생성한 번역문과 인간이 번역한 참조 번역문 간의 유사도를 측정
- 0에서 1 사이의 값(0-100%)으로 표현
- 1에 가까울수록 더 나은 번역을 의미
작동 원리
N-gram 정밀도 계산
- 1-gram부터 4-gram까지의 중첩도 측정
- 각 n-gram에 대해 가중치 적용 (일반적으로 각각 0.25)
계산 공식
Copy
BLEU = BP × exp(Σ(wn × log pn))
- BP: Brevity Penalty (길이 페널티)
- wn: n-gram 가중치
- pn: n-gram 정밀도
주요 구성 요소
N-gram 정밀도(Precision)
- 생성된 텍스트에서 발견되는 n-gram이 참조 텍스트에도 존재하는 비율
- 단어 순서와 문맥을 고려함
길이 페널티(Brevity Penalty)
- 너무 짧은 번역에 페널티 부여
- 참조 번역과의 길이 차이를 반영
BLEU 점수의 특징
장점
- 계산이 간단하고 빠름
- 언어 독립적
- 높은 재현성
- 인간 평가와의 상관관계가 비교적 높음
단점
- 문장의 의미나 문법적 정확성을 완벽히 포착하지 못함
- 동의어나 패러프레이징을 제대로 인식하지 못함
- 참조 번역에 크게 의존
- 문맥적 적절성 평가에 한계
점수 해석
점수 범위 | 품질 수준 |
---|---|
0.0-0.1 | 매우 낮은 품질 |
0.1-0.3 | 낮은 품질 |
0.3-0.5 | 중간 품질 |
0.5-0.7 | 좋은 품질 |
0.7 이상 | 매우 높은 품질 |
BLEU의 변형
- 스무스 BLEU
- 문장 단위 BLEU
- 문서 단위 BLEU
- Multi-BLEU
구현 예시
from nltk.translate.bleu_score import sentence_bleu, corpus_bleu, SmoothingFunction
# 단일 문장의 BLEU 점수 계산
reference = [['this', 'is', 'a', 'test']] # 참조 번역(들)
candidate = ['this', 'is', 'test'] # 시스템 번역
score = sentence_bleu(reference, candidate)
# 스무딩 적용
smooth = SmoothingFunction()
score = sentence_bleu(reference, candidate, smoothing_function=smooth.method1)
# 코퍼스 레벨 BLEU 계산
references = [[['this', 'is', 'a', 'test'], ['this', 'is', 'test']]] # 여러 참조 번역
candidates = [['this', 'is', 'test']] # 시스템 번역
corpus_score = corpus_bleu(references, candidates)
활용 시 고려사항
- 여러 참조 번역 사용을 권장
- METEOR, TER, chrF 등 다른 평가 지표와 함께 사용
- 도메인과 언어쌍의 특성 고려
- 절대적 기준이 아닌 상대적 비교 도구로 활용
728x90
'NLP > Evaluating Large Language Models' 카테고리의 다른 글
NLP 평가 지표 종류 (1) | 2024.11.25 |
---|