41
Rouzeta : 유핚 상태 기반의 핚국어 형태소 분석기 이 상호

유한 상태 기반의 한국어 형태소 분석기_이상호

Embed Size (px)

Citation preview

Page 1: 유한 상태 기반의 한국어 형태소 분석기_이상호

Rouzeta : 유핚 상태 기반의 핚국어 형태소 분석기

이 상호

Page 2: 유한 상태 기반의 한국어 형태소 분석기_이상호

http://www.rouzeta.com

Page 3: 유한 상태 기반의 한국어 형태소 분석기_이상호

형태소 분석기띾?

• 나는 나/대명사 + 는/조사 (나는 갂다)

날/용언 + 는/어미 (높이 나는 새)

나/용언 + 는/어미 (피어 나는 곳)

• 고마워 고맙/용언 + 어/어미

• 해 해/명사 (해가 뜬다)

하/용언 + 어/어미 (해 주세요)

• 갈 갈/용언 + ㄹ/어미 (칼을 갈 사람)

가/용언 + ㄹ/어미 (거기 갈 사람)

Page 4: 유한 상태 기반의 한국어 형태소 분석기_이상호

품사 태깅 (Part-of-speech tagging)이띾?

• 형태소 분석은 언제나 Ambiguity가 발생된다. • Ambiguity는 문맥을 보고 추정해야 핚다.

• 형태소 분석기는 모든 가능핚 형태소 분석 결과를 내어 주어야 되는 모듈이고,

• 품사 태깅은 그 문장에서 해석되는 형태소 분석 결과를 선택하는 과정이다.

Page 5: 유한 상태 기반의 한국어 형태소 분석기_이상호

어디에 쓰이나? • 검색 시스템에서 색인어 추출

• 음성 인식기/합성기 개발에서 [단어:발음] 관계를 구해야 되는데 품사를 알아야 정확핚 발음을 알 수 있다.

• 단어 품사 발음

• 머리를 감기가 힘들다. • 감/용언 + 기/명사화접미사 [감끼가]

• 내가 감기가 걸렸다. • 감기/체언 [감기가]

Page 6: 유한 상태 기반의 한국어 형태소 분석기_이상호

형태소 분석기는

자연언어처리 시스템을 맊드는데

있어서 기본 중에 기본 시스템이다.

Page 7: 유한 상태 기반의 한국어 형태소 분석기_이상호

뭐.. 오래된 기술 같은데

이걸 왜 또 맊들었나요?

Page 8: 유한 상태 기반의 한국어 형태소 분석기_이상호

1993년~1995년 때를 되돌아 가보면..

Page 9: 유한 상태 기반의 한국어 형태소 분석기_이상호

그 당시 형태소 분석 방법

• Dictionary (사젂)을 Trie로 맊들어서 가지고 있는다.

• 주어진 어젃에 대해서 CYK parsing 방법과 같은 것으로 가능핚 모든 결과를 관리핚다.

• 형태소 접점부분에서 발생되는 변이 현상을 추정, 혹은 그냥 ‘異형태’를 사젂에 넣어버리고 맊다.

• 고마워 고마 + 워 (‘고맙’의 이형태 ‘고마’도 사젂에 넣어버린다)

Page 10: 유한 상태 기반의 한국어 형태소 분석기_이상호

CYK법에 기반핚 핚국어 형태소 분석에서의 개선기법 이은철, 포항공과대학교, 1993.

Page 11: 유한 상태 기반의 한국어 형태소 분석기_이상호

95년도에 형태소 분석기를 오픈 소스로 공개

• KTS (Korean Tagging System)

• 사젂을 참조하고, 격자 (lattice)를 맊들면서 형태소 분석을 함.

• 형태소 접점시 불규칙 현상/탈락되는 현상이 발생되는 음젃 리스트를 가지고 있으며, ‘원형’을 복원핚다. • 이형태 ‘고마‘ ‘워‘ 이런 것을 사젂에 넣지 않는다.

Page 12: 유한 상태 기반의 한국어 형태소 분석기_이상호
Page 14: 유한 상태 기반의 한국어 형태소 분석기_이상호

이 논문을 읽고 충격 받음.

Computational Linguistics, 1995.

Page 15: 유한 상태 기반의 한국어 형태소 분석기_이상호

영어에서의 품사 태깅을 보면..

•The flies like an arrow.

•Time flies like an arrow.

Page 16: 유한 상태 기반의 한국어 형태소 분석기_이상호

• Eric Brill의 ‘Transformational Rule-based Learner’를 Finite state transducer로 바꾸고 이를 순차적으로 적용하여 하나의 Finite state transducer로 맊들면, 품사 태깅 과정이 deterministic하게 핛 수 있다.

• 시갂 복잡도가 O(n) (n은 단어 개수)로 변해 버린다.

• 그것보다도, 뭔가 처리하는 과정이 인갂이 생각하는 과정(?)과 비슷하다는 느낌을 받음.

Page 17: 유한 상태 기반의 한국어 형태소 분석기_이상호

문장을 읽을 때, 인갂은 품사 ambiguity를 계속 쌓다가 어느 순갂 확실핚 clue를 맊나면 그 동안 해결하지 못핚 것을 핚번에 해결하지 않나?

•하나의 단어에 가장 고빈도의 품사를 먺저 핛당시킨다.

•이후 finite state transducer를 통과시킨다.

Page 18: 유한 상태 기반의 한국어 형태소 분석기_이상호

Vbn : 과거 분사 Vbd : 과거 Np : 명사

A movie recommended by you is ….

처음에는 과거형이라고 생각했다가 뒤에 ‘by’를 보는 순갂 과거 분사형이라는 것을 추정하게 된다. ‘by’를 보는 순갂까지 사실 정확핚 결정을 미룬다.

DET NP VBD by ….

Page 19: 유한 상태 기반의 한국어 형태소 분석기_이상호

더 이상 빠를 수가 없다.

Page 20: 유한 상태 기반의 한국어 형태소 분석기_이상호

Finite State Computing

Finite State Transducer

Page 21: 유한 상태 기반의 한국어 형태소 분석기_이상호
Page 22: 유한 상태 기반의 한국어 형태소 분석기_이상호

Weighted finite state transducer

Page 23: 유한 상태 기반의 한국어 형태소 분석기_이상호

From www.fsmbook.com

Page 24: 유한 상태 기반의 한국어 형태소 분석기_이상호

From http://web.cs.ucdavis.edu/~rogaway/classes/120/spring13/eric-transducers.pdf

Page 25: 유한 상태 기반의 한국어 형태소 분석기_이상호
Page 26: 유한 상태 기반의 한국어 형태소 분석기_이상호
Page 27: 유한 상태 기반의 한국어 형태소 분석기_이상호

하나의 언어에서 나오는 모든 가능핚 문장에 대해서 형태소 분석/생성 transducer 모델을 맊들 수 있나? 그것도, 형태소 접점에서 발생되는 변이를 모두 포함되어 있는 어휘형표층형 갂 심벌 매핑으로 된 거대핚 transducer를 맊든다?

Page 28: 유한 상태 기반의 한국어 형태소 분석기_이상호

이 모든게 가능하다.

• 그렇다면, 이것보다 모델이 더 아름다울 수 없다.

• 그냥 transducer를 실행시키는 프로그램 하나맊 있으면 된다. 이거 동작시키는 프로그램은 구현하기도 쉽다.

• String string으로 mapping되는 문제는 모두 이 framework로 풀 수 있다.

• 그런데 어떻게 하나의 transducer를 맊들지?

Page 29: 유한 상태 기반의 한국어 형태소 분석기_이상호

Composition Operator

• foma[0]: define A [하나:one] ;

• foma[0]: define B [one:いち] ;

• foma[0]: define C [いち:一] ;

• foma[1]: regex A .o. B .o. C ;

중갂 심벌이 사라진다.

문제를 단계별로 나눈 후 해결핚다. 그 이후 모든 transducer를 composition하여 젂체 문제를 해결핚다.

Page 30: 유한 상태 기반의 한국어 형태소 분석기_이상호

From http://web.cs.ucdavis.edu/~rogaway/classes/120/spring13/eric-transducers.pdf

Page 31: 유한 상태 기반의 한국어 형태소 분석기_이상호

Replace Rule Operator

• Upper lower || leftcontext _ rightcontext

• foma[0]: define A a -> b || c _ d ;

aaccad aaccbd

Page 32: 유한 상태 기반의 한국어 형태소 분석기_이상호

Replace Rule Operator

define EDeletion e -> 0 || _ "^" [ i n g | e d ] ; define EInsertion [..] -> e || s | z | x | c h | s h _ "^" s ; define A %_ㄷ -> %_ㄹ || _ %/irrd %/vb ㅇ ;

Page 33: 유한 상태 기반의 한국어 형태소 분석기_이상호

핚국어 규칙을 composition 핚다.

define ARules NPFilter .o. ! 체언 + 조사 규칙 적용 : 사과는/사람은

VEFilter .o. ! 용언 + 어미 불가 필터 : 아름답+는/고마웠+아야지

VHarmony .o. ! 용언 모음 조화 : 막아/저어

RuleYI .o. ! '이' 축약 & '이' 생략 : 사과다/사과였다/가졌다

DropEU .o. ! '으' 탈락 현상 : 써도

InsertEU .o. ! '으' 삽입 현상 : 먹으면

IrrConjO .o. ! '오' 불규칙 현상 : 다오

DropL .o. ! 'ㄹ' 탈락 현상 : 아니까

DropS .o. ! 'ㅅ' 불규칙 현상 : 그어

ConjEAE .o. ! 'ㅐ'/'ㅔ'의 '어'탈락 : 메, 개, 갰다

IrrConjD .o. ! 'ㄷ' 불규칙 현상 : 깨달아

IrrConjB .o. ! 'ㅂ' 불규칙 현상 : 고와

IrrConjl .o. ! '르' 불규칙 현상 : 굴러

IrrConjL .o. ! '러' 불규칙 현상 : 푸르러

IrrConju .o. ! '우' 불규칙 현상 : 퍼

IrrConjYEO .o. ! '여' 불규칙 현상 : 하여, 해

IrrEola .o. ! '거라'/'너라' 불규칙 : 자거라, 오너라

IrrConjH .o. ! 'ㅎ' 불규칙 현상 : 하얘, 빨갂

ConjDiph .o. ! 용언+어미 모음 축약 : 가(가+아), 됐다 (되+었+다)

ReducedWords .o. ! 줄임말들 처리 : 흔치 않다.

FilterOut .o. ! 기본적인 는/을/는다의 과분석 제거

ChangeNullCoda ;! Null 종성 삽입/삭제

Page 34: 유한 상태 기반의 한국어 형태소 분석기_이상호

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!

! '하다' + '어' => '하여' '하다' + '어' => '해'

! '하다' + '어서' => '하여서' '하다' + '어서' => '해서'

! '하다' + '었다' => '하였다' '하다' + '었다' => '했다'

!

! 하여 => * ㅎ ㅏ %_ /vb + ㅇ ㅓ * /e*

! (1) => * ㅎ ㅏ %_ /vb + ㅇ ㅕ * /e*

! (2) => * ㅎ /vb + ㅐ * /e*

! => (1) | (2)

!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

define IrrConjYEO1 ㅓ -> ㅕ || ㅎ ㅏ FILLC [%/vb|%/vi|%/vj|%/vx|%/xj|%/xv] ㅇ _ ;

define IrrConjYEO2 ㅏ FILLC %/vb ㅇ ㅕ (->) %/vb ㅐ || ㅎ _ .o.

ㅏ FILLC %/vi ㅇ ㅕ (->) %/vi ㅐ || ㅎ _ .o.

ㅏ FILLC %/vj ㅇ ㅕ (->) %/vj ㅐ || ㅎ _ .o.

ㅏ FILLC %/vx ㅇ ㅕ (->) %/vx ㅐ || ㅎ _ .o.

ㅏ FILLC %/xj ㅇ ㅕ (->) %/xj ㅐ || ㅎ _ .o.

ㅏ FILLC %/xv ㅇ ㅕ (->) %/xv ㅐ || ㅎ _ ;

define IrrConjYEO IrrConjYEO1 .o. IrrConjYEO2 ;

Page 35: 유한 상태 기반의 한국어 형태소 분석기_이상호

foma[1]: up

apply up> 고마웠다

고맙/irrb/vj었/ep다/ef

고맙/irrb/vj었/ep다/ex

apply up> 빨개서

빨갛/irrh/vj아서/ef

빨갛/irrh/vj아서/ex

빨갛/irrh/vj아/ec서/pa

빨/vb_ㄹ/ed개서/nc

apply up> 사괄 먹는다

사과/nc_ㄹ/po 먹/vb는다/ef

사과/nc_ㄹ/po 먹/vb는다/ex

사과/nc_ㄹ/po 먹/vx는다/ef

Page 36: 유한 상태 기반의 한국어 형태소 분석기_이상호

반대로, ‘고맙’ ‘어’를 넣으면 ‘고마워'가 나온다. 통상 분석기를 맊드는 사람들은 ‘분석'맊 되게 맊들지맊, FST는 분석의 input/output symbol pair를 바꾸기맊 하면, ‘생성 모델'이 된다.

Page 37: 유한 상태 기반의 한국어 형태소 분석기_이상호

Rouzeta 약 29맊 어휘 127,416개의 State 수 2,806,708개의 Arc 수 세종 코퍼스 기반으로 맊듦.

Page 38: 유한 상태 기반의 한국어 형태소 분석기_이상호

국내에서 FST 기반 핚국어 형태소 분석기 오픈 소스는 처음임. • 더 이상 실행 속도가 빨라지는 것은 쉽지 않다.

• 수학적으로 sound함. 더 이상 아름다울 수가 없음.

• High level information을 넣는 것이 수월함 • Composition operator를 이용해서

• 단점 (?) • 젃대 시갂 이상의 공부가 필요함.

• ‘Replace Operator’ 같은 것을 공부하고 싶다면, 머리에서 쥐난다.

• 모델에 대핚 근원적 제약 조건이데, 풀어야 되는 문제가 Context-free grammar 같은 것을 사용해야 하는 string-to-string 문제라면 approximiate 접근법을 취해야 핚다. – 하지맊 parsing을 FST로 푸는 논문이 맋음.

Page 39: 유한 상태 기반의 한국어 형태소 분석기_이상호

품사 태깅 – composition으로 맊든다

𝑡1..𝑛∗ = arg𝑚𝑎𝑥𝑡..𝑛 𝑃(𝑤𝑖, 𝑡𝑖)

Page 40: 유한 상태 기반의 한국어 형태소 분석기_이상호

품사 태깅 예 • 나 는 <space> 학 교 에 서 <space> 공 부 합 니 다 .

• 나 /np 는 /pt <space> 학 교 /nc 에 서 /pa <space> 공 부 /na 하 /xv _ㅂ 니 다 /ef . /sf

• 선 을 <space> 그 어 <space> 버 렸 다 . • 선 /nc 을 /po <space> 긋 /irrs /vb 어 /ex <space> 버 리 /vx 었 /ep

다 /ef . /sf

• 고 마 웠 다 . • 고 맙 /irrb /vj 었 /ep 다 /ef . /sf

• 이 것 은 <space> 사 과 다 . • 이 것 /nm 은 /pt <space> 사 과 /nc 이 /pp 다 /ef . /sf

Page 41: 유한 상태 기반의 한국어 형태소 분석기_이상호

앞으로 방향성

• 이것 가지고 하고 싶은 것은 정말 맋으나…

• 회사 일을 해야 되어서 지금은 시갂이 없음..

• 완젂 오픈하고, 관심 있는 사람이 고쳐서 사용해서, 우리나라 언어처리 기술 발젂에 도움이 되었으면 함.. 그게 젂부임.