PHP로 맞춤법 검사하기

hunspell 확장기능을 만든 김에 PHP에서 맞춤법을 검사하는 방법에 대해 포스팅해봤습니다. ^^;

이 문서에서 맞춤법 검사를 위해 사용하는 라이브러리는 hunspell 입니다. GPL, LGPL, MPL 라이센스의 오픈소스 프로젝트로 오픈오피스, 파이어폭스, 썬더버드, 오페라10, 구글 크롬, OS X 10.6(Snow Leopard) 등에서 사용하고 있습니다. 가장 중요한 것은 오픈소스에서는 좀처럼 찾아보기 힘든 한국어 사전이 존재한다는 점입니다. 이 자리를 빌어 좋은 사전을 공개해주신 cwryu님께 감사의 말씀을 전합니다.

(실제로 hunspell의 기능은 철자 검사로 띄어쓰기 등의 기능은 제공하지 않습니다)

사용법은 시간없으신 분들을 위해 초간단 버전과 자세한 버전으로 준비했습니다.

초간단 버전

  1. hunspell을 설치합니다.
  2. php_hunspell 확장기능을 설치하고 php.ini 파일을 수정해 사용가능하도록 합니다.
  3. PHP에서 사용합니다(test.php 참고).

자세한 버전

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

Leave a Reply