[https://www.topbots.com/to-rouge-or-not-to-rouge/]
Recall-Oriented Understudy for Gisting Evaluation
label(사람이 만든 요약문)과 summary(모델이 생성한 inference)을 비교해서 성능 계산
ROUGE-N, ROUGE-L, ROUGE-W, ROUGE-S 등 다양한 지표가 있음
각각 지표별로 recall 및 precision을 둘 다 구하는 것이 도움이 됨(기반하여 F1 score로 측정 가능)
Recall : label을 구성하는 단어 중 몇개가 inference와 겹치는가?
precision : inference를 구성하는 단어 중 몇개가 label과 겹치는가?
사람이 요약한 Reference 정보를 label, 모델로부터 추론된 data를 output이라고 표현하여 아래를 설명하겠습니다.
N-gram의 개수가 기준
Rouge-1은 unigram, Rouge-2 는 bigram,...
Recall : output과 겹치는 N-gram의 수 / label의 N-gram의수
[ROUGE-1 SCORE(recall) example]
precision : label과 겹치는 N-gram의 수 / output의 N-gram의수
LCS(longest common sequence) between model output
말 그대로 common sequence 중에서 가장 긴 것을 매칭함
n-gram과 달리 순서나 위치관계를 고려한 알고리즘
Recall : LCS 길이 / label의 N-gram의수
Precision : LCS 길이 / output의 N-gram의수
rouge library 설치
$ pip install rouge
불러오고 객체 생성후 get.scores
를 사용하면 Rouge-1, Rouge-2, Rouge-l score 확인 가능
from rouge import Rouge
model_out = ["he began by starting a five person war cabinet and included chamberlain as lord president of the council",
"the siege lasted from 250 to 241 bc, the romans laid siege to lilybaeum",
"the original ocean water was found in aquaculture"]
reference = ["he began his premiership by forming a five-man war cabinet which included chamberlain as lord president of the council",
"the siege of lilybaeum lasted from 250 to 241 bc, as the roman army laid siege to the carthaginian-held sicilian city of lilybaeum",
"the original mission was for research into the uses of deep ocean water in ocean thermal energy conversion (otec) renewable energy production and in aquaculture"]
rouge = Rouge()
rouge.get_scores(model_out, reference, avg=True)
>>>
{ 'rouge-1': { 'f': 0.6279006234427593,
'p': 0.8604497354497355,
'r': 0.5273531655225019},
'rouge-2': { 'f': 0.3883256484545606,
'p': 0.5244559362206421,
'r': 0.32954545454545453},
'rouge-l': { 'f': 0.6282785202429159,
'p': 0.8122895622895623,
'r': 0.5369305616983636}}
결론(활용 및 개발방안)
- 한글 요약 성능 평가지표는, RDASS, rouge-u, rouge-su 가 보다 합리적으로 비교할 수 있는 metric으로 판단됨.
- 영어와 비교한 한국어 문장성분의 특성 상 순서보다 조사가 중요함. 조사가 그대로 있다면, 단어의 순서는 결코 중요하지 않음.
ex) 아빠가 나에게 선물을 주셨다. == 나에게 아빠가 선물을 주셨다. Daddy bought me the gift. != I bought Daddy the gift.
- 다시말해, Semantic하게 성능을 분석하기 위해서는 영어와 달리 단어의 순서를 비교하는 것이 적절한 지표가 되지 않을 수도 있다는 이야기.
- '순서'가 아닌 '조합'으로 성능을 판단할 수 있는 ROUGE-U, ROUGE-SU가 적절해보임
- RDASS 도 추가로 고려하여 성능 확인.