[ NLP ] 원-핫 인코딩과 분포 가설
원-핫 인코딩 방식이란 단어를 하나의 벡터로 표현하는 법으로 각 값은 0 혹은 1만 갖는다.
예를 들어 남자, 여자, 아빠, 엄마를 알려줘야 한다고 할 때
남자라면 [1,0,0,0] 값을 여자는 [0,1,0,0] 으로 표현하는 것이 원-핫 인코딩 방식이다.
하지만 실제 자연어 처리 문제는 수백만개의 넘는 단어를 표현해야하므로 이런 방법은 공간을 너무 많이 사용하게 된다.
그리고 이런 표현은 벡터값 자체에는 단어의 특징이 전혀 표현되지 않는다.
이런 문제를 해결하기 위해서 벡터의 크기가 작으면서 벡터가 단어의 의미를 표현할 수 있는 방법들이 있는데
이러한 방법들을 분포 가설(같은 문맥의 단어, 즉 비슷한 위치에 나오는 단어는 비슷한 의미를 가짐)을 기반으로 한다.
크게 카운트 기반 방법과 예측 방법이 있음
1. 카운트 기반 방법
: 어떤 글의 문맥 안에 단어가 동시에 등장하는 횟수를 세는 방법.
공기(=동시 출현) : 동시에 등장하는 횟수
기본적으로 동시 등장 횟수를 하나의 행렬로 나타낸 뒤 그 행렬을 수치화 해서 단어 벡터로 만드는 법을 이용함. 그 방법들은
- 특이값 분해
- 잠재적의미분석
- HAL
- Hellinger PCA
이 있다.
인선과 성현은 도서관에 있다.인선과 현준은 서울에 없다.인선과 성현은 코딩을 좋아한다.
를 예시로 들어 표현하면
이렇게 만들어진 동시 출현 행렬을 바탕으로 위의 네 가지 방법을 사용해 단어 벡터를 만들면 된다.
2. 예측 방법
: 신경망 구조 혹은 모델을 사용해 특정 문맥에서 어떤 단어가 나올지 예측하면서 단어를 벡터로 만드는 방법
- Word2vec
- NNLM
- RNNLM
이 중 Word2vec에서는 CBOW와 Skip-Gram 두 가지 모델로 나뉨.
- CBOW는 문맥 안에서 주변 단어들을 통해 어떤 단어를 예측하는 방법
- 승기는 학교에서 ____ 했다.
- Skip-Gram은 어떤 단어로 특정 문맥안의 주변 단어를 예측하는 방법
- ____ _____ 1등을 ___
[ 출처 : 책 ( 텐서플로와 머신러닝으로 시작하는 자연어 처리) ]