Processing math: 100%
Bag of Words

Bag of Words


Bag of Words 표현

1️⃣ unique words를 가지는 단어장을 만든다.

  • Example sentences: "John really really loves this movie", "Jane really likes this song"
    위 문장이 있다면 공백을 기준으로 나눠서 각각의 단어를 단어장으로 만든다.
  • Vocabulary: {“John“, “really“, “loves“, “this“, “movie“, “Jane“, “likes“, “song”}
    여기서 really라는 단어는 2번 나오지만 단어장에는 1개가 들어간다.


2️⃣ 단어장의 단어를 one hot vectors로 encoding한다.

Vocabulary: {“John“, “really“, “loves“, “this“, “movie“, “Jane“, “likes“, “song”}

  • John: [1 0 0 0 0 0 0 0]
  • really:[0 1 0 0 0 0 0 0]
  • loves: [0 0 1 0 0 0 0 0]
  • this: [0 0 0 1 0 0 0 0]
  • movie: [0 0 0 0 1 0 0 0]
  • Jane: [0 0 0 0 0 1 0 0]
  • likes: [0 0 0 0 0 0 1 0]
  • song: [0 0 0 0 0 0 0 1]

one hot vector로 나타내면 위와 같이 쉽게 나타낼 수 있다. 이렇게 나타내면 각 단어 쌍에 대해서 유클리디안 거리는 모두 2가 되고, 내적값은 0이 된다. 즉, 단어의 의미와 상관없이 모두가 동일한 관계를 가지는 형태로 단어의 벡터 표현형을 설정하는 것이다.


3️⃣ 문장을 one hot vectors의 합으로 나타낼 수 있다.

  • Sentence 1: “John really really loves this movie“
    • John + really + really + loves + this + movie: [1 2 1 1 1 0 0 0]
  • Sentence 2: “Jane really likes this song”
    • Jane + really + likes + this + song: [0 1 0 1 0 1 1 1]

이를 bag of words벡터라고 부른다. bag of words벡터라고 불리는 이유는 단어장 상에서 존재하는 단어별로 가방을 준비하고 특정 문장에서 나타난 단어들을 순차적으로 그에 해당하는 가방에 넣어 주고 최종적으로 각 가방에 들어간 단어들의 수를 세서 최종 벡터를 나타내기 때문이다.



NaiveBayes Classifier

  • Documents와 Classes에 대해서 Bayes' Rule을 적용한다.

📌 document d와 class c에 대해서

image.png

여기서 P(d)는 특정한 문서들 사이에서 d가 뽑힐 확률을 의미한다. 우리는 d라는 고정된 하나의 문서로 볼 수 있기때문에 어떠한 상수값으로 볼 수 있고 이 값은 여기서 구하고자 하는 argmax에서 무시할 수가 있게 된다.


📌 document d, 이 문서의 sequence로 구성된 words w, class c에 대해서

문서의 확률은 각 단어들이 동시에 나타나는 확률로 대체하여 볼 수 있다. 그러면 아래의 수식과 같이 표현할 수 있다.

P(d|c)P(c)=P(w1,w2,...,wc|c)P(c)P(c)ΠwiWP(wi|c)
(by conditional independence assumption)


✅ 예를 들어보자

image.png

각 문서들중에서 해당 class가 나올 확률은 아래와 같다.

  • P(ccv)=24=12
  • P(cNLP)=24=12

그 다음으로 class가 둘 중 하나로 고정되어 있을때 각 단어가 나타날 확률을 계산해 보자.

  • P(wk|ci)=nkn, 여기서 nk는 해당 문서 class ci에서 단어 wk가 나온 횟수를 의미하게 된다.

image.png

한 가지 확률만 계산해 보면 다음은 다 계산가능하다.

P(w"classification"|ccv) 확률을 보면 문서 클래스 ccv에서 단어 "classification"이 나올 확률이다.
("classification")(cv)
cv 클래스의 전체 단어수는 세어보면 14개가 나오고 'classification'이라는 단어는 전체에서 1번 나온다.


그 다음으로 테스트 문서인 d5 = "Classification task uses transformer"라는 문서가 있다고 가정하자

image.png

  • 우리는 각 class에 대해서 문서의 조건부 확률을 계산할 수 있다.
  • 이렇게 계산된 값중에 가장 높은 확률을 가지는 class로 분류하게 된다.
  • 여기서 d5문서는 NLP class로 분류할 수 있다.

'AI > 이론' 카테고리의 다른 글

Beam search and BLEU  (0) 2021.02.17
Seq2Seq  (0) 2021.02.17
LSTM and GRU  (0) 2021.02.16
RNN and Language modeling  (0) 2021.02.16
Word Embedding  (0) 2021.02.15
Generative Model  (0) 2021.02.05
Transformer - Sequential Models  (0) 2021.02.04
RNN - Sequential Models  (0) 2021.02.04

+ Recent posts