텍스트 요약 (Text Summarization)
텍스트 요약은 긴 문서의 핵심 내용을 짧게 압축하는 태스크입니다. 뉴스 기사 요약, 회의록 정리, 논문 초록 생성, 대화 요약 등 정보 과부하 시대에 필수적인 기능입니다. 이 문서에서는 추출(Extractive) 요약과 생성(Abstractive) 요약 두 가지 접근법을 모두 실습합니다.학습 목표
이 문서를 완료하면 다음을 수행할 수 있습니다.- Extractive 요약과 Abstractive 요약의 차이를 설명할 수 있습니다
- TextRank 알고리즘으로 추출 요약을 구현할 수 있습니다
- BART/T5 모델로 생성 요약을 수행할 수 있습니다
- ROUGE 지표로 요약 품질을 평가할 수 있습니다
요약 방식 비교
| 항목 | Extractive (추출형) | Abstractive (생성형) |
|---|---|---|
| 방식 | 원문에서 중요 문장 선택 | 새로운 문장 생성 |
| 장점 | 사실 왜곡 적음, 구현 간단 | 자연스러운 요약, 재구성 가능 |
| 단점 | 어색한 문장 연결 | 환각(Hallucination) 위험 |
| 대표 방법 | TextRank, BERT-ext | BART, T5, Pegasus |
| 학습 필요 | 비지도 학습 가능 | 대규모 학습 데이터 필요 |
실습 1: TextRank 추출 요약
TextRank 알고리즘 이해
TextRank는 Google의 PageRank를 텍스트에 적용한 알고리즘입니다. 학습 데이터 없이 비지도 방식으로 중요 문장을 추출합니다.동작 원리:
- 문서를 문장 단위로 분할합니다
- 각 문장을 벡터로 표현합니다 (TF-IDF 또는 문장 임베딩)
- 문장 간 유사도로 그래프를 구성합니다
- PageRank 알고리즘으로 각 문장의 중요도를 계산합니다
- 중요도가 높은 문장을 선택합니다
생성 파라미터 가이드
요약 생성 시 디코딩 파라미터가 결과 품질에 큰 영향을 미칩니다.| 파라미터 | 역할 | 권장 값 |
|---|---|---|
num_beams | 빔 서치 빔 수 | 4~6 |
length_penalty | 길이 페널티 (>1: 긴 출력 선호) | 1.0~2.0 |
no_repeat_ngram_size | 반복 방지 N-gram 크기 | 3 |
min_length | 최소 출력 길이 | 원문의 10~20% |
max_length | 최대 출력 길이 | 원문의 20~40% |
early_stopping | EOS 토큰 생성 시 조기 종료 | True |
요약이 원문을 거의 그대로 복사합니다
요약이 원문을 거의 그대로 복사합니다
no_repeat_ngram_size를 설정하세요 (3 권장). length_penalty를 낮추면 (0.5~1.0) 더 압축적인 요약이 생성됩니다. 모델이 충분히 학습되지 않았을 수 있으므로, 더 큰 모델이나 요약 전용 Fine-tuned 모델을 시도하세요.한국어 요약에서 문법 오류가 많습니다
한국어 요약에서 문법 오류가 많습니다
한국어 전용 모델(KoBART, pko-t5)을 사용하세요. 다국어 모델(mBART, mT5)은 한국어 생성 품질이 전용 모델보다 낮을 수 있습니다.
num_beams를 높이면 문법적 품질이 개선됩니다.ROUGE 점수가 낮은데 요약 품질은 괜찮아 보입니다
ROUGE 점수가 낮은데 요약 품질은 괜찮아 보입니다
ROUGE는 n-gram 겹침 기반 지표이므로, 의미는 같지만 다른 표현을 사용하면 점수가 낮게 나올 수 있습니다. BERTScore나 인간 평가를 보조 지표로 사용하세요. Abstractive 요약에서는 ROUGE-L이 ROUGE-2보다 더 적합한 지표입니다.

