| 제목 | 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
너무너무 간단하죠.. 의외로 강력합니다. ㅋ
|