mecab-ko-dic 커스텀 단어 추가 및 우선순위 높이기 본문
엘라스틱 서치에서 더 나은 한글 검색을 위해 형태소 분석기를 사용합니다.
한글 형태소 분석기 중 mecab-ko-dic에 커스텀 단어를 추가하고, 해당 단어의 우선순위를 높이는 방법을 포스팅하겠습니다.
운영체제는 Centos 7 입니다.
내려받은 mecab-ko-dic/userdic 디렉토리 안에 csv 확장자로 사전 파일을 추가합니다. (일반 고유명사는 nnp.csv, 인명은 person.csv, 지명은 place.csv 에 추가)
커스텀 단어를 추가할 때에 규칙이 있습니다. 해당하는 규칙은 https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY/edit#gid=1718487366 를 참조하면 됩니다.
커스텀 단어를 추가한 후 쉘스크립트(mecab-ko-dic/tools/add-userdic.sh)를 실행하여 사전을 컴파일 해줍니다.
컴파일 후에는 make install을 통해 설치하면 됩니다. (이미 make install로 설치가 된 상황에서 커스텀 단어를 추가하는 경우에는 make install 전에 make clean을 한번 실행한 후 make install을 실행합니다.)
install 후 mecab-ko-dic/tools/mecab-bestn.sh를 실행하여 등록한 커스텀 단어를 입력하면 단어 비용과 함께 검색이 되는 것을 확인할 수 있습니다.
하지만 커스텀 단어가 우선 검색이 안되는 경우가 많이 있습니다. 이럴때는 커스텀 단어의 단어비용을 임의로 낮게 바꿔주면, 검색 우선순위가 높아지게 됩니다.
커스텀 단어의 단어비용을 낮추려먼, 해당하는 단어가 들어있는 mecab-ko-dic/user-xxx.csv 파일을 수정해주면 됩니다.
주의할 점은 mecab-ko-dic/userdic/ 디렉토리 안에 있는 nnp.csv나 person.csv나 place.csv 를 수정하는 것이 아니라, 커스텀 단어 추가 후 컴파일 하면 생기는 파일인 mecab-ko-dic/user-nnp.csv, mecab-ko-dic/user-person.csv, mecab-ko-dic/user-place.csv 를 수정해줘야 됩니다.
해당 파일을 열어보면 단어 옆에 숫자들이 3개가 추가되어있는것을 확인할 수 있습니다. 첫번째, 두번째 숫자는 문맥 ID이고, 세번째 숫자가 단어 비용인데, mecab은 단어비용이 낮은 것을 우선하여 검색하기 때문에, 이 단어 비용을 임의로 낮추면 해당 커스텀 단어의 검색 우선순위가 높아지게 됩니다.
커스텀 단어의 단어 비용을 낮추고 make clean; make install 을 실행해 재 설치 한 다음 mecab-ko-dic/tools/mecab-bestn.sh 을 실행해 커스텀 단어를 입력하면 우선순위가 높아진 것을 볼 수 있습니다.
※ 출처 1. 은전한닢 프로젝트 : 형태소 분석기 프리젠테이션 자료
- http://eunjeon.blogspot.com/2014/06/blog-post.html
※ 출처 2. mecab-ko-dic 커스텀 단어 추가
'Elastic Stack' 카테고리의 다른 글
기존 IP 필드로 GEOIP 추가 하기(ingest-geoip 라이브러리 리인덱싱) (0) | 2020.05.25 |
---|