これ一冊で圧縮データ構造から機械学習までわかる!?「検索エンジンはなぜ見つけるのか」がすごい

話題の検索エンジン教科書「検索エンジンはなぜ見つけるのか 知っておきたいウェブ情報検索の基礎知識」を購入した(@hillbigさんが推薦文を書いていると聞いて気になっていた。)。
本書は検索エンジン超初心者向けの教科書。数式はもとよりコンピュータの用語をほとんど使わずに、わかりやすく検索エンジンの要点を説明している。とはいえ決して子供だましではなく情報技術を扱う人なら知っていないといけない(けど知らない人も多い)ことを誤魔化さずにきちんと書いてくれている。
また本書では専門用語を意図的に避けていてイメージを掴みやすいような平易な語に置き換えて説明している。これは賛否あると思うけれど、各ページには対応する専門用語も併記されているし、きちんと勉強するときに読むべき論文等もきちんと紹介されている(しかも的確!)。
本書で扱うテーマはクローラやインデックス作成、スコアリングなど検索エンジンの基礎はもちろん、圧縮データ構造や機械学習など広い範囲をカバーしている(くどいようだけれど数式を使わずに説明している!)。
初心者はもちろん、ある程度詳しい人も苦手分野をカバーする目的で活用できるし、知っている分野でも「こう説明するとわかりやすいのか」的な発見があって面白い。オススメ。
以下、目次のメモと内容について少々。

第1章 検索エンジンの目指すもの
  1.1 ウェブの海から誕生した検索エンジン
  1.2 「最善の情報」提供を目指す2つのサービス
  1.3 3つの要件: もれなく・すばやく・的確に
  1.4 クイズの答え: 「表現の自由」と「知る権利」

第2章 集める
  2.1 もれなく検索するために
  2.2 制度に支えられる図書館の情報収集
  2.3 「つて」が頼りの検索エンジンの情報収集
  2.4 ウェブの世界は灰色の海
  2.5 白と黒をより分ける力がクローラの性能を決める
  2.6 10年後も灰色のまま?
  2.7 クイズの答え: 手段を選ばない

第3章 整理する
  3.1 分類によって整理する
  3.2 全文検索に備えて整理する
  3.3 とばし読みという工夫
  3.4 索引という工夫
  3.5 コンパクトに詰め込む工夫
  3.6 さらに多くの文書から、さらに多くの人に
  3.7 最速の方式はどれ?
  3.8 クイズの答え: 半分ずつ絞り込む効果

第4章 検索する
  4.1 最善の情報を見つけるために
  4.2 「正確に用語がわかっている」質問に答える
  4.3 文書の「内容」からスコアを決める
  4.4 スコアを決めるのは著者?評価者?
  4.5 文書に対する「評価」からスコアを決める
  4.6 「自分の言葉で言い切れる」質問に答える
  4.7 「一言では表せない」質問に答える
  4.8 クイズの答え: ソクラテスのジレンマ

第1章はイントロダクション的な内容。専門外の人にもわかりやすいように図書館と検索エンジンを対比して説明している。わかりやすい。検索エンジンの目指すべきポイントが書いてあるのできちんと読んで意識を高めたい。
第2章はクローラの仕組みの解説。加えてスパム・コピーサイト判定や訪問スケージュール、言語判定など初心者向けの本では端折られがちな話題もばっちり解説されてる。すばらしい。また、これらの話題に関連して分類問題を解くことの重要性を説明した上でベクトル空間モデルによる分類、機械学習による(超平面で事例を分けるような)分類についても解説してある(数式は使ってません!)。
第3章はインデックス作成についての解説。本書で最も注目すべきなのがこの章。文字列検索(Boyer-Moore法)から始まって、検索向けのデータ構造(SuffixArray, DoubleArray)、転置インデックス、圧縮データ構造(Compressed Suffix Array)、分散環境の話までとにかく盛りだくさんでしかもわかりやすい。特に圧縮データ構造については単調増加列の話から始まってCSAのインデックスが何故単調増加するのかまで逃げずに説明されていてすごい。俺のCSAがこんなにわかりやすいわけがない!?という感じ。CSAは以前解説を書いたこともあったので、これをわかりやすく説明することの難しさは見にしみてわかっていただけに本書を見てとても驚かされた。

参考:
「第3回自然言語処理勉強会@東京」でCSAについて発表します - EchizenBlog-Zwei

第4章はスコアリングやユーザ意図についての解説。スコアリングはコンテンツの内容で評価すると不正がおきやすいのでPageRankのようなリンク情報をつかうようにしたよという話が書いてある。ユーザ意図についてはクエリがはっきりしている場合。正確なクエリでない場合(スペラーや関連語提示が必要)。クエリを思いつくにいたらない場合(ユーザの行動履歴の利用、レコメンドなど)。と場合分けしてそれぞれ解説してある。とくにレコメンドについてはPLSIの概要(=潜在変数という概念)が説明されていて驚いた(くどいようですが数式はありません!!)。
まとめると第1章で目的を明確にし、第2章、第3章前半で実用的な検索エンジンを実現する上で必ず遭遇するテーマについて解説。残りはプラスアルファ的な内容で第3章後半で速度、データサイズなど定量的に測れる部分を、第4章で検索結果の質やユーザ意図など定量的に測りにくい部分を扱っている。
というわけで本書は検索エンジンにとどまらず豊富な話題を一冊にまとめ、しかも数式も使っていないのに本質的な部分はわかりやすく説明されているという贅沢な一冊となっている。初心者には当然オススメだし、情報検索での最重要ポイントが纏まっているので専門でやっている人こそ手元においてうっかり道に迷っていないか確認するために活用すべき!ではないかと思う。