y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

HyperEstraierの関連語表示機能

HyperEstraierを評価している。
前回までのところで、文書フィルタやクローラの設定を完了し、一通りの機能を試すことができたのだが、デモサイトと比べて、「おや?これは」という部分があった。
まず、ジャンルっていうチェックボックス
インデックス内に文書属性を任意に設定して、全文検索との組み合わせで絞り込みができるようだ。
ジャンルのやり方はマニュアルに書かれていて分かった。インデックスを作成する際の指定で-aa @genre htmlみたいにすると、文書DBのgenre属性が設定できる。

それから、こっちの方が気がかりなのだが
Related terms:あれ、これ、それ
みたいに書かれている部分。これ、検索に指定した単語との関連語が表示されるんじゃないか?
どうやって実現するんだろう・・・と設定ファイルを見たり、テンプレートを見てみたり。
結局、(想像通り)mecabを利用するようにHyperEstraierのmake時に指定がしてあり、かつインデキシングの設定で-um(形態素解析器を利用)が指定されていないとダメ。

■手順
mecab(mecab0.97)とmecabで使用する辞書(mecab-ipadic2.7.0)をインストール。
・HyperEstraierをリビルド再構成
 ./configure --enable-mecab → make → make check → make install
・インデックスの再作成
 ディレクトリ毎バコッと削除し、
 /usr/local/bin/estcmd gather -cl -il -ja -sd -cm -kn 32 -um -aa @genre html /var/www/wwwidx /var/www/html

■結果
これで、ばっちり関連語が出てくるようになった。
上記例ではジャンル属性を設定して、検索時にカテゴリ(ジャンル)を選択できるようにした。
(/var/www/html以下のコンテンツのジャンルをhtmlにして、ファイルサーバ内のコンテンツをfile、クロールしたWebコンテンツはWebなんていう設定にするつもり)
detail表示した時にRelated termに出ているのは、keywordsと同じ。
これはこれで、検索結果一覧のタイトルリンクでポップアップさせると、代表キーワード(サマリー)みたいで良さそう。
形態素解析で分離された単語で、出現頻度が高いものが、文書キーワードとしてポップアップするんだから、内容把握には最適な情報だね。

■今回新たに分かったこと
形態素解析で分離したキーワードを出現頻度順で並べ、文書間でこれらのキーワードのベクトル値を評価することで、文書の類似度を判定しているらしい。
これって、amazonで「これを買った人はこれも」と同じで、アイテム間やユーザ間の特徴をパラメータ化して計算(余弦の大小を評価)する方法だ。
レコメンドシステムっていうんかい?Web+DB Pressで特集されてたっけ。

この手のテーマ(知識情報処理っていうんかい?)って面白いなぁ。
今後、こっち方面で飯を食っていきたい。