본문 바로가기
Python

한 줄 요약 생성기 만들기 - KoBART로 뉴스 자동 요약 실습

by ramzee 2025. 4. 10.

0. 이 글은 누구를 위한 글인가요?

  • 뉴스나 블로그 글을 한 줄로 자동 요약하고 싶어요.
  • AI 모델을 직접 활용해 실전에서 쓸 수 있는 요약 시스템을 만들고 싶어요.
  • 제목이나 본문을 요약해 태그/설명/소셜 요약으로 쓰고 싶어요.

1. 프로젝트 개요

  • 입력: 뉴스 제목 또는 뉴스 본문
  • 출력: 요약된 문장 (1~2줄)
  • 사용 모델: KoBART Summary (digit82/kobart-summarization)
  • 도구: Hugging Face Transformers + PyTorch

2. 라이브러리 설치

pip install transformers pandas torch sentencepiece

3. 모델 로딩


from transformers import BartTokenizer, BartForConditionalGeneration

model_name = "digit82/kobart-summarization"
tokenizer = BartTokenizer.from_pretrained(model_name)
model = BartForConditionalGeneration.from_pretrained(model_name)

4. 샘플 뉴스 본문 준비


text = """
인공지능(AI) 기술이 빠르게 발전하면서 의료, 교육, 금융 등 다양한 산업 분야에서 활용도가 높아지고 있다.
특히 챗봇, 자동 번역기, 이미지 생성기 등 실생활 속 AI 서비스가 대중화되며 기술에 대한 관심도도 높아지고 있다.
"""

5. 요약 함수 만들기


import torch

def summarize(text, max_length=40):
    input_ids = tokenizer.encode(text, return_tensors='pt', max_length=512, truncation=True)
    summary_ids = model.generate(input_ids, max_length=max_length, num_beams=4, early_stopping=True)
    output = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
    return output

6. 요약 결과 확인


summary = summarize(text)
print("원문:")
print(text.strip())
print("\n요약:")
print(summary)
출력 예시

원문:
인공지능(AI) 기술이 빠르게 발전하면서 의료, 교육, 금융 등 다양한 산업 분야에서 활용도가 높아지고 있다.
특히 챗봇, 자동 번역기, 이미지 생성기 등 실생활 속 AI 서비스가 대중화되며 기술에 대한 관심도도 높아지고 있다.

요약:
AI 기술이 다양한 산업에서 활용되며 대중화되고 있다.

7. 여러 문장 자동 요약 적용 (DataFrame)


import pandas as pd

df = pd.read_csv("인공지능_블로그_감성분석결과.csv")
df['요약'] = df['제목'].apply(lambda x: summarize(x) if isinstance(x, str) else '')
print(df[['제목', '요약']].head())
출력 예시
제목요약
인공지능이 바꾸는 미래 사회인공지능이 사회를 변화시킨다
챗GPT 활용법 정리챗GPT 사용법 소개
인공지능 시대, 우리가 준비할 것들AI 시대의 준비

8. 요약 결과 저장하기

df.to_csv("인공지능_요약결과.csv", index=False, encoding='utf-8-sig')

9. 마무리 요약

단계설명
모델 준비KoBART 사전학습 요약 모델 로드
단일 문장 요약summarize() 함수로 한 줄 생성
데이터프레임 처리.apply()로 일괄 요약
결과 저장CSV로 저장 가능

10. 확장 아이디어

  • 뉴스 본문 전체 요약 (긴 문장 입력)
  • 긍정 뉴스만 골라 요약하기
  • 요약 + 키워드 추출 + 감성 표시 결합
  • 요약 결과를 기반으로 뉴스 알림, 카드뉴스 자동 생성