NLP 결과를 루징하세요!

자연어 처리에서 사용되는 메트릭에 대한 이 게시물 시리즈에서 논의되는 다음 메트릭은 ROUGE(Recall-Oriented Understudy for Gisting Evaluation)입니다.
ROUGE는 텍스트 요약 및 기계 번역과 같은 NLP 작업의 품질을 평가하는 데 사용되는 평가 지표입니다. BLEU 와 달리 ROUGE는 재현율과 정밀도를 모두 사용하여 후보로 알려진 모델 생성 요약을 참조로 알려진 사람이 생성한 요약 집합과 비교합니다. 참조의 n-gram 중 예측된 후보에 있는 n-gram 수를 측정합니다.
먼저, 리콜 = True Positives/(True Positives + False Negatives)를 계산해 보겠습니다. 여기서 True Positive는 References와 Candidates 간의 일치하는 n-gram입니다. False Negatives는 실제 문장(참조)에는 있지만 후보에는 없는 n-gram으로 생각할 수 있습니다. False Positive는 Candidate에는 있지만 References에는 없는 n-gram입니다. True Positives, False Positives, Recall 및 Precision 등과 같은 개념에 대한 재교육이 필요한 경우 이 블로그 게시물 Recall, Precision, F1-Score 를 확인하십시오.
따라서 재현율과 정밀도는 다음과 같이 얻을 수 있습니다.


재현율과 정밀도는 때때로 보완적일 수 있으므로 균형을 이루기 위해 두 가지를 결합해야 합니다. 이러한 이유로 ROUGE는 Python에서 F1 점수로 계산됩니다. 값의 범위는 0에서 1까지이며 값이 1에 가까울수록 예측 품질이 좋습니다.
루즈엔
Huggingface의 "evaluate" 패키지에서 평가 모듈을 사용하고 계산을 단계별로 검증해 보겠습니다. 각 후보에 대해 2개의 참조가 있는 다음 말뭉치가 요약 모델의 결과로부터 얻어졌다고 가정합니다.
!pip install evaluate
!pip install rouge-score
import evaluate
rouge = evaluate.load('rouge')
predictions = ["Transformers Transformers are fast plus efficient",
"Good Morning", "I am waiting for new Transformers"]
references = [
["HuggingFace Transformers are fast efficient plus awesome",
"Transformers are awesome because they are fast to execute"],
["Good Morning Transformers", "Morning Transformers"],
["People are eagerly waiting for new Transformer models",
"People are very excited about new Transformers"]
]
results = rouge.compute(predictions=predictions, references=references)
print(results)
{'rouge1': 0.6659340659340659, 'rouge2': 0.45454545454545453,
'rougeL': 0.6146520146520146, 'rougeLsum': 0.6146520146520146}
Candidate 1: Transformers Transformers are fast plus efficient
Reference 1: HuggingFace Transformers are fast efficient plus awesome
Reference 2: Transformers are awesome because they are fast to execute
Recall = 5/7 = 0.7142857
Precision = 5/6 = 0.8333333
F1-Score = 2 * (0.7142857) * (0.8333333)/(0.7142857 + 0.8333333) = 0.7692307
Candidate 2 and the respective Reference 1: 0.8
Candidate 3 and the respective Reference 1: 0.4285714
Mean F1-Score = (0.7692307 + 0.8 + 0.4285714)/3 = 0.665934
루즈엘
여기서 L은 LCS(Longest Common Subsequence)를 의미합니다. LCS는 참조와 후보 모두에서 발생하는 가장 긴 하위 시퀀스로 정의됩니다. 여기에서 하위 시퀀스는 연속적일 필요가 없습니다. 일치하는 n-gram의 수를 세는 대신 여기서 LCS의 길이를 측정합니다. 이 접근 방식의 장점은 임의의 순서로 나타날 수 있는 일치하는 n-그램만 찾는 대신 문장의 어순을 고려한다는 것입니다. 또한 계산에 사용할 n-gram의 order(n)도 제공할 필요가 없습니다.

위 공식에서 X와 Y는 각각 길이가 m과 n인 기준과 후보입니다. 베타는 재현율과 정밀도 중 어느 것이 더 중요한지 제어하는 데 사용됩니다. 1일 때 F_lcs는 Recall(R_lcs) 및 Precision(P_lcs)의 조화 평균입니다. 경우에 따라 리콜의 우선 순위를 정할 수 있습니다. 즉, 참조에 있는 대부분의 n-gram이 후보에 있는 것이 더 중요합니다. 이는 베타 값을 > 1로 증가시켜 달성할 수 있습니다.
이제 이 공식이 실제로 작동하는 것을 살펴보겠습니다. 각 후보 참조 세트에 대한 LCS는 다음과 같습니다.
C1-R1: Transformers are fast plus
C1-R2: Transformers are fast
C2-R1: Good Morning
C2-R2: Morning
C3-R1: waiting for new
C3-R2: new Transformers
ROUGE-N과 마찬가지로 각 후보에 대한 두 참조 사이의 최대 길이로 참조를 고려합니다. 따라서 LCS 길이가 4인 C1-R1 쌍에 대한 F1-Score를 계산합니다. 후보 2와 3의 점수는 ROUGE-1과 동일합니다. 이것은 참조 사이의 LCS 길이가 2와 3에 대해 일치하는 유니그램 카운트와 동일하기 때문입니다. 그러면 전체 계산이 다음과 같이 요약됩니다.
C1-R1:
Recall = 4/7
Precision = 4/6
ROUGE-L F1 = 2 * (4/7) * (4/6)/((4/6) + (4/7)) = 0.6153846
C2-R1 ROUGE-L F1 = 0.8
C3-R1 ROUGE-L F1 = 0.4285714
Final ROUGE-L F1 = (0.6153846 + 0.8 + 0.4285714)/3 = 0.614652
장점
- 계산하고 이해하기 쉽고 일반적으로 텍스트 요약 시스템을 평가하는 데 사용됩니다.
- ROUGE 및 그 변형은 단일 문서 및 짧은 텍스트를 요약하는 데 적합합니다.
- ROUGE는 동의어에 대해 BLEU와 동일한 문제가 있습니다. n-gram의 의미는 고려되지 않으므로 "빠른"과 "빠른"은 유사한 것으로 간주되지 않습니다.
- 점수는 평가를 위해 선택한 참고 문헌의 단어 선택 및 구조에 따라 크게 달라집니다.
참조
저는 데이터 과학 석사 @ TU Dortmund의 학생입니다. 내 게시물에 대한 피드백이나 전문적인 커뮤니케이션이 필요하면 LinkedIn 에서 나와 연락하세요.