카카오 형태소 분석기(khaiii) 설치와 은전한닢(mecab) 형태소 분석기 비교
그저께 금요일. 정신없던 오전 일정을 마치고 잠시 점심시간까지 쉴 겸 텐서플로우 코리아 페이스북을 들어갔다
근데 갑자기 눈에 확 보이는 소식!
IT쪽에서는 농담반 진담반으로 갓카오라고 불리우는 카카오에서 딥러닝 기반 형태소 분석기가 나왔다고 한 소식이었다!
헐 이게 뭐지 싶었다.
기존에는 보통 konlpy나 nltk를 많이 사용했는데(본인은 mecab, 은전한닢을 자주 사용) 딥러닝 기반 형태소 분석기라니!
그래서 좀 시간이 비는 일요일에 해봐야겠다~ 라고 생각하고 있었다.
블로그에 올려야하나 말아야 하나 고민도 했는데
마침 케라스 코리아에서 이 주제에서 얘기 하다보니까 공유해달라는 말씀이 있으셔서 이렇게 블로그에 적어본다.
(참고로 저는 초보자입니다.. 자연어처리와 딥러닝은 독학으로 시간 날 때 공부하고 있구요 퀄리티 좋은 글이 아닐 수도 있습니다!)
카카오 형태소 분석기 khaiii의 깃허브는
https://github.com/kakao/khaiii?fbclid=IwAR1nQziunRmg1NM9UrKMHOTuAjDxhgpNdQlNY-w6VFzyzx_jv_AUgwCiQKU
와 같다.
여기에 자세한 설명이 쓰여져 있다
특히 눈에 띄는 것은 RNN(LSTM)을 사용하지 않고 CNN을 기반으로 했다는 것이 눈에 띄었다
그 이유는 속도 면에서 활용도가 떨어진다고 한다.
그리고 내가 mecab을 자주 사용하는 이유가 사용자 사전을 구축할 수 있어서인데
여기서도 사용자 사전이 구축이 가능한 것 같았다
오오..
그래서 사용자 사전 구축은 어떻게 하지?
하고 저 파란색 링크를 눌렀는데
음 아직 준비가 안된 것일까?
아무튼 그래서 이번 포스팅은
카카오 형태소 분석기를 설치해보고 mecab과 비교만 해보려고 한다
원래 계획은 내가 기존에 만들어놓은 뉴스 카테고리 분석기를 mecab으로 전처리를 거친 모델과
카카오 형태소 분석기를 통해 만든 모델을 만들어 이 2개의 성능을 비교해보려고 했는데
몸이 별로 안좋아서.. 이번 포스팅은 설치와 비교만 해보려고 한다
다음 포스팅 때는 2개의 모델을 만들어서 성능 분석을 꼭 해보겠다
기본적으로 설치 방법은
https://github.com/kakao/khaiii/wiki/%EB%B9%8C%EB%93%9C-%EB%B0%8F-%EC%84%A4%EC%B9%98
여기에 나와있다.
여기에서 따라 하면 크게 상관은 없지만
아무래도 설치가 뚝딱뚝딱 되면 그건 말도 안되는 상황인 것을 IT 종사자 분들은 아실 것이다.
그래서 시행착오와 순서 등을 적으려고 한다
그리고 저 깃허브 글을 보면 컴파일러 환경, cmake 버전 등이 있다
꼭 ! 이 버전을 맞추자.
참고로 본인은 gcc는 7 버전대를 사용했다. 깃허브 내용보면 5.3.1 버전인데 그 over 이상 버전을 사용하면될 듯하다.
그리고 본인은 centos7 버전에서 진행했다!
먼저 home 디렉토리에 아무 디렉토리 하나 만들어서 git clone을 했다
그리고 나서 거기 디렉토리에 들어간다.
git clone을 하면 khaiii가 생성되는데 여기 안에서 mkdir build 디렉토리를 생성한다
그리고 cmake ..를 해서 cmake 명령어를 떄린다
역시 바로 안된다 ㅎㅎㅎㅎㅎ
즐겁다
오류 내용은
protocol "https" not supported or disabled in libcurl 이었다.
여러 방면으로 계속 내용을 찾아보았다.
어제 이거 떄문에 좀 시간을 많이 쏟아 부었다
결국은 centos7 기준에서는 cmake3를 yum -y install 로 설치하면 된다.
원래 처음에는 cmake 사이트에서 wget 으로 가져온 다음 알집 풀고
./bootstrap
make
make install 등을 과정을 거치면서 했는데
그냥 그딴거 다 필요없고 cmake3 해서 설치하는게 제일 좋다..
그리고 버전을 보고 잘 나오면 끝!
다시 한 번 한다.
오 뭔가 쭉쭉쭉 된다
ㅎㅎ 하지만 다시 error가 나왔다
the nolhmann_json package requires GCC 4.9 or newer라는 에러.
문제를 보니까 GCC 4.9 이상을 쓰라고 한다
어? 나 gcc 7점대 설치하고 실행했는데??
하는 생각으로
쳐보니까 오잉
gcc 4.8.5가 실행중
알고보니 이게 중간에 껐다가 켰는데 7 실행이 멈춘 것..
scl enable devtoolset-7 bash를 통해 실행시킨다
아! 혹시 gcc 버전 설치하는 방법을 알고 싶으시면
https://stackoverflow.com/questions/36327805/how-to-install-gcc-5-3-with-yum-on-centos-7-2
이 사진 혹은 위 stackoverflow를 참고하면 된다
그렇게 고생하고 나니 설치가 되었다
(사실 많은 시행착오가 있었다는건 안비밀..)
ll 명령어를 때리면 뭔가 설치된 리스트가 나온다
이제 깃허브 내용을 토대로 하나씩 설치해본다
make all 명령어를 때리면 또 쭉쭉 설치가 된다.
설치가 끝나면 bin 디렉토리 안에 khaiii가 나오는데
이게 실행파일이다
얘를 실행시키려면 리소스를 빌드해야 한다.
make resource 명령어를 친다.
make resource 치니까 뭐가 안된다.
python3 명령어를 찾을 수 없다고 한다.
아.. 본인 환경에서는 현재 python3 alias를 하지 않았다
그냥 python3.6 으로 치면서 하고 있었는데
이걸 ln -s /bin 쪽에서 python3를 해준다
그러면 쭉쭉 잘 된다
설치가 끝났으면 한 번 실행시켜 본다.
./bin/khaiii --rsc-dir=./share/khaiii
를 통해 실행 시키면 위 화면같이 나온다
형태소 분석기의 hello world 격인 '아버지가방에들어가신다'를 쳐본다
오.. 잘 된다??
일단 이것만 봐도 konlpy 보다 좋다
와 이것도 인식하네??
이게 mecab에서 사용자 사전 구축하기 전에는 인식을 못했던 것으로 기억하는데 카카오 형태소 분석기는 인식한다.
위 사진은 mecab(은전한닢)에서 찍은 화면인다.
갓카오를 인식을 하지 못한다.
오호...
그래서 여러 문장을 분석해보려고 한다.
먼저 뉴스 기사이다.
경제 뉴스인데
한국은행이 금리 인상을 단행함에 따라 자영업자~~로 진행되는 구절이다
위에는 카카오 기준으로 본다. 아.. 이게 좀 작게 나온다. 잘 안보이지만
그래도 분석이 잘 되는 것을 볼 수 있다.
특히 '있다' 부분 같은 것을 보면 있 + 다 라고 끊어주기 까지 한다
그리고 '따라'를 보면 '따르' + '아' 라고 보여주고!
정말 딥러닝으로 한 것인가??
그리고 이거는 mecab 기준. 거의 mecab과 비슷한 수준으로 카카오 형태소 분석기가 나오고 있는 것을 볼 수 있다.
생각보다 잘 나온다.. 좀 놀랬다
다음은 영어와 숫자가 섞인 IT 기사이다
이번에 5g가 나온 기사인데
위에가 카카오 형태소 분석기(khaiii)이다.
지각변동 같은 단어도 지각, 단어로 잘 끊어준다.
하지만 2g, 3g 같은 것은 2 + g 이렇게 끊어준다. 아마 이 부분은 mecab도 비슷할 것이다.
예전 부터 궁금한것은 이게 명사로는 안될까?? 사실상 명사로 2g, 3g, 4g 이렇게 쓰이는 것 같은데..
아무튼
mecab 분석 결과이다.
사실상 카카오 형태소 분석기랑 비슷하다. 거의 똑같다
그럼 오타와 은어가 셀 수 없이 들어간 네티즌의 후기는 어떨까?
영화 평점 문장을 한 번 해보자.
'졸면서 봤다. 왜이리 평점이 높은거 내용도 별거 없고 아오 감수성 영화냐 이거 이걸 본 내눈이 아깝다 ㅡㅡ ...' 의 문장이다
위는 카카오 형태소 분석기이다.
왜이리 를 명사로 뽑아내는게 신기하다
높은겨 도 높 + 은겨로 뽑아내고 ㄷㄷ
그리고 아오 가 IC로 나오는데 이게 아마 감탄사쪽? 인것으로 기억한다
그리고 'ㅡㅡ'라는단어도 부사로 인식하고.
반면 mecab은 위 사진과 같다.
ㅡㅡ 단어는 unknown이다.
아오라는 단어도 명사로 뽑아내고...
흠.. 확실히 카카오 형태소 분석기.. 좋다 역시 갓카오인가
활용가치를 생각해봐야겠다.
일단 개인적으로는 konlpy와 nltk보다 좋은것 같다고 생각한다
(어차피 나는 이런거 혼자서 하기 때문에.. 외롭..ㅠ)
마지막으로 파이썬과 연동을 해보려고 한다.
make pacage_python을 치면
뭔가 쭉쭉 된다
그리고 pip3.6 install을 치면
ㅎㅎ 또 다시 에러와 마주쳤다
아까와 같은 protocol "https" not supported or disabled in libcurl이다.
에러 내용을 보니까 subprocess.check_call 부분에 cmake로 시작하는 부분이 있다.
근데 나는 설치할 때 cmake3로 설치 하지 않았던가?
그래서 야매를 부려보고자 한다
setup.py를 들어가서
바꾼다.
그리고 다시 한다
하하하핳 된다!
좋구만
위 예시는 카카오 형태소 분석기 깃허브에 올라와 있는 내용을 그대로 활용했다.
import로 khaiii를 불러오고
api 객체를 생성해서 이 api를 활용하는 것 같다
잘 나온다. 이렇게 파이썬과 연동할 수 있다.
결론적으로 정말 쓸만한 것 같다
그냥 기본적으로 훑어본것이라 뭐가 우위에 있고는 모르겠지만 확실히 좋다
그리고 만약 이게 딥러닝 기반으로 ~~게 나오면 명사고 ~~ 나오면 형용사고 이게 잘 되어 있으면
'사용자 단어 사전'에 의존도도 다른 것에 비해 낮을 것 같다고 생각된다
물론 인식이 안되는 단어 들은 사용자 단어 사전에 넣어야겠지만
만약 갓카오님께서 지속적으로 이 사전 업데이트 시켜주고 해주시면 사용자 단어 사전 의존도가 낮아지지 않을까?
(나는 초보자라 뭐... 그냥 그런것이다...)
아무튼! 기대된다! 끝!