Alpine Linux에서 MeCab with NEologd

소개



부담없이 형태소 해석할 수 있도록 NElogd가 들어간 Docker 이미지를 만들었습니다.

Dockerfile과 Alpine Linux, MeCab/NEologd의 자동 구축에 대해 얻은 지식을 공유합니다 🤗

사용법


$ echo "10日放送の「中居正広のミになる図書館」(テレビ朝日系)で、SMAPの中居正広が、篠原信一の過去の勘違いを明かす一幕があった。" | \
  docker run -i -a STDIN -a STDOUT nownabe/mecab-neologd
10日    名詞,固有名詞,一般,*,*,*,10日,トオカ,トオカ
放送    名詞,サ変接続,*,*,*,*,放送,ホウソウ,ホーソー
の      助詞,連体化,*,*,*,*,の,ノ,ノ
「      記号,括弧開,*,*,*,*,「,「,「
中居正広のミになる図書館        名詞,固有名詞,一般,*,*,*,中居正広のミになる図書館,ナカイマサヒロノミニナルトショカン,ナカイマサヒロノミ
ニナルトショカン
」      記号,括弧閉,*,*,*,*,」,」,」
(      記号,括弧開,*,*,*,*,(,(,(
テレビ朝日      名詞,固有名詞,組織,*,*,*,テレビ朝日,テレビアサヒ,テレビアサヒ
系      名詞,接尾,一般,*,*,*,系,ケイ,ケイ
)      記号,括弧閉,*,*,*,*,),),)
で      助詞,格助詞,一般,*,*,*,で,デ,デ
、      記号,読点,*,*,*,*,、,、,、
SMAP    名詞,固有名詞,人名,一般,*,*,SMAP,スマップ,スマップ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
中居正広        名詞,固有名詞,人名,一般,*,*,中居正広,ナカイマサヒロ,ナカイマサヒロ
が      助詞,格助詞,一般,*,*,*,が,ガ,ガ
、      記号,読点,*,*,*,*,、,、,、
篠原信一        名詞,固有名詞,人名,一般,*,*,篠原信一,シノハラシンイチ,シノハラシンイチ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
過去    名詞,副詞可能,*,*,*,*,過去,カコ,カコ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
勘違い  名詞,サ変接続,*,*,*,*,勘違い,カンチガイ,カンチガイ
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
明かす  動詞,自立,*,*,五段・サ行,基本形,明かす,アカス,アカス
一幕    名詞,一般,*,*,*,*,一幕,ヒトマク,ヒトマク
が      助詞,格助詞,一般,*,*,*,が,ガ,ガ
あっ    動詞,自立,*,*,五段・ラ行,連用タ接続,ある,アッ,アッ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。      記号,句点,*,*,*,*,。,。,。
EOS

Dockerfile



Dockerfile
FROM alpine:3.4
MAINTAINER nownabe

RUN apk add --update --no-cache build-base

ENV MECAB_VERSION 0.996
ENV IPADIC_VERSION 2.7.0-20070801
ENV mecab_url https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE
ENV ipadic_url https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM
ENV build_deps 'curl git bash file sudo openssh'
ENV dependencies 'openssl'

RUN apk add --update --no-cache ${build_deps} \
  # Install dependencies
  && apk add --update --no-cache ${dependencies} \
  # Install MeCab
  && curl -SL -o mecab-${MECAB_VERSION}.tar.gz ${mecab_url} \
  && tar zxf mecab-${MECAB_VERSION}.tar.gz \
  && cd mecab-${MECAB_VERSION} \
  && ./configure --enable-utf8-only --with-charset=utf8 \
  && make \
  && make install \
  && cd \
  # Install IPA dic
  && curl -SL -o mecab-ipadic-${IPADIC_VERSION}.tar.gz ${ipadic_url} \
  && tar zxf mecab-ipadic-${IPADIC_VERSION}.tar.gz \
  && cd mecab-ipadic-${IPADIC_VERSION} \
  && ./configure --with-charset=utf8 \
  && make \
  && make install \
  && cd \
  # Install Neologd
  && git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git \
  && mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n -y \
  # Clean up
  && apk del ${build_deps} \
  && rm -rf \
    mecab-${MECAB_VERSION}* \
    mecab-${IPADIC_VERSION}* \
    mecab-ipadic-neologd

CMD ["mecab", "-d", "/usr/local/lib/mecab/dic/mecab-ipadic-neologd"]


Alpine Linux



Alpine Linux란?



Alpine Linux은 가볍고 안전한 리눅스입니다. Docker의 이미지를 가볍게 하는 용도로 사용되는 것이 늘어나고 있는 것 같습니다.

Small. Simple. Secure.
Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.

공식 페이지에서

Alpine Linux의 이미지는 5MB 정도입니다.

패키지를 찾는 방법



Alpine Linux에서는 패키지 설치에 apk라는 패키지 관리 시스템을 사용합니다.

Alpine의 패키지에 관해서는 구구라고 해도 정보 없거나 합니다만, 대부분의 패키지는 공식 사이트 패키지 검색 시스템 에서 찾아보면 있습니다.
여기에도 없으면 보통으로 빌드하면 OK입니다

또한 apk 명령을 Dockerfile에서 사용할 때 --update--no-cache를 붙이는 것이 무난한 것 같습니다.--update 패키지 목록을 업데이트합니다. 그러므로 처음 1번째는 반드시 --update를 붙일 필요가 있습니다.--no-cache는 보시다시피 캐시를 무효화합니다. 그래서 마지막에 캐시를 지우거나 하는 처리를 쓰지 않아도 됩니다.
--virtual 라는 복수의 패키지를 그룹으로 해 이름을 붙이는 기능도 있습니다만, 이번은 환경 변수에 패키지를 넣었으므로 사용하지 않았습니다.

MeCab



MeCab이란?



MeCab은 일본어 형태소 분석 엔진입니다. 일본어 문장을 단어로 나누어주는 사람입니다

소스 코드 위치



MeCab의 소스 코드는 어떻게 Google Drive에 있습니다. 몇 년에 한 번 정도 두어 장소가 바뀌고 있다고 생각하기 때문에 주의가 필요합니다.

MeCab의 사전인 IPA 사전도 마찬가지입니다.

NEologd



NEologd란?



NEologd은 IPA 사전을 강화한 사전입니다. NE(Named Entity)와 같이 고유 표현(고유 명사)에 강한 사전입니다.
새로운 단어도 점점 더 추가되는 것 같습니다.

non interactive 설치



제공된 설치 프로그램을 정상적으로 시작하면 입력하라는 메시지가 표시되지만 -y 옵션을 사용하여 해결할 수 있습니다.
mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n -y

사용법



사용할 때는 MeCab에 사전의 위치를 ​​지정해 줍니다.
$ mecab
セイバーとライダーとアーチャーの聖杯問答
セイバー        名詞,一般,*,*,*,*,*
と      助詞,並立助詞,*,*,*,*,と,ト,ト
ライダー        名詞,一般,*,*,*,*,ライダー,ライダー,ライダー
と      助詞,並立助詞,*,*,*,*,と,ト,ト
アーチャー      名詞,一般,*,*,*,*,*
の      助詞,連体化,*,*,*,*,の,ノ,ノ
聖      名詞,一般,*,*,*,*,聖,ヒジリ,ヒジリ
杯      名詞,接尾,一般,*,*,*,杯,ハイ,ハイ
問答    名詞,サ変接続,*,*,*,*,問答,モンドウ,モンドー
EOS
^C

$ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
セイバーとライダーとアーチャーの聖杯問答
セイバー        名詞,固有名詞,人名,一般,*,*,SAVIORR,セイバー,セイバー
と      助詞,並立助詞,*,*,*,*,と,ト,ト
ライダー        名詞,一般,*,*,*,*,ライダー,ライダー,ライダー
と      助詞,並立助詞,*,*,*,*,と,ト,ト
アーチャー      名詞,固有名詞,一般,*,*,*,アーチャー,アーチャー,アーチャー
の      助詞,連体化,*,*,*,*,の,ノ,ノ
聖杯    名詞,固有名詞,一般,*,*,*,聖杯,セイハイ,セイハイ
問答    名詞,サ変接続,*,*,*,*,問答,モンドウ,モンドー
EOS

좋은 웹페이지 즐겨찾기