감성 분석을 위한 텍스트 정리 가이드
감성 분석(Sentiment Analysis) 모델의 정확도를 높이기 위한 한국어 텍스트 전처리 방법과 부정 표현·이모지 처리 전략을 설명합니다.
Q.감성 분석을 위한 한국어 텍스트 전처리는 어떻게 하나요?
감성 분석 전처리의 핵심은 부정 표현 처리입니다. '좋지 않다', '별로다' 같은 부정 구조를 일반 불용어 제거 방식으로 처리하면 '좋다'만 남아 감성이 반전됩니다. 부정어(않다, 못하다, 별로)를 바로 뒤 형용사와 결합하여 '좋지않다' 형태로 보존해야 합니다. 또한 이모지는 제거하지 말고 텍스트 감성어로 변환하는 것이 정확도를 높입니다.
"이 제품 진짜 별로 아니라고는 못하겠네요"라는 문장을 단순 키워드 방식으로 분석하면 '진짜', '아니라고'의 감성 신호가 충돌한다. 한국어 감성 분석에서 이중 부정과 완곡 표현은 영어보다 훨씬 복잡하다.
핵심 답변
감성 분석 전처리의 핵심은 부정 표현 처리입니다. '좋지 않다', '별로다' 같은 부정 구조를 일반 불용어 제거 방식으로 처리하면 '좋다'만 남아 감성이 반전됩니다. 부정어(않다, 못하다, 별로)를 바로 뒤 형용사와 결합하여 '좋지않다' 형태로 보존해야 합니다. 또한 이모지는 제거하지 말고 텍스트 감성어로 변환하는 것이 정확도를 높입니다.
한국어 감성 분석의 3대 난제
KNU 감성 사전(14,843개 어휘 수록, 군산대학교)을 기반으로 연구한 결과에 따르면, 한국어 감성 분석의 정확도를 낮추는 주요 요인은 다음과 같다.
- 부정 표현 구조: "안", "못", "않다", "없다" 등 부정어가 앞 형용사와 분리되어 등장
- 경어체 감성 모호성: "최고세요~"(긍정)와 "최고시겠어요..."(빈정거림)의 구분
- 신조어·이모티콘: 사전에 없는 감성 표현 지속 생성
부정 표현 보존 전처리
python
import re
def preserve_negation(text):
# "좋지 않다" → "좋지않다" 결합
neg_patterns = [
(r'([가-힣]+)지\s*(않|못)', r'\1지\2'),
(r'([가-힣]+)\s*(안|못)\s*([가-힣]+다)', r'\1\2\3'),
]
for pattern, replacement in neg_patterns:
text = re.sub(pattern, replacement, text)
return text
이모지 감성 변환
이모지를 단순 제거하면 중요한 감성 신호를 잃는다. 대신 감성 레이블로 변환한다.
python
emoji_sentiment = {
'😊': '기쁨_긍정',
'😢': '슬픔_부정',
'😡': '분노_부정',
'👍': '추천_긍정',
'💔': '실망_부정',
}
신조어 사전 구축
정기적으로 업데이트되는 사용자 정의 사전을 유지한다. 소셜 미디어에서 새로운 감성 표현은 약 3-6개월 주기로 등장한다. "ㄹㅇ", "존맛", "레전드" 같은 긍정 신조어를 사전에 추가하지 않으면 중립으로 분류된다.
도메인 특화 전처리
쇼핑몰 리뷰, 영화 리뷰, 뉴스 댓글 등 도메인마다 자주 등장하는 감성 패턴이 다르다. 같은 "빠르다"가 배송 리뷰에서는 긍정이지만, 음식 리뷰에서는 중립이거나 부정일 수 있다. 도메인 별 감성 사전을 별도 관리하는 것이 정확도를 높인다.
실무 활용 사례
사례 1: 쇼핑몰 리뷰 자동 분류
월 1만 건 이상 쌓이는 리뷰를 수동으로 읽기 어렵다. 부정 표현 보존 전처리를 적용한 후 KNU 감성 사전으로 점수를 산출하면 부정 리뷰를 자동으로 우선순위화해 CS팀에 알림을 보낼 수 있다. 전처리 없이 분석한 경우보다 부정 리뷰 감지 정확도가 크게 향상된다.
사례 2: 브랜드 SNS 모니터링
트위터·인스타그램에서 브랜드 언급 수천 건을 매일 수집할 때, 이모지 감성 변환을 적용하면 이모지만으로 감성을 표현하는 게시물(예: 😡, 💔)을 놓치지 않는다. 신조어 사전을 정기적으로 업데이트하면 최신 트렌드 표현도 정확히 분류할 수 있다.
사례 3: 고객 설문 자동 분석
분기별 NPS 설문의 서술형 답변을 감성 분석으로 분류하면 "추천 이유"와 "불만족 이유"를 빠르게 파악할 수 있다. 경어체 모호성 처리 로직을 추가하면 한국어 특유의 완곡 표현("별로라고 하기 어렵네요")도 부정으로 정확히 분류된다.
마무리
이 글에서 정리한 기준을 실제 작업에 적용할 때는 [텍스터브 글자수 세기](/tools/char-counter/) 도구로 분량을 직접 확인하면서 진행하면 더 정확하게 맞출 수 있다.