본문 바로가기
AI

자연어처리 : Word Embedding

by 월곡동로봇팔 2020. 3. 12.

정의

Word Embedding은 단어를 벡터로 표현하는 방법이다.

원래는 단어를 count 기반으로 단어를 유추하였지만, 단어가 어느정도 연관이 있는지, 단어가 그 문장 속에서 중요한 단어인지를 잘 모를수 밖에 없다.

하지만, Word Embedding은 단어를 벡터로 표현하기 때문에, 단어간의 유사도에 따라 벡터의 방향을 설정하기 때문에, count 기반의 단점을 보완할 수 있다.


1. 희소 표현 (Sparse Representation)

One_hot encoding이 그 예다. 단어의 index의 값은 1이고, 나머지 index는 0으로 표현한다.

Ex) 강아지 = [ 0 0 0 0 1 0 0 0 0 0 0 0 ... 중략 ... 0] # 이 때 1 뒤의 0의 수는 9995개.

 

단점 : one-hot 벡터 표현은 공간적 낭비가 굉장히 심하다.

 

2. 밀집 표현 (Dense Representation)

사용자가 설정한 값으로 모든 단어의 벡터 표현의 차원을 맞춘다.

 

예를 들어 10,000개의 단어가 있을 때 강아지란 단어를 표현하기 위해서는 위와 같은 표현을 사용한다.

하지만 밀집 표현을 사용하고, 사용자가 밀집 표현의 차원을 128로 설정한다면, 모든 단어의 벡터 표현의 차원은 128로 바뀌면서 모든 값이 실수가 됩니다.

 

Ex) 강아지 = [0.2 1.8 1.1 -2.1 1.1 2.8 ... 중략 ...] # 이 벡터의 차원은 128

 

이 경우 벡터의 차원이 조밀해졌다고 하여 밀집 벡터(dense vector)라고 합니다.

 

3. Word Embedding

  one-hot vector embedding vector
차원 고차원 (단어 집합의 크기) 저차원
다른 표현 희소 벡터의 일종 밀집 벡터의 일종
표현 방법 수동 훈련 데이터로부터 학습
값의 타입 0, 1 실수

단어를 밀집벡터로 표현하는 방법을 Word Embedding이라고 한다.

 

ex) LSA, Word2Vec, FastText, Glove

댓글