제목 | php용 형태소 분석기 설치 및 바인딩과 실사용 | ||
---|---|---|---|
글쓴이 | 양승현 | 작성시각 | 2017/06/14 10:30:34 |
|
|||
형태소분석 php용 입니다. 여러 블로그들에 잘 정리 되어있네요. 최신dic파일로 변경하셔서 사용하시면 될듯 합니다. 검색시에 유용하네요.
# 설치 참고 : http://gogoke1.blog.me/220211846966 # 바인딩 및 소스 : http://gogoke1.blog.me/220263816086
/* * 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] => 꿈 ) |
|||
다음글 | 개발환경 / IDE - NetBeans & Co... (6) | ||
이전글 | HTML 프린터 출력시 페이지 나눔 (2) | ||
변종원(웅파)
/
2017/06/14 12:19:47 /
추천
0
예전보다 많이 편해졌네요. ^^
|
한대승(불의회상)
/
2017/06/14 12:46:45 /
추천
0
ㅎㅎㅎ 좋습니다. ^^
|
양승현
/
2017/06/15 18:30:33 /
추천
0
너무너무 간단하죠.. 의외로 강력합니다. ㅋ
|