워드클라우드 만들기 전 텍스트 전처리 방법
워드클라우드 시각화의 품질을 결정하는 텍스트 전처리 과정을 단계별로 설명합니다. 한국어 불용어 처리와 형태소 분석 적용법을 포함합니다.
Q.한국어 워드클라우드를 만들기 전 텍스트 전처리는 어떻게 하나요?
한국어 워드클라우드 전처리는 3단계입니다. 1) KoNLPy Okt로 형태소 분석 후 명사만 추출합니다. 2) '것', '수', '때', '곳' 같은 의미 없는 불용어를 제거합니다. 3) 단어 빈도를 계산해 Counter 객체로 만들면 Python wordcloud 라이브러리에 바로 입력할 수 있습니다. 폰트는 한국어를 지원하는 NanumGothic 등을 별도 지정해야 합니다.
워드클라우드의 가장 큰 단어가 "것", "수", "있다"인 경우를 자주 본다. 전처리 없이 원문을 넣었기 때문이다. 의미 있는 워드클라우드는 전처리 품질에서 시작한다.
한국어 워드클라우드의 핵심 문제
한국어는 조사·어미가 단어에 결합하기 때문에 영어처럼 공백으로 단어를 분리하면 "배송이", "배송을", "배송의"가 각각 다른 단어로 집계된다. 이를 해결하려면 형태소 분석이 필수다.
전처리 전체 코드
python
from konlpy.tag import Okt
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 1. 형태소 분석 - 명사만 추출
okt = Okt()
text = "여기에 분석할 텍스트를 넣으세요..."
nouns = okt.nouns(text)
# 2. 불용어 제거
stopwords = {'것', '수', '때', '곳', '점', '등', '및', '즉', '위',
'이', '그', '저', '우리', '나', '너', '왜', '어떻게'}
nouns = [n for n in nouns if n not in stopwords and len(n) > 1]
# 3. 빈도 계산
word_freq = Counter(nouns)
# 4. 워드클라우드 생성
wc = WordCloud(
font_path='NanumGothic.ttf', # 한국어 폰트 필수
width=800,
height=600,
background_color='white',
max_words=100,
)
wc.generate_from_frequencies(word_freq)
plt.figure(figsize=(10, 7))
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
불용어 목록 관리 전략
기본 불용어 외에 도메인 특화 불용어를 추가해야 한다. 쇼핑몰 리뷰 분석이라면 "상품", "구매", "주문"처럼 모든 리뷰에 등장하는 단어도 불용어에 포함시켜야 실제 차별화된 키워드가 드러난다.
시각화 품질 높이기
- TF-IDF 가중치 적용: 단순 빈도 대신 TF-IDF 점수를 빈도로 사용하면 문서 특성을 더 잘 반영
- 마스크 이미지 적용: 특정 형태(원, 별 등)로 워드클라우드 모양 지정 가능
- 색상 함수 커스터마이징: 긍정 단어는 파란색, 부정 단어는 붉은색으로 감성별 색 적용
---
이 글은 AI가 공개 자료를 기반으로 작성했습니다. KoNLPy 설치는 Java 환경이 선행되어야 합니다.