최근에...구글에서 발표한 BERT열풍이 장난이 아닙니다.

게다가 LG CNS에서 SQuaD 데이터셋을 한글로 대체 할 수 있는 KorQuAD 및 Leader Board를 제공해주어서,

국내 유수의 AI 개발팀이 많이 참여를 했던 열풍이 있었습니다.

 

BERT에 대해 궁금하시면 아래 기사를 읽어보시면 됩니다.

http://www.aitimes.kr/news/articleView.html?idxno=13117

 

전, 리더보드에 3등까지밖에 없던 시절에 BERT를 이용해서 4등이라도 해보자 라고 했다가...

프로젝트때문에, 미루다, 지금은 간신히 22등에 머물렀네요.

https://korquad.github.io/

 

KorQuAD

desktop_mac Getting Started KorQuAD는 한국어 Machine Reading Comprehension을 위해 만든 dataset입니다. 모든 질의에 대한 답변은 해당 Wikipedia 아티클 문단의 일부 하위 영역으로 이루어집니다. Stanford Question Answering Dataset(SQuAD) v1.0과 동일한 방식으로 구성되었습니다. 전체 데이터는 1,560 개의 Wikipedia article에 대해 10,645

korquad.github.io

(글을 쓰는 도중에 보니 23등으로 밀렸네요...ㅠㅠ)

 

이번에, 추가적으로 해볼 수 있는 아이디어를 얻어, KorQuAD의 리더보드 순위를 높여보고자 합니다.

 

그중 하나의 방법이 default로 설정되어 있는 BERT의 multilingual tokenizer를 대체 하는 것 입니다.

한국어의 기존 형태소 분석기는 konlpy, mecab등 여러가지가 있는데 카카오에서 Khaiii라는 형태소 분석기를 발표했습니다.

Khaiii는 딥러닝(CNN)기반의 형태소 분석기 인데, 기존에 성능이 높던 Mecab과 동일하거나 좀 더 나은 성능을 내는 것으로 알려져 있습니다.

 

때문에, 우선 Khaiii를 설치하는 법을 기록하며 진행하려고 하는데, 

지금 환경이 Linux이다 보니, Linux 환경 위주로 진행을 하겠습니다.

 

우선 기본 빌드 환경은 아래와 같습니다.

Ubuntu(Mint Linux) 18.04

Python 3.6

gcc 7.xx

 

1. Khaii git 저장소를 clone 합니다.

git clone https://github.com/kakao/khaiii.git

2. build디렉토리를 생성하고 이동 합니다.

cd khaiii
mkdir build
cd build

3. Cmake를 실행합니다. (커피한잔 타 가지고 옵니다.)

cmake ..

4. Make를 실행합니다. (커피를 한잔 더 타 가지고 옵니다.)

make all

 성공적으로 빌드가 되면 build 디렉터리 아래에 다음과 같은 파일이 생성됩니다.

  • bin: 디렉터리
    • khaiii: 실행 프로그램
  • lib: 디렉터리
    • libkhaiii.so: shared 라이브러리 (맥 OS의 경우 libkhaiii.dylib)
    • libkhaiii.so.X
    • libkhaiii.so.X.Y
  • test: 디렉터리
    • khaiii: 테스트 프로그램

5. make resource : bin 디렉토리에 생성된 khaiii파일을 실행하기 위해서는 해당 프로그램에서 사용하는 

                                      리소스 들을 빌드 해야 합니다.

make resource

6. 테스트를 해 봅니다.

./bin/khaiii --rsc-dir=./share/khaiii

        명령어를 치면 "...PoS tagger opened"라는 메시지 다음에 아무 변화가 없는데, 

       여기에 테스트 하고자 하는 문장을 입력하고 엔터를 치면 형태소 분석이 된 결과가 출력이 됩니다.

7. 정상 작동여부를 확인합니다.

ctest

7. python과 연동을 위해 make를 합니다. (python binding)

make package_python

8. pip install 실행

cd package_python
pip install  . 

9.  Python 바인딩 테스트

      마지막으로, python 바인딩이 잘 되어 있는지 테스트 합니다.

      아래 소스를 python으로 실행시켜봅니다.

      ** 여기서 주의할 점은 현재의 디렉토리(./package_python)을 벗어나서 실행해야 합니다.

           현재의 디렉토리에서 실행하면 현재의 build파일을 실행하기 때문에 라이브러리 의존성 문제가

           발생합니다.

from khaiii import KhaiiiApi
api = KhaiiiApi()
for word in api.analyze('안녕, 세상.'):
    print(word)

위 이미지 처럼 결과가 나오면 잘 되는 것 입니다.

 

감사합니다.

  1. socrat7 2019.10.23 13:32

    혹시 인터넷없이 카카오형태소를 설치할 수 있나요?

    • 프로비아 2019.11.04 16:13 신고

      git repository소스랑 나머지 패키지들이 전부 준비되어 있다면...가능은 할거 같은데,
      확답은 못드리겠습니다.

      아마도...좀 어려움이 있지 않을까 싶네요

  2. 김현우 2020.05.08 11:23 신고

    감사합니다.

  3. 잼잼 2020.09.08 13:04

    오오오오잇 감사합니다

    cmake -DCMAKE_INSTALL_PREFIX=/path/to/install ..
    이 부분 추가 필요할듯요


    #https://github.com/kakao/khaiii/wiki/%EB%B9%8C%EB%93%9C-%EB%B0%8F-%EC%84%A4%EC%B9%98

Anaconda 설치 자체는 그리 어려운 점이 없기 때문에 생략합니다.

실무에서 제법 유용했던 팁을 공유 합니다.


1. 패키지 관리

      가. 패키지 설치

              > conda install numpy scipy pandas

    나. 패키지 제거

          > conda remove 패키지명

    다. 패키지 Update

          > conda update 패키지명

    라. 모든패키지 Update

          > conda update --all

    마. 설치된 패키지 확인

          > conda list

    바. 패키지 이름을 잘 모를때 검색

          > conda search *beautiful*

                  



2. 환경 관리

    가. 가상환경 생성

          > conda create -n [가상환경명] [기본설치할 패키지] 

             '기본설치할 패키지'는 여러 패키지를 한꺼번에 지정할 수 있다.

    나. 패키지의 특정 버전을 설치하여 가상환경 생성

          > conda create -n my_env python=3.6

    다. 가상환경 활성화

          > source activate [가상환경명]

    라. 가상환경 비활성화

          > source deactivate


3. 가상환경 저장 및 공유

     가. 가상환경 export

           > conda env export > [파일이름].yaml

              이 파일을 백업하거나 다른 사람에게 같은 환경을 공유할 수 있다.

     나. 공유받은 yaml파일로부터 가상환경 생성

           > conda env create -f [파일이름].yaml

       다. 가상환경 목록 확인

           > conda env list

                          

                  현재 활성화 되어 있는 가상환경명 앞에는 * 표시가 붙는다.

     라. 가상환경 제거하기

            > conda env remove -n [가상환경명]

              





  1. autoenv 설치
git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv 
echo ‘source ~/.autoenv/activate.sh’ >> ~/.zprofile #혹은 .bash_profile source ~/.zprofile #혹은 .bash_profile

2. autoenv 디렉토리에 설정

mkdir autoenvDir cd autoenvDir 
echo “conda activate py36” > .env

3. autoenv 동작 확인

# .env 파일을 만들어 놓은 폴더로 이동시 autoenv 동작을 확인한다 
cd autoenvDir
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /home/jjeaby/autoenvDir/.env:
autoenv:
autoenv: — — (begin contents) — — — — — — — — — — — — —— — — — —
autoenv: conda deactivate $ autoenv: conda activate py36$
autoenv:
autoenv: — — (end contents) — — — — — — — — — — — — —— — — — — —
autoenv:
autoenv: Are you sure you want to allow this? (y/N) y
(py36) ➜


Mask RCNN training시 오류가 날 경우

model.py를 아래처럼 수정해 준다.


AttributeError: module 'keras.engine.topology' has no attribute 'load_weights_from_hdf5_group_by_name'

 ** topology --> saving으로 변경



+ Recent posts