Python
[Python] 텍스트 데이터 전처리- 불용어 제거
teamnova
2025. 5. 7. 20:02
728x90
안녕하세요 오늘은 파이썬에서 긴 텍스트를 단어 단위로 자르고 의미 없는 단어, 즉 불용어(stop words) 를 제거해 딥러닝 모델 입력에 적합한 형태로 가공하는 방법을 간단하게 알아보도록 하겠습니다.
2. 불용어(stopwords)란?
불용어(stopwords)란, 텍스트 안에서 자주 등장하지만 의미를 가지지 않는 단어를 말합니다.
예를 들어 "그리고", "그", "등", "하는", "있다" 같은 단어들은 분석에 도움이 되지 않아 제거합니다.
영어에는 nltk에서 기본 제공되지만, 한국어는 보통 직접 정의해야 합니다.
1. Konlpy ( Korean Natural Language Processing in Python ) 설치
먼저 한국어 텍스트를 다루기 위해 한국어 자연어 처리를 할 수 있게 해주는 라이브러리를 설치해줍니다
pip install konlpy
해당 라이브러리에서는 한국어 문장에 대해 형태소 분석, 품사 태깅, 명사 추출 등의 작업을 할 수 있습니다.
한국어는 영어와 달리 공백으로 단어 경계를 구분하기 어려운 언어 입니다. 또한 조사, 어미, 접사 등 형태소 단위 분석이 필요합니다.
대표적인 자연어 처리를 위한 파이썬 라이브러리인 nltk 는 한국어 지원이 부족하기 때문에 Konlpy 사용이 권장됩니다!
2. 코드 전체
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import nltk
nltk.download('punkt')
nltk.download('stopwords')
from konlpy.tag import Okt
# 뉴스 제목 + 본문
title = """IBM CEO "트럼프 관세에도 AI 투자 두 배 이상 늘어…총고용도 늘었다"""
body = """(본문 생략 가능 또는 위에 그대로 붙여도 됨)"""
text = title + "\n" + body
# 형태소 분석기 설정
okt = Okt()
tokens = okt.nouns(text) # 명사만 추출
# 불용어 정의
stop_words = set([
"그", "것", "수", "이", "등", "더", "들", "및", "는", "은", "에", "가", "을", "를",
"로", "과", "와", "의", "에서", "에게", "에게서", "이다", "한다", "있는", "했다",
"되다", "이다", "하여", "한다", "한", "하여", "하고", "하는", "같은", "때문에",
"그리고", "그러나", "또한", "하지만", "즉", "그것", "저것", "어떤", "이런",
"저런", "이번", "그런", "좀", "잘", "못", "너무", "매우", "아주", "더욱", "꼭",
"이제", "또", "그래서", "그러므로", "하지만", "그러면", "그러니까"
])
# 전처리 (불용어 제거 + 한 글자 제거)
filtered = [word for word in tokens if word not in stop_words and len(word) > 1]
print("전처리 결과:", filtered)
결과
전처리 결과: ['트럼프', '관세', '투자', '이상', '용도', '아빈드', '크리슈나', '최고경영자', '기업', '인공', '지능', '투자가', '이상', '강조', '관세', '전쟁', '관련', '지출', '세간', '시각', '정면', '반박', '사람' ... 이하생략
이 데이터를 기반으로 자주 등장하는 핵심 키워드 추출, 워드클라우드 시각화, 감정 분석, 텍스트 분류 등 다양한 작업으로 확장할 수 있습니다.
감사합니다