Python
mecab
vagrant
mecab-ipadic-neologd

Python+MeCabの仮想環境をつくる

More than 1 year has passed since last update.

手軽な仮想環境を用意する

個人で必要があったので、作成がてらメモ。
私はMacで構築していますが、Windowsの方はVagrantのインストールを前提条件とします。

作業

Vagrantの準備

Homebrewを入れる

bash
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew doctor

VirtualboxとVagrantを入れる

bash
$ brew cask install virtualbox
$ brew cask install vagrant
$ vagrant plugin install vagrant-vbguest

これで準備ができましたので、仮想マシン用のディレクトリを作成しておきましょう。
私はホームディレクトリ配下にwork/VMを作成し、その下にプロジェクトごとのディレクトリを配置することが多いです。
※今回はホームディレクトリ配下にwork/VM/pythonを作成した前提とします。

作成したディレクトリに移動する

bash
$ cd ~/work/VM/python

仮想マシンを作成する

  • ボックスはubuntu/trusty64を指定
bash
$ vagrant init ubuntu/trusty64
$ vagrant up
$ vagrant ssh

マシンを立ち上げたらsshで接続しましょう

pyenv(Pythonバージョン管理)を入れ、pythonのバージョンを指定する

pyenvの依存パッケージを入れる

bash
sudo apt-get install -y git make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl llvm libncurses5-dev

pyenvをインストール

bash
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

環境変数を追加

bash
cat << 'EOF' >> ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
EOF
exec $SHELL -l

インストールの確認

bash
pyenv -v

Pythonのインストール

bash
pyenv install 3.6.2
pyenv global system 3.6.2

MeCabのインストール

MeCabとPythonバインドをインストール

bash
$ sudo apt-get install mecab libmecab-dev mecab-ipadic
$ sudo aptitude install mecab-ipadic-utf8
$ sudo apt-get install python-mecab

拡張辞書MeCab-ipadic-neologdの適応

依存パッケージのインストール

bash
$ sudo aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file

インストール

bash
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd

インストール前にスワップ領域を作成する

bash
$ sudo dd if=/dev/zero of=/swapfile1 bs=1M count=2048
$ sudo chmod 600 /swapfile1
$ sudo mkswap /swapfile1
$ sudo swapon /swapfile1

インストール

bash
$ ./bin/install-mecab-ipadic-neologd -n -a 

-aオプションは全部入り、通常インストール(-aなし)では一部辞書はインストールされない

スワップ領域をアンマウント

bash
$ sudo swapoff /swapfile1

MeCab-ipadic-neologdをデフォルト辞書に設定する

bash
$ sudo find / -name mecabrc
$ sudo vim /etc/mecabrc

※以下を変更
変更前:dicdir = /usr/local/lib/mecab/dic/ipadic
変更後:dicdir = /usr/local/lib/mecab/dic/mecab-ipadic-neologd

辞書更新のスクリプトの作成(更新のときにスワップ領域をマウントする)

bash
$ sudo mv mecab-ipadic-neologd/ /usr/local/lib
$ vim update_neologd.sh
$ chmod +x update_neologd.sh

vim update_neologd.shの書き込み内容は以下

update_neologd.sh
#!/bin/sh

echo 'START install-mecab-ipadic-neologd'
echo '=================================='
echo '[--SWAPON--]'
sudo swapon /swapfile1
echo '[--UPDATE--] ./install-mecab-ipadic-neologd -n -a -y'
/usr/local/lib/mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n -a -y
echo '[--UPDATE--]FINISHED install-mecab-ipadic-neologd'
echo '[--SWAPOFF--]'
sudo swapoff /swapfile1
echo '=================================='

これで一旦は作成完了です。
異なる環境の場合は、MeCabのインストール場所などを環境に合わせて変更してください。

次回

MeCabを使ったAPIの作成までをまとめたいです。
flask+mod_wsgiを使う予定ですが、変わる可能性あり。
Markdownは書き慣れていないので、度々修正します。

参考

https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md
書籍:スマートPythonプログラミング: Pythonのより良い書き方を学ぶ