맞춤법 검사기

소프트웨어에서 **맞춤법 검사기**(spell checker)는 텍스트의 철자 오류를 확인하는 소프트웨어 기능이다. 맞춤법 검사 기능은 워드 프로세서, 이메일 클라이언트, 전자 사전 또는 검색 엔진과 같은 소프트웨어나 서비스에 자주 포함된다. 예를 들어, 일부 그래픽 프로그램과 소프트웨어 형태의 워드프로세서에서 지원되며 대표적으로 지원되는 프로그램으로는 MS 워드와 한/글 등이 있다.

[섬네일|위 시에서 인식되지 않는 단어로 표시된 "chequer" 단어에 대한 [구글 크롬 맞춤법 검사기]]

## 디자인
기본적인 맞춤법 검사기는 다음 프로세스를 수행한다.
* 텍스트를 스캔하고 포함된 단어를 추출한다.
* 그런 다음 각 단어를 올바르게 철자가 된 단어의 알려진 목록(즉, 사전)과 비교한다. 여기에는 단어 목록만 포함되거나 하이픈 연결 지점 또는 어휘 및 문법적 속성과 같은 추가 정보도 포함될 수 있다.
* 추가 단계는 형태론을 처리하기 위한 언어 종속 알고리즘이다. 영어와 같이 굴절이 가벼운 언어의 경우에도 맞춤법 검사기는 복수형, 동사형, 축약형, 소유격과 같이 동일한 단어의 다른 형태를 고려해야 한다. 교착어 및 더 복잡한 곡용 및 활용을 특징으로 하는 다른 많은 언어의 경우 이 프로세스의 이 부분이 더 복잡하다.

문법적 역할에 따라 여러 단어 형태를 허용하는 형태론적 분석이 영어에 상당한 이점을 제공하는지는 불분명하지만, 독일어, 헝가리어 또는 터키어와 같은 고도로 종합어에는 분명한 이점이 있다.

이러한 구성 요소 외에도 프로그램의 사용자 인터페이스를 통해 사용자는 대체 항목을 승인하거나 거부하고 프로그램의 작동을 수정할 수 있다.

맞춤법 검사기는 레벤슈타인 거리와 같은 근사 문자열 일치 알고리즘을 사용하여 철자 오류가 있는 단어의 올바른 철자를 찾을 수 있다. 다른 유형의 맞춤법 검사기는 올바르게 철자가 된 단어 대신 N-그램과 같은 통계 정보만 사용하여 오류를 인식한다. 이 접근 방식은 일반적으로 충분한 통계 정보를 얻기 위해 많은 노력이 필요하다. 주요 장점으로는 더 적은 런타임 저장 공간이 필요하고 사전에 포함되지 않은 단어의 오류를 수정할 수 있다는 점이다. 

어떤 경우에는 맞춤법 검사기가 철자 오류 및 해당 철자 오류에 대한 철자 제안의 고정 목록을 사용한다. 이 덜 유연한 접근 방식은 백과사전의 같이 보기 항목과 같은 종이 기반 수정 방법에서 자주 사용된다.

클러스터링 알고리즘 또한 맞춤법 검사에 사용되었다. 음성 정보와 결합하여 사용되었다.

## 역사
### PC 이전
1961년, 이 신기술 연구를 이끌었던 레스 어니스트는 10,000개의 허용 가능한 단어 목록에 접근하는 최초의 맞춤법 검사기를 포함할 필요성을 느꼈다. 당시 어니스트 밑에서 대학원생이었던 랄프 고린은 1971년 2월 스탠퍼드 대학교 인공지능 연구소의 DEC PDP-10용 일반 영어 텍스트를 위한 최초의 진정한 맞춤법 검사 프로그램(연구가 아닌 애플리케이션 프로그램으로 작성됨)인 SPELL을 만들었다. 고린은 더 빠른 작동을 위해 SPELL을 어셈블리어로 작성했다. 그는 단일 문자 또는 인접 문자 전치로 다른 그럴듯한 올바른 철자를 단어 목록에서 검색하여 사용자에게 제시함으로써 최초의 맞춤법 교정기를 만들었다. 고린은 대부분의 SAIL(스탠퍼드 인공지능 연구소) 프로그램과 마찬가지로 SPELL을 대중에게 공개했으며, 개인용 컴퓨터가 일반적으로 사용되기 약 10년 전, 새로운 ARPAnet을 통해 전 세계로 빠르게 퍼져나갔다. SPELL의 알고리즘과 데이터 구조는 유닉스 ispell 프로그램에 영감을 주었다.

최초의 맞춤법 검사기는 1970년대 후반 메인프레임 컴퓨터에서 널리 사용 가능했다. 조지타운 대학교의 6명의 언어학자 그룹이 IBM 코퍼레이션을 위한 최초의 맞춤법 검사 시스템을 개발했다.

헨리 쿠체라는 1981년 디지털 이큅먼트 코퍼레이션의 VAX 머신용 맞춤법 검사기를 발명했다.

### 유닉스

유닉스에서 일반적으로 사용되는 국제 Ispell 프로그램은 R. E. 고린의 SPELL을 기반으로 한다. MIT의 페이스 윌리슨이 C로 변환했다.

GNU 프로젝트는 자체 맞춤법 검사기인 GNU 아스펠을 가지고 있다. 아스펠의 주요 개선점은 철자 오류가 있는 영어 단어에 대해 올바른 대안을 더 정확하게 제안할 수 있다는 것이다.

기존 맞춤법 검사기가 복잡한 굴절 언어의 단어를 확인할 수 없기 때문에 헝가리인 라슬로 네메스는 교착어 및 복합어를 지원하는 맞춤법 검사기인 Hunspell을 개발했다. 훈스펠은 사전에서 유니코드를 사용한다.
훈스펠은 오픈오피스 2.0.2 버전에서 이전 MySpell을 대체했다.

Enchant는 애비워드에서 파생된 또 다른 일반 맞춤법 검사기이다. 그 목표는 아스펠, 훈스펠, 누스펠, Hspell(히브리어), 보이코(핀란드어), 젬베렉(터키어), 애플스펠과 같은 다양한 언어를 지원하는 프로그램을 하나의 인터페이스 아래 결합하는 것이다.

### PC
개인용 컴퓨터용 최초의 맞춤법 검사기는 1980년에 등장했으며, 1980년 말에 코모도어 시스템용 "WordCheck"가 출시되어 1981년 1월에 광고가 인쇄될 수 있었다. 마리아 마리아니 및 랜덤하우스와 같은 개발자들은 빠르게 확장되는 소프트웨어 시장에 OEM 패키지 또는 최종 사용자 제품을 출시했다. 윈도우 이전 PC에서는 이러한 맞춤법 검사기가 독립 실행형 프로그램이었으며, 많은 프로그램이 충분한 메모리를 가진 PC의 워드 프로세싱 패키지 내에서 종료 후 상주 모드로 실행될 수 있었다.

그러나 독립 실행형 패키지 시장은 오래가지 못했다. 1980년대 중반까지 워드스타 및 워드퍼펙트와 같은 인기 있는 워드 프로세싱 패키지 개발자들은 맞춤법 검사기를 자사 패키지에 통합했으며, 대부분 위 회사들로부터 라이선스를 얻었다. 이 회사들은 빠르게 영어에서 많은 유럽의 언어 및 궁극적으로 아시아의 언어까지 지원을 확대했다. 그러나 이는 소프트웨어의 형태론 루틴, 특히 헝가리어 및 핀란드어와 같은 고도로 교착어와 관련하여 정교함이 증가해야 했다. 아이슬란드와 같은 국가의 워드 프로세싱 시장 규모가 맞춤법 검사기를 구현하는 투자를 정당화하지 못했을 수도 있지만, 워드퍼펙트와 같은 회사들은 글로벌 마케팅 전략의 일환으로 가능한 한 많은 국가 시장에 맞게 소프트웨어를 현지화하기 위해 노력했다.

애플이 Mac OS X용 "시스템 전반의 맞춤법 검사기"를 개발하여 "운영 체제가 맞춤법 수정을 담당"했을 때, 이는 "각 프로그램에 대해 별도의 맞춤법 검사기를 유지할 필요가 없었다"는 점에서 최초였다. Mac OS X의 맞춤법 검사 범위는 거의 모든 번들 및 타사 애플리케이션을 포함한다.

1994년에 출시된 Visual Tools의 VT Speller는 "윈도우를 지원하는 애플리케이션 개발자를 위해 설계"되었다. 사전과 함께 제공되었지만 보조 사전을 구축하고 통합하여 사용할 수 있는 기능이 있었다.

### 브라우저
모질라 파이어폭스 및 구글 크롬과 같은 웹 브라우저는 Hunspell을 사용하여 맞춤법 검사 기능을 제공한다. 훈스펠을 사용하기 전에 파이어폭스와 크롬은 각각 MySpell과 GNU 아스펠을 사용했다.

### 전문 분야
일부 맞춤법 검사기는 의료 오류를 방지하기 위해 의료 사전에 대한 별도의 지원을 제공한다.

## 기능
최초의 맞춤법 검사기는 "교정기"가 아니라 "검증기"였다. 잘못 철자가 된 단어에 대한 제안을 제공하지 않았다. 이는 오타에는 유용했지만 논리적 또는 음성적 오류에는 그다지 유용하지 않았다. 개발자들이 직면한 문제는 잘못 철자가 된 단어에 대한 유용한 제안을 제공하는 데 어려움이 있었다는 점이다. 이를 위해서는 단어를 골격 형태로 줄이고 패턴 매칭 알고리즘을 적용해야 한다.

맞춤법 검사 사전의 경우 "클수록 좋다"는 것이 논리적으로 보일 수 있지만, 올바른 단어가 틀린 것으로 표시되지 않도록 하기 위함이다. 그러나 실제로는 영어의 최적 크기는 약 9만 개 항목인 것으로 보인다. 이보다 많으면 잘못 철자가 된 단어가 다른 단어로 착각되어 건너뛸 수 있다. 예를 들어, 언어학자는 말뭉치언어학을 기반으로 "baht"라는 단어가 태국 통화를 지칭하는 것보다 bath 또는 bat의 오탈자인 경우가 더 많다고 판단할 수 있다. 따라서 태국 통화에 대해 쓰는 소수의 사람들이 약간 불편을 겪는 것보다 훨씬 더 많은 사람들이 목욕에 대해 토론할 때의 철자 오류가 간과되는 것보다 일반적으로 더 유용할 것이다.
[right|섬네일|[Enchant (소프트웨어)|Enchant, 애비워드 맞춤법 검사기의 스크린샷]]
최초의 MS-DOS 맞춤법 검사기는 주로 워드 프로세싱 패키지 내의 교정 모드에서 사용되었다. 문서 작성 후 사용자는 텍스트를 스캔하여 철자 오류를 찾았다. 그러나 나중에 오라클의 단명한 CoAuthor와 같은 패키지에서 일괄 처리가 제공되어 사용자가 문서 처리 후 결과를 보고 잘못된 것으로 알려진 단어만 수정할 수 있게 되었다. 메모리와 처리 능력이 풍부해지면서 1987년에 출시된 Sector Software의 Spellbound 프로그램과 워드 95 이후의 마이크로소프트 워드와 같이 맞춤법 검사가 대화식으로 백그라운드에서 수행되었다.

맞춤법 검사기는 점점 더 정교해져서 이제 문법 오류를 인식할 수 있게 되었다. 그러나 최상의 경우에도 텍스트의 모든 오류(예: 동음이의어 오류)를 거의 잡아내지 못하며, 신조어 및 외국어를 철자 오류로 표시한다. 그럼에도 불구하고 맞춤법 검사기는 비원어민 학습자가 목표 언어에서 철자 오류를 감지하고 수정하기 위해 의존할 수 있는 외국어 쓰기 보조 도구 유형으로 간주될 수 있다.

## 영어 이외 언어의 맞춤법 검사

영어는 대부분의 공식 글쓰기에서 사용되는 단어가 일반적인 사전에 나오는 단일 철자를 가지고 있다는 점에서 특이하며, 일부 전문 용어 및 수정된 단어는 예외이다. 많은 언어에서는 단어가 종종 연결되어 새로운 단어 조합을 이룬다. 독일어에서는 복합 명사가 다른 기존 명사에서 자주 만들어진다. 일부 스크립트는 한 단어와 다른 단어를 명확하게 구분하지 않아 단어 분할 알고리즘이 필요하다. 이들 각각은 비영어권 맞춤법 검사기에 고유한 과제를 제시한다.

## 문맥 인식 맞춤법 검사기
주변 단어의 문맥을 기반으로 단어 자체가 어휘에 있더라도 잘못 철자가 된 단어를 인식할 수 있는 알고리즘을 개발하는 연구가 진행되어 왔다. 이는 위 시의 단어와 같은 단어를 잡아낼 수 있을 뿐만 아니라 사전 확대로 인한 해로운 영향을 완화하여 더 많은 단어를 인식할 수 있게 한다. 예를 들어, 태국어 또는 태국과 같은 단락에서 baht는 bath의 오탈자로 인식되지 않을 것이다. 이러한 시스템이 잡아내는 가장 일반적인 오류 예시는 다음 문장의 굵은 단어와 같은 동음이의어 오류이다.
:**Their** coming **too** **sea** if **its** **reel**.

현재까지 가장 성공적인 알고리즘은 1999년에 발표된 앤드류 골딩(Andrew Golding)과 댄 로스(Dan Roth)의 "Winnow 기반 맞춤법 교정 알고리즘"으로, 일반적인 단어 외 철자 오류 외에도 문맥 인식 철자 오류의 약 96%를 인식할 수 있다. 문맥 인식 맞춤법 검사기는 현재 없어진 애플리케이션인 마이크로소프트 오피스 2007과 구글 웨이브에 등장했다.

문법 검사기는 철자 오류 외에도 단어의 잘못된 선택을 포함하여 문법 문제를 수정하려고 시도한다.

## 같이 보기
* 맞춤법

## 각주

## 외부 링크
* 


분류:문서 편집기
분류:자연어 처리
분류:문서 편집기 기능