AI 채점기: ROUGE로 AI 생성 텍스트 평가하기
이 글은 AI가 생성한 텍스트의 품질을 평가하는 강력한 도구인 ROUGE(Recall-Oriented Understudy for Gisting Evaluation) 지표를 탐구합니다. 이 글은 AI 번역본입니다. 오역이 있을 수 있으니 댓글로 알려주세요.
Created on September 12|Last edited on September 12
Comment
AI가 일관되고 의미 있는 텍스트를 생성하는 능력은 저널리즘부터 고객 지원에 이르기까지 다양한 산업을 혁신했지만, 이런 텍스트를 만들어내는 것만으로는 충분하지 않습니다. 그 품질을 보장하는 일도 똑같이 중요합니다. 바로 여기에서 ROUGE가, 또는 요약 평가를 위한 재현율 지향 대체 지표, 등장합니다. ROUGE는 AI 시스템이 생성한 텍스트를 평가하는 데 가장 널리 사용되는 지표 중 하나로 자리 잡았으며, 특히 요약과 번역 작업에서 많이 활용됩니다.
ROUGE는 기계가 생성한 텍스트가 사람이 작성한 참조 문서와 얼마나 밀접하게 일치하는지를 체계적으로 측정하는 방법을 제공하여, 개발자가 명료성, 응집성, 관련성에 대한 기대치를 충족하도록 모델을 개선하는 데 도움을 줍니다. 당신이 AI 연구자이든 실무자이든, ROUGE를 이해하면 모델 성능에 대한 강력한 통찰을 얻을 수 있습니다.
바로 실습해 보고 ROUGE가 어떻게 작동하는지 확인하고 싶다면, 대화형 Colab 노트북을 확인해 보세요. ROUGE 지표를 사용해 AI 출력물을 평가하는 실험을 직접 해볼 수 있습니다.
그렇지 않다면, 계속 읽으며 ROUGE를 효과적으로 활용하기 위한 기본 개념, 적용 분야, 그리고 모범 사례를 함께 살펴보겠습니다.

목차
ROUGE란 무엇인가요?
ROUGE, 즉 요약 평가를 위한 재현율 지향 대체 지표는 기계가 생성한 텍스트와 사람이 작성한 텍스트 사이의 유사성을 평가하는 데 사용되는 지표 집합입니다. 이 지표는 유니그램(단어 단위), 바이그램(단어 쌍), 최장 공통 부분 수열(LCS)과 같은 요소의 겹침을 분석하여 텍스트 품질을 정량화합니다.
실무적으로 ROUGE는 다음과 같은 작업에서 AI가 생성한 텍스트의 품질을 평가합니다 요약 또는 번역 참조 텍스트의 핵심 요점과 세부 정보를 제대로 포착했는지 판단함으로써 이를 평가합니다. 생성된 텍스트가 중요한 정보를 놓치거나 관련 없는 내용을 포함하면 ROUGE 점수에 이러한 격차가 반영되어, 모델 성능에서 개선이 필요한 부분을 찾아내는 데 유용한 도구가 됩니다.
ROUGE의 주요 변형은 다음과 같습니다:
- ROUGE-1: 생성된 텍스트와 참조 텍스트 사이의 유니그램(개별 단어) 겹침을 측정하여, 내용 선택을 중점적으로 평가합니다.
- ROUGE-2: 생성된 텍스트와 참조 텍스트 사이의 바이그램(연속된 두 단어 쌍) 겹침을 평가하여, 유창성과 응집성을 포착합니다.
- ROUGE-L: 단어의 최장 공통 부분 수열(LCS)에 초점을 맞춰 구조적 정렬과 문장 수준의 응집성을 평가합니다.
이러한 지표들은 관련성, 가독성, 충실성과 같은 요소들을 균형 있게 고려하여 텍스트 품질을 정교하게 분석합니다. 텍스트를 다양한 세분화 수준으로 분해함으로써, ROUGE는 모델의 성능을 깊이 있게 파악할 수 있도록 하고 반복적인 개선을 이끌어 줍니다.
예를 들어 요약 작업에서는 ROUGE-1이 핵심 내용을 포함했는지 확인하고, ROUGE-2가 문장의 연결과 표현이 매끄러운지 점검하며, ROUGE-L이 문장 구조의 논리성을 검증합니다. 이 지표들을 함께 사용하면 텍스트 정합성과 품질을 종합적으로 파악할 수 있어, 자연어 처리 과제에서 텍스트 평가에 ROUGE는 필수적입니다.
재현율, 정밀도, F1-점수 이해하기
구체적인 ROUGE 지표로 들어가기 전에, 재현율과 정밀도, 그리고 이들의 조화 평균인 F1-점수의 개념을 이해해 두는 것이 좋습니다.
💡
이러한 기초 지표들은 ROUGE가 기계 생성 텍스트를 인간이 작성한 기준 문서와 비교해 품질을 평가하는 방식을 설명합니다.
재현율 참조 텍스트의 정보를 생성된 텍스트가 얼마나 포착했는지를 측정합니다. 참조에서의 전체 n-그램 수로 겹치는 n-그램 수를 나눈 값으로 계산됩니다. 높은 재현율은 핵심 내용이 폭넓게 포함되었음을 의미합니다.

정밀도 생성된 텍스트가 참조 텍스트와 얼마나 일치하는지를 평가합니다. 생성된 텍스트에서의 전체 n-그램 수로 겹치는 n-그램 수를 나눈 값으로 계산됩니다. 높은 정밀도는 출력이 관련 없거나 불필요한 정보를 피하도록 보장합니다.

F1-점수 재현율과 정밀도를 균형 있게 결합한 지표입니다. 두 값의 조화 평균으로 계산되는 F1-점수는 한 측면에서 뛰어나더라도 다른 측면에서 뒤처질 때 과도한 불이익을 받지 않도록 하여, 성능을 종합적으로 평가합니다.

F1-점수는 재현율이 높은 등 한 측면에서 뛰어난 성능을 보였다고 해서 다른 측면, 예를 들어 정밀도가 낮은 경우에 과도한 불이익을 받지 않도록 보장합니다. 두 지표를 결합함으로써 F1-점수는 성능을 종합적으로 평가합니다.
ROUGE는 기본 지표로 F1-점수를 사용합니다 이는 재현율과 정밀도의 균형을 맞추기 때문입니다. 특히 요약 과제에서 모든 핵심 내용을 포착하는 것(재현율)과 장황함이나 관련 없는 세부 정보를 피하는 것(정밀도)이 똑같이 중요할 때 유용합니다. 예를 들면:
- 재현율이 높지만 정밀도가 낮으면 지나치게 장황한 요약이 될 수 있습니다.
- 정밀도는 높지만 재현율이 낮으면 핵심 세부 정보를 놓치는 간결한 요약이 될 수 있습니다.
기본적으로 F1-점수를 사용함으로써, ROUGE는 관련성과 완전성을 하나의 총체적 지표로 제공하여 텍스트 평가에서 신뢰할 수 있는 선택지가 됩니다.



튜토리얼: Weave Scorers로 ROUGE 사용하기
요약이나 번역처럼 텍스트 중심 과제에서 견고한 모델을 개발하려면 AI가 생성한 텍스트의 품질을 평가하는 일이 필수적입니다. ROUGE는 텍스트 정합성을 평가하는 신뢰할 만한 지표이지만, 여러 예측과 기준 답안을 대상으로 점수를 계산하고 비교하는 작업은 번거로워질 수 있습니다.
이때 Weave라는 고급 로깅 및 평가 플랫폼이 과정을 간소화합니다. ROUGE 지표를 Weave의 매끄러운 통합과 결합하면 점수를 효율적으로 계산하고, 여러 모델을 비교하며, 결과를 직관적인 워크플로 안에서 시각화할 수 있습니다.
이 튜토리얼에서는 다음 내용을 안내합니다:
- ROUGE 점수를 계산하기 위한 기본 스크립트 설정하기.
- Weave로 결과를 자동으로 로깅하기
먼저 필요한 라이브러리를 설치해 봅시다.
pip install litellmpip install -qq rougegit clone -b xtra-scorers https://github.com/wandb/weave.git && cd weave && pip install -qq -e .
이 스크립트는 ROUGE 지표를 간편하게 계산하고 워크플로에 통합할 수 있도록 지원하는 Weave 라이브러리를 사용합니다. 예제에서는 RougeScorer를 초기화하고, 데이터를 준비한 뒤, 각 예측–정답 쌍에 대해 ROUGE 점수를 계산하는 방법을 보여줍니다.
import weavefrom weave.scorers import RougeScorer# Initialize Weaveweave.init("rouge-scorer-demo")# Define the RougeScorerscorer = RougeScorer(column_map={"output": "prediction", "ground_truth": "ground_truth"})# Prepare your datadata = [{"prediction": "The cat sat on the mat.", "ground_truth": "A cat was sitting on the mat."},{"prediction": "The quick brown fox jumps over the lazy dog.", "ground_truth": "A fast brown fox jumped over a sleeping dog."},{"prediction": "The sun rises in the east.", "ground_truth": "Sunlight emerges from the eastern horizon."},]# Iterate through the data and compute ROUGE scoresfor item in data:scores = scorer.score(item["prediction"], item["ground_truth"])print(f"Prediction: {item['prediction']}")print(f"Ground Truth: {item['ground_truth']}")print(f"ROUGE Scores: {scores}")print("-" * 50)
스크립트에서는 먼저 필요한 모듈을 임포트하고 Weave를 초기화합니다. 그런 다음 RougeScorer를 정의하여 예상 출력과 을 매핑합니다. ground_truth 데이터셋의 해당 필드에 매핑합니다. 데이터는 예측과 이에 대응하는 기준 참조 텍스트의 쌍으로 구성됩니다. 각 예측은 정답과 비교하여 다음을 사용해 평가됩니다. scorer.score 메서드.
일반적으로 Weave를 사용하려면 다음을 추가해야 합니다 @weave.op 데코레이터를 사용해 연산을 로깅하는 것이 일반적이지만, RougeScorer는 네이티브로 통합되어 있어 호출 후 로깅이 자동으로 이루어집니다 weave.init("rouge-scorer-demo")이 통합 기능은 추가 설정 없이도 예측과 정답 같은 모든 입력과 계산된 ROUGE 지표와 같은 출력까지 모두 캡처합니다.
ROUGE와 Weave 평가로 여러 모델 평가하기
이제 Weave의 RougeScorer를 사용해 GPT-4o와 GPT-4o Mini의 성능을 평가하고 비교하겠습니다. 이를 통해 두 모델이 생성한 텍스트 요약을 정부 보고서 기준 데이터셋과 대조하여 품질을 체계적으로 평가하는 방법을 보여줍니다.
요약 작업을 위해 설계된 하위셋인 LongBench GovReport 데이터셋을 사용하겠습니다. 각 데이터 항목에는 질의(요약할 컨텍스트)와 정답(참조 요약)이 포함되어 있습니다. 목표는 GPT-4o와 GPT-4o Mini가 이 참조와 얼마나 잘 맞는 요약을 생성하는지 평가하는 것입니다.
Weave와 원활하게 통합하기 위해 두 모델 모두 Weave 호환 모델로 정의되며, predict 메서드. 이 메서드는 주어진 질의에 대한 요약을 생성하고, API 상호작용에는 litellm을 활용합니다. 결과는 Weave를 사용해 로깅되고 평가되므로, 전체 과정이 효율적이고 투명합니다.
다음과 같이 구성된 RougeScorer column_map 데이터셋 구조에 맞춰 각 생성된 요약에 대해 ROUGE 지표를 계산합니다. 이 데모에서는 데이터셋의 처음 30개 행을 선택합니다. 평가에 사용한 코드는 다음과 같습니다.
import weaveimport timefrom litellm import acompletionimport asyncioimport nest_asynciofrom weave.scorers import RougeScorerfrom weave import Evaluationweave_client = weave.init("rouge-scorer")dataset = weave.ref("weave:///c-metrics/rouge-scorer/object/longbench_gov_report_subset:qGNjItwJSEw1NF6xMXX2a0syHJfXVMjeYqwqVwWsdbs").get()class GPT4oMini(weave.Model):model_name: str = "gpt-4o-mini"temp: float = 0.0max_tokens: int = 2048top_p: float = 1.0@weave.op()async def predict(self, query: str) -> str:response = await acompletion(model=self.model_name,api_key="your api key",messages=[{"role": "system","content": "You are provided with government reports. Summarize the report in a few sentences but make sure to include all the important information."},{"role": "user","content": query}],temperature=self.temp,max_tokens=self.max_tokens,top_p=self.top_p)return response.choices[0].message.contentclass GPT4o(weave.Model):model_name: str = "gpt-4o-2024-08-06"temp: float = 0.0max_tokens: int = 2048top_p: float = 1.0@weave.op()async def predict(self, query: str) -> str:time.sleep(2)response = await acompletion(model=self.model_name,api_key="your api key",messages=[{"role": "system","content": "You are provided with government reports. Summarize the report in a few sentences but make sure to include all the important information."},{"role": "user","content": query}],temperature=self.temp,max_tokens=self.max_tokens,top_p=self.top_p)return response.choices[0].message.contentgpt4o = GPT4o()gpt4omini = GPT4oMini()nest_asyncio.apply()scorer = RougeScorer(column_map={"output": "query", "ground_truth": "ground_truth"})evaluation = Evaluation(dataset = dataset.rows[:30],scorers=[scorer],)asyncio.run(evaluation.evaluate(gpt4o))asyncio.run(evaluation.evaluate(gpt4omini))
각 모델은 입력 질의에 대한 요약을 생성하고, Weave의 RougeScorer가 제공하는 ROUGE 지표를 사용해 정답 요약과 비교됩니다.
스코어러 데이터셋 필드를 예상 입력과 맞추도록 구성되어 있으며 (query 출력으로 및 ground_truth (참고용). 평가 결과에 따르면 GPT-4o Mini는 모든 ROUGE 지표에서 GPT-4o보다 약간 더 우수한 성능을 보였습니다. ROUGE-1, ROUGE-2, ROUGE-L 점수가 더 높게 나타나, 더 나은 콘텐츠 선택, 유창성, 문장 수준의 구조적 정렬을 시사합니다. 또한 GPT-4o Mini는 지연 시간이 크게 낮아, 품질을 유지하면서도 실시간 애플리케이션에 매우 효율적입니다.
전반적으로 Weave는 평가를 빠르게 구축하고 결과 분석을 쉽게 할 수 있어 매우 편리합니다. Weave 평가 아래에서 볼 수 있듯이, 전체 평가에 대한 성능을 시각화할 뿐만 아니라 각 개별 샘플의 구체적인 결과까지 분석할 수 있는 매우 편리한 대시보드를 제공합니다:


결론
결론적으로, ROUGE는 기계 생성 텍스트의 품질을 평가하는 데 매우 중요한 도구로 자리 잡았으며, 특히 요약과 번역 같은 과제에서 그 가치를 입증했습니다. ROUGE는 재현율(recall), 정밀도(precision), F1-score와 같은 명확하고 정량적인 지표를 제공함으로써, 개발자가 AI 모델을 개선하도록 돕고, 생성된 콘텐츠가 관련성, 명확성, 일관성 측면에서 인간의 기대에 부합하도록 보장합니다.
AI가 계속 발전함에 따라, 생성된 콘텐츠에서 명확성, 관련성, 일관성에 대한 높아지는 요구를 충족하려면 신뢰할 수 있는 자동화 평가 방법이 필수적입니다. 요약 모델을 다듬거나 시스템 간 성능을 비교하든, ROUGE와 Weave와 같은 도구는 손쉽게 높은 품질의 결과를 얻을 수 있도록 도와줍니다. 지금 바로 탐색을 시작하고 끊임없이 변화하는 AI의 세계에서 앞서 나가세요.
Evaluating LLMs on Amazon Bedrock
Discover how to use Amazon Bedrock in combination with W&B Weave to evaluate and compare Large Language Models (LLMs) for summarization tasks, leveraging Bedrock’s managed infrastructure and Weave’s advanced evaluation features.
Comparing GPT Models on Azure AI Foundry with W&B Weave
Learn how to compare and evaluate OpenAI’s GPT models on Azure with W&B Weave on text summarization tasks, leveraging Azure’s managed infrastructure and Weave’s customizable evaluation tools.
Building and evaluating a RAG system with DSPy and W&B Weave
A guide to building a RAG system with DSPy, and evaluating it with W&B Weave.
Supercharging LLM summarization
A guide to making the most of LLMs for summarization tasks
Add a comment