ちょっと分類器を使ってみたいテーマがあったのでJubatusを試してみました。
環境
- Ubuntu14
- python3
参考にしたURL
まぁ、まんまなのですがJubatusチュートリアルを参考にしました。この投稿はそのチュートリアルの補完的なものと思ってもらえれば。
Jubatusのレポジトリをレポジトリリストに登録
では早速。まずはaptにJubatusのレポジトリを追加します。
$ sudo vim /etc/apt/sources.list.d/jubatus.list
# 以下の一行を記述
deb http://download.jubat.us/apt binary/
$ sudo apt-get update
$ sudo apt-get install jubatus
クライアントライブラリインストール
次にpython3のクライアントライブラリをインストール。pipのインストールから書いておきます。python3を使っているので、それ前提です。
$ sudo apt-get install python3-pip
$ sudo pip3 install jubatus
環境変数定義
Jubatusを起ち上げるには環境変数を定義しておかねばなりません。
インストールディレクトリ(私は/opt/jubatus/
でした)の下にあるprofileを読み込みます。
$ source /opt/jubatus/profile
なお、profileファイルの中身はこんな感じ。
export JUBATUS_HOME="/opt/jubatus"
export PATH="${JUBATUS_HOME}/bin:${PATH}"
export LD_LIBRARY_PATH="${JUBATUS_HOME}/lib:${LD_LIBRARY_PATH}"
export LDFLAGS="-L${JUBATUS_HOME}/lib ${LDFLAGS}"
export CPLUS_INCLUDE_PATH="${JUBATUS_HOME}/include:${CPLUS_INCLUDE_PATH}"
export PKG_CONFIG_PATH="${JUBATUS_HOME}/lib/pkgconfig:${PKG_CONFIG_PATH}"
export MANPATH="${JUBATUS_HOME}/share/man:${MANPATH}"
source
コマンドで毎回設定するのは面倒という方は、ユーザーディレクトリ以下にある.profile
に追記しておきます。末尾に追記しておいていいです。
$ vim ~/.profile
追記後はこんな感じです。
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
export JUBATUS_HOME="/opt/jubatus"
export PATH="${JUBATUS_HOME}/bin:${PATH}"
export LD_LIBRARY_PATH="${JUBATUS_HOME}/lib:${LD_LIBRARY_PATH}"
export LDFLAGS="-L${JUBATUS_HOME}/lib ${LDFLAGS}"
export CPLUS_INCLUDE_PATH="${JUBATUS_HOME}/include:${CPLUS_INCLUDE_PATH}"
export PKG_CONFIG_PATH="${JUBATUS_HOME}/lib/pkgconfig:${PKG_CONFIG_PATH}"
export MANPATH="${JUBATUS_HOME}/share/man:${MANPATH}"
反映するために.profile
を読み込みます。
$ source ~/.profile
全てのユーザに環境変数を設定したいという人は/etc/profile
に追記すれば良いです。
$ sudo vim /etc/profile
$ sudo source /etc/profile
分類器をバックグラウンドで実行してみる
環境変数が設定されたらJubatusが使えるはずです。チュートリアルに沿って分類器を起動してみましょう。今回はバックグラウンド起動します。
$ jubaclassifier -f /opt/jubatus/share/jubatus/example/config/classifier/pa.json &
# 起動確認
$ ps awx | grep jubaclassifier
# 問題なければkillしておきます
$ kill -9 xxxxx
チュートリアル準備
ここはあまり考えずさくさくいけます。
$ sudo apt-get install git
$ git clone https://github.com/jubatus/jubatus-tutorial-python.git
$ cd jubatus-tutorial-python
$ wget http://qwone.com/~jason/20Newsgroups//20news-bydate.tar.gz
$ tar xvzf 20news-bydate.tar.gz
$ jubaclassifier --configpath config.json &
$ python3 tutorial.py
上手くいけばこんなリストがたくさん出ます。
OK,rec.sport.baseball, rec.sport.baseball, 0.865868091583252
OK,comp.windows.x, comp.windows.x, 0.6095645427703857
NG,comp.os.ms-windows.misc, comp.graphics, 0.67635577917099
OK,comp.sys.mac.hardware, comp.sys.mac.hardware, 0.7203484773635864
NG,sci.crypt, sci.electronics, 0.48412221670150757
NG,rec.motorcycles, sci.space, 0.31272074580192566
OK,comp.sys.ibm.pc.hardware, comp.sys.ibm.pc.hardware, 0.6706023216247559
OK,rec.sport.baseball, rec.sport.baseball, 1.4062193632125854
NG,comp.os.ms-windows.misc, comp.sys.mac.hardware, 1.0363414287567139
OK,sci.crypt, sci.crypt, 1.4429230690002441
OK,rec.autos, rec.autos, 0.3802572786808014
OK,misc.forsale, misc.forsale, 1.2790473699569702
OK,sci.space, sci.space, 1.8048734664916992
NG,talk.politics.misc, talk.politics.guns, 0.5287462472915649
OK,sci.med, sci.med, 0.584435760974884
NG,sci.electronics, soc.religion.christian, 0.3711654841899872
OK,talk.politics.guns, talk.politics.guns, 1.4940108060836792
OK,rec.sport.hockey, rec.sport.hockey, 1.0699224472045898
途中でtimedout error
が出たらtimeoutを伸ばしましょう。
$ jubaclassifier --configpath config.json --timeout 1000 &
それでもダメならVagrantのメモリの割り当てを増やしてみてください。私は1GBでちゃんと動きました。エラーメッセージが分かりにくいのでだいぶハマりましたが・・・。