SlideShare a Scribd company logo
1 of 41
Download to read offline
Rouzeta : 유한 상태 기반의
한국어 형태소 분석기
이 상호
http://www.rouzeta.com https://www.youtube.com/watch?v=PjqUYvqK8v4
형태소 분석기란?
• 나는  나/대명사 + 는/조사 (나는 간다)
 날/용언 + 는/어미 (높이 나는 새)
 나/용언 + 는/어미 (피어 나는 곳)
• 고마워  고맙/용언 + 어/어미
• 해  해/명사 (해가 뜬다)
 하/용언 + 어/어미 (해 주세요)
• 갈  갈/용언 + ㄹ/어미 (칼을 갈 사람)
 가/용언 + ㄹ/어미 (거기 갈 사람)
품사 태깅 (Part-of-speech tagging)이란?
• 형태소 분석은 언제나 Ambiguity가 발생된다.
• Ambiguity는 문맥을 보고 추정해야 한다.
• 형태소 분석기는 모든 가능한 형태소 분석 결과를 내어 주어야
되는 모듈이고,
• 품사 태깅은 그 문장에서 해석되는 형태소 분석 결과를 선택하
는 과정이다.
어디에 쓰이나?
• 검색 시스템에서 색인어 추출
• 음성 인식기/합성기 개발에서 [단어:발음] 관계를 구해야 되는데
품사를 알아야 정확한 발음을 알 수 있다.
• 단어  품사  발음
• 머리를 감기가 힘들다.
• 감/용언 + 기/명사화접미사  [감끼가]
• 내가 감기가 걸렸다.
• 감기/체언  [감기가]
형태소 분석기는
자연언어처리 시스템을 만드는데
있어서 기본 중에 기본 시스템이다.
뭐.. 오래된 기술 같은데
이걸 왜 또 만들었나요?
1993년~1995년 때를 되돌아 가보면..
그 당시 형태소 분석 방법
• Dictionary (사전)을 Trie로 만들어서 가지고 있는다.
• 주어진 어절에 대해서 CYK parsing 방법과 같은 것으로 가능한 모
든 결과를 관리한다.
• 형태소 접점부분에서 발생되는 변이 현상을 추정, 혹은 그냥 ‘異형
태’를 사전에 넣어버리고 만다.
• 고마워  고마 + 워 (‘고맙’의 이형태 ‘고마’도 사전에 넣어버린다)
CYK법에 기반한 한국어 형태소
분석에서의 개선기법
이은철, 포항공과대학교, 1993.
95년도에 형태소 분석기를 오픈 소스로 공개
• KTS (Korean Tagging System)
• 사전을 참조하고, 격자 (lattice)를 만들면서 형태소 분석을 함.
• 형태소 접점시 불규칙 현상/탈락되는 현상이 발생되는 음절 리
스트를 가지고 있으며, ‘원형’을 복원한다.
• 이형태 ‘고마‘ ‘워‘ 이런 것을 사전에 넣지 않는다.
미등록어를 고려한 한국어 품사 태깅 시스템 구현
이상호, KAIST, 1995.
𝑡1..𝑛
∗
= arg 𝑚𝑎𝑥 𝑡..𝑛 𝑃 𝑤𝑖 𝑡𝑖 𝑃(𝑡𝑖|𝑡𝑖−1)
이 논문을 읽고 충격 받음.
Computational Linguistics, 1995.
영어에서의 품사 태깅을 보면..
•The flies like an arrow.
•Time flies like an arrow.
• Eric Brill의 ‘Transformational Rule-based Learner’를 Finite
state transducer로 바꾸고 이를 순차적으로 적용하여 하나의
Finite state transducer로 만들면, 품사 태깅 과정이
deterministic하게 할 수 있다.
• 시간 복잡도가 O(n) (n은 단어 개수)로 변해 버린다.
• 그것보다도, 뭔가 처리하는 과정이 인간이 생각하는 과정(?)과
비슷하다는 느낌을 받음.
문장을 읽을 때, 인간은 품사 ambiguity를 계속 쌓
다가 어느 순간 확실한 clue를 만나면 그 동안 해
결하지 못한 것을 한번에 해결하지 않나?
• 하나의 단어에 가장 고빈도의 품사를 먼저 할당시킨다.
• 이후 finite state transducer를 통과시킨다.
Vbn : 과거 분사
Vbd : 과거
Np : 명사
A movie recommended by you is ….
처음에는 과거형이라고 생각했다가
뒤에 ‘by’를 보는 순간 과거 분사형이라는
것을 추정하게 된다.
‘by’를 보는 순간까지 사실 정확한 결정을 미룬다.
DET NP VBD by ….
더 이상 빠를 수가 없다.
Finite State Computing
Finite State Transducer
Weighted finite state transducer
From www.fsmbook.com
From http://web.cs.ucdavis.edu/~rogaway/classes/120/spring13/eric-transducers.pdf
하나의 언어에서 나오는 모든 가능한 문장에
대해서 형태소 분석/생성 transducer 모델을
만들 수 있나?
그것도, 형태소 접점에서 발생되는 변이를 모
두 포함되어 있는 어휘형표층형 간 심벌
매핑으로 된 거대한 transducer를 만든다?
이 모든게 가능하다.
• 그렇다면, 이것보다 모델이 더 아름다울 수 없다.
• 그냥 transducer를 실행시키는 프로그램 하나만 있으면 된다.
이거 동작시키는 프로그램은 구현하기도 쉽다.
• String  string으로 mapping되는 문제는 모두 이 framework
로 풀 수 있다.
• 그런데 어떻게 하나의 transducer를 만들지?
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하여 전체 문제를 해결한다.
From http://web.cs.ucdavis.edu/~rogaway/classes/120/spring13/eric-transducers.pdf
Replace Rule Operator
• Upper  lower || leftcontext _ rightcontext
• foma[0]: define A a -> b || c _ d ;
aaccad  aaccbd
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 ㅇ ;
한국어 규칙을
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 종성 삽입/삭제
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! '하다' + '어' => '하여' '하다' + '어' => '해'
! '하다' + '어서' => '하여서' '하다' + '어서' => '해서'
! '하다' + '었다' => '하였다' '하다' + '었다' => '했다'
!
! 하여 => * ㅎ ㅏ %_ /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 ;
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
반대로, ‘고맙’ ‘어’를 넣으면 ‘고마워'가
나온다.
통상 분석기를 만드는 사람들은 ‘분석'
만 되게 만들지만,
FST는 분석의 input/output symbol pair
를 바꾸기만 하면, ‘생성 모델'이 된다.
Rouzeta
약 29만 어휘
127,416개의 State 수
2,806,708개의 Arc 수
세종 코퍼스 기반으로
만듦.
국내에서 FST 기반 한국어 형태소 분석기
오픈 소스는 처음임.
• 더 이상 실행 속도가 빨라지는 것은 쉽지 않다.
• 수학적으로 sound함. 더 이상 아름다울 수가 없음.
• High level information을 넣는 것이 수월함
• Composition operator를 이용해서
• 단점 (?)
• 절대 시간 이상의 공부가 필요함.
• ‘Replace Operator’ 같은 것을 공부하고 싶다면, 머리에서 쥐난다.
• 모델에 대한 근원적 제약 조건이데, 풀어야 되는 문제가 Context-free
grammar 같은 것을 사용해야 하는 string-to-string 문제라면
approximiate 접근법을 취해야 한다. – 하지만 parsing을 FST로 푸는
논문이 많음.
품사 태깅 – composition으로 만든다
𝑡1..𝑛
∗
= arg 𝑚𝑎𝑥 𝑡..𝑛 𝑃(𝑤𝑖, 𝑡𝑖)
품사 태깅 예
• 나 는 <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
앞으로 방향성
• 이것 가지고 하고 싶은 것은 정말 많으나…
• 회사 일을 해야 되어서 지금은 시간이 없음..
• 완전 오픈하고, 관심 있는 사람이 고쳐서 사용해서, 우리나라 언
어처리 기술 발전에 도움이 되었으면 함.. 그게 전부임.

More Related Content

Similar to 유한상태변환기를 이용한 한국어_형태소_분석_이상호

[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘GDGCampusKorea
 
High Performance JavaScript - Chapter 5. Strings and Regular Expressions
High Performance JavaScript - Chapter 5. Strings and Regular ExpressionsHigh Performance JavaScript - Chapter 5. Strings and Regular Expressions
High Performance JavaScript - Chapter 5. Strings and Regular ExpressionsHyuncheol Jeon
 
Windows reversing study_basic_2
Windows reversing study_basic_2Windows reversing study_basic_2
Windows reversing study_basic_2Jinkyoung Kim
 
Hunspell 한국어 맞춤법 검사의 원리
Hunspell 한국어 맞춤법 검사의 원리Hunspell 한국어 맞춤법 검사의 원리
Hunspell 한국어 맞춤법 검사의 원리Changwoo Ryu
 
외계어 스터디 2/5 - Expressions & statements
외계어 스터디 2/5 - Expressions & statements외계어 스터디 2/5 - Expressions & statements
외계어 스터디 2/5 - Expressions & statements민태 김
 
외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview민태 김
 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summarySehyeon Nam
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional ProgrammingDonghyunLee85
 
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기Han-seok Jo
 
이산치 과제7
이산치 과제7이산치 과제7
이산치 과제7mil23
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdfkd19h
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdfjinwookhong
 
Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버Jaejin Yun
 
More effective c++ chapter3 4
More effective c++ chapter3 4More effective c++ chapter3 4
More effective c++ chapter3 4Dong Chan Shin
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7KoChungWook
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2KoChungWook
 
TML studio & Beep 알고리즘 스터디, 오리엔테이션
TML studio & Beep 알고리즘 스터디, 오리엔테이션TML studio & Beep 알고리즘 스터디, 오리엔테이션
TML studio & Beep 알고리즘 스터디, 오리엔테이션재원 최
 
한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기Ted Taekyoon Choi
 
2108 [LangCon2021] kosp2e
2108 [LangCon2021] kosp2e2108 [LangCon2021] kosp2e
2108 [LangCon2021] kosp2eWarNik Chow
 

Similar to 유한상태변환기를 이용한 한국어_형태소_분석_이상호 (20)

[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
 
High Performance JavaScript - Chapter 5. Strings and Regular Expressions
High Performance JavaScript - Chapter 5. Strings and Regular ExpressionsHigh Performance JavaScript - Chapter 5. Strings and Regular Expressions
High Performance JavaScript - Chapter 5. Strings and Regular Expressions
 
Windows reversing study_basic_2
Windows reversing study_basic_2Windows reversing study_basic_2
Windows reversing study_basic_2
 
Hunspell 한국어 맞춤법 검사의 원리
Hunspell 한국어 맞춤법 검사의 원리Hunspell 한국어 맞춤법 검사의 원리
Hunspell 한국어 맞춤법 검사의 원리
 
외계어 스터디 2/5 - Expressions & statements
외계어 스터디 2/5 - Expressions & statements외계어 스터디 2/5 - Expressions & statements
외계어 스터디 2/5 - Expressions & statements
 
외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview
 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summary
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional Programming
 
Cs seminar
Cs seminar Cs seminar
Cs seminar
 
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
 
이산치 과제7
이산치 과제7이산치 과제7
이산치 과제7
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf
 
Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버
 
More effective c++ chapter3 4
More effective c++ chapter3 4More effective c++ chapter3 4
More effective c++ chapter3 4
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2
 
TML studio & Beep 알고리즘 스터디, 오리엔테이션
TML studio & Beep 알고리즘 스터디, 오리엔테이션TML studio & Beep 알고리즘 스터디, 오리엔테이션
TML studio & Beep 알고리즘 스터디, 오리엔테이션
 
한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기
 
2108 [LangCon2021] kosp2e
2108 [LangCon2021] kosp2e2108 [LangCon2021] kosp2e
2108 [LangCon2021] kosp2e
 

유한상태변환기를 이용한 한국어_형태소_분석_이상호

  • 1. Rouzeta : 유한 상태 기반의 한국어 형태소 분석기 이 상호
  • 3. 형태소 분석기란? • 나는  나/대명사 + 는/조사 (나는 간다)  날/용언 + 는/어미 (높이 나는 새)  나/용언 + 는/어미 (피어 나는 곳) • 고마워  고맙/용언 + 어/어미 • 해  해/명사 (해가 뜬다)  하/용언 + 어/어미 (해 주세요) • 갈  갈/용언 + ㄹ/어미 (칼을 갈 사람)  가/용언 + ㄹ/어미 (거기 갈 사람)
  • 4. 품사 태깅 (Part-of-speech tagging)이란? • 형태소 분석은 언제나 Ambiguity가 발생된다. • Ambiguity는 문맥을 보고 추정해야 한다. • 형태소 분석기는 모든 가능한 형태소 분석 결과를 내어 주어야 되는 모듈이고, • 품사 태깅은 그 문장에서 해석되는 형태소 분석 결과를 선택하 는 과정이다.
  • 5. 어디에 쓰이나? • 검색 시스템에서 색인어 추출 • 음성 인식기/합성기 개발에서 [단어:발음] 관계를 구해야 되는데 품사를 알아야 정확한 발음을 알 수 있다. • 단어  품사  발음 • 머리를 감기가 힘들다. • 감/용언 + 기/명사화접미사  [감끼가] • 내가 감기가 걸렸다. • 감기/체언  [감기가]
  • 6. 형태소 분석기는 자연언어처리 시스템을 만드는데 있어서 기본 중에 기본 시스템이다.
  • 7. 뭐.. 오래된 기술 같은데 이걸 왜 또 만들었나요?
  • 9. 그 당시 형태소 분석 방법 • Dictionary (사전)을 Trie로 만들어서 가지고 있는다. • 주어진 어절에 대해서 CYK parsing 방법과 같은 것으로 가능한 모 든 결과를 관리한다. • 형태소 접점부분에서 발생되는 변이 현상을 추정, 혹은 그냥 ‘異형 태’를 사전에 넣어버리고 만다. • 고마워  고마 + 워 (‘고맙’의 이형태 ‘고마’도 사전에 넣어버린다)
  • 10. CYK법에 기반한 한국어 형태소 분석에서의 개선기법 이은철, 포항공과대학교, 1993.
  • 11. 95년도에 형태소 분석기를 오픈 소스로 공개 • KTS (Korean Tagging System) • 사전을 참조하고, 격자 (lattice)를 만들면서 형태소 분석을 함. • 형태소 접점시 불규칙 현상/탈락되는 현상이 발생되는 음절 리 스트를 가지고 있으며, ‘원형’을 복원한다. • 이형태 ‘고마‘ ‘워‘ 이런 것을 사전에 넣지 않는다.
  • 12.
  • 13. 미등록어를 고려한 한국어 품사 태깅 시스템 구현 이상호, KAIST, 1995. 𝑡1..𝑛 ∗ = arg 𝑚𝑎𝑥 𝑡..𝑛 𝑃 𝑤𝑖 𝑡𝑖 𝑃(𝑡𝑖|𝑡𝑖−1)
  • 14. 이 논문을 읽고 충격 받음. Computational Linguistics, 1995.
  • 15. 영어에서의 품사 태깅을 보면.. •The flies like an arrow. •Time flies like an arrow.
  • 16. • Eric Brill의 ‘Transformational Rule-based Learner’를 Finite state transducer로 바꾸고 이를 순차적으로 적용하여 하나의 Finite state transducer로 만들면, 품사 태깅 과정이 deterministic하게 할 수 있다. • 시간 복잡도가 O(n) (n은 단어 개수)로 변해 버린다. • 그것보다도, 뭔가 처리하는 과정이 인간이 생각하는 과정(?)과 비슷하다는 느낌을 받음.
  • 17. 문장을 읽을 때, 인간은 품사 ambiguity를 계속 쌓 다가 어느 순간 확실한 clue를 만나면 그 동안 해 결하지 못한 것을 한번에 해결하지 않나? • 하나의 단어에 가장 고빈도의 품사를 먼저 할당시킨다. • 이후 finite state transducer를 통과시킨다.
  • 18. Vbn : 과거 분사 Vbd : 과거 Np : 명사 A movie recommended by you is …. 처음에는 과거형이라고 생각했다가 뒤에 ‘by’를 보는 순간 과거 분사형이라는 것을 추정하게 된다. ‘by’를 보는 순간까지 사실 정확한 결정을 미룬다. DET NP VBD by ….
  • 19. 더 이상 빠를 수가 없다.
  • 20. Finite State Computing Finite State Transducer
  • 21.
  • 22. Weighted finite state transducer
  • 25.
  • 26.
  • 27. 하나의 언어에서 나오는 모든 가능한 문장에 대해서 형태소 분석/생성 transducer 모델을 만들 수 있나? 그것도, 형태소 접점에서 발생되는 변이를 모 두 포함되어 있는 어휘형표층형 간 심벌 매핑으로 된 거대한 transducer를 만든다?
  • 28. 이 모든게 가능하다. • 그렇다면, 이것보다 모델이 더 아름다울 수 없다. • 그냥 transducer를 실행시키는 프로그램 하나만 있으면 된다. 이거 동작시키는 프로그램은 구현하기도 쉽다. • String  string으로 mapping되는 문제는 모두 이 framework 로 풀 수 있다. • 그런데 어떻게 하나의 transducer를 만들지?
  • 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하여 전체 문제를 해결한다.
  • 31. Replace Rule Operator • Upper  lower || leftcontext _ rightcontext • foma[0]: define A a -> b || c _ d ; aaccad  aaccbd
  • 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 ㅇ ;
  • 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 종성 삽입/삭제
  • 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 ;
  • 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
  • 36. 반대로, ‘고맙’ ‘어’를 넣으면 ‘고마워'가 나온다. 통상 분석기를 만드는 사람들은 ‘분석' 만 되게 만들지만, FST는 분석의 input/output symbol pair 를 바꾸기만 하면, ‘생성 모델'이 된다.
  • 37. Rouzeta 약 29만 어휘 127,416개의 State 수 2,806,708개의 Arc 수 세종 코퍼스 기반으로 만듦.
  • 38. 국내에서 FST 기반 한국어 형태소 분석기 오픈 소스는 처음임. • 더 이상 실행 속도가 빨라지는 것은 쉽지 않다. • 수학적으로 sound함. 더 이상 아름다울 수가 없음. • High level information을 넣는 것이 수월함 • Composition operator를 이용해서 • 단점 (?) • 절대 시간 이상의 공부가 필요함. • ‘Replace Operator’ 같은 것을 공부하고 싶다면, 머리에서 쥐난다. • 모델에 대한 근원적 제약 조건이데, 풀어야 되는 문제가 Context-free grammar 같은 것을 사용해야 하는 string-to-string 문제라면 approximiate 접근법을 취해야 한다. – 하지만 parsing을 FST로 푸는 논문이 많음.
  • 39. 품사 태깅 – composition으로 만든다 𝑡1..𝑛 ∗ = arg 𝑚𝑎𝑥 𝑡..𝑛 𝑃(𝑤𝑖, 𝑡𝑖)
  • 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
  • 41. 앞으로 방향성 • 이것 가지고 하고 싶은 것은 정말 많으나… • 회사 일을 해야 되어서 지금은 시간이 없음.. • 완전 오픈하고, 관심 있는 사람이 고쳐서 사용해서, 우리나라 언 어처리 기술 발전에 도움이 되었으면 함.. 그게 전부임.