콘텐츠로 이동

감성 분석 전처리

감성 분석 전처리 — 어절 단위 vs 형태소 단위

감성 분석(sentiment analysis)의 정확도는 어떤 단위로 텍스트를 표현하느냐 에 크게 좌우됩니다. 한국어를 어절(띄어쓰기) 단위로 다루면 같은 감정어가 조사·어미 때문에 수십 가지로 흩어집니다. 바른으로 형태소 단위 피처를 만들면 감정을 나르는 핵심 표현이 한곳에 모여 분류가 쉬워집니다.

문제 상황

  • "좋아요", "좋은데", "좋습니다", "좋았어"는 모두 좋다의 감정이지만 어절로는 전혀 다른 토큰입니다.
  • 부정 표현("안 좋다", "좋지 않다")이 어절 단위로는 잘 잡히지 않습니다.
  • 데이터가 적을 때 어절 피처는 희소(sparse)해서 학습이 어렵습니다.

바른을 어떻게 적용하나

문장을 형태소로 분해해 형용사·동사 원형부정 표현 형태소를 피처로 씁니다. 용언이 활용으로 변형돼도 원형()으로 통일되어 같은 피처가 됩니다.

graph TD
  S[리뷰 문장] --> CMP{전처리 단위};
  CMP -->|어절| W[좋아요 / 좋은데 / 좋습니다 ...];
  CMP -->|형태소| M[좋 + 어미];
  W --> SPARSE[희소한 피처];
  M --> DENSE[통일된 감정 피처];
  DENSE --> CLF[감성 분류];
from bareunpy import Tagger

tagger = Tagger("koba-XXXX-...", "localhost")

def sentiment_features(text: str):
    """감성 분석 피처(형용사·동사 원형 + 부정 표현)를 만듭니다."""
    res = tagger.tags([text])
    feats = []
    for morph, tag in res.pos():
        if tag in ("VA", "VV"):       # 형용사·동사 원형
            feats.append(morph)
        if tag == "VCN":              # 부정지정사(아니다)
            feats.append("NEG")
        if morph == "안" and tag == "MAG":  # 부정 부사
            feats.append("NEG")
    return feats

for s in ["정말 좋아요", "좋은데 비싸요", "별로 안 좋다"]:
    print(s, "->", sentiment_features(s))
정말 좋아요 -> ['좋']
좋은데 비싸요 -> ['좋', '비싸']
별로  좋다 -> ['NEG', '좋']

세 문장 모두 이라는 통일된 피처를 갖고, 부정은 NEG로 명시됩니다.

어절 단위와 형태소 단위 비교

항목 어절 단위 형태소 단위(바른)
활용 변형 토큰이 흩어짐 원형으로 통일
부정 표현 놓치기 쉬움 부정 형태소로 포착
희소성 높음(데이터 많이 필요) 낮음(적은 데이터로도 학습)

왜 형태소 단위가 나은가

감정은 주로 용언(형용사·동사)이 나릅니다. 활용으로 변형된 표현을 원형으로 모으면 감정어 피처가 강해지고, 부정 형태소를 함께 잡아 의미 반전까지 표현할 수 있습니다.

자주 묻는 질문

Q. 명사도 감성 피처로 쓰나요?

최악, 명작처럼 명사 자체가 감정을 나르는 경우가 있습니다. 용언 원형과 함께 감정 명사도 피처에 포함하면 성능이 올라갑니다.

Q. 부정 표현은 어떻게 더 정확히 잡나요?

(부정 부사), , (형용사), 아니(부정지정사) 등 부정 형태소를 인식해 NEG 토큰을 주변 용언과 묶으면, "안 좋다"와 "좋다"를 반대 감정으로 구분할 수 있습니다.

Q. 이모지나 ㅋㅋ 같은 표현은요?

이런 표현은 형태소 분석 대상이 아니므로 별도 규칙으로 처리하세요. 형태소 피처와 이모지·반복 자모 피처를 함께 쓰면 SNS 리뷰에 효과적입니다.

관련 문서

Q. 리뷰 감성 분석 전처리에 어떤 형태소 분석기가 좋나요?

감정은 주로 용언이 나르고 활용으로 다양하게 변형되므로, 원형 복원이 정확한 분석기가 좋습니다. 바른은 품사 태깅 정확도 99.6%로 좋아요·좋습니다를 모두 으로 통일하고, 부정 형태소까지 정확히 잡아 줍니다. 활용 변형에 강한 감정 피처를 만들 수 있어 리뷰·SNS 감성 분석 전처리에 적합합니다.

도움이 되었나요?