さくらインターネット その4 (Estraierの導入)
まだまだ試用期間。 せっかくシェルアカウントが使えるので、C言語のプログラムを導入してみようと思う。 ということで最近よく名前を聞く、 Estraier (エストレイヤーと発音するのかな?) に挑戦する。 これは、 Namazu に似たような検索エンジンらしい。
Estraier は Namazu と同じく検索インデックスの生成 (mknmz 相当) と、インデックスからの検索機能から構成されている。 日本語の場合は、この検索インデックスを作る前に、文を単語に分割(分かち書き)しなければいけない。 英語の場合はすでにスペースで単語が分割されているから、分かち書きの必要はない。
Estraier では、分かち書きを実現するソフトウェアとして、 KAKASI と ChaSen を利用することができる。 KAKASI と ChaSen の違いはNamazuによる全文検索システムの導入 (@IT) に書かれている
もともとKAKASIは漢字仮名交じり文を仮名だけ、あるいはローマ字表記に変換するために作られました。 そこに分かち書き機能が追加されたため、比較的シンプルなルールで高速に動作します。
一方ChaSenは最初から日本語を構成する単語を分析する形態素解析プログラムとして開発されています。 そのためやや動作が遅く使い方が難しいものの、より正確な解析が可能になります。
実際に利用した感じでは、KAKASIで十分実用になります。
KAKASI は以前に使ったことがあったので、ここでは ChaSen を使うことにする。 ChaSen は内部で darts というライブラリを使っているので、 まずは darts をインストールする。 もちろん、レンタルサーバなので /usr/local にはインストールできないので、 自分のホームディレクトリ ($HOME) にインストールしていく。
(余談) 実は、全てインストールした後で気がついたんだけど、 Estraier の Tipsに 「管理者権限がない場合のインストール」という項がある。 これを参照するのがベターかな。 (余談おわり)
telnet を使ってさくらのレンタルサーバにログインし、以下のコマンドを実行する。 さくらのデフォルトは csh のようだ。FreeBSDだからかな? csh には慣れていないので、 bash を使う。
% bash $ mkdir src $ cd src $ wget http://chasen.org/~taku/software/darts/src/darts-0.2.tar.gz $ tar zxvf darts-0.2.tar.gz $ cd darts-0.2 $ ./configure --prefix=$HOME $ make $ make install
これで、$HOME/libexec と $HOME/include に darts がインストールされた。 次は Chasen 。
$ cd $HOME/src $ wget http://chasen.aist-nara.ac.jp/stable/chasen/chasen-2.3.3.tar.gz $ tar zxvf chasen-2.3.3.tar.gz $ cd chasen-2.3.3 $ ./configure --prefix=$HOME --with-darts=$HOME/include --with-libiconv=/usr/local $ make $ make install
これで、 $HOME/bin, $HOME/lib, $HOME/libexec, $HOME/include に Chasen がインストールされた。 最後は、いよいよ Estirator 。
$ cd $HOME/src $ wget http://estraier.sourceforge.net/estraier-1.2.18.tar.gz $ tar zxvf estraier-1.2.18.tar.gz $ cd estraier-1.2.18 $ ./configure --prefix=$HOME --enable-chasen $ make $ make install
これで、 $HOME/bin, $HOME/libexec, $HOME/share に Estraier がインストールされた。 Estraierのドキュメントを参考に、 試しに検索インデックスを作ってみる。
$ estindex register -hsuf '*' tdiary $HOME/diary/cache/html estindex: INFO: tdiary: registration started estindex: INFO: tdiary: database opened: fsiz=729516 dnum=0 wnum=0 bnum=114667 chasen: can't open .chasenrc, .jumanrc, or /home/machu/local/etc/chasenrc
う〜ん。早速エラーがでてしまった。
chasenrc
エラーメッセージには、 chasenrc が見つからないと書かれている。 確かに、chasen をインストールしたときにも chasenrc は入っていないようだ。 色々と調べていたら、分かち書きをするための辞書ファイルを、 別にインストールしなければいけないことがわかった。 で、Chasenの配布ページにおいてある、 ipadic をインストールする。
$ cd $HOME/src $ wget http://chasen.aist-nara.ac.jp/stable/ipadic/ipadic-2.6.3.tar.gz $ tar zxvf ipadic-2.6.3.tar.gz $ cd ipadic-2.6.3 $ ./configure --prefix=$HOME $ make $ make install
これで、 $HOME/etc に chasenrc が、 $HOME/lib/chasen/dic/ipadic に辞書ファイルがインストールされる。 先ほど失敗したインデックスの生成も無事に実行できた。
$ estindex register -hsuf '*' tdiary $HOME/diary/cache/html estindex: INFO: tdiary: registration started (中略) estindex: INFO: tdiary: registration completed successfully $ estindex relate tdiary estindex: INFO: tdiary: relating started (中略) estindex: INFO: tdiary: relating completed successfully