HSEOM GeckoHSEOM
Instagram

흑섬 TECH 블로그 - 데이터 기반 브리딩 기술

레오파드게코 브리딩에 데이터 분석과 AI 기술을 접목합니다. Python, NumPy를 활용한 체중 관리, 성장 추이 분석, 환경 데이터 시각화 등 실무에서 직접 사용하는 기술을 일반인도 이해하기 쉽게 설명합니다.

주요 카테고리

AI 카테고리

AI와 머신러닝을 활용한 레오파드게코 브리딩 기술과 데이터 분석 방법을 공유합니다.

43개의 글이 있습니다.

[딥러닝 실전 1편] 텍스트 요약 도구 만들기 — 핵심 문장만 골라내기

ML 모델 없이도 텍스트를 요약할 수 있어요. 단어 빈도 기반으로 문장에 점수를 매기고, 점수 높은 문장만 뽑아내는 추출 요약기를 직접 구현해봅시다.

카테고리: AI

작성일: 2026-04-28

예상 읽기 시간: 20

Back to Tech
AI·20min read·

[딥러닝 실전 1편] 텍스트 요약 도구 만들기 — 핵심 문장만 골라내기

ML 모델 없이도 텍스트를 요약할 수 있어요. 단어 빈도 기반으로 문장에 점수를 매기고, 점수 높은 문장만 뽑아내는 추출 요약기를 직접 구현해봅시다.

시작하며 — 긴 글, 핵심만 뽑아낼 수 없을까요?

뉴스 기사 하나를 읽는 데 평균 3분이 걸린다고 해요.
하루에 100개 기사를 읽어야 한다면? 300분, 5시간이 필요하죠.
근데 사실 그 기사에서 우리가 정말 필요한 건 2~3문장이에요.

텍스트 요약은 바로 이 문제를 해결하는 기술입니다.
딥러닝 없이도, NLTK 하나만으로 꽤 쓸만한 요약기를 만들 수 있어요.

이번 편에서는 추출 요약(Extractive Summarization) 방식으로
원문에서 중요한 문장을 직접 뽑아내는 도구를 구현합니다.

추출 요약은 원문 문장을 그대로 가져오는 방식이에요.
ChatGPT처럼 "새 문장을 생성"하는 추상 요약(Abstractive)과 달리,
원문에 실제로 존재하는 문장만 선택합니다. 그래서 사실 왜곡이 없어요.



텍스트 요약 파이프라인 — 4단계로 끝납니다

텍스트 요약 파이프라인 — 문장 분리 → 단어 빈도 계산 → 문장 점수 계산 → Top-K 추출

전체 흐름은 단순해요:

  1. 문장 분리 — sent_tokenize()로 마침표 기준 문장 쪼개기
  2. 단어 빈도 계산 — Counter()로 각 단어 등장 횟수 집계
  3. 문장 점수 계산 — 문장 내 단어 빈도 합산 = 문장 중요도
  4. Top-K 추출 — nlargest()로 점수 높은 K개 문장 선택

별도 학습 없이, 단어 빈도만으로도 핵심 문장을 꽤 잘 골라냅니다.



문장 중요도 점수 — 3가지 방법

문장 중요도 점수 계산 — TF 기반, 위치 기반, 제목 유사도 비교

문장에 점수를 매기는 방법은 여러 가지예요:

  • 단어 빈도 기반 (TF Score) — 자주 등장하는 단어가 많을수록 중요한 문장
  • 위치 기반 (Position Score) — 첫 문장, 마지막 문장은 핵심 정보를 담는 경향이 있어요
  • 제목 유사도 (Title Similarity) — 제목 키워드를 많이 포함할수록 중요한 문장

이번 구현에서는 단어 빈도 기반을 사용합니다.
세 가지를 가중치로 결합하면 더 정확한 요약이 가능해요.

단어 빈도 기반의 논리는 간단해요.
"AI", "neural network", "model"이 텍스트 전반에 걸쳐 자주 등장한다면,
그 단어들을 많이 포함한 문장이 핵심일 가능성이 높다는 가정이에요.
물론 "the", "is" 같은 불용어는 미리 걸러야 하고요.



직접 구현해봅시다

Jupyter 실습 — 라이브러리 설치 및 임포트 (셀 1)
NLTK 설치 및 임포트

NLTK 설치 후 punkt, stopwords 데이터를 다운로드합니다. sent_tokenize, word_tokenize, Counter가 핵심 도구예요.

Jupyter 실습 — TextSummarizer 클래스 구현 (셀 2)
TextSummarizer 클래스 전체 코드

_get_word_freq()로 단어 빈도를 계산하고, summarize()에서 각 문장에 점수를 매겨 Top-N을 반환합니다.

클래스 구조는 간단해요:

  • _get_word_freq() — 불용어 제거 후 단어 빈도 계산
  • summarize() — 문장 점수 계산 후 Top-N 반환


요약 결과 확인

Jupyter 실습 — 실제 텍스트 요약 실행 결과 (셀 3)
텍스트 요약 실행 결과 — 원본 10문장에서 핵심 3문장 추출

10문장 입력 → Top-3 추출. AI, deep learning, models 키워드가 많은 문장들이 높은 점수를 받았습니다.

10개 문장에서 점수 기준으로 Top-3을 뽑았어요.
AI, deep learning, models 같은 핵심 키워드가 많이 포함된 문장들이 선택됐습니다.

n_sentences 파라미터를 바꾸면 추출 문장 수를 조절할 수 있어요.
긴 기사라면 5~7개, 짧은 단락이라면 2~3개가 적당합니다.



문장별 점수 시각화 — 어떤 문장이 살아남을까요?

문장별 중요도 점수 랭킹 — 선택된 문장 vs 탈락된 문장
Jupyter 실습 — 문장별 점수 시각화 (셀 4)
matplotlib 바 차트 시각화 코드

선택된 문장은 초록(mint)색, 탈락 문장은 회색으로 구분해서 시각화합니다.

문장별 중요도 점수 바 차트 결과

S2, S6가 10점으로 공동 1위. S3은 4점으로 최하위 — 핵심 키워드가 적은 문장은 자연스럽게 탈락합니다.

초록색 막대가 선택된 문장이에요.
S2, S6가 점수 10으로 공동 1위. S4, S5, S8이 9점으로 뒤를 잇고 있습니다.
S3은 4점으로 최하위 — "ImageNet 대회" 언급만 있어서 핵심 키워드가 적어요.



요약 전 vs 후 — 핵심은 살아있습니다

요약 전후 비교 — 20문장에서 3문장으로 85% 압축

800자짜리 글이 120자로 줄었어요.
압축률 85%, 그런데 핵심 내용은 거의 다 살아있죠.
뉴스 기사나 논문 초록 자동 생성에 바로 쓸 수 있는 수준입니다.



어디에 쓸 수 있을까요?

텍스트 요약 실전 활용 — 뉴스 요약, 리뷰 요약, 논문 요약
  • 뉴스 자동 요약 — RSS 피드에서 기사 수집 → 핵심 3문장 추출 → 모닝브리핑 봇
  • 고객 리뷰 요약 — 수천 개 리뷰에서 반복 의견 추출 → CS팀 VOC 분석
  • 논문/보고서 요약 — PDF 텍스트 추출 후 섹션별 요약 → 리서치 자동화

별도 학습 없이, 어떤 도메인에도 바로 적용할 수 있어요.
다음 편에서는 두 문장이 얼마나 비슷한지 측정하는 문장 유사도 계산기를 만들어봅니다.

#NLP#텍스트요약#NLTK#추출요약#TextRank#python