데이터 스터디/DL

자연어 처리 - 통계 기반 기법

케이와이엠 2022. 7. 16. 18:05

자연어처리를 배우기 위해서는 자연어, 그리고 단어들이 어떻게 문장 안에서 기능을 하고 맥락을 구성하고 있는지 바탕에 집중을 해야한다. 이때 단어의 의미 파악하는 방법으로 1) 통계 기반 기법 있고, 2) 추론 기반 기법 있는데 해당 포스팅에선 통계 기반 기법을 다뤄보도록 하겠다.

(아래의 내용은 밑바닥부터 시작하는 딥러닝2 의 ch02. 자연어와 단어의 분산표현을 정리한 것이다)

통계 기반 기법

통계 기반 방법은 특정 단어에 주목했을 , 주변에서 어떤 단어가 번이나 등장하는지를 세어주는 방법이다. 이때 컴퓨터가 자연어를 처리할 있도록, 다시 말해서 단어를 숫자로 바꿔줘야 하므로, 우리는 단어를 3차원의 벡터로 표현해야 하죠. 그래서 우리 이것을 '단어의 분산 표현'이라고 한다.

단어를 벡터로 표현할 , 벡터로 표현하는 여러 기법들은 거의 모두가 분포 가설 따르고 있는데, 분포가설이라고 함은, “단어의 의미는 주변 단어에 의해 형성된다. 즉 ‘맥락 파악해야 한다 것이다 가설을 바탕으로 벡터 표현을 , 우리는 단어의 동시발생행렬을 만들 수도 있고, 벡터간 유사도도 측정할 있고, pmi행렬도 만들 잇다.

 

단어의 동시 발생 행렬

하나하나 살펴보자면 먼저 여기 예를 하나 들겠다. 여기 you say goodbye and I say hello 라는 문장이 있으면, 맥락의 크기를 1 했을 , say 맥락에 포함되는 단어의 빈도를 벡터로 표현하면 ? 어떻게 될까

그렇다.

[1,0,1,0,1,1,0] 벡터로 표현이 된다.

그리고 이걸 전체로 표로 나타내면 이걸 동시발생행렬이라고 표현한다.

 

그래서 정리하자면, 동시발생행렬의 원소는 단어가 동시에 발생한 횟수를 나타내는 것이.

근데 여기서 하나 문제되는게 있다

바로 한국말에서는 조사(///), 영어에서는 관사(a/an/the) 문제다.

다른 예시로 I drive a car이라고 했을 만약에 지금 계속 말해온 것처럼 맥락을 파악할 등장횟수가 높을수록 관련성이 강하다라고 치면, a,/ the같은 관사가 실제 명사인 car 다음에 오는 동사 drive보다 훨씬 관련성이 높게 나온다. 근데 이런 관사는 아무런 힘이 없다. 이래서 단점을 보완하기 위해서 우리는 pmi척도를 들고와준다.

 

PMI

PMI

PMI라는 척도는 확률의 개념을 단어의 연관성을 파악할 넣어준다.

여기서 식을 잠깐 보시면 P(x) x 일어날 확률을, P(y) y 일어날 확률을, P(x,y) x y 동시에 일어날 확률을 의미한다.

식을 밑에 동시발생 행렬을 사용하는 식으로 바꿔주면, C 동시발생 행렬이고 N 말뭉치, 문장안에 들어있는 단어 수이며, C(x,y) 단어 x,y 동시에 발생하는 횟수, C(x) C(y) 각각 단어 x y 등장 횟수이다.

그래서 이때 the car/car drive 사이의 pmi 확인해보면 car drive사이의 관련성이 걸로 측정되고 있다.

이렇게 계산이 있었던 것은 PMI 단어가 단독으로 출현하는 횟수에 대해서도 분모에 넣어주서 고려해주고 있기 때문이다. 계속 말했듯이 관사들은 단어들이랑 엮여서 많이 등장하긴 하지만 모든 횟수를 고려했을때도, 사실 the car 서로 그렇게 크게 관련성이 없다는 것을 있다.

 

PPMI, SVD

 

이때 만약에 단어의 동시발생 횟수가 0이면, 여기 분자가 0이면 log2 0 마이너스 무한대가 되기 때문에 한계가 발생한다.

 

그래서 PPMI 사용해서 음수일 때는 0으로 취급하고 외에는 이전에 구한 pmi값을 그대로 사용해주고 있다. 근데 이때 PPMI에서도 문제점이 존재한다. 

뭐냐면 말뭉치의 어휘 수가 증가함에 따라 단어 벡터의 차원 수도 증가한다는 문제이다. , 말뭉치의 어휘 수가 10만개라면 벡터의 차원 수도 10만이 되는데 벡터의 대부분의 원소는 0으로 구성되어 있기 때문에 벡터가 차원이 치고 실속이 없다는 얘기이다. 따라서 이런 문제를 해결하기 위해서 SVD 특이값 분해와 같은 차원감소를 수행해준다.

 

 결론적으로 통계 기반 기법은 말뭉치로부터 단어의 동시발생 행렬을 만들고, PPMI 행렬로 변환한 , 안전성을 높이기 위해 특이값분해를 이용해서 차원을 감소시킴으로써 단어의 분산 표현을 만들어 낸다고 정리할 있다. 

 

하지만 수많은 단어를 한꺼번에 다루기에는 통계기반 기법은 한계가 정말 많다. 그래서 문장들을 다루기엔 적합하지 않기 때문에 우리는 통계기법기반이 아니라 신경망을 사용한 추론 기반 기법에 기반한 모델들을 향후 공부할까한다. 

'데이터 스터디 > DL' 카테고리의 다른 글

N-gram 언어 모델  (0) 2022.07.16
언어 모델 - 통계 기반 언어모델  (0) 2022.07.16
자연어처리 입문  (0) 2022.07.16
06. 옵티마이저 (optimizer)  (0) 2022.07.16
05. 경사 하강법  (0) 2022.07.16