ウナギのキーホルダーと、ウナギを食べる。検索とコンテキスト。

EzoGPからリリースしたopenBusinessSuite-lite(obs-lite)の利用を検討してくれている友人から面白い話を聞かされた。
obsには、商材の検索機能があるのだが、以下の図のように

  • カテゴリー検索
  • キーワード検索(複数語でのAND検索)

を持っている(デモはこちら)。

もともとカテゴリー検索だけサンプル実装していたのだが、その友人からキーワード検索も実装してみてくれ、といわれて追加したという経緯がある。デモの仕様は、「どっちかどっち」になっていて、キーワードを入れるとそちらを優先させている。

友人はobs-liteを観光案内のページに使ってくれる予定なのだが、彼がいうには、「ウナギ」と入力したときに、「ウナギを食べる」と「ウナギのキーホルダー」が出てくるのは困るとのこと。
デモでは、単純に、コンテンツのサマリーをWHERE LIKE(デフォルトのB-Tree検索)で検索しているだけなので、非常にノイズが入ってしまう。これでは、当然、上のようなことになる。
観光サイトなので、食べ物屋さんとお土産屋さんがあるので、上のようなことがおこるとのこと。ノイズに関しては、以前のログで書いた形態素解析(日本語を解析して、品詞を抽出すること)であるとか、完全転置インデックスだとか、そういう話になるのかな、と思う。「ウナギを食べる」は

ウナギ を 食べる

で、名詞、助詞、動詞に分解される。「ウナギのキーホルダー」は

ウナギ の キーホルダー

となって、名詞、助詞、名詞に分解される。だが、これらそのものでは、友人の要請の回答にならない。友人は、コンシューマーの頭の中にあるコンテキストを話題にしているのだから、それをそのままコンピュータが推論することはできないだろう。Wikipediaの形態素解析のページに「単語の連結」に関してマルコフチェーンのモデルが紹介されいる。ググってみると、特許を解説したページにぶつかった。これも条件付き確率をモデル化しているので、先のマルコフとほぼ同義と思われる(筆者は大昔、確率統計の研究室に所属していた)。
でも、多分、こういう方向性は現実的ではないのだろうな、と思う。

単純に、サジェストを使えばいい、というインターフェイス的な話になりそうだが、その場合でも、Googleがやっているみたいに、単語の連結を問題にしなくちゃならない。Googleは集積した検索ログからこれを吐き出してるのだと思われる。この場合には、

検索ログ => 形態素解析 => 品詞の選別 => 連結した名詞(動詞)のカウント

という格好なのだろうか。MapReduceの単純なコードになりそうだ。

検索ログを溜めるところから始めれば、面白いことがあるかもしれない。