これはなに?
業務で自然言語処理をすることが多くなって、環境構築するのがメンドイのでコンテナ化してみました。 形態素解析のためにMeCab、Word2Vecを利用するためにgensimをそれぞれインストールし、プラットフォームとしてJupyterLabを利用できるようにしています。
環境
ビルド
- Windows 10
- Docker Desktop: 3.3.1
コンテナ
- ソースイメージ: jupyter/datascience-notebook
- OS: Ubuntu
- ミドルウェア
- Jupyter Lab
- MeCab & mecab-ipadic-NEologd
- python ライブラリ
- mecab-python3
- gensim
jupyter/datascience-notebookイメージを元にして、MeCabとgensimをインストールしています。
1. DockerFile
gist22c378468f8d4a85e594be29653ee9e1
2. 利用方法
① DockerFileをコンテナイメージをBuildする
DockerFileをローカルにコピーし、以下のコマンドでBuildしてください。
docker build <DockerFileが保存されているフォルダパス> -t <DockerImage名>
<例> docker build ./ -t nlp-notebook
② Jupyter Labを起動
docker run --rm -p 8890:8888 -e JUPYTER_ENABLE_LAB=yes -v "%CD%":/home/jovyan/work/ <DockerImage名>
- -p '8890:8888' : ホスト側のポートを8890にしていますが、任意でOKです
- -v "%CD%":/home/jovyan/work/ : ホスト側のカレンドディレクトリをJupyterLabのワークディレクトリにマウントして、コンテナ内で作成したノートブックを永続化しています。
<例> docker run --rm -p 8890:8888 -e JUPYTER_ENABLE_LAB=yes -v "%CD%":/home/jovyan/work/ nlp-notebook
③ Jupyter Labにログイン
Docker コマンドの実行履歴にJupyterLabへの接続URLが記載されていますので、任意のブラウザで接続してください。
注意点としては、デフォルトの8888ポートで接続URLが表示されるので、ホスト側のURLを変更した場合は適宜修正して接続ください。
3. 動作確認
ノートブック上でMeCabによる形態素解析とgensimによるWord2Vecを使った言語推論をすることができました。
# MeCab 形態素解析 import MeCab m = MeCab.Tagger("-d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd") print(m.parse("Amazon Web Services(アマゾン ウェブ サービス、略称:AWS)とは、Amazon.comにより提供されているクラウドコンピューティングサービスである。")) # Word2Vec用のが学習済みモデル取得(白ヤギコーポレーション) ! curl http://public.shiroyagi.s3.amazonaws.com/latest-ja-word2vec-gensim-model.zip > latest-ja-word2vec-gensim-model.zip ! unzip latest-ja-word2vec-gensim-model.zip # Word2Vec モデルロード 推論 from gensim.models import Word2Vec model_path = 'word2vec.gensim.model' model = Word2Vec.load(model_path) model.wv.most_similar(positive=['Amazon'],topn=10)
最後に
分析環境ができたので、ガンガン分析やっていきたい。Word2Vec使った好きなアーティストの歌詞分析とか、ベタだけど楽しそうなので今後やってみる。