-
[セバスチャン スラン]検索エンジンの構築方法についてどう考えますか?
-
以前構築したんでしょう?
-
[セルゲイ ・ ブリン - Google共同創設者]そうだよ。検索エンジンを構築する上で
-
最も重要なのは
-
始めに十分なコーパス(大量の言語データ)を用意することだと思う
-
我々の場合 いまより遥かに小規模だった world wide web を使った
-
でも当時は最先端で新鮮だった
-
予想もしなかったことがいろいろあったよ
-
[デビッド ・ エバンス]というわけで最初の3ユニットの目標はコーパスの構築です
-
ウェブ上を漁って 検索エンジン用のコーパスを構築したいのです
-
それをするのがウェブクローラです
-
ウェブクローラとは ウェブ上のコンテンツを収集するプログラムです
-
ブラウザーで閲覧するウェブページといえば、このようなものを思いつくでしょう
-
ウェブページの例としてudacityのサイトをあげることにします
-
サイトには画像・テキスト等 大量のコンテンツがあります
-
これらは全て あなたがページを要求するとあなたのブラウザにやって来ます
-
重要なのはリンクです
-
リンクとは、他のページに移動するものです
-
なので私達は よくある質問へのリンクや
-
CS101のページへのリンクを設けています。
-
ページには他にもいくつかリンクがあります。
-
リンクは下線付きで表示されるかもしれないし
-
ブラウザーの設定によってはされないかもしれません
-
しかしリンクの重要な点は
-
他のウェブページへのポインタとなるということです
-
そしてその他のウェブページにもリンクがあるので
-
このページにも別のリンクがあることになります
-
私の名前があるので、多分私のホームページへ行けるでしょう
-
私達のウェブクローラで見つけられるページは全て
-
リンクを辿ることによって発見されます
-
なのでクローラはウェブ上の全てのページを見つけるわけではないが
-
開始地点(シード)となるページが良ければ
-
多くのページを見つけられるでしょう。
-
クローラが行うのは あるページから開始し
-
そのページの全てのリンクを発見し 他のページへ辿ります
-
その他のページ上でまたリンクを辿り
-
更に別のページを見つけます。これらのページ上にはさらに多くのリンクがあるでしょう
-
最終的にウェブ上にある大量のページを収集するのです
-
これがウェブクローラを構築するにあたってしたいことです
-
ある開始地点(シード)ページから
-
ページ上のリンクを抽出し
-
リンクを辿って他のページ群へ行き
-
そのページ群のリンクを収集
-
またリンクを辿って、全部集めたい。
-
やることが多いように思えますが
-
最初のクラスで全部やるつもりはありません
-
この最初のユニットで扱うのは リンクの抽出だけです。
-
まずはテキスト群に注目します
-
その中にはURLを持ったリンクがあるでしょう
-
そのURLを見つけたいのです
-
そうすればの次のページを要求できます。
-
第2ユニットでの目標は
-
抽出を続行できるようにすることです
-
あるページに大量のリンクがあったら、それらを全て見つけたいですよね
-
これがユニット2でやることです
-
全てのリンクを抽出するために、抽出作業を続ける方法を見つけるのです
-
ユニット3では 1つのページから他のページへ飛びます
-
なのでユニット2が終わる頃には、あるページ上の全てのリンクをプリント(表示)できるようになります
-
ユニット3では、探索を続行するために、これら全てのリンクを収集し
-
最終的にクローラの助けで大量のページを収集したいのです
-
なのでユニット3の終わりまでに、私たちはウェブクローラを構築します
-
コーパスを構築する方法もあります。
-
残りの3つのユニットでは 実際にクエリに応答する方法を見ていきます。
-
なのでユニット4 では 上手い応答のさせ方について理解します
-
キーワードを検索した際に そのキーワードが現れるページのリストを
-
応答として得たいのです。
-
ユニット5でその方法を理解します。コーパスが大規模なら 合わせて大きくなります
-
ユニット6でやりたいのは 単にリストを見つけることではありません
-
最高のリストを見つけたいのです
-
よってキーワードが出現する全てのページをランク付けする方法を考えます
-
というわけで少し先の見通しを説明しました
-
ただユニット1で行うのは
-
ページからのリンク抽出方法を理解することだけです
-
私達が最終的に組み立てる検索エンジンは
-
実際に機能するものになるでしょう
-
Googleのような検索エンジンと同様の主要要素を備えるでしょう
-
たしかにGoogleほど強力にはならないでしょう
-
シンプルにしたいからです
-
コードを少し書くつもりです
-
私達の本来の目的は
-
検索エンジンの構築ではなく
-
検索エンジン構築を目標に進む過程で
-
コンピューター科学について学び
-
プログラミングについて学んでいくことなのです
-
そうすることで私達が学習することは
-
多くの問題を解決することを可能にしてくれるでしょう