前後のエントリ

2006年02月14日(火)

似た記事検索への長い道のり

ずっとお世話になっていた「Google Similar」(drk7.jpさん)がサービスを終了しました。 長い間ありがとうございました。 で、実は以前からこの手の「似た記事検索」を自力で実現できないものかと模索してたんですよ。 構想としては、

  1. 本文中からそれらしいキーワードを抽出する
  2. そのキーワードでサーチエンジンに問い合わせる
  3. 返ってきた答えをそれらしく整形して出力する

こんな感じだと思うんだ。 それらしく整形はとりあえず置いておいて、サーチエンジンへの問い合わせは「Yahoo!デベロッパーネットワーク」あたりを使えばよさそう。 もちろんGoogleでもいいんだけど。 どっちでもいいね。 問題はキーワード抽出です。 あちこちさまよいながら見つけたのが「”専門用語(キーワード)自動抽出システム”のページ」。 「TermExtract」というこのシステムは、形態素解析されたテキストからキーワードと思われるものを抽出してくれます。 ここで初めて形態素解析ソフトという便利なものが存在することを知りました。 やー世間は進んでるねぇさすが21世紀。 「ChaSen」か「MeCab」を使えばよいようなので、どちらがいいか分からないので小宇宙を燃やして第六感を越えるセンスでMeCabに決定。 エイヤで決めることもたまには必要ですよ、ええ。

MeCabは説明書通りでインストールできそうです。 レンタルサーバで動かす場合はsuになれない(と思う)ので自分のディレクトリだけで何とかするように設定。 「configure --prefix=/home/hogehoge/tools --with-charset=utf8」みたいな感じでconfigureしてmake、suせずにmake installでなんかそれらしく動いてます。 TermExtractはインストール方法がよく分かりませんでしたが、たぶん必要なのはTermExtractディレクトリの内容だけのような気がするのでまんまコピーしました。 perlの文字コードの扱いはスクリプトファイルそのものがデフォルトになるような感じなので、MeCabを使う場合にメインに使うことになるMeCab.pmをutf8で保存してしまえばきっとなるようになるさ。 ここで実験すると、どうもアルファベットに弱い。 MeCabの出力と見比べると「未知語」の扱いがおかしいみたいだ。 さっきのMeCab.pmの中を見ると「m語」なる怪しい単語がある。 これを「未知語」に置換してやると…あ、なんかいい感じになった。 サンプルのex_mecab.plをちょっといじって上位3つを空白区切りで出すようにしてみたら「キーワード MeCab 感じ」のような答えになります。 最適なキーワードってわけじゃないけど、私の書いた崩れたテキストを喰わせてこの結果ならまあそれなりというか、むしろ大健闘だと思います。

とりあえずコマンドラインから、既に存在するテキストファイルをMeCabに喰わせてTermExtractで処理することはできるようになりました。 問題はこれをMovable Typeと組み合わせて記事のエントリ時、あるいは再構築時に自動的にキーワード抽出処理を実行できるかどうかってとこなんですよ。 プラグインのpost_saveコールバックとかいうそれらしい単語まではたどり着いたんですが、今のところそこでストップしています。 Movable Typeのプラグインて難しいって言うか作るのにperlソース with 英語ドキュメントを読む力が必須みたいな雰囲気をかもし出してて近寄りがたいです。

投稿者 ミキオ | 2006-02-14(火) 01:22:54 | [ウェブログ] | 2006年02月 | ツイートする

zenback

前後のエントリ