새소식

딥러닝

[Feature Engineering]- Text Representation_Ngram

  • -

uni-gram

uni-gram에서 각 단어가 나타날 확률은 단어 별 빈도수를 계산해서 전체 단어 수로 나누어주는 방식으로 구한다.
또 각각의 단어를 독립적으로 보기 때문에 해당 문장이 나타날 확률은 단어가 나타날 확률들을 그냥 곱해준다.

P("떡볶이랑 치킨 먹고 싶다") = p("떡볶이랑","치킨","먹고","싶다")
= p("떡볶이랑") x p("치킨") x p("먹고") x p("싶다")

각각의 단어를 독립적으로 보기때문에 단어의 순서를 전혀 고려하지 않는다.
bag of words나 tf-idf 모델이 바로 uni-gram 모델이다.

계산이 단순하다는 장점이 있지만 순서를 전혀 고려하지 않는다는 심각한 단점이 있다.
단어의 순서에 따라 의미가 달라질 수 도 있는데 이를 전혀 고려하지 못하기 때문이다.

 

n-gram

n-gram은 uni-gram과 달리 이전 단어를 고려하여 n개씩 묶어 다음 단어의 확률을 계산하는 언어 모델이다. 

(자주 함께 출현하는 n개의 단어를 한 그룹으로 구성하여 독립적인 피쳐로 간주하여 벡터로 표현한다.)

bi-gram을 수식으로 나타낸다면 아래와 같다.


예시를 들면 P(부대찌개|얼큰한)는 "얼큰한" 다음 단어로 "부대찌개"가 올 확률이다.
이 확률은 P(바나나|얼큰한) 보다는 높을 것이다.

n-gram 모델의 단점은 train corpus에 등장하지 않은 단어에 대해서는 확률이 0으로 계산된다는 단점이 있다.
이를 해결하기 위해 train corpus에 등장하지 않는 패턴에 대해 적당히 추정하는 Smoothing 기법이 등장하게 되었다.

 

Kneser-ney smoothing

앞서 설명한 n-gram의 단점을 극복하는 smoothing 기법이다.

ab 다음 c가 등장할 확률을 계산할 때, b 다음에 c가 등장할 확률도 함께 고려한다. 또 b 다음 c가 등장할 확률을 계산할 때도 그냥 c가 등장할 확률도 함께 고려한다고 생각하면 된다.
이렇게 한다면 abc가 등장한 빈도가 0일 수 있어도 bc나 c가 등장한 빈도가 모두 0일 수 없으므로 최종적으로 항상 0보다 큰 확률값을 계산할 수 있다.

 

 

728x90
Contents