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로 나타내면 위와 같이 쉽게 나타낼 수 있다. 이렇게 나타내면 각 단어 쌍에 대해서 유클리디안 거리는 모두 $\sqrt2$가 되고, 내적값은 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]
- Jane + really + likes + this + song: [0 1 0 1 0 1 1 1]
이를 bag of words벡터라고 부른다. bag of words벡터라고 불리는 이유는 단어장 상에서 존재하는 단어별로 가방을 준비하고 특정 문장에서 나타난 단어들을 순차적으로 그에 해당하는 가방에 넣어 주고 최종적으로 각 가방에 들어간 단어들의 수를 세서 최종 벡터를 나타내기 때문이다.
📌 document $d$와 class $c$에 대해서
여기서 $P(d)$는 특정한 문서들 사이에서 $d$가 뽑힐 확률을 의미한다. 우리는 $d$라는 고정된 하나의 문서로 볼 수 있기때문에 어떠한 상수값으로 볼 수 있고 이 값은 여기서 구하고자 하는 $argmax$에서 무시할 수가 있게 된다.
📌 document $d$, 이 문서의 sequence로 구성된 words $w$, class $c$에 대해서
문서의 확률은 각 단어들이 동시에 나타나는 확률로 대체하여 볼 수 있다. 그러면 아래의 수식과 같이 표현할 수 있다.
✅ 예를 들어보자
각 문서들중에서 해당 class가 나올 확률은 아래와 같다.
- $P(c_{cv}) = {2 \over 4} = {1 \over 2}$
- $P(c_{NLP}) = {2 \over 4} = {1 \over 2}$
그 다음으로 class가 둘 중 하나로 고정되어 있을때 각 단어가 나타날 확률을 계산해 보자.
- $P(w_{k}|c_{i}) = {n_{k} \over n}$, 여기서 $n_{k}$는 해당 문서 class $c_{i}$에서 단어 $w_{k}$가 나온 횟수를 의미하게 된다.
한 가지 확률만 계산해 보면 다음은 다 계산가능하다.
$P(w_{"classification"}|c_{cv})$ 확률을 보면 문서 클래스 $c_{cv}$에서 단어 "classification"이 나올 확률이다.
$${("classification"단어가 나온 횟수) \over (전체 cv 클래스에 나온 단어의 수)}$$
cv 클래스의 전체 단어수는 세어보면 14개가 나오고 'classification'이라는 단어는 전체에서 1번 나온다.
그 다음으로 테스트 문서인 $d_{5}$ = "Classification task uses transformer"라는 문서가 있다고 가정하자
- 우리는 각 class에 대해서 문서의 조건부 확률을 계산할 수 있다.
- 이렇게 계산된 값중에 가장 높은 확률을 가지는 class로 분류하게 된다.
- 여기서 $d_{5}$문서는 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 |