글
mecab 프로젝트에 대해 조금 더 살펴보니 2006년에 만들어진 꽤 오래된 프로젝트였습니다. http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html
mecab 패키지에는 이미 java/perl/python 등등의 바인딩을 지원하지만 php 바인딩만 자체 지원하지 않습니다. 그래서 php 바인딩은 없나 하고 살펴보니 2008년도부터 php바인딩을 지원하는 프로젝트가 있었더군요. https://github.com/rsky/php-mecab by rsky
rpm 패키지는 없나 해서 살펴보니 금방 찾을 수 없어서, 그냥 빌드해봤습니다. (참고로 본인은 Fedora 15 사용중)
- 소스를 받고 : 소스가 github의 레포지터리이므로 git clone으로 소스를 받고
- php 바인딩 소스 디렉토리에서 phpize 실행
- make 명령으로 빌드
- modules 디렉토리에 생성된 mecab.so를 /usr/lib/php/modules 아래에 설치
- php.ini 설정
$ git clone https://github.com/rsky/php-mecab Cloning into php-mecab... remote: Counting objects: 616, done. remote: Compressing objects: 100% (249/249), done. remote: Total 616 (delta 427), reused 548 (delta 359) Receiving objects: 100% (616/616), 120.44 KiB | 110 KiB/s, done. Resolving deltas: 100% (427/427), done. $ cd php-mecab/ $ ls mecab packages README.md $ cd mecab $ phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626
그런다음 빌드
$ ./configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for a sed that does not truncate output... /bin/sed checking for cc... cc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether cc accepts -g... yes checking for cc option to accept ISO C89... none needed checking how to run the C preprocessor... cc -E (중략) checking whether to build shared libraries... yes checking whether to build static libraries... no configure: creating ./config.status config.status: creating config.h config.status: executing libtool commands $ make ... (생략)
php 바인딩 소스 본체가 mecab.c라는 소스가 전부라서 눈깜짝할 사이에 빌드가 됩니다.
빌드된 mecab.so 파일을 다음과 같은 식으로 설치해줍니다.
$ sudo cp modules/mecab.so /usr/lib/php/modules/
다음과 같은 내용을 /etc/php.ini에 넣거나, /etc/php.d/mecab.ini라는 파일을 만들어 추가해줍니다.
extension=mecab.so
다음과 같은 간단한 예제를 examples/* 디렉토리 아래에 있는 다양한 예제를 참고해서 만들어봤습니다.
$dic = './mecab-ko-dic-1.1.3-20130226'; ini_set('mecab.default_dicdir', $dic); $arg = array(); $mecab = mecab_new($arg); $str = "PHP-mecab 한글테스트중입니다. 무궁화꽃이 피었습니다"; echo mecab_sparse_tostr($mecab, $str); mecab_destroy($mecab);
이 파일은 test.php라고 이름붙여 저장하고, mecab용 한글 사전 디렉토리는 현재 디렉토리 아래에 있는 은전한닢 프로젝트의 사전으로 지정하였으며 (./mecab-ko-dic-1.1.3-20130226), 다음과 같이 실행해 보니 아무런 문제없이 잘 실행됨을 볼 수 있었습니다.
$ php test.php PHP SL,*,*,*,*,*,* - SY,*,*,*,*,*,* mecab SL,*,*,*,*,*,* 한글 NN,T,한글,*,*,*,* 테스트 NN,F,테스트,*,*,*,* 중 NNB,T,중,*,*,*,* 입니다 VCP+EF,F,입니다,Inflect,VCP,EF,이/VCP+ㅂ니다/EF . SF,*,*,*,*,*,* 무궁화 NN,F,무궁화,Compound,*,*,무궁+화 꽃 NN,T,꽃,*,*,*,* 이 JKC,F,이,*,*,*,* 피 VV,F,피,*,*,*,* 었 EP,T,었,*,*,*,* 습니다 EC,F,습니다,*,*,*,* EOS
끝
'오픈소스' 카테고리의 다른 글
eAccelerator win32 버그 및 빌드 (0) | 2013.08.28 |
---|---|
모니위키 속도 300RPS 벽을 깨다. (0) | 2013.05.21 |
모니위키 1.2.0 릴리스 준비 진행상황 (0) | 2013.05.18 |
리눅스에서 svox-pico 사용하기 (0) | 2013.03.14 |
형태소 분석기 mecab와 은전한닢 프로젝트 (0) | 2013.03.09 |
RECENT COMMENT