310 likes | 625 Views
2007 년 02 월 15 일 수요일 랩 세미나. 띄어쓰기 및 철자 오류 동시 교정. 작성 , 발표 : 이주호. 요약 서론 자소 단위의 오류수정 띄어쓰기 및 철자 오류 교정을 위한 통합모델 실험결과. 목 차. 요 약. 띄어 쓰기 오류와 철자 오류를 동시에 교정 가능한 전 처리기 기존의 전 처리기 알고리즘 의 한계극복 기존의 noisy-channel model 을 확장 최대한 사전을 적게 이용하여 효과적으로 교정후보생성. 서 론.
E N D
2007년 02월 15일 수요일 랩 세미나 띄어쓰기 및 철자 오류 동시 교정 작성,발표:이주호
요약 서론 자소 단위의 오류수정 띄어쓰기 및 철자 오류 교정을 위한 통합모델 실험결과 목 차
요 약 • 띄어 쓰기 오류와 철자 오류를 동시에 교정 가능한 전 처리기 • 기존의 전 처리기 알고리즘 의 한계극복 • 기존의 noisy-channel model을 확장 • 최대한 사전을 적게 이용하여 효과적으로 교정후보생성
서 론 • 대화시스템(메신져, SMS) 증가로 인해 구어체 문장의 텍스트 전 처리를 효율적으로 해야 할 필요성이 커짐 • 구어체 문장을 전처리 하는 과정에서 띄어쓰기와 철자오류 교정은 가장 기본적인 문제들 중 하나이다.
서 론 • 띄어쓰기 교정에 많이 사용되는 방법들 • 통계적 방법 • 어절,음절간 n-gram • Noisy-channel model • 규칙을 이용한 방법 • 휴리스틱 알고리즘 • 언어학적 지식을 이용하여 언어의 특성을 반영
서 론 • 철자 교정 방법 • 문장에 포함된 단어 중 사전에 없는 단어를 오류가 포함된 단어로 찾아 가장 대체 확률이 높은 후보 단어로 대체 • 후보를 찾는 과정 • n-gram등의 문맥 정보 이용 • edit-distance등의 기준을 이용 • 철자오류가 포함된 단어와 그 단어의 후보간 근접도를 측정하기 위한 방법 • 교정대상 단어에서 교정 결과 단어들 문자간의 근접도 만을 이용해 추정이 가능한 문어체 문장에서만 효과적으로 적용된다.
서 론 • 근접도를 이용한 방법의 한계를 극복하기 위해 제안된 모델 • 교정 대상 단어와 교정 결과 단어의 앞뒤 문맥을 이용하여 유사도 비교 방법 • 이 방법을 통해 전혀 다른 문자로의 전환도 후보로 생성 가능 • 일반적 텍스트 전처리 방법으로 사용할 수 없다. • 일본어를 위해 제안된 모델 • OCR로 인식된 문자들의 철자 오류를 교정하기 위해 제안됨 • 각 문자의 변환 확률,단어의 POS태그간의 n-gram을 이용 • 단어사전 사용 불가피함 • 단순 전처리기로 사용하기에는 시간에 대한 비용이 너무큼
서 론 • 띄어쓰기, 철자 오류를 동시에 전 처리가 가능한 새로운 통계적 방법의 제안 • Noisy-channel model이 바탕 • 각 자소의 변환 확률값과 어절변환 패턴 사전을 이용하여 철자 교정 후보들을 생성 • 생성된 후보에 띄어쓰기 교정을 위해 공백문자가 더해진 후보가 더해진다. • 이렇게 생성된 자소/어절 후보 경로에서 최종적으로 교정된 결과를 얻게 된다. • 자소 변환 확률을 이용하여 어절변환패턴 사전의 크기를 상당히 줄이고 사전에 없는 패턴 또한 교정이 가능하다.
자소 단위의 오류 수정 • 자소 단위의 변환 확률 값을 이용한 교정방법을 이용 • 자소 단위 변환을 이용한 이유 • 철자 오류의 많은 부분은 자소의 변환만으로도 교정이 가능함 • 어절 변환 패턴 사전의 크기를 줄일 수 있게 됨 • 음절단위 모델에 비해 자체크기가 작음
자소 단위의 오류 수정 • 자소 단위의 오류 수정 이점 • 음절들의 많은 변화를 작은 크기의 자소 단위 오류 수정 모델만으로 초,중,종성의 조합을 이용해 교정 가능 • 학습 말뭉치에서 나타나지 않았던 다양한 음절 변환도 교정이 가능하다. • 자소 단위 후보 생성은 말뭉치에 없는 음절이라 하더라도 자소 조합을 통해 후보생성이 가능하다. • 단순히 음절단위의 후보만을 말뭉치에서 뽑아낸다면 말뭉치에서 나타나지 않은 음절의 교정은 불가능하다. • 교정 대상 단어를 다른 후보단어로 치환하는 방법에서 나타나는 문제점 (영어권 언어에서 많이 사용) • 이 문제를 해결하기 위해서는 학습을 위한 방대한 양의 말뭉치가 필요하다.
자소 단위의 오류 수정 • 자소 단위의 오류 수정 이점 • 많지 않은 말뭉치만으로도 자소 단위 변환 정보를 얻을 수 있다. • 수많은 자소 조합이 가능하므로 후보 과생성 문제를 야기할 수 있다. • 이를 해결하기 위해 일정 임계값보다 변환 확률이 작은 자소들을 애초에 후보로 생성시키지 않는다. • 한글에서 인정하지 않는 자소 조합이 나타날 경우 후보에서 제외한다. • 교정 대상 문장의 각 자소들로부터 변환 후보들을 생성하고 최적 경로를 찾는 방법으로 많은 철자 교정 문제를 해결할 수 있다
자소 단위 변환 데이터 추출 • 한 문장간 평행하게 일대일 대응하는 띄어쓰기 오류와 철자 오류가 포함된 말뭉치와 수작업으로 교정한 말뭉치를 이용 • 어절들을 자소 단위로 비교철자 교정 과정이 한 개,두 개,세 개 이상의 단위로 이루어지는 경우로 나눔
자소 단위 변환 데이터 추출 • 한 개의 자소 단위로 교정이 되는 경우 • 발음 실수 혹은 고의로 다르게 표기한 경우가 많음 • 예)같애요→같아요/ㅐ →ㅏ, 먹어여→먹어요/ㅕ →ㅛ • 맞춤법 지식의 부재로 인한 경우 • 예)희안한→희한한/ㅇ →ㅎ • 자소가 빠져서 교정되는 경우 • 예)나와욧→나와요/ㅅ →X • 오류 자소가 어떤 자소로 교정이 되었는지 수를 세어서 확률변환 데이터로 구축 • 각각의 자소 변환 확률은 초,중,종성을 구분하여 계산 • 성능 향상과 후보 과 생성을 막고자 함이다
자소 단위 변환 데이터 추출 • 두 개의 자소 단위로 교정이 되는 경우 • 두 개의 자소가 한꺼번에 바뀌어 교정되는 패턴 • 특정 음절 A,B가 연속한 경우 A의 종성이 B의 초성과 연계하여 변화하는 경우 • 맞춤법과 달리 발음 그대로 쓰는 경우 • 고의적으로 바꾸어 사용하는 경우 • 예)있자나요→있잖아요/Xㄴ→ㄶㅇ • 예)촙오→초보/ㅂㅇ→Xㅂ • 두 개의 자소를 하나의 변환 단위로 보고 각각의 단위 변환 횟수를 통계 데이터로 이용한다
자소 단위 변환 데이터 추출 • 앞의 두 가지 변환을 자소 단위 교정으로 규정 • 그 외의 교정 패턴은 음절들의 자체 변환된 경우로 자소 단위로 접근 불가능(복잡한 자소 변환 경우도 포함) • 오류 음절들의 변화가 너무 심해 단순한 자소 변환만으로 그 원래의 음절을 복원할 수 없는경우 • 채팅시 많이 쓰이는 신조어나 은어,초성만으로 이루어진 형태 • 이러한 패턴은 어절 혹은 음절 자체를 하나의 단위로 보고 어절변환패턴 사전을 구성한다 • 자소 단위 외의 후보를 생성하는데 이 사전이 이용됨
띄어쓰기 및 철자 오류 교정을 위한 통합모델 • 통합 모델의 필요성 • 띄어쓰기 오류교정 • 각 음절 사이에 공백문자의 삽입 유무의 판단 • 철자 오류 교정 • 각각의 어절 또는 음절의 오류포함 유무판단 • 교정후보 생성 문제 • 현재까지의 띄어쓰기 및 철자 교정에 효과적으로 알려진 알고리즘들은 복합적으로 오류가 나타났을 경우 성능이 저하됨
띄어쓰기 및 철자 오류 교정을 위한 통합모델 • 통합 모델의 필요성 • 띄어쓰기 알고리즘 • 띄어쓰기에서 사용하는 방법은 그 단어나 문자들이 올바르다는 가정하에서만 띄어쓰기 교정가능 • 복합적으로 오류가 나타났을 경우 띄어쓰기 알고리즘은 철자 오류를 고려하지 않고 적용됨 • 철자 교정 알고리즘_1 • 단어 사전과 문장내의 형태소의 문자간 근접성을 바탕으로 비교함 • 영어권 언어는 바로 어절 자체가 하나의 단어이므로 바로 적용가능 • 한국어는 조사,어미 등을 통계적 방법이나 사전을 이용하여 따로 처리 하거나 어절 전체를 사전과 비교할 수도 있음 • 특히 어미, 조사 등은 띄어쓰기 된 정보를 이용하여 구분하는 방법을 사용
띄어쓰기 및 철자 오류 교정을 위한 통합모델 • 통합 모델의 필요성 • 철자 교정 알고리즘_2 • 철자 교정 알고리즘은 주어진 문장의 띄어쓰기를 바탕으로 어절을 나눈 후에 알고리즘을 적용 • 주어진 문장에 띄어 쓰기 오류가 포함 될 경우 올바른 후보를 생성할 수 없음
띄어쓰기 및 철자 오류 교정을 위한 통합모델 • 구어체문장에서는 이 알고리즘들을 실용적으로 이용하기가 매우 어려움 • 구어체에서는 두 오류가 복합적으로 나타나는 빈도수가 높음 • 철자 및 띄어쓰기 오류를 동시에 교정이 가능한 전처리기가 필요함
띄어쓰기 및 철자 오류 교정을 위한 통합모델 • 문제 정의 • C' = argmaxC P(C|T) • 띄어쓰기와 철자오류가 모두 포함된 문장 T • T로부터의 교정후보 C • 후보 중 교정 확률이 가장 높은 C' ※T의 교정후보 C중 극대 값을 가진 교정 후보 C가 C'가 된다.
띄어쓰기 및 철자 오류 교정을 위한 통합모델 • 모델 구성 • T = s1b1s2b2s3b3.......snbn ,n은 음절의 개수 • si는 음절 bi 는공백문자 • T는 기본적으로 si bi 가 포함되어 있음 • si = ji1ji2ji3(ji1:초성ji2:중성ji3:종성) • si는 초,중,종성 총 3개의 자소로 구성 • 구성 요소가 없는 자소는 ‘X’로 정의 • bi는 공백이 존재시 ‘B’공백이 없을시 ‘Φ’로 정의 • C = s1b1s2b2s3b3.......snbn • C역시 T와 마찬 가지로 음절과 공백 문자로 정의 할수 있음
띄어쓰기 및 철자 오류 교정을 위한 통합모델 • 모델 구성 • 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)는 각각의 자소의 변환 확률값을 이용, 자소간 문맥을 고려하지 않고 이들의 곱으로 정의한다.
띄어쓰기 및 철자 오류 교정을 위한 통합모델 • 모델 구성 • 각각의 공백 문자 변환확률을 곱할 경우 ※실제 noisy-channel model 구현시에는 P(C|T)에 로그를 취하여 누적 로그값의 합들로 계산
띄어쓰기 및 철자 오류 교정을 위한 통합모델 • 자소 단위 후보 생성의 예
띄어쓰기 및 철자 오류 교정을 위한 통합모델 • 자소 단위 후보 생성의 예 • 그림의 맨 윗줄은 입력문장을 자소 단위로 나눈것 • 둘째 줄 이하부터는 원 자소의 후보 자소들이다 • 각 자소노드는 자소변환확률값 의 로그값인log P(jik|j’ik)가지고 있어 P(C|T)의 계산에 사용됨 • 인접한 자소 2개가 후보 생성이 가능할 때 그 후보 또한 생성 된다. • Xㅋ→ㅎㄱ,ㅎㅋ,ㅋㅎ,ㄱㅇ • 음절 이상 단위의 변환 또한 어절변환패턴 사전으로부터 후보가 생성된다. • ㅇㅓXㅋㅔX→ㅇㅓXㄸㅓㅎㄱㅔX
띄어쓰기 및 철자 오류 교정을 위한 통합모델 • P(C)를 계산하기 위해서는 음절단위의 노드가 필요하므로 이 자소 후보로부터 다시 음절단위의 후보 노드들로의 변환이 이루어진다 • 이때 공백 문자가 삽입되고 이 단계에서 후보생성이 완성된다 • 생성된 노드로부터 최적 경로를 찾기 위해 Viterbi 방식의 탐색을 맨 왼쪽 노드에서 부터 진행 • Viterbi알고리즘은 가능성이 없는 경로를 버리고 가능한 한 탐색거리 를 짧고 간단하게 한다. • 각 음절후보를 선택할 때마다 그 동안 누적된 로그 값이 낮은 후보들은 beam search를 통해 beam value에서 벗어나는 후보 들을 잘라낸다. • beam search는 beam value에 미치지 않는 탐색영역에 대하여 제한을 가하는 방법
실험결과 • 철자가 교정된 말뭉치를 대상으로 띄어쓰기만을 적용한 실험 • 띄어쓰기 성능을 음절, 어절 단위로 측정한 것
실험결과 • 띄어 쓰기와 철자 교정을 동시에 수행한 실험 결과 • 실험 결과 초,중,종성을 구분하면서 확률 데이터 값을 적용 하였을 때 가장 성능이 높음 ※실험결과 표에서 사용된 상수는 log(P(j|j’)=-1.6) 이다. 이미 입력된 띄어쓰기를 유지한 경우 이미 입력된 띄어쓰기를 무시한 경우
실험결과 • 띄어 쓰기와 철자 교정을 동시에 수행한 실험 결과 • 띄어쓰기 성능이 전체 결과에 상당한 영향을 준다. • 입력문장의 띄어쓰기를 유지하고 알고리즘을 적용한 경우 교정률은 80% 내외로 나타나는 이유는 후보탐색이 어절 내로 국한되어 좁아졌기 때문에 n-gram데이터의 영향보다는 후보변환 확률 데이터의 영향이 누적 로그값을 매기는데 더 컸기 때문이다.
실험결과 • 띄어 쓰기와 철자 교정을 동시에 수행한 실험 결과 • 낮은 성능을 보인 이유 • 자소나 음절 단위의 변환 확률 값은 어느 정도의 말뭉치만으로도 신뢰할 만한 수치를 얻을 수 있었음 • P(C)를 계산하기 위한 n-gram데이터는 충분한 양의 말뭉치가 있어야 신뢰성 있는 데이터를 얻을 수 있다 • 말뭉치의 오류 태깅이 일관성이 없으므로 성능측정치가 신뢰성이 높다고 할 수 없음 • 말뭉치 자체가 전문 용어가 많아서 n-gram데이터의 질에 영향을 많이 준다