빅데이타 & 머신러닝/머신러닝

자연어 처리 - 단어 표현 방법

Terry Cho 2019. 8. 4. 18:28

자연어 처리

Word representation

조대협 (http://bcho.tistory.com)


머신러닝을 위해서 단어를 수치화 하는 방법을 Word Representation이라고 한다.

가장 쉬운 방법으로는 One-hot-encoding을 사용하는 방법이 있지만, 이 방법의 경우에는 단어간의 의미를 수식화할 수 없고, 특히나 단어가 많을 경우에는 단어를 표현하는 벡터(행렬)의 크기가 커지며, 그중에서 하나의 필드만 1로 처리하기 때문에 공간 소모가 심하다. 


그래서 분포 가설(Distributed hypothesis)를 기반으로한 방식이 많이 사용되는데, 분포 가설(Distributed hypothesis) 란, 같은 문맥의 단어는 비슷한 의미를 갖는다는 개념으로 두 가지 방식이 많이 사용된다.

Count based 

문장에 동시에 등장하는 단어의 수를 카운트 해서 이를 벡터화 하는 방식

동시에 등장하는 횟수를 Co-occurrence라고 하고, 이를 행렬화 하는 방식은 

  • SVD (Singular Value Decomposition) : 특이값 분해

  • LSA (Latent Semantic Analysis) : 잠재적 의미 분해

  • HAL (Hyperspace Analogue to Language)

등이 있음

Predictive

NN이나 모델을 이용해서, 특정 문맥에 어떤 단어가 나올것을 예측하면서 벡터를 만드는 방법

  • NNLM (Neural Network Language Model)

  • RNNLM(Recurrent Neural Network Language Model) 

  • Word2Vec

    • CBOW (Continuous Bag of Words)
      문장을 통해서 단어를 예측
      예) 오늘은 저녁에 ??나 먹어야 겠다. 

    • Skip-Gram ← 가장 많이 사용함
      단어를 통해 전체 문장을 예측
      예) ??? ???? 짜장면이나 ??? ??