법률 문서 요약 BERT 모델 (Python)

중급 정성 분석 legal python
예상 소요 시간 120분
사전 지식 Python 중급, 딥러닝 기초
표본 크기 기준 최소 500개 판례
통계 가정 사전학습 모델 적합성
난이도: 중급 — 실제 연구에 바로 적용 가능한 수준입니다.

개요

한국어 판례 문서를 KoBART 기반 요약 모델로 자동 요약한다. Hugging Face Transformers 라이브러리를 사용하여 사전 학습된 한국어 요약 모델을 파인튜닝 없이 적용한다.

분석 절차

1단계: 모델 로드

gogamza/kobart-base-summarization 사전학습 모델을 로드한다. 이 모델은 한국어 텍스트 요약에 특화되어 있다.

2단계: 텍스트 전처리

판례 전문을 1024 토큰 이내로 자른다. 긴 판례는 분할하여 요약 후 결합한다.

3단계: 요약 생성

Beam Search(num_beams=4)로 고품질 요약을 생성한다. max_length=150, min_length=50으로 핵심 내용을 포함하면서 간결하게 요약한다.

4단계: 품질 평가

ROUGE 점수로 요약 품질을 평가한다. 사람이 작성한 요약과 비교하여 ROUGE-1, ROUGE-2, ROUGE-L을 계산한다.

주의사항

  • 법률 용어의 정확성이 중요하므로 요약 결과를 법률 전문가가 검수해야 한다 (RULE-04)
  • 모델이 핵심 법리를 누락할 수 있으므로 요약과 원문을 함께 제공한다
  • 코드 예제

    from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
    import torch
    
    # 한국어 BERT 요약 모델 로드
    model_name = "gogamza/kobart-base-summarization"
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
    
    def summarize_judgment(text, max_length=150):
        inputs = tokenizer(text, return_tensors="pt", max_length=1024,
                           truncation=True, padding="max_length")
        
        summary_ids = model.generate(
            inputs["input_ids"],
            num_beams=4,
            max_length=max_length,
            min_length=50,
            length_penalty=2.0,
            early_stopping=True
        )
        
        summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
        return summary
    
    # 판례 요약 실행
    import pandas as pd
    df = pd.read_csv('judgments.csv')
    df['summary'] = df['full_text'].apply(summarize_judgment)
    df[['case_id', 'summary']].to_csv('judgment_summaries.csv', index=False)

    참고문헌

    Lewis, M., Liu, Y., Goyal, N., et al. (2020). BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension. ACL 2020.

    코드 예제

    PYTHON
    from transformers import AutoTokenizer, AutoModelForSeq2SeqLM import torch # 한국어 BERT 요약 모델 로드 model_name = "gogamza/kobart-base-summarization" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSeq2SeqLM.from_pretrained(model_name) def summarize_judgment(text, max_length=150): inputs = tokenizer(text, return_tensors="pt", max_length=1024, truncation=True, padding="max_length") summary_ids = model.generate( inputs["input_ids"], num_beams=4, max_length=max_length, min_length=50, length_penalty=2.0, early_stopping=True ) summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True) return summary # 판례 요약 실행 import pandas as pd df = pd.read_csv('judgments.csv') df['summary'] = df['full_text'].apply(summarize_judgment) df[['case_id', 'summary']].to_csv('judgment_summaries.csv', index=False)

    참고문헌

    Lewis, M., Liu, Y., Goyal, N., et al. (2020). BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension. ACL 2020.

    이 방법론과 연결된 콘텐츠