2005/01/24, , 日経パソコン, 165~168ページ, 有, 4837文字 4ページ
前回は、検索エンジンの全体像を見ていきながら、良い検索エンジンについて考察した。今回から、それぞれの処理コンポーネントを「検索処理」「クロール処理」「インデックス処理」に分解して、その仕組みを解説していく。今回は、皆さんが検索窓に言葉を入れてから、答えが返ってくるまでの一連の流れ「検索処理」を取り上げる。
「検索処理」の流れを知る
GoogleやYahoo!などの検索エンジンは、膨大な文書情報をあらかじめ整理して、索引情報(インデックス)としてデータベースに蓄積している。索引情報だけでなく、文書そのもののコピーも、ドキュメントサーバーという場所に前もって格納している。
利用者が検索窓に言葉を入力すると、検索エンジンは、まずそこからキーワードを判別して、取り出す処理をする。キーワードが確定すると、そのキーワードを基にインデックスと呼ばれる索引テーブルを探し始める。このデータベースは、キーワードから文書を逆引きするテーブル(inverted index)などから構成されている。これらのテーブルをたどりながら、検索するキーワードを含んだ文書を見つけ出す。
文書の並び順は、大まかに言えば、ページ単位の重要度を示す点数と、キーワード単位の重要度を示す点数を合算して決定される。ページ単位の重要度は、主にリンク情報を基に点数付けされている。一方、キーワード単位の重要度は、キーワードの登場頻度、文書内での位置、フォント情報、リンクキーワードなどから決められている。
文書の並び順が決まると、今度は、ドキュメントサーバーから、画面に表示する「見出し」や「説明文」の情報を取り出す作業を行う。このとき検索画面に表示される説明文は、キーワードを含んだ文章が自動的に取り出される仕組み(KWIC = key-words-in-context)になっている。
これらの情報を、画面に組み立てて、ユーザーに検索結果として返す。これが一連の検索の流れだ。
インデックスサーバーは、図書館の図書カードのようなもので、ドキュメントサーバーは「書籍」そのものに当たる。検索エンジンはまさにインターネットの文書をため込んだ図書館と言える。
この流れを見ると、検索エンジンが検索しているのは、あらかじめため込んでおいた情報であって「今この瞬間のインターネット」ではないということが理解できるだろう。「検索エンジンにひっかからない」というのは、図書館に本が登録されていない状態を意味しているのだ。
ツールからサービスへ
検索エンジンの仕組みを図書館に例えたが、このような比喩で説明するのは、もう時代遅れかもしれない。
20世紀の大学生は図書館で調べ物をするのが当たり前だったが、21世紀にはそんな学生を見つけるのが難しそうだ。
文書検索は、限られた知識人だけのものではなくなり、全員が使える道具になってしまった。いわば「国民皆リサーチャー時代」になったわけで、そんな時代の検索エンジンはもはや情報の図書館で調べ物をする「ツール」の域を超えて、新しいビジネスを生む「サービス」あるいは「メディア」になっている。
そういった視点で、検索エンジンの画面を改めて眺めてみると、検索結果以外に、実に多くの関連サービスが表示されていることに気が付く。
キーワードに関連した広告を表示するのは今や当たり前。ほかにもGoogleでは、検索語句に関連した最新ニュースも表示してくれる。これは、昨年から始まったGoogleニュースと連動したサービスだ。
最近、Googleには翻訳サービスが加わった。英語文書の横に添えられた「このページを訳す」というリンクをクリックすれば、日本語に翻訳した文書を見ることができる。
英語版のGoogleのサービスでは、関連する商品検索(Froogle)の情報も表示されるようになっている。
検索の周りには、ビジネスの種が、たくさん散りばめられている。
検索エンジンが図書館とするならば、図書カードをめくっていると司書から「お買い得の商品」を薦められたり、「最新のニュースをご覧ください」と促され、挙句の果てに「ひょっとしてつづりが間違っていますよ」と耳元で囁かれるような状態だ。静かに調べ物をすべき図書館にしては、やけに騒がしい。
並列処理と分散処理
一つの言葉の検索処理だけを見ても、たくさんの仕事量があり、下手なプログラムでこれを実行すれば、相当時間がかかってしまうだろう。Googleの場合は、これらの検索要求を、世界中で一日に数億回のレベルでこなしている。だからといって、Googleがスーパーコンピューターを購入しているわけでは決してない。
Googleが使っているコンピューターは、普段私たちが使っているマシンとそれほど変わらない。安価で汎用的なPCサーバーをたくさんつなぎ合わせて、並列処理を行い、処理速度を速めている。
前ページの「Googleの検索の流れ」の図も、一つ一つ順番に処理されるわけではなく、言葉を入れた瞬間に、それぞれの仕事に振り分けられて並列処理される。広告専門のサーバーや、スペルチェック専門のサーバーがあり、それぞれに処理した結果をつなぎ合わせて、最後に画面を構成する。
もし、Googleが高価なスーパーコンピューターを使って検索サービスを構築していれば、コストが高くなりすぎて事業としては成り立たなくなっていただろう。ビジネスの種を散りばめる表側の工夫の裏側では、コスト抑制を実現するコンピューターの進歩がある。
システムやインフラは、検索エンジンにとって見逃せない重要な要素だ。連載の後半でまとめて取り上げる予定だ。
日本語処理の難しさ
そもそも検索される言葉は、それほど単純なものではない。「検索語」というと一語のように思えるが、実際に検索窓に入力される言葉は、一つの単語ではない場合も多い。
入力する言葉といっても、「ラーメン」と入れる人もいれば「おいしいラーメンの店」と入れる人もいる。その場合、検索の言葉は「おいしい」「ラーメン」「店」と複数のキーワードに分けられることになる。
例えば英語の場合は、単語はすべてスペースで分かれるため、コンピューターはキーワードを判別しやすく都合が良い。時制などの変化形が多く、一つの単語がたくさんの意味を持つという英語なりの難しさはあるものの、単語を取りだす処理は日本語より英語の方が格段に易しい。
一方、日本語は単語の区別がはっきりしない。例えば、「株価最安値 最高値」と検索する場合、この中には複数の言葉が交じっている。人間が書いた言葉を分解して、最小の意味の単位(形態素)に振り分ける処理を、形態素解析といい、日本語の場合には、これが難問だ。
Googleのキャッシュ画面を見ると、Googleが日本語をどう解析しているかが分かる。この場合、「株価」+「最」+「安値」+「最高」+「値」と区切っていた。Googleは、5個の単語を区切って別々に処理し、その結果を組み合わせて一つの結果にまとめて出している。
Googleが登場したとき、日本で全文検索に取り組んできた企業や研究者は一様にショックを受けた。従来、海外企業には難しいと考えられていた、日本語処理が十分な品質で実装されていたからだ。
日本語処理する英企業
しかし、この言語処理部分は、実はGoogleが開発した独自技術ではない。ベイシス・テクノロジー(Basis Technology)という英ケンブリッジに本社を置く企業が言語解析技術を提供し、Googleの裏側で動いているのだ。
日本の京セラも出資しているこの企業は1995年に設立され、世界的に言語処理のソリューションを提供している。Googleだけでなく、米軍もこの会社のサービスを利用しているほか、その顧客リストには、米ヤフー、米アマゾンドットコム、米AOLなど名だたる企業が並んでいる。
新しい検索サービスを試験運用中の米マイクロソフトのMSNも、その言語処理部分に、ベイシスの技術を使っていると発表した。世界的規模の検索エンジンが実現されている背景には、こういった隠れたグローバル企業の存在がある。
ベイシスの形態素解析処理は、確かに優れているが、それでも、人間の感覚とは一致しないことも多くある。
先ほどの例で、「最安値」と「最高値」は、単語の区切り方が違っていることに気づいた人も多いだろう。人間が見れば、株価との組み合わせで、「最高値」と「最安値」は、それぞれ独立した株式用語に見える。しかし、株価と切り離して「最高値」だけを取り出せば、「最高の値」と解釈されるときもある。
Googleで行われている形態素解析は、前後の言葉との関連までは判断できないようだ。
今後は、日本語処理の精度を上げるため、前後の言葉との関連性から「意味」を判別する言葉の処理が必要になる。
gooが提供する独自機能
NTTレゾナンドが提供する検索サービスgooは、独自の検索技術をあきらめて、Googleを使っている。しかし、そこに独自の日本語処理を付加して提供している。
例えば、Googleでは「ラーメン」と「拉麺」は別々の検索として処理されてしまう。でも「拉麺」と入力するのは日本語変換の手間がかかるし、この検索方法を思いつかないかもしれない。
gooの場合は、こういった状況を助けてくれる。gooの画面で「ラーメン」と入力すると、Googleで検索処理する前に、2つの単語「ラーメン」「拉麺」をgooが抽出して、処理をしてくれる。
gooには、これ以外にもGoogleと組み合わせた興味深いサービスが提供されている。キッズgooという子供向けサービスでは、日本語にふりがなを振る、という高度な日本語処理が実現されている。
子供のインターネット利用が増え、インターネットで提供される情報の安全性が問題になっているが、gooはこのエリアでも、独自のフィルタリングの仕組みを実現している。
キッズgooでは、サイトに書かれている言葉やURLを判断し、安全なサイトだけを抽出し、危険なサイトを取り除くサービスが提供されていて、この部分でも、日本の独自処理技術が実現されている。
確かに、Googleの登場で、検索エンジンは、以前より格段に優れたサービスになった。しかし、日本語処理については、まだまだ取り組むべき課題がたくさんある。
Googleを運営する米グーグルは、昨年、日本に研究開発の拠点を設けて、優秀な日本人技術者を集めるという発表をした。「日本での開発拠点の最重要課題は、まず日本語の検索の質を高めることだ」と、グーグル自身も述べている。検索技術は、まだまだ向上する余地がありそうだ。
検索処理の基本的な仕組み
Googleの検索結果で表示されている情報
キッズgooが行う独自の検索処理技術
Googleの検索の流れ
入力されたキーワードを解析
言語の判断 辞書に照らして解析
+-*/など演算子があれば
数式として演算処理
言葉なら検索処理を実行
スペルチェックなどヒントを表示
入力したキーワードごとに
広告を呼び出し
辞書サービスやニュースの呼び出し
ファイルを見つける
ヒットした文書を並べ替え、
結果の表示順を決める
ヒット件数や応答時間など
統計情報を集計
画面を構成して結果を表示
検索エンジンがキーワードを処理する仕組み
Googleの形態素解析処理
(例1)
株価最安値 最高値
単語を
分解処理
株価
最
安値
最高
値
(例2)
プリンタ
表記のゆれを処理
プリンタ
プリンター
gooはさらにキーワードの前処理を実施
ラーメン
ラーメン
拉麺
大内 範行(おおうちのりゆき)
日本IBMからマイクロソフトを経てECジャパン設立。最高執行責任者。検索マーケティング業界をリードする。著書(共著)に、Googleの使い方を解説した「グーグる」