Edited at

Ubuntu環境でanacondaとpyenvを使わずにscikit-learn, mecab, mecab-NEologdを単体導入した話

More than 1 year has passed since last update.


前置き

この記事はpyenv + anacondaの記事を読みまくった初心者機械学習エンジニアが、

サービス導入する時のサーバー(Ubuntu 16.04.2 LTS)に

この2つを入れるべきなのかを考え抜いた結果、単体インストールを試みた記事です。


そもそもpythonのバージョンをサーバーで分ける必要があるのか

pyenvを導入する理由は人それぞれだと思うが、以下の理由が結構でかいのではと思う


  • pipでライブラリなどを入れた場合、グローバル空間に入っちゃうので複数のバージョンが入れられない


  • Linux環境だと、Pythonは2系/3系の2つしかパッケージでは入れられない。


僕が導入を試みているサーバー環境だとそもそもpythonで動いているサービスが存在していないので、

複数バージョンを入れるケースもなく、必要もないと考えた。

また、Ubuntu 16.04.2 LTSではデフォルトでPython 3.5/Python 2.7が入っている。

最新のPython 3.6を入れる必要があるか考えた。

What’s New In Python 3.6

読んでみて、自分の開発しているスクリプトを見た。

一つも取り入れている新しい機能もなく、3.6も必要ないと感じた。

そうすると、pyenvいらないのでは?と思ったのである。

ただしpip、お前には入ってもらう。

$ sudo apt install python3-pip python3-dev

$ sudo pip3 install --upgrade pip

参考 : pyenvが必要かどうかフローチャート


SVM使うだけで本当にanacondaまで入れる必要あるのか?

これまで、開発に導入しているSVM(サポートベクターマシン)はscikit-learnのライブラリとして使用しているのでanacondaで一発導入していた。

anadondaの説明については、puhitakuさんの記事が分かりやすかったので引用させて頂く。


Anacondaは簡単に言うと「最初からNumpyやJupyter Notebookが入っていて、ビルド済みバイナリをインストールすることで利用者の環境構築が省け、ついでに複数バージョンのPythonを管理したり環境を切り替えることもできる一大ディストリビューション」である。


読んでみて、自分の開発しているスクリプトを見た。

numpy, pandasは使うが、Jupyter Notebookやmatplotlibも使わない。


複数バージョンのPythonを管理したり環境を切り替える


切り替えない

あれこれもはや導入する意味あるのだろうかと考えた結果、

単体インストールでいいんじゃね

と結論を出しました。

というわけで、単体インストールを行ったので、コードを残しておく。


mecabのインストール

$ sudo apt-get install mecab libmecab-dev mecab-ipadic mecab-ipadic-utf8


numpy, scipy, scikit-learn, mecab-python3のインストール

$ sudo pip3 install numpy scipy scikit-learn pandas mecab-python3

memo : scikit-learnはビルドにnumpyscipyを使っているので、入れていないとimportできないので入れておく。


mecab-NEologdのインストール

新語に対応したmecab-NEologdも導入する

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

$ cd mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n
$ sudo sed -i -e '5,5d' /etc/mecabrc
$ sudo sed -i -e '4a\dicdir = /usr/lib/mecab/dic/mecab-ipadic-neologd' /etc/mecabrc

最後の二行は

$ echo `mecab-config --dicdir` "/mecab-ipadic-neologd"

でインストール先のmecab-ipadic-neologdを確認して、パスが /usr/lib/mecab/dic/mecab-ipadic-neologdなっていたらそのままお使いください。(適宜ここ2行は環境に合わせてください)

参考 : Pythonの環境管理ツール良し悪し


最後に

何かを入れて使うということは"入れる意味がある"はずなので、

たまには脳みそを使って意味を考えたり調べたりするべきだと思いました。

これはあくまで僕の環境下で且つ僕の思想なので、これが必ずしも正しいとは限らないし、

anacondaを使わなければならない事例も出てくるはずなので、

すごいニッチな記事になりましたが参考になれば幸いです。

また、もっとこういうことを考えたほうがいいとか、お前はまだまだだなどあれば、ご教授して頂けると幸いです。