텍스트 데이터 분석: 문서 분류
텍스트 지도 학습
머신 러닝 (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 = 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,
random_state=42
)