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로 만든다.

 

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

 

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

 

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

 

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

 

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

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

 

임의의 두 벡터 간 euclidean distance는 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의 합이다.

 

etc-image-1

 

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

728x90