Elasticsearch에 한국어 형태소분석기 Mecab ko 적용

NoCoDe·2021년 10월 18일
0

https://nocode2k.blogspot.com에서 이사온 글 입니다.

CentOS 6.x 환경에서 SOLR와 Elasticsearch에서 한국어 형태소분석기인 Mecab Ko를 사용하기 위해서는 먼저 아래와 같이 설치 및 환경설정이 필요하다.
(2015년 8월 20일 현재 은전한닢 프로젝트에서는 mecab ko 사전을 사용하는 스칼라로 개발된 형태소분석기도 배포중이다.)

1. GCC컴파일러/JDK설치

1.1 C++ 컴파일러 설치
yum install gcc-c++

1.2 Java 다운로드 및 설치

사이트 다운로드 : http://www.oracle.com/technetwork/java/javase/downloads/index.html

리눅스 command 다운로드

32 bit linux use this:
curl -v -j -k -L -H "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u51-b16/jdk-8u51-linux-i586.rpm > jdk-8u51-linux-i586.rpm

For 64 bit:
curl -v -j -k -L -H "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u51-b16/jdk-8u51-linux-x64.rpm > jdk-8u51-linux-x64.rpm

Install the rpm:
rpm -ivh jdk-8u51-linux-i586.rpm

2. mecab-ko 설치

mecab-ko는 한국어 특성에 맞는 기능이 추가된 MeCab의 fork 프로젝트이다.
mecab-ko 다운로드 페이지에서 mecab-ko의 소스를 다운로드 받고 설치한다.

사이트 다운로드: https://bitbucket.org/eunjeon/mecab-ko/downloads

리눅스 command 다운로드 및 설치

wget https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz

tar -zxvf mecab-0.996-ko-0.9.2.tar.gz

cd mecab-0.996-ko-0.9.2

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

make

make check

make install

# /usr/local/bin 아래에 실행바이너리 파일이, /usr/local/lib 아래에 라이브러리가, 그리고 /usr/local/etc 아래에 설정 파일인 mecabrc가 설치된다.

3. mecab-ko-dic 설치

mecab-ko-dic 다운로드 페이지에서 mecab-ko-dic의 최신버전을 다운로드 받는다.

사이트 다운로드: https://bitbucket.org/eunjeon/mecab-ko-dic/downloads

리눅스 command 다운로드 및 설치

wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.1-20150707.tar.gz

tar zxvf mecab-ko-dic-2.0.1-20150707.tar.gz

cd mecab-ko-dic-2.0.1-20150707

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

make

make install

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

4. mecab 테스트

$ /usr/local/bin/mecab -d /usr/local/lib/mecab/dic/mecab-ko-dic
mecab-ko-dic은 MeCab을 사용하여, 한국어 형태소 분석을 하기 위한 프로젝트입니다.
mecab SL,,,,,,,
- SY,
,,,,,,
ko SL,,,,,,,
- SY,
,,,,,,
dic SL,,,,,,,
은 JX,
,T,은,,,,
MeCab SL,,,,,,,
을 JKO,
,T,을,,,,
사용 NNG,,T,사용,,,,
하 XSV,
,F,하,,,,
여 EC,,F,여,,,,
, SC,
,,,,,,
한국어 NNG,,F,한국어,Compound,,,한국/NNG/+어/NNG/
형태소 NNG,
,F,형태소,Compound,,,형태/NNG/+소/NNG/
분석 NNG,,T,분석,,,,
을 JKO,
,T,을,,,,
하 VV,,F,하,,,,
기 ETN,
,F,기,,,,
위한 VV+ETM,,T,위한,Inflect,VV,ETM,위하/VV/+ᆫ/ETM/
프로젝트 NNG,
,F,프로젝트,,,,
입니다 VCP+EF,,F,입니다,Inflect,VCP,EF,이/VCP/+ᄇ니다/EF/
. SF,
,,,,,,
EOS

5. mecab-java 설치

사이트 다운로드: https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer

리눅스 command 다운로드 및 설치
wget https://bitbucket.org/eunjeon/mecab-java/downloads/mecab-java-0.996.tar.gz

tar -zxvf mecab-java-0.996.tar.gz

cd mecab-java-0.996

# Makefile 수정
vi Makefile

# Makefile 에서 INCLUDE 변수에 java include directory를 설정해준다.
INCLUDE=/usr/java/jdk1.8.0_51/include

# Makefile에서 GCC optimization 옵션을 O3에서 O1으로 변경한다.
# 은전한닢에서는 OpenJDK사용시 변경하라고 되어 있으나 Oracle JDK에서도 변경해줘야 한다.
all:
(CXX) -O1 -c -fpic $(TARGET)_wrap.cxx $(INC) $(CXX) -shared $(TARGET)_wrap.o -o lib(TARGET).so $(LIBS)
$(JAVAC) $(PACKAGE)/.java
$(JAVAC) test.java
$(JAR) cfv $(TARGET).jar $(PACKAGE)/
.class

# 저장
:wq

make

cp libMeCab.so /usr/local/lib

6. 환경 설정

CentOS에서 Elasticsearch를 실행하는 계정의 환경설정파일(예: .bashrc)에 라이브러리 경로를 추가한다.

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
export LD_LIBRARY_PATH

7. Elasticsearch MeCab 플러그인 설치

./bin/plugin --install analysis-mecab-ko-0.17.0 --url https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer/downloads/elasticsearch-analysis-mecab-ko-0.17.0.zip

8. Elasticsearch 재시작 및 analyzer 테스트

8.1 Elasticsearch 실행
bin/elasticsearch -Djava.library.path=/usr/local/lib

8.2 index 생성
curl -XPUT ‘localhost:9200/INDEX_NAME’
예)
curl -XPUT ‘localhost:9200/eunjeon’

8.3 index close
curl -XPOST 'localhost:9200/eunjeon/_close’

8.3 analyzer 추가
curl -XPUT 'localhost:9200/eunjeon/_settings’ -d ’{
"index": {
“analysis”: {
"analyzer": {
"korean": {
"type": “custom”,
"tokenizer": “mecab_ko_standard_tokenizer”
}
}
}
}
}’

테스트)
curl -XGET 'localhost:9200/eunjeon/_analyze?analyzer=korean\&pretty=true -d '은전한닢 프로젝트'

8.4 index open
curl -XPOST 'localhost:9200/eunjeon/_open’

8.5 type에 대한 _mapping 설정 추가

한글 형태소 분석기 적용된 mapping 추가의 예)

curl -XPUT 'localhost:9200/eunjeon/_mapping/survey’ -d ’{
"properties":{
"title":{
"type":"string",
"analyzer":"korean"
}
}
}’

설정값 확인)
curl -XGET 'localhost:9200/eunjeon/_settings?pretty=1’

[참고 사이트]

은전한닢 프로젝트: http://eunjeon.blogspot.kr
은전한닢 프로젝트 구글 포럼: https://groups.google.com/forum/#!forum/eunjeon

profile
Search engine developer / platform architect - software engineer

0개의 댓글