handlename's blog

コード片など

mecab0.994でmecab-dic-overdriveを使う

使おうと思ったらすんなり動かなかったので。

環境

何が問題?

mecab-dic-overdrive/lib/MeCabTrainerの中でMECAB_EOS_NODEのような定数を使っているが、Text::MeCab内ではこれが定義されていない。

なにした?

Text::MeCabをインストールするときにちょっといじる。

$ git clone https://github.com/lestrrat/Text-MeCab.git
$ cd Text-MeCab
$ cpanm . --installdeps
$ perl Makefile.PL
$ make

このタイミングで lib/Text/MeCab.pm が生成されるので、19行目を次のように変更。

%EXPORT_TAGS = (all => [ qw() ]);

%EXPORT_TAGS = (all => [ qw(MECAB_NOR_NODE MECAB_UNK_NODE MECAB_BOS_NODE MECAB_EOS_NODE) ]);

で、make install。

EXPORTしているTAGは MeCab::Node::stat の定数。
http://mecab.googlecode.com/svn/trunk/mecab/doc/bindings.html を参考に使われているものを羅列。
XS読めないので何がどうなってこうなっているのかは追ってない…。

あとはmecab-dic-overdriveの解説記事を参考に辞書を作ればOK
http://blog.livedoor.jp/techblog/archives/65828235.html