You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
즉, 이 예시에서는 Rouge1은 6/11이 됩니다.
너무 긴 문장이 생성되면 recall이 감소할 수 있어 길이도 보정도 된다고 생각 할 수 있습니다.
rouge-L
rougeL의 L은 Longest Common Sub sequence(lcs)를 의미합니다. Longest Common Sub sequence가 무엇일까요?
문장이 완전히 일치하지는 않지만, 떨어져 있는 Sequence 형태로 가장 길게 일치하는 단어의 조합이라 할 수 있습니다.
앞선 예시를 가지고 다시 살펴보게 되면,
prediction = '이것은 첫번째 예측 문장 이지요'
reference = '이것은 정답에 해당하는 문장 첫번째 입니다.'
Longest Common Sub sequence: '이것은' +'문장'
이러한 lcs를 구하기 위한 코드는 dynamic programming 알고리즘으로 구하게 됩니다.
Rouge
Huggingface rouge metric 에서 사용하는 Rouge score type은
rouge1
,rouge2
,rougeL
,rougeLsum
입니다!rouge란, reference title과 model에 의해 generation된 문장의 단어 일치도를 보는 metric으로,
단어 일치도의
f1-score
를 의미합니다.그렇다면 rouge-1/2에 더해서 rougeL과 rougeLsum은 무엇을 의미할까요?
rouge-N
예시 문장을 바탕으로 rouge score를 계산해보겠습니다.
예시를 위해 띄어쓰기 기준으로 split을 진행하였습니다.
각 token의 count를 contingency table로 나타내면 아래와 같습니다
즉, 이 예시에서는 Rouge1은 6/11이 됩니다.
너무 긴 문장이 생성되면 recall이 감소할 수 있어 길이도 보정도 된다고 생각 할 수 있습니다.
rouge-L
rougeL의 L은 Longest Common Sub sequence(lcs)를 의미합니다. Longest Common Sub sequence가 무엇일까요?
문장이 완전히 일치하지는 않지만, 떨어져 있는 Sequence 형태로 가장 길게 일치하는 단어의 조합이라 할 수 있습니다.
앞선 예시를 가지고 다시 살펴보게 되면,
Longest Common Sub sequence: '이것은' +'문장'
이러한 lcs를 구하기 위한 코드는 dynamic programming 알고리즘으로 구하게 됩니다.
Table에서 각 행, 열을 거치며 일치하는 token을 만나게 되면 count를 증가시켜 주게 됩니다.
즉, table[-1][-1]의 값은 lcs count를 의미하게 됩니다.
이를 다시 contingency table로 나타내면 아래와 같습니다
rouge-Lsum
마지막으로, rougeLsum입니다. lcs를 사용하는 것은 동일하며, 여러 '\n'이 포함된 문장을 비교할 때 사용하는 값입니다.
'\n'로 split 후 이중 loop를 돌며 전체 겹치는 단어를 찾고 중복을 제거 해줍니다.
새로운 예시를 통해 계산해보면,
Longest Common Sub sequence: '이것은' +'문장' + '이것은' + '두번째'
이를 계산하는 함수
_summary_level_lcs
에 여러 function들이 엮어 있어 코드가 복잡해 보입니다.하나하나 따라가다 보면,
위 과정을 통해 rougeLsum이 계산됩니다.
마무리
The text was updated successfully, but these errors were encountered: