Bag of words란 무엇인가?
말을 직역하면 단어들의 가방이라는 뜻이다.
이는 단어들을 한 가방(공간)안에 넣는 다는 것이다.
우리는 수학적으로 공간안의 위치를 벡터를 통해 나타낼 수 있었다.
그러면 대충 유추하건데 단어들을 가방(공간)에 넣음으로써 단어를 벡터로 표현할 수 있을 것이다.
※ Word Embedding: 단어를 특정한 차원 벡터로 만드는 것
어떻게 벡터로 표현할 것인가?
예시를 하나 들어보자.
'I love NLP' 라는 문장이 있다고 하자.
그러면 우리는 Vocabulary:{"I", "love", "NLP"} 로 나타낼 수 있으며
● I ; [1, 0, 0]
● love : [0, 1, 0]
● NLP : [0, 0, 1]
로 벡터를 나타낼 수 있다.
각 벡터끼리 거리는 $\sqrt{2}$ 로 나타낼 수 있으며 cosine similarity는 0이다.(직교한다는 뜻이다.)
$$cosine similarity(u, v) = \frac{<u,v>}{ \| u \| \| v \| } $$
CODE
import torch
import torch.nn.functional as F
X = torch.tensor([0, 1, 0]) # like 벡터
Y = torch.Tensor([0, 0, 1]) # NLP 벡터
X = torch.unsqueeze(X, 0)
Y = torch.unsqueeze(Y, 0)
cos_similarity = F.cosine_similarity(X,Y, dim=1)
print(cos_similarity) # tensor([0.])
그러면 문장을 합쳐서
'I love NLP'를 I + love + NLP : [1, 1, 1]로 표현할 수 있다.
Navie Bayes Classifier for Document Classification
문장이 있는 문서를 d 구성하고 있는 단어들을 w($w_{1}, w_{2}, .... w_{n}$) 분류된 class를 c라 할 때
P(d|c)P(c) = P($w_{1}, w_{2}, .... w_{n}$|c)P(c) → P(c)$\prod_{w_{i} \in W} P(w_{i}|c)$로 표현 가능하다.
참고로 Naive Bayes Classifier를 알면 $w_{i} \perp w_{j} |c$ for any i≠j 라는 것을 알 수 있다.
https://thought-process-ing.tistory.com/86
[ML_Basic] Naive Bayes Classifier
강의 참고 https://kooc.kaist.ac.kr/machinelearning1_17/ 인공지능 및 기계학습 개론Ⅰ 강좌소개 : edwith 본 강의는 기계 학습에 대한 이론적 지식을 확률, 통계, 최적화를 바탕으로 소개합니다. 이 과정에서
thought-process-ing.tistory.com
예시
document d 가 w 단어로 구성되어있고 class가 c라 하자.
Document(d) | Document(words, w) | class(c) | |
Traning | 1 | Image recognition uses convolutional neural networks | CV |
2 | Transformer can be used for image classification task | CV | |
3 | Language modeling uses transformer | NLP | |
4 | Document classification task is language task | NLP | |
Test | 5 | Classification task uses transformer | ?? |
P($c_{CV}$) = $ \frac{1}{2} $
P($c_{NLP}$) = $ \frac{1}{2} $
P($w_{k}|c_{i}$) = $\frac{n_{k}}{n}$ ($n_{k}$ 는 $w_{k}$가 c class의 document(d)에서 나타난 횟수를 이야기 한다.)
'AI-Tech 부스트캠프 > NLP' 카테고리의 다른 글
[NLP] Advanced Self-supervised Pre-training Models (0) | 2021.09.18 |
---|---|
[NLP] Self-supervised Pre-training Models (0) | 2021.09.18 |
[NLP] Transformer (0) | 2021.09.14 |
[NLP] Basics of Recurrent Neural Networks(RNNs) (0) | 2021.09.10 |
[NLP] 자연어처리란? (0) | 2021.09.06 |
댓글