Amazon SageMaker의 Jupyter에서 MeCab-NEologd 사용

개요



Amazon SageMaker의 Jupyter Notebook (Python3)에서 MeCab/NEologd을 사용하는 설정 단계입니다.
기본은 공식 순서대로입니다만, 아래와 같이 에러 회피와 편리 설정을 더하고 있습니다
  • 외부 인터넷에 연결할 수 있는 노트북 인스턴스 사용
  • 단적으로는 페이지 하단의 라이프 사이클 설정만 적용하면 사용할 수 있습니다

  • 절차



    Install mecab



    노트북 인스턴스의 Jupyter를 열고 Terminal에서 다음을 실행합니다.
    (설치 작업을 수행할 위치는 선택 사항이며, 여기서는 별도로 마운트된 EFS를 지정합니다.)
    $ WORK_BASE="/efs"
    $ MECAB_ROOT="${WORK_BASE}/mecab"
    $ cd ${WORK_BASE}
    $ git clone https://github.com/taku910/mecab.git
    
    $ cd ${MECAB_ROOT}/mecab
    $ ./configure --enable-utf8-only
    $ make
    $ make check
    $ sudo make install
    

    Install mecab-ipadic


    $ cd ${MECAB_ROOT}/mecab-ipadic
    $ ./configure --with-charset=utf8
    $ make
    $ sudo make install
    

    동작 확인



    지금까지 인스턴스에 Mecab이 설치되어 Terminal에서 작동을 확인할 수 있습니다.
    $ mecab 
    徳川宗家の文化的貢献
    
    徳川    名詞,固有名詞,人名,姓,*,*,徳川,トクガワ,トクガワ
    宗家    名詞,一般,*,*,*,*,宗家,ソウケ,ソーケ
    の      助詞,連体化,*,*,*,*,の,ノ,ノ
    文化    名詞,一般,*,*,*,*,文化,ブンカ,ブンカ
    的      名詞,接尾,形容動詞語幹,*,*,*,的,テキ,テキ
    貢献    名詞,サ変接続,*,*,*,*,貢献,コウケン,コーケン
    EOS
    

    Install mecab-ipadic-NEologd



    Mecab 표준 사전만으로는 새로운 단어를 충분히 지원할 수 없으므로 사용자 정의 사전을 설정합니다.
    여기서는 제목대로 mecab-ipadic-NEologd을 사용합니다.
    $ cd ${MECAB_ROOT}
    $ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
    
    $ cd ${MECAB_ROOT}/mecab-ipadic-neologd
    $ ./bin/install-mecab-ipadic-neologd -n -y
    

    동작 확인



    표준 사전에 없는 단어(도쿠가와 종가 등)가 고유 명사로 인식되는 것을 확인할 수 있습니다
    $ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
    徳川宗家の文化的貢献
    
    徳川宗家        名詞,固有名詞,一般,*,*,*,徳川宗家,トクガワソウケ,トクガワソーケ
    の      助詞,連体化,*,*,*,*,の,ノ,ノ
    文化的  名詞,固有名詞,一般,*,*,*,文化的,ブンカテキ,ブンカテキ
    貢献    名詞,サ変接続,*,*,*,*,貢献,コウケン,コーケン
    EOS
    

    path setting



    Jupyter Notebook의 Python3에서 사용하기 위해 다음 경로 설정을 미리 수행하십시오.
    $ sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/local/bin/
    

    Jupyter Notebook에서 작동 확인



    Jupyter Notebook (python3)에서 아래를 셀에 입력하여 실행하면 Python 코드에서 Mecab이 호출되어 NEologd 사전을 사용하여 형태소 분석을 수행 할 수 있음을 확인할 수 있습니다.
    !pip install --upgrade pip
    !pip install mecab-python3
    
    import MeCab
    
    tagger = MeCab.Tagger('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
    input = 'MeCabは 京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース 形態素解析エンジンです。'
    result = tagger.parse(input)
    print(result)
    



    수명 주기 설정



    노트북 인스턴스를 다시 시작하면(저축으로 인한 중지/재개 및 인스턴스 유형 변경과 같은 이유로) 인스턴스에 추가한 사용자 지정 정보가 재설정됩니다.

    따라서 이전에 작성한 설정 절차를 쉘 스크립트로 "라이프 사이클 설정"에 정의하면 동일한 설정을 유지하거나 다른 노트북에서 재사용 할 수 있습니다 (자세한 설정 방법은 노트북 인스턴스 사용자 정의 또는 수명 주기 구성 및 인터넷 액세스를 비활성화하는 옵션을 사용하여 Amazon SageMaker 노트북 인스턴스 사용자 지정 참조)

    여기에서는 라이프사이클 설정(쉘 스크립트)의 내용만 기재합니다
    
    # set Mecab / NEologd
    DEFAULT_USER="ec2-user"
    WORK_BASE="/efs"
    MECAB_ROOT="${WORK_BASE}/mecab"
    
    ## download
    if [ ! -d ${MECAB_ROOT} ]; then 
      sudo -u ${DEFAULT_USER} sh -c "cd ${WORK_BASE} && git clone https://github.com/taku910/mecab.git"
    else
      sh -c "cd ${WORK_BASE} && git pull"
    fi
    if [ ! -d ${MECAB_ROOT}/mecab-ipadic-neologd ]; then
      sudo -u ${DEFAULT_USER} sh -c "cd ${MECAB_ROOT} && git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git"
    else 
      sh -c "cd ${MECAB_ROOT} && git pull"
    fi
    
    ## install
    sudo -u ${DEFAULT_USER} sh <<-EOS
    PATH=${PATH}:/usr/local/bin
    cd ${MECAB_ROOT}/mecab && ./configure --enable-utf8-only && make
    sudo make install
    cd ${MECAB_ROOT}/mecab-ipadic && ./configure --with-charset=utf8 && make
    sudo make install
    cd ${MECAB_ROOT}/mecab-ipadic-neologd && ./bin/install-mecab-ipadic-neologd -n -y
    EOS
    
    # set mecab-python3
    sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/local/bin/
    
  • 여기까지 써 온 내용대로입니다
  • 예에서는 EFS 영역에 다운로드하기 때문에 이미 존재하는 경우 다운로드하지 않고 git pull 하려고 합니다

  • 보충



    Jupyter Notebook을 사용하는 환경은 여러 가지로 생각됩니다만, Amazon SageMaker는 유력한 선택이라고 생각합니다. 약간의 개발이나 검증을 반복하는 경우는 고성능 머신을 보유하는 것보다 Amazon SageMaker에서 동적으로 리소스 확보하는 것이 경제적입니다.

    여러 번 시작하는 것을 생각하면 Mecab 등의 설정은 라이프 사이클 설정으로 자동화하는 것이 좋을 것 같습니다.

    참고 자료


  • MeCab
  • NEologd
  • AWS SageMaker 노트북 인스턴스에 mecab 설치
  • MeCab, mecab-ipadic-NEologd 및 Python3의 형태소 분석
  • 노트북 인스턴스 사용자 정의
  • Amazon SageMaker 노트북 인스턴스 사용자 지정
  • 좋은 웹페이지 즐겨찾기