AI/NLP

Bag-of-Words & NaiveBayes Classifier 에 대해 알아보기

cstory-bo 2023. 12. 24. 12:16

Bag-of-words

단어 등을 숫자형태로 나타내는 기법

Step 1. Vocabulary 구축

  • 유니크한 단어들을 모아서 사전에 등록한다.
    예시로 "John really really loves this movie","Jane really likes this song." 문장이 있다면
    사전 Vocabulary에는 {"John","really","loves","this","movie","Jane","likes","song"}이 등록된다.

Step 2. Encoding

Categorical 데이터를 모델에 적용하기 위해 one-hot vector로 바꿔준다.


-> 어떤 단어쌍이든 유클리드 distance : root(2)
-> cosine 유사도 : 0
=> 의미에 상관없이 모두가 동일한 관계

Step 3. 확장

각 문장에 포함된 워드 벡터들을 합한다. -> Bag-of-Words

NaiveBayes Classifier

이제 위에서 표현한 벡터들을 이용해서 분류기를 생성한다.

Class : C
documet : d 이면

1) MAP : Maximum a posteriori
2) P(d)를 상수값으로 보고 무시한다.


여기서 P(C_cv) = P(C_nlp) = 1/2 이다

그리고 각 P(d|c)를 구하면 아래와 같다.

그래서 마지막 test 문장을 구하려면 아래와 같은 식을 세운다.

  • 문제점 : 학습 데이터 안에서 특정 클래스 내에서 특정 단어가 나오지 않았을 경우 그 단어가 해당 클래스로 분류될 가능성이 0이 된다.