«前の日記(2004-08-03 (火)) 最新 次の日記(2004-08-05 (木))»  

まちゅダイアリー


2004-08-04 (水)

さくらインターネット その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
Tags: memo

Estraier での日記内検索

Estraier も無事にインストールできたので、 この日記を Estraier で検索できるようにした。 さくらのレンタルサーバを借りている間の限定だけど。 サイドバーの「高度な検索」で使える。

(ちなみに、tDiaryとの連携方法は、徒然日記 - Estraierで日記検索に詳しく書かれている。)

使ってみた感想としては、当然ながら全文検索する tDiarySearch よりも速い。 検索に要した時間は0.01秒だった。 それに、検索結果に関連語句が表示されていて、それをクリックしていくことで絞込みができるのも面白い。

ただ、この日記くらいの文書量(191文書 6052語句)だとややオーバースペックかな。 それから、これは分かち書きの問題だけど、辞書に載っていないひらがなの固有名詞(例えば「ただのにっき」)を検索すると精度が落ちちゃう。 う〜ん、 Chasen の使い方が悪いのかな?

検索結果の Related をクリックすると、 その日記に関連する日記を表示してくれる。 これはうまく使えば面白そうだな。

Tags: tDiary
本日のツッコミ(全5件) [ツッコミを入れる]
tanichu (2006-09-01 (金) 18:12)

非常に参考になります!ありがとうございます!<br><br>しかし,うーん.<br>さくらインターネットのスタンダードプランで同様に進めてるんですが,どうしてもchasenのmakeの段階でエラーをはいてしまいます.<br><br>どうしてでしょうねぇ・・.<br><br>dartsdic.cpp: In function `int da_build_dump(da_build_t*, char*, FILE*)':<br>dartsdic.cpp:180: error: ISO C++ forbids cast to non-reference type used as lval<br><br>ue<br>*** Error code 1<br><br>Stop in /home/(ユーザ名)/src/chasen-2.3.3/lib.<br>*** Error code 1<br><br>Stop in /home/(ユーザ名)/src/chasen-2.3.3.<br>*** Error code 1<br><br>Stop in /home/(ユーザ名)/src/chasen-2.3.3.<br><br>もしコメントいただけたら,ありがたいです.

まちゅ (2006-09-02 (土) 17:02)

よく分かりませんが、これでしょうか。<br>http://chasen.naist.jp/hiki/ChaSen/?%BC%C1%CC%E4%C8%A2

tanichu (2006-09-29 (金) 02:53)

あぁ〜.<br>それのようでした!<br><br>http://journal.mycom.co.jp/column/yetanother/045/<br><br>を参考にしつつ解決させましたが,それと同じことのようですね!<br>ご迷惑をおかけしました.<br>ありがとうございました.<br><br>遅ればせながら御礼申し上げますm(_ _)m

(2007-04-01 (日) 07:00)

ありがとうございます、このエントリのお陰で無事chasenインストールに成功しました。configureで何度もOperation not permittedと言われて泣きそうだったのですが、なんとかなりました!(最初にソースを展開した場所がマズかったっぽい)<br>それだけなんですが、あまりに嬉しいのでお礼を残していきます^^;

まちゅ (2007-04-01 (日) 15:32)

お役に立ててなによりです。<br>インストールはハマる時はハマりますよね…。