y-matsui::weblog

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

全文検索システムの検索結果精度を上げる方法(案)

全文検索システムの検索結果精度を上げる方法として、
・自然文解析技術の向上
・属性検索と全文検索のハイブリッド
・ユーザの参照数をランキング評価に採用する
・・などなどの方法があるのだが、そもそも検索結果精度が問題になるのは、「探しあてられるべき文書のタイトルや内容を、探す人間が十分に推測できない(適切なキーワードとしてマッチさせられない)」からだ。インターネットのコンテンツが誰によって書かれ、どのようなボキャブラリや知識体系を使っているかなんていうことは分かろうはずもない。
ここに、検索を実行する際のスキルが必要となる原因がある。
しかし、企業内の文書管理用途で全文検索システムを導入する場合は、ちょっと事情が違う。
企業内で「検索結果精度が問題」となるのは、どんな場合か。
まず思いつくのは、
・コード体系に従ったIDのような”キー”で確定検索ができない。
・業務件名の一部の単語を入れても内容の文書が出てこない
・作成者のような(当然あるべき属性で)確定検索できない
・・・とこんなところだと思うが、上記は本当に「検索結果精度が問題」なのではない。
本当の原因は「ルールに従って、文書が作成されていない」のが問題であり、検索エンジンが結果を漏らしているわけではない。N-gram形式の全文検索ならば、指定した単語を漏らすはずもないし、表記ゆれを補正して検索実行するタイプならば、拾いすぎることがあるにしても、漏れることは無い。

そこで、今、”コード情報を持ったフォルダ名”、”ファイルプロパティを全文検索条件に組み込むこと”と”業務件名”を形態素解析によって分解した要約(複数の単語を全文検索キーワードに設定すること)を使って、検索精度を高められないかを考えている。
これは、全文検索システムに高度な解析処理やら知能的な仕組みを作るのではなく、登録時に緩くルールを設定することで、確度をあげましょうという”ファイリングの工夫”に属するやり方。
ファイル登録は、フォルダへの単純なコピーで済ませたい(ファイル属性をいちいちデータベースに登録したくない。面倒だから)、データ作成時に付けていないプロパティを一括で付与したい、業務件名情報を使って確定検索に近い検索結果を返したい。
そこで、上記アイディアを元に、GoogleMiniの検索インタフェースをカスタマイズしている。
別窓で、タグクラウドや業務件名一覧(アドレス帳ならぬ”単語帳”)を開き、クリックした単語(複数)をGoogleの検索条件としてGET送信する。
Googleの検索は、RESTが徹底しており、検索実行時のパラメータをURLとして表現するので、こういった手法が使える。
業務件名をフルで指定する場合よりも、業務件名を複数の単語のANDで解釈した場合の方が、ヒット数は多くなる・・・が、長い件名をフルで指定する場合は、検索対象文書内にすべて正確な件名記述があるわけでもないので、これくらい緩い方が都合が良い。ユーザが想像で検索条件を正しく指定できなくても良い。(一覧から選択するだけなのだから)。
件名を形態素解析で分割した”複数単語指定”によって検索するメリットは、完全一致でなくても、似た内容の文書も拾ってきてくれること。これは類似検索と言えるのではないか。意外な副産物。不要な条件(単語)を削除するなりして、対象文書を広げることもできる。ユーザが検索キーワードを指定する際、単語を追加していくのは困難でも、不要と思われる単語を削除していくことは簡単にできるだろう。
IDを指定して検索したい場合には、パス名にIDを含むという構文をGoogleに指定するようにURLを加工すれば良い(はず)。
上記の方法で、「どれくらい属性検索に近い絞込みを実現できるのか?」を検証していく。