hunspell 확장기능을 만든 김에 PHP에서 맞춤법을 검사하는 방법에 대해 포스팅해봤습니다. ^^;
이 문서에서 맞춤법 검사를 위해 사용하는 라이브러리는 hunspell 입니다. GPL, LGPL, MPL 라이센스의 오픈소스 프로젝트로 오픈오피스, 파이어폭스, 썬더버드, 오페라10, 구글 크롬, OS X 10.6(Snow Leopard) 등에서 사용하고 있습니다. 가장 중요한 것은 오픈소스에서는 좀처럼 찾아보기 힘든 한국어 사전이 존재한다는 점입니다. 이 자리를 빌어 좋은 사전을 공개해주신 cwryu님께 감사의 말씀을 전합니다.
(실제로 hunspell의 기능은 철자 검사로 띄어쓰기 등의 기능은 제공하지 않습니다)
사용법은 시간없으신 분들을 위해 초간단 버전과 자세한 버전으로 준비했습니다.
초간단 버전
- hunspell을 설치합니다.
- php_hunspell 확장기능을 설치하고 php.ini 파일을 수정해 사용가능하도록 합니다.
- PHP에서 사용합니다(test.php 참고).
[adsense]
자세한 버전
1. hunspell을 다운로드 받고 설치합니다.
hunspell 소스포지 페이지에서 최신 버전의 hunspell-x.x.x.tar.gz 파일을 다운로드 받습니다. 한국어 사전을 사용하려면 1.2.8 이상이어야 합니다. 받은 파일의 압축을 풀고 hunspell을 설치합니다.
tar zxf hunspell-1.2.9.tar.gz cd hunspell-1.2.9 ./configure make make install
2. php_hunspell 확장기능을 다운로드 받아서 설치합니다.
git를 사용해서 소스를 바로 받아도 되고 Download 페이지에서 파일을 다운로드 받아도 됩니다. 받은 파일의 압축을 풀고 확장기능을 설치합니다.
tar zxf taggon-php_hunspell-d3ec693.tar.gz cd taggon-php_hunspell-d3ec693 phpize ./configure make make install
3. 간단한 스크립트를 작성해서 테스트해봅니다.
'햑교'라는 잘못된 단어를 검사하면 그에 알맞는 제안어를 우선 순위 기준으로 정렬된 배열로 반환합니다. 가장 앞에 있을수록 추천 순위가 높습니다.
$dir = dirname(__FILE__);
$spell = hunspell_create($dir.'/ko_KR.aff', $dir.'/ko_KR.dic');
$result = hunspell_suggest('햑교');
hunspell_destroy($spell);
print_r($result);
결과는 다음과 같습니다.
Array
(
[0] => 학교
[1] => 향료
[2] => 향기
[3] => 향가
[4] => 향약
)
추가
php_hunspell 설치 도중 다음과 같은 에러가 발생할 수 있습니다.
/usr/bin/ld: cannot find -lhunspell collect2: ld returned 1 exit status
이 때는 libhunspell-1.x.so 등과 같은 이름의 라이브러리를 libhunspell.so 로 심볼릭 링크 걸어주시면 됩니다. 예를 들어 설치된 libhunspell의 버전이 1.2이고 설치된 경로가 /usr/lib이라고 한다면 다음과 같이 실행합니다.
cd /usr/lib ln -s libhunspell-1.2.so libhunspell.so