띄어쓰기 및 철자 오류 동시 교정

31
띄띄띄띄 띄 띄띄 띄띄 띄띄 띄띄 띄띄 , 띄띄 : 띄띄띄 2007 띄 02 띄 15 띄 띄띄띄 띄 띄띄띄

Upload: arnon

Post on 04-Jan-2016

73 views

Category:

Documents


0 download

DESCRIPTION

2007 년 02 월 15 일 수요일 랩 세미나. 띄어쓰기 및 철자 오류 동시 교정. 작성 , 발표 : 이주호. 요약 서론 자소 단위의 오류수정 띄어쓰기 및 철자 오류 교정을 위한 통합모델 실험결과. 목 차. 요 약. 띄어 쓰기 오류와 철자 오류를 동시에 교정 가능한 전 처리기 기존의 전 처리기 알고리즘 의 한계극복 기존의 noisy-channel model 을 확장 최대한 사전을 적게 이용하여 효과적으로 교정후보생성. 서 론. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 동시 교정

작성 , 발표 : 이주호

2007 년 02 월 15 일 수요일 랩 세미나

Page 2: 띄어쓰기 및 철자 오류  동시 교정

목 차

• 요약

• 서론

• 자소 단위의 오류수정

• 띄어쓰기 및 철자 오류 교정을 위한 통합모델

• 실험결과

Page 3: 띄어쓰기 및 철자 오류  동시 교정

요 약

• 띄어 쓰기 오류와 철자 오류를 동시에 교정 가능한 전 처리기

• 기존의 전 처리기 알고리즘 의 한계극복• 기존의 noisy-channel model 을 확장• 최대한 사전을 적게 이용하여 효과적으로

교정후보생성

Page 4: 띄어쓰기 및 철자 오류  동시 교정

서 론

• 대화시스템 ( 메신져 , SMS) 증가로 인해 구어체 문장의 텍스트 전 처리를 효율적으로 해야 할 필요성이 커짐

• 구어체 문장을 전처리 하는 과정에서 띄어쓰기와 철자오류 교정은 가장 기본적인 문제들 중 하나이다 .

Page 5: 띄어쓰기 및 철자 오류  동시 교정

서 론

• 띄어쓰기 교정에 많이 사용되는 방법들– 통계적 방법

•어절 , 음절간 n-gram•Noisy-channel model

– 규칙을 이용한 방법• 휴리스틱 알고리즘

– 언어학적 지식을 이용하여 언어의 특성을 반영

Page 6: 띄어쓰기 및 철자 오류  동시 교정

서 론

• 철자 교정 방법– 문장에 포함된 단어 중 사전에 없는 단어를 오류가

포함된 단어로 찾아 가장 대체 확률이 높은 후보 단어로 대체

• 후보를 찾는 과정– n-gram 등의 문맥 정보 이용– edit-distance 등의 기준을 이용

• 철자오류가 포함된 단어와 그 단어의 후보간 근접도를 측정하기 위한 방법

• 교정대상 단어에서 교정 결과 단어들 문자간의 근접도 만을 이용해 추정이 가능한 문어체 문장에서만 효과적으로 적용된다 .

Page 7: 띄어쓰기 및 철자 오류  동시 교정

서 론

• 근접도를 이용한 방법의 한계를 극복하기 위해 제안된 모델– 교정 대상 단어와 교정 결과 단어의 앞뒤 문맥을

이용하여 유사도 비교 방법• 이 방법을 통해 전혀 다른 문자로의 전환도 후보로 생성 가능• 일반적 텍스트 전처리 방법으로 사용할 수 없다 .

– 일본어를 위해 제안된 모델• OCR 로 인식된 문자들의 철자 오류를 교정하기 위해 제안됨• 각 문자의 변환 확률 , 단어의 POS 태그간의 n-gram 을 이용• 단어사전 사용 불가피함• 단순 전처리기로 사용하기에는 시간에 대한 비용이 너무큼

Page 8: 띄어쓰기 및 철자 오류  동시 교정

서 론

• 띄어쓰기 , 철자 오류를 동시에 전 처리가 가능한 새로운 통계적 방법의 제안– Noisy-channel model 이 바탕– 각 자소의 변환 확률값과 어절변환 패턴 사전을

이용하여 철자 교정 후보들을 생성– 생성된 후보에 띄어쓰기 교정을 위해 공백문자가

더해진 후보가 더해진다 .– 이렇게 생성된 자소 / 어절 후보 경로에서 최종적으로

교정된 결과를 얻게 된다 .– 자소 변환 확률을 이용하여 어절변환패턴 사전의

크기를 상당히 줄이고 사전에 없는 패턴 또한 교정이 가능하다 .

Page 9: 띄어쓰기 및 철자 오류  동시 교정

자소 단위의 오류 수정

• 자소 단위의 변환 확률 값을 이용한 교정방법을 이용

• 자소 단위 변환을 이용한 이유– 철자 오류의 많은 부분은 자소의 변환만으로도

교정이 가능함– 어절 변환 패턴 사전의 크기를 줄일 수 있게 됨– 음절단위 모델에 비해 자체크기가 작음

Page 10: 띄어쓰기 및 철자 오류  동시 교정

자소 단위의 오류 수정

• 자소 단위의 오류 수정 이점– 음절들의 많은 변화를 작은 크기의 자소 단위 오류 수정 모델만으로 초 ,

중 , 종성의 조합을 이용해 교정 가능– 학습 말뭉치에서 나타나지 않았던 다양한 음절 변환도 교정이 가능하다 .– 자소 단위 후보 생성은 말뭉치에 없는 음절이라 하더라도 자소 조합을

통해 후보생성이 가능하다 .

• 단순히 음절단위의 후보만을 말뭉치에서 뽑아낸다면 말뭉치에서 나타나지 않은 음절의 교정은 불가능하다 .

• 교정 대상 단어를 다른 후보단어로 치환하는 방법에서 나타나는 문제점 ( 영어권 언어에서 많이 사용 )

• 이 문제를 해결하기 위해서는 학습을 위한 방대한 양의 말뭉치가 필요하다 .

Page 11: 띄어쓰기 및 철자 오류  동시 교정

자소 단위의 오류 수정

• 자소 단위의 오류 수정 이점– 많지 않은 말뭉치만으로도 자소 단위 변환 정보를

얻을 수 있다 . • 수많은 자소 조합이 가능하므로 후보 과생성 문제를 야기할

수 있다 .• 이를 해결하기 위해 일정 임계값보다 변환 확률이 작은

자소들을 애초에 후보로 생성시키지 않는다 .• 한글에서 인정하지 않는 자소 조합이 나타날 경우 후보에서

제외한다 .

• 교정 대상 문장의 각 자소들로부터 변환 후보들을 생성하고 최적 경로를 찾는 방법으로 많은 철자 교정 문제를 해결할 수 있다

Page 12: 띄어쓰기 및 철자 오류  동시 교정

자소 단위 변환 데이터 추출

• 한 문장간 평행하게 일대일 대응하는 띄어쓰기 오류와 철자 오류가 포함된 말뭉치와 수작업으로 교정한 말뭉치를 이용

• 어절들을 자소 단위로 비교철자 교정 과정이 한 개 , 두 개 , 세 개 이상의 단위로 이루어지는 경우로 나눔

Page 13: 띄어쓰기 및 철자 오류  동시 교정

자소 단위 변환 데이터 추출

• 한 개의 자소 단위로 교정이 되는 경우– 발음 실수 혹은 고의로 다르게 표기한 경우가 많음

• 예 ) 같애요→같아요 / ㅐ →ㅏ , 먹어여→먹어요 / ㅕ →ㅛ– 맞춤법 지식의 부재로 인한 경우

• 예 ) 희안한→희한한 / ㅇ →ㅎ– 자소가 빠져서 교정되는 경우

• 예 ) 나와욧→나와요 / ㅅ → X

• 오류 자소가 어떤 자소로 교정이 되었는지 수를 세어서 확률변환 데이터로 구축– 각각의 자소 변환 확률은 초 , 중 , 종성을 구분하여

계산– 성능 향상과 후보 과 생성을 막고자 함이다

Page 14: 띄어쓰기 및 철자 오류  동시 교정

자소 단위 변환 데이터 추출

• 두 개의 자소 단위로 교정이 되는 경우– 두 개의 자소가 한꺼번에 바뀌어 교정되는 패턴– 특정 음절 A,B 가 연속한 경우 A 의 종성이 B 의

초성과 연계하여 변화하는 경우• 맞춤법과 달리 발음 그대로 쓰는 경우 • 고의적으로 바꾸어 사용하는 경우• 예 ) 있자나요→있잖아요 /X ㄴ→ㄶㅇ• 예 ) 촙오→초보 / ㅂㅇ→ X ㅂ

• 두 개의 자소를 하나의 변환 단위로 보고 각각의 단위 변환 횟수를 통계 데이터로 이용한다

Page 15: 띄어쓰기 및 철자 오류  동시 교정

자소 단위 변환 데이터 추출

• 앞의 두 가지 변환을 자소 단위 교정으로 규정– 그 외의 교정 패턴은 음절들의 자체 변환된 경우로

자소 단위로 접근 불가능 ( 복잡한 자소 변환 경우도 포함 )

• 오류 음절들의 변화가 너무 심해 단순한 자소 변환만으로 그 원래의 음절을 복원할 수 없는경우

• 채팅시 많이 쓰이는 신조어나 은어 , 초성만으로 이루어진 형태

– 이러한 패턴은 어절 혹은 음절 자체를 하나의 단위로 보고 어절변환패턴 사전을 구성한다

– 자소 단위 외의 후보를 생성하는데 이 사전이 이용됨

Page 16: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

• 통합 모델의 필요성– 띄어쓰기 오류교정

• 각 음절 사이에 공백문자의 삽입 유무의 판단– 철자 오류 교정

• 각각의 어절 또는 음절의 오류포함 유무판단• 교정후보 생성 문제

– 현재까지의 띄어쓰기 및 철자 교정에 효과적으로 알려진 알고리즘들은 복합적으로 오류가 나타났을 경우 성능이 저하됨

Page 17: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

• 통합 모델의 필요성– 띄어쓰기 알고리즘

• 띄어쓰기에서 사용하는 방법은 그 단어나 문자들이 올바르다는 가정하에서만 띄어쓰기 교정가능

• 복합적으로 오류가 나타났을 경우 띄어쓰기 알고리즘은 철자 오류를 고려하지 않고 적용됨

– 철자 교정 알고리즘 _1 • 단어 사전과 문장내의 형태소의 문자간 근접성을 바탕으로 비교함• 영어권 언어는 바로 어절 자체가 하나의 단어이므로 바로 적용가능• 한국어는 조사 , 어미 등을 통계적 방법이나 사전을 이용하여 따로

처리 하거나 어절 전체를 사전과 비교할 수도 있음• 특히 어미 , 조사 등은 띄어쓰기 된 정보를 이용하여 구분하는

방법을 사용

Page 18: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

• 통합 모델의 필요성– 철자 교정 알고리즘 _2

• 철자 교정 알고리즘은 주어진 문장의 띄어쓰기를 바탕으로 어절을 나눈 후에 알고리즘을 적용

• 주어진 문장에 띄어 쓰기 오류가 포함 될 경우 올바른 후보를 생성할 수 없음

Page 19: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

• 구어체문장에서는 이 알고리즘들을 실용적으로 이용하기가 매우 어려움– 구어체에서는 두 오류가 복합적으로 나타나는

빈도수가 높음• 철자 및 띄어쓰기 오류를 동시에 교정이

가능한 전처리기가 필요함

Page 20: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

• 문제 정의– C' = argmaxC P(C|T)

• 띄어쓰기와 철자오류가 모두 포함된 문장 T• T 로부터의 교정후보 C • 후보 중 교정 확률이 가장 높은 C'

※T 의 교정후보 C 중 극대 값을 가진 교정 후보 C 가 C' 가 된다 .

Page 21: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

• 모델 구성– T = s1b1s2b2s3b3.......snbn ,n 은 음절의 개수

• si 는 음절 bi 는공백문자• T 는 기본적으로 si bi 가 포함되어 있음

– si = ji1ji2ji3(ji1: 초성 ji2: 중성 ji3: 종성 ) • si 는 초 , 중 , 종성 총 3 개의 자소로 구성• 구성 요소가 없는 자소는 ‘ X’ 로 정의• bi 는 공백이 존재시 ‘ B’ 공백이 없을시 ‘ Φ’ 로 정의

– C = s1b1s2b2s3b3.......snbn • C 역시 T 와 마찬 가지로 음절과 공백 문자로 정의 할수 있음

Page 22: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

• 모델 구성– C' = argmaxC P(C|T)

=argmaxC P(T|C)P(C)/P(T) =argmaxC P(T|C)P(C)

• C' = argmaxC P(C|T) 를 만족하는 C' 를 구하기 위해서 Bayes’ Rule 을 적용하여 푼다 .

– • P(C) 는 C 를 이루는 각 음절의 trigram 을 이용한다 .

– • P(C|T) 는 각각의 자소의 변환 확률값을 이용 , 자소간 문맥을

고려하지 않고 이들의 곱으로 정의한다 .

. ),|()(21

bscPCP ccc iii또는

n

iiiiiii

n

iii jjjjjjss PPPPCTP

1

'

33

'

22

'

111

')]|()|()|([)|()|(

Page 23: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

• 모델 구성–

• 각각의 공백 문자 변환확률을 곱할 경우

※ 실제 noisy-channel model 구현시에는 P(C|T) 에 로그를 취하여 누적 로그값의 합들로 계산

n

iiiiiiiii bbjjjjjj PPPPCTP

1

''

33

'

22

'

11)]|()|()|()|([)|(

Page 24: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

• 자소 단위 후보 생성의 예

Page 25: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

• 자소 단위 후보 생성의 예– 그림의 맨 윗줄은 입력문장을 자소 단위로 나눈것– 둘째 줄 이하부터는 원 자소의 후보 자소들이다– 각 자소노드는 자소변환확률값 의 로그값인

log P(jik|j’ik) 가지고 있어 P(C|T) 의 계산에 사용됨– 인접한 자소 2 개가 후보 생성이 가능할 때 그 후보

또한 생성 된다 .• X ㅋ→ㅎㄱ , ㅎㅋ , ㅋㅎ , ㄱㅇ

– 음절 이상 단위의 변환 또한 어절변환패턴 사전으로부터 후보가 생성된다 .

• ㅇㅓ X ㅋㅔ X→ ㅇㅓ X ㄸㅓㅎㄱㅔ X

Page 26: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

• P(C) 를 계산하기 위해서는 음절단위의 노드가 필요하므로 이 자소 후보로부터 다시 음절단위의 후보 노드들로의 변환이 이루어진다– 이때 공백 문자가 삽입되고 이 단계에서 후보생성이 완성된다– 생성된 노드로부터 최적 경로를 찾기 위해 Viterbi 방식의 탐색을

맨 왼쪽 노드에서 부터 진행• Viterbi 알고리즘은 가능성이 없는 경로를 버리고 가능한 한

탐색거리 를 짧고 간단하게 한다 . – 각 음절후보를 선택할 때마다 그 동안 누적된 로그 값이 낮은

후보들은 beam search 를 통해 beam value 에서 벗어나는 후보 들을 잘라낸다 .

• beam search 는 beam value 에 미치지 않는 탐색영역에 대하여 제한을 가하는 방법

Page 27: 띄어쓰기 및 철자 오류  동시 교정

띄어쓰기 및 철자 오류 교정을 위한 통합모델

Page 28: 띄어쓰기 및 철자 오류  동시 교정

실험결과

• 철자가 교정된 말뭉치를 대상으로 띄어쓰기만을 적용한 실험

– 띄어쓰기 성능을 음절 , 어절 단위로 측정한 것

음절단위 (F-1) 어절단위 (%)

입력 띄어쓰기 무시 0.90 80.87

입력 띄어쓰기 유지 0.95 92.29

Page 29: 띄어쓰기 및 철자 오류  동시 교정

실험결과

• 띄어 쓰기와 철자 교정을 동시에 수행한 실험 결과

– 실험 결과 초 , 중 , 종성을 구분하면서 확률 데이터 값을 적용 하였을 때 가장 성능이 높음

※ 실험결과 표에서 사용된 상수는 log(P(j|j’)=-1.6) 이다 .

자소 변환확률이용 상수이용

초 , 중 ,종성 구분

73.57% 65.10%

초 , 중 ,종성

구분안함61.89% 63.71%

자소 변환확률이용 상수이용

초 , 중 ,종성 구분

84.25% 80.92%

초 , 중 ,종성

구분안함79.67% 80.61%

이미 입력된 띄어쓰기를 무시한 경우 이미 입력된 띄어쓰기를 유지한 경우

Page 30: 띄어쓰기 및 철자 오류  동시 교정

실험결과

• 띄어 쓰기와 철자 교정을 동시에 수행한 실험 결과– 띄어쓰기 성능이 전체 결과에 상당한 영향을

준다 .– 입력문장의 띄어쓰기를 유지하고 알고리즘을

적용한 경우 교정률은 80% 내외로 나타나는 이유는 후보탐색이 어절 내로 국한되어 좁아졌기 때문에 n-gram 데이터의 영향보다는 후보변환 확률 데이터의 영향이 누적 로그값을 매기는데 더 컸기 때문이다 .

Page 31: 띄어쓰기 및 철자 오류  동시 교정

실험결과

• 띄어 쓰기와 철자 교정을 동시에 수행한 실험 결과– 낮은 성능을 보인 이유

• 자소나 음절 단위의 변환 확률 값은 어느 정도의 말뭉치만으로도 신뢰할 만한 수치를 얻을 수 있었음

• P(C) 를 계산하기 위한 n-gram 데이터는 충분한 양의 말뭉치가 있어야 신뢰성 있는 데이터를 얻을 수 있다

• 말뭉치의 오류 태깅이 일관성이 없으므로 성능측정치가 신뢰성이 높다고 할 수 없음

• 말뭉치 자체가 전문 용어가 많아서 n-gram 데이터의 질에 영향을 많이 준다