[TIL] day43

12013 단어 TILTIL

#TIL

문서분류

문서분류는 자연어 처리에서 가장 중요한 분야 중 하나라고 한다!

문서분류란?
텍스트를 입력으로 받아 텍스트가 어떤 종류의 범주에 속하는지를 구분하는 작업이다.

어떤 분류 문제들이 있을까?

  • 문서의 범주, 주제 분류
  • 이메일 스팸 분류
  • 감성분류
  • 언어분류

감성분류

예시

  • 영화: 리뷰가 긍정적인가 부정적인가?
  • 제품: 출시된 아이패드5에 대한 대중의 반응은?
  • 정치: 이 정치인에 대한 사람들의 생각은?
  • 예측: 감성 분류를 기반으로 선거 결과를 예측

(감성분류하면 영화 리뷰 분류만 생각했었는데 이런 예시보니까 새롭고 왜 이 생각을 못했지싶고 재밌어 보인다...!!!!)

감성의 여러 측면이 있을 수 있지만 여기선 간단한 작업에 집중해서 본다.

  • 감정적, 태도적, 성격적 측면
  • 텍스트의 긍정적/부정적 태도 판단

문서 분류 방법들

1. 규칙 기반 모델

문서 분류 방법들로 단어들의 조합을 사용한 규칙들을 사용한다.

스팸분류: black_list_address OR("dollars" AND "you have been selected")

사람이 만든 규칙으로 분류하기 때문에 정확도는 높으나 recall이 낮다.
간단한 조합으로 해결할 수 없는 애매한 상황이 생긴다면 난감...

그래서 나온 기법으로 snorkel 방법이 있다.

snorkel

  • 규칙기반 모델 + 머신러닝
  • 각각의 규칙을 "labeling function"으로 간주한다.
  • factor graph를 사용해서 확률적 목표값을 생성하는 generative model이다.
    (labeling이 되지 않은 데이터에 score를 목표값으로 생성하는 것)
  • 프로젝트 초기 labeled data가 부족하거나 클래스 정의 자체가 애매한 경우에 매우 유용한 방법

2. 지도학습

  • Naive Bayes
  • Logistic Regression
  • Neural Networks
    ...

다양한 모델에 사용 가능하다.

그 중 Naive Bayes 분류기를 살펴보자.

Naive Bayes 분류기

Naive Bayes 가정과 Bag of Words 표현에 기반한 간단한 모델이다.

Bag of Words
-문서를 순서를 고려하지않은 단어들의 집합으로 만든 후 빈도수만 계산한다.
-|v|개의 원소를 가진 벡터가 만들어진다.
-벡터의 크기는 고정되어 있기 때문에 Logistic regression이나 NN에 input으로 쉽게 사용할 수 있다.

*Bag of words의 가정으로는 '위치가 확률에 영향을 주지 않는다' 는 것.

수식화를 해보자면, 문서 d와 클래스 c

P(cd)=P(dc)P(c)P(d)P(c|d) = \frac{P(d|c)P(c)}{P(d)}

즉, Naive Bayes 분류기는 입력값에 관한 선형 모델이다.

CNB=argmaxcjCP(cj)ipositionsP(xicj)C_{NB} = argmax_{c_j\in C}P(c_j) \prod_{i\in positions}P(x_i|c_j)

확률적 생성 모델에 대한 수식이 쭈우욱 있지만....
여기에 다 옮기기에는 무리니까 일단 핵심만!

  • Naive Bayes지만 Naive하지 않음! (ㅋㅋ)
  • 적은 학습데이터로도 좋은 성능을 보여줌
  • 속도가 빠름 (training, inference)
  • 조건부독립 가정이 실제 데이터에서 성립할 때 최적의 모델
  • 문서 분류를 위한 베이스라인 모델로 적합

Naive Bayes 분류기 수식화에 대한 내용도 많고, 확률적 생성 모델에 대한 수식도 많지만, 이건 내가 다시 연필로 끄적이면서 복습해야겠다.
수식을 다 빼고나니까 Naive Bayes 분류기에 대한 설명이 너무 심플하다못해 이게 설명인가 싶을정도가 되어버렸는데, 되도록 좀 더 정리해보는걸루..!

좋은 웹페이지 즐겨찾기