2019. 2. 3. 23:13ㆍUdacity Nanodegree/Natural Language Processing
Part of Speech(POS) Tagging
- 갔다
- 간다
- 가봤다
- 갔었다
- 돌아왔다
- 들어갔다
- 합격했다
- 등등...
여기서는 일단 모든 단어를 3가지로 구분한다. 명사(Noun), 조동사(Modal Verb), 동사(Verb)로 구분하며, 이 형식을 유지하는 예시만 사용할 예정이다.
Lookup Table
일단 다음 몇가지의 예시를 Language Model을 학습시킬 데이터로 사용한다고 가정해보자.
Mary saw Jane. (N - M - N)
Jane saw Will. (N - M - N)
Bigram (ngram)
- Mary will see Jane. (N - M - V - N)
- Will will see Mary. (N - M - V - N)
- Jane will see Will. (N - M - V - N)
Bi-gram방식은 단어를 하나씩만이 아닌 두개씩 본다는 점이다. 예를 들면, Mary-will의 조합이 얼마나 나왔는지, will-see의 조합이 얼마나 나왔는지를 각각의 POS 조합과 결합시켜서 본다. 이러한 방식은 단어가 문장 내 쓰임새에 따라 다른 POS를 고려할 수 있다는 장점이 있다.
하지만 Bi-gram방식도 장점만 있는 것이 아니다. 만약 확인하고자 하는 문장 내의 단어 조합이 Table안에 없을 경우 그 확률을 고려할 수 있을까? 분명 확인하지 못할 것이다. 이러한 점을 커버하기 위해 많은 데이터를 사용하는 시도가 있지만, 그럼에도 불구하고 모든 단어를 커버할 수 없는 확률이 존재한다는 점은 Language Model이 불안정하다는 의미가 된다.
Emission Probability
- Mary Jane can see Will. (N-N-M-V-N)
- Spot will see Mary. (N-M-V-N)
- Will Jane spot Mary? (M-N-V-N)
- Mary will pat Spot. (N-M-V-N)
이렇게 만들어진 확률들은 Emission Probability(출력 확률)이라고 불리며, 이는 특정 상태일 경우 각각의 요소에 대한 확률을 의미한다.
여기서는 4가지의 명사, 2가지의 조동사, 3가지의 동사로 구분되어있다. 각각의 확률은 모든 문장에 대해 각 단어가 해당 POS로서 나온 확률을 의미한다. 예를들어, 명사의 경우 다음과 같이 구분될 수 있다.
전체 문장에서 명사의 갯수는 9개
명사로써 Mary가 나온 횟수는 4회이므로 4/9
명사로써 Jane이 나온 횟수는 2회이므로 2/9
명사로써 Will이 나온 횟수는 1회이므로 1/9
명사로써 Spot이 나온 횟수는 2회이므로 2/9
전체 문장에서 조동사의 갯수는 4개
조동사로써 Will이 나온 횟수는 3회이므로 3/4
조동사로써 Can이 나온 횟수는 1회이므로 1/4
전체 문장에서 동사의 갯수는 4개
동사로써 Spot이 나온 횟수는 1회이므로 1/4
동사로써 See가 나온 횟수는 2회이므로 2/4 (1/2)
동사로써 Pat이 나온 횟수는 1회이므로 1/4
Transition Probability
일단 문장의 POS는 그대로 유지하자. 여기서 추가할 것은 POS의 하나로써 문장의 시작부분을 표기하는 <S>와 문장의 끝부분을 표기하는<E>를 추가한다. 이렇게 문장은 항상 <S>로 시작하고 <E>로 끝나게 될 것이다. 우리가 여기서 구하고자 하는 것은, 각 POS에서 다음 POS가 특정 POS가 될 확률을 구하고 싶은 것이다. 예를 들면, 문장의 시작이 <S>가 될 것이므로 <S>가 입력으로 들어오면 다음 네종류의 확률을 구한다.
명사(N)일 확률: 4번의 <S>중 다음으로 N이 나올 확률 (3/4)
조동사(M)일 확률: 4번의 <S>중 다음으로 M이 나올 확률 (1/4)
동사(V)일 확률: 4번의 <S>중 다음으로 V이 나올 확률 (0/4)
문장의 끝(<E>)일 확률: 4번의 <S>중 다음으로 <E>이 나올 확률 (0/4)
이렇게 계산한 확률은 POS가 주어졌을 때, 다음 POS가 어떤 것일지에 대해 결정하기 위해 사용된다. 이렇게 계산한 확률을 Transition Probability라고 부른다.
Hidden Markov Model
앞서 Transition Probability와 Emission Probability에 대해서 살펴봤다. 그렇다면 현재의 단어가 주어졌을때 다음 단어가 무엇일지에 대한 확률도 구할 수 있지 않을까? 여기서는 Hidden Markov Model(HMM)을 이용하여 이 확률을 구하고 있다.
HMM에서는 다음과 같은 순서로 문장 내 단어가 나올 확률을 구하고 있다.
시작 위치의 POS(<S>)에서 다음 특정 POS가 나올 확률을 구한다.
다음의 POS에서 각 단어가 나올 확률을 구한다.
위 1, 2번의 절차를 문장이 끝날 때까지 반복한다. (<E>까지)
그렇다면 각 문장에 대한 확률을 계산해보자. 위에서 계산한 Transition Probability와 Emission Probability를 그대로 사용한다면, 아래와 같은 절차를 통해 확률을 계산할 수 있다.
Jane will spot Will이라는 문장이 나올 확률을 계산해보자. (각 확률에 대한 상세 내역은 위 그림을 참고하자.)
3/4(Tran) * 2/9(Emis) * 1/3(Tran) * 3/4(Emis) * 3/4(Tran) * 1/4(Emis)
* 1(Tran) * 1/9(Emis) * 4/9(Tran) = 1/2592 = 0.0003858...
과 같은 확률이 나오게 된다. (Tran: Transition Probability, Emis: Emission Probability)
이와같은 방식으로 특정 단어가 주어졌을때, 각 문장에 대한 확률을 계산해볼 경우, 가장 큰 확률을 가지는 모델이 문장의 예측 결과가 나온다.
'Udacity Nanodegree > Natural Language Processing' 카테고리의 다른 글
Language Model(1) - Bayesian Theorem 부터 Naive Bayes까지 (0) | 2019.02.03 |
---|---|
Text Processing(4) - 한장 요약 (0) | 2019.01.23 |
Text Processing(3) - 텍스트 내에서의 분류/변환작업 (0) | 2019.01.23 |
Text Processing(2) - 데이터 전처리(Text Preprocessing) (0) | 2019.01.23 |
Text Processing(1) - 데이터 클리닝(Data Cleaning/Cleansing) (0) | 2019.01.20 |