NLP/Evaluating Large Language Models

BLEU(Bilingual Evaluation Understudy)

metamong-data 2024. 11. 25. 11:35
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