bag of word - 왜 단어는 숫자 벡터로 표현해야할까? -

1. 왜 단어는 숫자 벡터로 표현해야할까

 

대부분의 딥러닝 기술들이 수치형태의 입출력을 다룬다.

 

그래서 언어 그 자체를 수치로 변환하지 않고서는 딥러닝 모델에 넣을 수가 없다

 

 

2. word embedding

 

단어를 벡터공간 상의 한 점으로 나타내는 과정

 

자연어 처리에 이런 딥러닝 기술들을 적용하기 위해서는 text를 단어 단위로 분리하고

 

각 단어를 특정 차원으로 이루어진 수치 벡터로 표현하는 embedding 과정을 거친다. 

 

 

3. bag of words

 

딥러닝 이전에 자연어 처리에 적용되던 단어를 숫자로 나타내는 간단한 기술

 

<idea>

 

1. 주어진 언어 데이터에서 유일한 단어를 모아 사전으로 구축

 

‘john really really loves this movie’

 

‘jane really likes this song’

 

두 문장으로부터 유일한 단어를 모아 vocab라는 사전을 구축함

 

vocab = {“John“, “really“, “loves“, “this“, “movie“, “Jane“, “likes“, “song”}

 

really가 3번이나 나왔지만 유일한(unique) 단어를 사전에 넣으므로 1번만 들어간다

 

 

2. 유일한 단어를 one hot vector로 표현

 

8개의 단어를 각각 categorical variable로 보아 one hot vector로 만든다.

 

그림1. 사전의 단어들을 one hot vector로 표현한 그림

 

가능한 word가 8개이므로 차원이 8인 벡터공간을 생각하고 각 차원에 사전의 단어를 mapping한다.

 

각 차원에 해당하는 단어 부분만 1로 주고 나머지는 0으로 하는 벡터가 one hot vector

 

이제 다양한 머신러닝 모델에 적용할 수 있게 되었다.

 

-----------------------------------------------------------------------------------------------------------------------

word embedding vector와 대비되는 특성으로 bag of word로 만든 벡터는

 

임의의 두 벡터 간 euclidean distance는 $\sqrt{2}$이고 cosine similarity는 0이다?

 

왜냐면 두 벡터의 내적이 0이거든

 

이것이 무엇을 의미하냐?

 

bag of word는 단어가 가지는 의미와 무관하게 모두가 동일한 관계를 가지는 벡터를 표현한다는 것.

------------------------------------------------------------------------------------------------------------------------------

 

3. sentence input이나 document input의 one hot vector 계산

 

최종 sentence input의 one hot vector는 구성하는 word의 one hot vector의 합이다.

 

 

이렇게 단어들을 마치 하나의 가방인 벡터에 넣는다(sum)고 해서 bag of words 라는 이름이 붙었다.

TAGS.

Comments