YUMで一発、jubatusで文書分類

jubatus 入れると、大規模なオンライン機械学習ができるらしいです。
だけど、入れるのめんどいですね。依存関係とかだるい。
だから、 yum っときました。
(テスト用VMなどに入れて遊んでください。)


RHEL5互換・・・つまり、centos5系とかだと、以下3行をコピれば入ります。

rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -Uvh http://rtilabs.net/files/repos/yum/rh/5/x86_64/rtilabs-release-1-0.noarch.rpm
yum install --enablerepo=rtilabs jubatus jubatus-python-client


OR


RHEL6互換・・・つまり、centos6系?とか Scientific Linux 6系 だと、以下2行をコピれば入ります。

rpm -Uvh http://rtilabs.net/files/repos/yum/rh/6/x86_64/rtilabs-release-1-0.noarch.rpm
yum install --enablerepo=rtilabs jubatus jubatus-python-client


以上。簡単ですね。

注意:現在 hadoop-zookeeper-server は入りません。入れたい人は自分でどうぞ。 zookeeper-libは入ります。



動作テスト、、、公式のチュートリアルサンプルをコピペして入れてください。
(注意:centos5系では、 pythinは、 python26 とすること。)



自分で学習データ用ファイルとか作らないといけないのがだるいですが、我慢して作ります。
で、やっていくと、 print classifier.clear() って所で落ちます。

[root@localhost ~]# python26 test.py  -s localhost:9181 -n tutorial
{'converter': {'num_filter_types': {}, 'num_rules': [], 'string_types': {}, 'num_filter_rules': [], 'string_filter_types': {'detag': {'pattern': '<[^>]*>', 'method': 'regexp', 'replace': ''}}, 'string_rules': [{'sample_weight': 'bin', 'type': 'space', 'global_weight': 'bin', 'key': 'message-detagged'}], 'num_types': {}, 'string_filter_rules': [{'type': 'detag', 'suffix': '-detagged', 'key': 'message'}]}, 'method': 'PA'}
Traceback (most recent call last):
  File "test.py", line 63, in <module>
    print classifier.clear()
AttributeError: Classifier instance has no attribute 'clear'


で、ここをコメントアウトするとうまく動きます。

   print classifier.clear()
   ↓
   #print classifier.clear()


不思議ですね。
(せっかく魅力的なソフトなんだから、もうちょっとサンプルつくればいいのに。。。)


RPMとSRPMはご自由に。
(/usr/lib64/ に強引に押し込んでいる specですけど。。。)


ここまで作ってこれを見つけたw /( ^o^ )\ なんてこったい
https://github.com/odasatoshi/jubatus-installer

ハックせよ

せっかくだからjubatusをビルドしてみましょう。
ハックするのがオプソの醍醐味の一つです。

#src.rpmをビルド出来る環境を作る。
yum install rpm-build yum-utils


#コンパイラなど一式を入れます。
yum groupinstall "Development Tools"


#src.rpmを落としてくる。
yumdownloader --enablerepo=rtilabs --source jubatus

#ソースパッケージを入れる。
rpm -i ~/jubatus-0.1.1-1.el6.x86_64.rpm

#ソースが展開された場所に移動する。
#RHEL5は /usr/src/redhat/SPEC/ の下
cd ~/rpmbuild/SPECS

ビルドしたいのですが、その前に依存パッケージを入れます。
yum install --enablerepo=rtilabs msgpack-devel zookeeper-devel


やっと、ビルドしてみます。
rpmbuild -bb jubatus.spec


できました!(パッケージがね)
各ファイルの場所一覧
場所 RHEL6 RHEL5
パッケージ ~/rpmbuild/RPMS/x86_64/ /usr/src/redhat/RPMS/x86_64/
ソースパッケージ ~/rpmbuild/SRPMS/ /usr/src/redhat/SRPMS/
ビルドディレクトリ ~/rpmbuild/BUILD/ /usr/src/redhat/BUILD/
SPEC ~/rpmbuild/SPEC/ /usr/src/redhat/SPEC/


ソースを変更して遊びたい場合は、 ~/rpmbuild/BUILD/jubatus-jubatus-e4b843f/ にファイルがあるから、ここで waf しましょう。

cd ~/rpmbuild/BUILD/jubatus-jubatus-e4b843f/
vim ....ソースを適当に書き換えてみる ....
./waf
./waf install   

変更したバイナリを実行!!
(いちいちinstallしなくても実行できそうだが・・・)

ENJOY!