본문 바로가기
AI-Tech 부스트캠프/NLP

[NLP] Bag of Words

by Alan_Kim 2023. 1. 18.
728x90
반응형

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)에서 나타난 횟수를 이야기 한다.) 

728x90
반응형

댓글