logo

[text-mining]

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

 

나이브 베이즈 분류 (Naïve Bayes Classification)

 

조건부 확률 (Conditional Probability)

  • 주어진 조건 아래에서의 확률
  • B라는 조건이 주어졌을 때 A의 확률:
  • : 긍정 문장에서 "Good"이라는 단어가 나타날 확률
  • : "Good"이라는 단어가 나타난 문장이 긍정일 확률
 

베이즈 정리 (Bayes' theorem)

  • 조건부 확률의 공식:
  • 베이즈 정리:
 

나이브 베이즈 (Naïve Bayes)

  • 주어진 문서 에 대해, 이 문서가 클래스 에 속할 확률:
  • 베이즈 정리를 적용:
  • 어떤 클래스의 확률이 더 높은 지 알고 싶다면 문서의 확률 는 고려할 필요가 없음
  • 문서 를 구성하는 각 단어 이 조건부 독립이라고 단순하게(naïve) 가정하면:
 

사이킷런을 이용한 나이브 베이즈 분류

  • 임포트
from sklearn.naive_bayes import BernoulliNB
  • 모델 만들기
model = BernoulliNB()
  • 학습
model.fit(x_train, y_train)
 

나이브 베이즈 평가

  • 훈련 데이터로 정확도(accuracy) 평가
model.score(x_train, y_train)
  • 테스트 데이터로 정확도 평가
model.score(x_test, y_test)
 

단어별 확률

  • 단어별로 긍정 문장에 나올 확률 / 부정 문장에 나올 확률을 계산
  • 로그 확률이므로 나눗셈 대신 뺄셈을 한다 ()
prob_df = pd.DataFrame({
    '단어': cv.get_feature_names_out(),
    '비율': model.feature_log_prob_[1] - model.feature_log_prob_[0]
})
 

긍부정 단어 보기

  • 상대적으로 긍정 문장에서 많이 나오는 단어
prob_df.sort_values('비율').tail(10)
  • 상대적으로 부정 문장에서 많이 나오는 단어
prob_df.sort_values('비율').head(10)
Previous
문서 분류와 감성 분석