🤖 AI/ML

문서 요약

Text Summarization

긴 문서를 짧게 요약. 추출식/생성식 방법.

📖 상세 설명

문서 요약(Text Summarization)은 긴 텍스트의 핵심 내용을 추출하거나 생성하여 짧고 의미 있는 요약문을 만드는 자연어 처리 기술입니다. 정보 폭발 시대에 방대한 문서를 효율적으로 소화하기 위한 필수 도구로, 뉴스 기사, 연구 논문, 법률 문서, 고객 리뷰 등 다양한 분야에서 활용됩니다.

문서 요약은 크게 추출식(Extractive)과 생성식(Abstractive) 두 가지 방식으로 나뉩니다. 추출식은 원문에서 중요한 문장을 그대로 선택하는 방식이고, 생성식은 새로운 문장을 생성하여 원문의 의미를 재표현합니다. 2017년 Transformer 등장 이후 생성식 요약이 급격히 발전했으며, GPT, BART, T5 등의 모델이 인간 수준의 요약 품질을 달성했습니다.

현대의 문서 요약 시스템은 어텐션 메커니즘을 통해 문서 내 중요 부분을 식별하고, 디코더를 통해 자연스러운 요약문을 생성합니다. 특히 2024-2025년 Claude, GPT-4o 등 최신 LLM들은 수만 토큰의 긴 문서도 맥락을 유지하며 정확하게 요약할 수 있게 되었습니다.

실무에서 문서 요약은 뉴스 큐레이션, 법률 문서 분석, 연구 논문 리뷰, 회의록 자동 생성, 고객 리뷰 분석 등에 광범위하게 적용됩니다. RAG(검색 증강 생성) 파이프라인에서도 검색된 문서를 요약하여 LLM에 효율적으로 전달하는 데 핵심적인 역할을 합니다.

💻 코드 예제

# OpenAI GPT를 활용한 문서 요약 (2024-2025)
from openai import OpenAI

client = OpenAI()

def summarize_document(text: str, max_length: int = 200) -> str:
    """
    긴 문서를 요약합니다.

    Args:
        text: 요약할 원문 텍스트
        max_length: 요약문 최대 단어 수

    Returns:
        요약된 텍스트
    """
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {
                "role": "system",
                "content": f"당신은 문서 요약 전문가입니다. 핵심 내용을 {max_length}단어 이내로 요약하세요."
            },
            {
                "role": "user",
                "content": f"다음 문서를 요약해주세요:\n\n{text}"
            }
        ],
        temperature=0.3  # 낮은 temperature로 일관성 확보
    )
    return response.choices[0].message.content

# 사용 예시
long_document = """
인공지능(AI)은 21세기 가장 혁신적인 기술 중 하나로 자리잡았습니다.
머신러닝과 딥러닝의 발전으로 AI는 이미지 인식, 자연어 처리,
자율주행 등 다양한 분야에서 인간 수준의 성능을 달성했습니다.
특히 2022년 ChatGPT의 등장은 AI 기술의 대중화를 이끌었으며,
기업들은 경쟁적으로 AI를 비즈니스에 통합하고 있습니다.
"""

summary = summarize_document(long_document)
print(f"요약: {summary}")

# Hugging Face Transformers를 활용한 로컬 요약
from transformers import pipeline

summarizer = pipeline("summarization", model="facebook/bart-large-cnn")

result = summarizer(long_document, max_length=130, min_length=30, do_sample=False)
print(f"BART 요약: {result[0]['summary_text']}")

📊 성능 & 비용

주요 문서 요약 모델/서비스 비교 (2025년 1월 기준):

모델/서비스 최대 컨텍스트 비용 (1M 토큰) 특징
GPT-4o 128K $2.50 / $10.00 고품질, 다국어 지원
Claude 3.5 Sonnet 200K $3.00 / $15.00 긴 문서 처리 우수
Gemini 1.5 Pro 2M $1.25 / $5.00 초대용량 문서 지원
BART-large-CNN 1K 무료 (로컬) 뉴스 요약 특화
Pegasus 1K 무료 (로컬) 추상적 요약 우수

🗣️ 실무에서 이렇게 말하세요

💬 회의에서
"고객 리뷰 분석에 문서 요약 파이프라인을 적용했더니, 10,000건의 리뷰를 5분 만에 핵심 인사이트로 압축할 수 있었습니다. 추출식보다 생성식 요약이 더 자연스러운 결과를 보여줘서 GPT-4o를 선택했습니다."
💬 면접에서
"문서 요약은 크게 Extractive와 Abstractive 방식으로 나뉩니다. Extractive는 원문 문장을 그대로 선택하고, Abstractive는 새로운 문장을 생성합니다. 최근에는 Transformer 기반 모델이 Abstractive 요약에서 ROUGE 점수 45 이상을 달성하며 인간 수준에 근접했습니다."
💬 기술 토론에서
"RAG 시스템에서 검색된 문서가 너무 길면 컨텍스트 윈도우를 초과하는 문제가 있는데, 문서 요약 레이어를 추가하면 관련 정보만 압축해서 전달할 수 있어요. Map-Reduce 패턴으로 각 청크를 요약한 뒤 최종 요약을 생성하는 방식이 효과적입니다."

⚠️ 흔한 실수 & 주의사항

핵심 정보 누락 (Hallucination)

생성식 요약 모델이 원문에 없는 내용을 만들어내거나, 중요한 수치/고유명사를 잘못 생성할 수 있습니다. 법률, 의료 등 정확성이 중요한 도메인에서는 반드시 사람이 검증해야 합니다.

컨텍스트 길이 제한 무시

100페이지 문서를 한 번에 요약하려다가 토큰 제한에 걸리는 경우가 많습니다. 긴 문서는 청킹(chunking) 후 단계적으로 요약하는 Map-Reduce 방식을 적용해야 합니다.

올바른 방법: 도메인 특화 + 검증 레이어

요약 대상 도메인에 맞는 프롬프트를 설계하고, 중요한 엔티티(숫자, 이름, 날짜)는 원문과 대조 검증하는 후처리 레이어를 추가하세요. ROUGE, BERTScore 등으로 요약 품질을 정량적으로 모니터링하는 것도 권장됩니다.

🔗 관련 용어

📚 더 배우기