17 Wed

[AI 스쿨 1기] 10주차 DAY 3

NLP : 문서분류 I

문서 분류

  • 텍스트를 입력으로 받아, 텍스트가 어떤 종류의 범주에 속하는지를 구분하는 작업

다양한 문서 분류 문제들

  • 문서의 범주, 주제 분류

  • 이메일 스팸 분류

  • 감성 분류 : 긍정적인지 부정적인지

  • 언어 분류 : 주어진 문제가 어떤 언어로 쓰여 있는가?

주제 분류

  • CS논문을 가지고 CS 주제를 분류하는 것

감성 분류

  • 주어진 문서에 대해서 해당 문서가 긍정적인지 부정적인지 파악

  • 영화 리뷰가 긍/부 정적인지 파악하기

    • 긍정적 : richly, great, awesome, love

    • 부정적 : pathetic, worst, awful, ridiculously

  • 제품에 대한 대중의 반응

  • 정치인에 대한 사람들의 생각

  • 감성 분류를 기반으로 선거 결과를 예측

  • 감정적(방황, 슬픔, 기쁨), 태도적(좋아함, 사랑함, 싫어함), 성격적(불안함, 적대적, 호의적) 측면이 있지만 긍/부정적인 태도만을 파악하는 간단한 작업을 다룰 것.

문서 분류 : 정의

  • 문서를 주로 d 라고 함

  • 가능한 모든 클래스를 C ={c1, c2, ...} 라고 한다

  • 출력 결과는 : 예측된 클래스 cn

문서 분류 방법 - 규칙기반 모델

  • 단어들의 조합을 사용한 규칙들을 사용

    • spam : black-list, dollars & you have been selected, etc

  • Precision은 높지만 recall이 낮음

    • 사람이 규칙을 만들기 때문에 정확도는 높음

    • 지속적인 업데이트로 정확도에 기여

    • 커버하지 못하는 경우도 굉장히 많다

    • 따라서 사람이 만든 규칙보다 머신러닝 학습을 통해 생성된 규칙을 따르는 것이 좋음

    • 머신러닝도 사실은 복잡한 규칙을 만든다고 볼 수 있다. 하지만 사람이 이를 만들기는 쉽지 않음

  • Snorkel

    • 모델 중 하나

    • 규칙기반 모델과 머신러닝을 함께 사용하는 방식

    • 각각의 규칙을 labeling function으로 간주

      • 전문가가 labeling 하는 것이 아닌 특정 규칙안에서 labeling을 한다.

    • factor graph를 가지고 확률적 목표값을 생성한다

      • generative model

      • 긍정 1, 부정 0 이 아닌 0.7, 0.2 등의 확률적 수치를 사용한다

      • 이는 labeling되지 않은 unlabed 데이터들에 대해서 labeling해주는 작업이다

    • labeled data가 부족하거나 클래스 정의 자체가 애매한 경우 매우 유용하다 => 감성 분류 자체는 굉장히 애매한 클래스에 속하는 경우가 많다.

    • 문서 하나하나에 labeling 하기는 어렵다.

    • 확실하 규칙 생성은 쉬운 편에 속함.

    • 이 후 다양한 모델을 사용할 수 있다

문서 분류 방법들 - 지도학습

  • input : 문서 d

  • classes : C

  • training set : m = (d1, c1) ,,, (dm, cm)

  • classifier(output) : y:d -> c

  • 다양한 모델 사용 가능

    • Naive Bayes

    • Logistic regression

    • Nerual networks

    • k-Nearest Neighbors

NLP : 문서분류 II

Naive Bayes 분류기

  • 가정 이름이 Naive Bayes임

    • 그래서 이름이 나이브 베이즈 분류기

  • 이 모델은 Bag of Words 표현에 기반함

    • 텍스트 표현 방법이 이 방법

  • 순서를 고려하지 않은 단어들의 집합이라고 생각하면 된다

  • (0, 5, 0, 3, ... , 0)

    • 각각의 vocaburary의 한단어 => |v|개의 원소를 가진 벡터

    • 원소의 값은 빈도수를 의미

Naive Bayes 분류기 - 수식화

  • 베이즈 정리를 이용해서 식 생성

  • 가장 확률이 높은 클래스를 찾는 것이 분류기의 목표

  • 분모 제거 : 최대화 하는 클래스를 찾기 위해서 P(d)는 관련이 없기 때문

  • d가 n개의 속성이 있다고 가정하고 x1 부터 xn으로 표현

  • d를 n개의 특징으로 분류하다 보니 파라미터가 아주 많아진다. => 학습 데이터가 적으면 좋은 성능을 내기 어려움

  • Bag of Words 가정 : 단어의 위치는 확률에 영향을 주지 않는다.

  • 조건부 독립 가정 : 클래스가 주어지면 속성들은 독립적이다

    • 이를 수식으로 표현하면 다음과 같다

  • 조건부 독립 가정을 통해 분리를 하게 되면 각각의 클래스에 해당하는 특성만 존재하므로 파라미터가 적어지게 된다 => 주어진 데이터가 적더라도 학습 가능

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

NLP : 문서분류 III

Naive Bayes 분류기 - 학습

  • MLE

  • Zero 확률문제

    • 데이터의 부족으로 확률이 0이 될 수 있음

    • 클래스와 특성의 곱으로 표현되므로 하나라도 0이 되면 전체 확률이 0이 되기 떄문

    • 이 때 라플라스 스무딩 방법을 통해 해결할 수 있다

Naive Basyes 분류기 - 요약

  • naive 하지는 않음

  • 적은 학습데이터로도 좋은 성능과 빠른 속도

  • 조건부독립 가정이 실제 데이터에서 성립할 때 최적의 모델

  • 문서 분류를 위한 베이스라인 모델로 적합하다

Last updated

Was this helpful?