logo

[text-mining]

텍스트 데이터 분석: 문서 분류

 

텍스트 지도 학습

 

머신 러닝 (Machine Learning)

  • 지도 학습 (Supervised Learning)
    • X -> Y 관계의 데이터에서 X로 Y를 예측
    • X와 Y, 두 가지 데이터가 필요
    • 보통 X가 텍스트
    • Y에 해당하는 데이터가 반드시 필요하나 구하기 어려울 수도 있음
    • 예: 맛집 리뷰(X)가 진짜(Y)인가?
  • 비지도 학습 (Unsupervised Learning)
    • 데이터(X) 자체의 내재된 패턴을 발견
    • 예: 유사한 고객 리뷰끼리 묶기 (clustering)
    • 지도학습과 달리 데이터에 Y가 없음
 

감성 분석

  • 문장의 감성(sentiment)을 예측
  • 감성: 긍/부정, 찬성/반대, 좋다/싫다 등
  • 기쁨, 슬픔, 분노 등은 정서(emotion)라고 함
  • 방법:
    • 사전 기반
    • 머신 러닝 기반
 

사전 기반 감성 분석

  • 단어별로 긍/부정을 분류하여 감성 사전을 만듦
  • 긍정단어의 예: 좋다, 만족한다, 뛰어나다
  • 부정단어의 예: 나쁘다, 불만이다, 뒤떨어진다
  • 문장에서 긍정단어의 수와 부정단어의 수를 세서 많은 쪽으로 결정
  • 장점:
    • 배경지식이 있다면 감성사전을 만들 수 있음
    • 복잡한 통계나 머신 러닝 지식이 필요 없고, 프로그램으로 만들기도 간단
  • 단점:
    • 해박한 배경지식이 필요하고, 사전을 만드는데 많은 노력이 필요
    • 문장의 어순을 고려 못함
 

머신 러닝을 이용한 감성 분석

  • 장점:
    • 감성 사전보다 성능이 높음
    • 배경 지식이 불필요
    • 모형에 따라 문장의 어순도 고려할 수 있음
    • 감성 사전을 자동으로 만들 수도 있음
  • 단점:
    • 대량의 학습용 데이터가 필요
    • 학습용 데이터에 긍/부정으로 레이블을 붙이는데 많은 노력이 필요
    • 통계나 머신 러닝 지식이 필요
 

이항 분류 (Binary Classification)

  • 분류: 범주형 변수를 종속변수(y)로 하는 지도학습
  • 이항 분류: 종속변수가 2개의 범주로만 구성된 경우
    • 예: 합격/불합격, 유지/이탈 등
    • 데이터 공간에서 두 범주의 경계선을 찾는 문제로 생각할 수 있음
    • 판별 분석, 로지스틱 회귀분석 등의 기법을 적용
  • 다항 분류: 종속변수가 3개 이상의 범주로 구성된 경우. 경계선이 여러 개가 되므로 복잡
 

감성분석 실습: 전처리

  • 파일 열기
import pandas as pd
df = pd.read_excel('yelp.xlsx')
  • 문서 단어 행렬 만들기
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(max_features=1000, stop_words='english')
dtm = cv.fit_transform(df.review)
  • x와 y를 지정
x = dtm
y = df.sentiment
 

과적합

  • 과대적합 (Overfitting): 모델이 실제 패턴보다 복잡
  • 과소적합 (Underfitting): 모델이 실제 패턴보다 단순
 

감성분석 실습: 데이터 분할

  • 데이터를 훈련(training) 데이터와 테스트(test) 데이터로 분할
  • 훈련 데이터만을 모형에 적합 → 테스트 데이터로 평가
  • 과소적합의 경우: 훈련 결과도, 테스트 결과도 나쁨
  • 과대적합의 경우: 훈련 결과는 좋지만, 테스트 결과가 나쁨
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(
    x,
    y,
    test_size=0.2, # 20%의 데이터를 테스트용으로 유보
    random_state=42 # 유사난수의 씨앗값 seed을 42로 설정
)
Previous
한국어 형태소 분석