1 2 3 4 5 6 L

Page Header > Subtitle

[PHP] php용 형태소 분석기 설치 및 바인딩과 실사용

/*
 * mecab php바인딩후 태그와 택스트로 분리하기
 *
 * @param string $str 문자열
 * @param object mecab mecab객체
 * @param array $code 걸러내고자 하는 코드값 NNG등
 * @return array $mecab_array 배열로 리턴
 */
function mecab_incoding($str, $mecab, $code = array()){
    //사전파일 경로
    $dic = '/usr/local/lib/mecab/dic/mecab-ko-dic';
    //사전파일 세팅
    ini_set('mecab.default_dicdir', $dic);
 
    $mecab_array = array();
    //형태소분석하여 결과값 도출
    $result = mecab_sparse_tostr($mecab, $str);
     
    //결과값에서 줄단위로 분리
    preg_match_all('/[^EOS](.*)\n/', $result, $find_code);
 
    //각줄별로 루프를 돌며 텍스트와 태그(코드)값분리
    for($i=0; $i < count($find_code[0]); $i++)
    {
        preg_match('/(.*)(?=\t)/', $find_code[0][$i], $find_text); // text
        preg_match('/(?<=\t)([^\,]+)/', $find_code[0][$i], $find_tag); // tag
        //걸러내고자하는 코드가 있을시
        if(count($code) > 0)
        {
            //걸러내려는 코드안에 태그가 포함되는지
            if(in_array($find_tag[0],$code)
                //중복되는 텍스트가 있는지
                && in_array($find_text[0],$mecab_array) === false)
            {
                $mecab_array[] = $find_text[0];
//태그값은 필요 없어 주석
//              $mecab_array[$i]["code"] = $find_tag[0];
            }
        } else {
            //중복되는 텍스트가 있는지
            if(in_array($find_text[0],$mecab_array) === false)
            {
                $mecab_array[] = $find_text[0];
//태그값은 필요 없어 주석
//              $mecab_array[$i]["code"] = $find_tag[0];
            }
        }
    }
    //객체를 비움
    mecab_destroy($mecab);
    return $mecab_array;
}
 
//테스트 문자열 입력
$str = '조상의산소에서잠이든꿈, 잠을잔꿈,잠자는꿈';
$result= mecab_incoding($str, mecab_new(), array('NNG'));
 
//결과물 출력
echo "<pre>";
print_r($result);
echo "</pre>";​ 

 

# 결과물

Array(   

    [0] => 조상   

    [1] => 산소   

    [2] => 잠   

    [3] => 꿈

) 

 

* 설치 참조

 

​다운로드 주소 mecab-ko-dic [사전]

 

http://bitbucket.org/eunjeon/mecab-ko-dic/downloads

1. /usr/local/lib/mecab/dic/mecab-ko-dic 아래에 사전이 설치된다.

 

다운로드 주소 mecab-ko

 

http://bitbucket.org/eunjeon/mecab-ko/downloads

2. /usr/local/bin 아래에 명령어가, /usr/local/lib 아래에 라이브러리가, 그리고 /usr/local/etc 아래에 설정 파일이 설치된다.

 

나의 환경

 a99c714954c78d42988094940a83bbd8.jpg 

 

터미널상에서 다운받자

나는 /home/min_src/ 디렉토리를 만들어서 안에 다운받앗다.

 

mkdir min_src

 

다운명령어

curl -L http://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-1.6.1-20140814.tar.gz | tar -xz

해당 폴더로 들어간후

./configure --with-charset=utf-8

make

make install

 

하면 설치가 된다.

 

59a96838e2079873bc3e59eda755245d.png
 

 

--사용방법--

 

터미널에 입력후 엔터 그다음 문장 입력하면댐

mecab -d /usr/local/lib/mecab/dic/mecab-ko-dic

ecfdcf8d534e6085e6016c2d62d96163.jpg
 

여기서 명령어 mecab -d /usr/local/lib/mecab/dic/mecab-ko-dic 를 mecab 으로 줄이고 싶다면

 

vi /usr/local/etc/mecabrc 로 들어가서

dicdir은 주석처리하고

아랫줄에 사전 주소를 추가해준다

 

2bfdfcb7d42eb85666c76376cea8469b.jpg

 

다음엔 php연동 하는법을 한번 해보겟습니다.

 

 

참고한 주소

http://clotho95.blog.me/140198325529

http://jokergt.tistory.com/144

http://dumpcookie.tistory.com/entry/php-mecab-%EB%B0%94%EC%9D%B8%EB%94%A9-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

http://blog.naver.com/bi953746/110175012418 php연동에대해

 

 

PHP 연동

http://github.com/rsky/php-mecab 에서 다운받고

사전위치 /usr/local/lib/mecab/dic/mecab-ko-dic

 

test.php 첨부파일에 다운받으세요

<?

$dic = '/usr/local/lib/mecab/dic/mecab-ko-dic';  //사전 파일 위치

ini_set('mecab.default_dicdir', $dic);

$arg = array();

 

$mecab = mecab_new($arg);

 

$str = "혜민이는 프로그래머입니다.";

echo $str."<hr>";

 

$result= mecab_sparse_tostr($mecab, $str);

echo(nl2br($result));

 

mecab_destroy($mecab);

?>

 

ad2504cc61a3666a8a740b4fea4cd3ab.jpg
 

php-mecab

適当なディレクトリ上で

git clone http://github.com/rsky/php-mecab.git

 

cd php-mecab/mecab/
phpize
./configure
make
make install

phpize 명령 not found시 apt install php7.2-dev

extension=mecab.so

 

ln -s /etc/php/7.0/mods-available/mecab.ini /etc/php/7.0/cli/conf.d/20-mecab.ini

 ln -s /etc/php/7.0/mods-available/mecab.ini /etc/php/7.0/fpm/conf.d/20-mecab.ini

 

root@vagrant:~# php -r "print_r(\MeCab\split('すもももももももものうち'));"
Array
(
    [0] => すもも
    [1] => も
    [2] => もも
    [3] => も
    [4] => もも
    [5] => の
    [6] => うち
)

 

ln -s /etc/php/7.0/mods-available/mecab.ini /etc/php/7.0/fpm/conf.d/20-mecab.ini

 

service php7.0-fpm restart

 

<?php
$str = "すもももももももものうち";

$mecab = new \MeCab\Tagger();
$nodes = $mecab->parseToNode($str);
var_dump($nodes)


 

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

PHP/Python

번호 제목 글쓴이 날짜 조회수
77 PHP 정말로 URL이 존재 하는지를 알고 싶다면 미도어묵 01-12 1,140
76 PHP [Nginx PHP-FPM] 페이지 access denied. 뜨는 현상 (see security.limit_extensions) - php7 … 미도어묵 11-05 1,359
75 PHP PHP를 이용한 심플한 게시판 파싱 미도어묵 11-01 1,197
74 PHP CI3 / php7.1 이상 버전 session 버그시~~~ 미도어묵 10-31 775
73 PHP PHP 5 Forms - Validate E-mail and URL 미도어묵 10-01 735
72 PHP php 전화번호 정규식 미도어묵 06-25 843
71 PHP 문자열에 휴대폰번호가 있으면 010-***-****으로 변경. 미도어묵 06-25 833
70 PHP 영상 썸네일 api function 미도어묵 02-13 825
69 PHP php memcached example 미도어묵 01-02 768
68 PHP php curl 을 이용한 자동 로그인 미도어묵 12-22 959
67 PHP Home / APIs / Requests::register_autoloader() – Register the built-in autoloader 미도어묵 12-21 840
66 PHP 업로드된 이미지 정사각형으로 썸네일 만드는 함수 미도어묵 11-01 840
65 PHP PHP + redis(phpredis) 연동하기 기본 사용 샘플 미도어묵 09-18 1,450
64 PHP Simple PHP MySQL Rest API Sample Example Tutorial 미도어묵 09-15 805
63 PHP Creating a simple REST API in PHP 미도어묵 09-15 792
62 PHP 게시물이 삭제 되었습니다 관리자 08-30 891
61 PHP php 링크 파일 다운받기 관리자 08-28 816
60 PHP php용 형태소 분석기 설치 및 바인딩과 실사용 +1 관리자1 08-28 1,154
59 PHP PHP로 HTML DOM 파싱하기 관리자 08-25 817
58 PHP PHP7: install ext-dom issue(composer require --dev phpunit/phpunit) 관리자 08-04 850