著者: 禅とコンピュータープログラミングの芸術
1 はじめに
検索エンジンはインターネットの重要な部分であり、情報検索ポータルとして、インターネット上で利用可能な大量の情報を提供します。Baidu は、9 億人以上のユーザー、7 億人以上のトラフィック、150 万以上の Web ページがインデックス付けされている有名な検索エンジンであり、中国最大の中国語検索エンジンです。2005 年の Baidu の誕生から今日まで、Baidu はインターネット上で最も活発なポータルの 1 つとなり、高品質の検索結果と豊富な機能を提供することでユーザーに良好なネットワーク環境を構築してきました。近年、Baidu は機械学習技術に基づく新しい検索エンジンである BaiDu AI オープン プラットフォーム (Baidu First) を立ち上げました。これは、企業が情報過多の問題を解決し、競争力を向上させるのに役立ちます。
では、Baidu はどのようにして大量のデータを収集しているのでしょうか? 検索エンジン分野に関する私の個人的な知識に基づいて、このブログ投稿の主なアイデアは次のとおりです。
- 基本概念: クローラーと Web ページの解析
- データ収集プロセス: HTTP リクエスト、ドメイン名解決、TCP/IP プロトコル スタック解決、コンテンツ圧縮、URL 正規化、データ ストレージ、リンク分析、キーワード マッチング、並べ替えとフィルタリング、結果の表示など。
- 分散クローラ アーキテクチャ: クラスタ スケール、ドメイン名解決、ロード バランシング、タスク割り当て、分散スケジューリング、失敗時の再試行、キャッシュ メカニズムなど。
- 検索エンジンベースのページ解析: HTML 解析、XPath 式、正規表現、BeautifulSoup ライブラリなど。
- データの大きさが機械学習モデルに及ぼす影響。
- ユーザーのクリック率予測モデルとその改善手法。
- 現場検索に最適な推奨システムモデルと設計。
- さらに追加予定です。。。
次のコンテンツでは、読者に深い理解とインスピレーションをもたらすことを期待して、これらの中心的な概念とアルゴリズムの実装の詳細を 1 つずつ説明します。
2. 基本的な概念と用語の説明
HTTPリクエスト
ブラウザは HTTP リクエストをサーバーに送信して、Web ページのコンテンツを取得します。HTTP (HyperText Transfer Protocol) は、ハイパーテキスト転送プロトコルです。Web サーバーからローカル ブラウザにハイパーテキストを転送するために使用される転送プロトコルです。アプリケーション層プロトコルです。一般的に使用されるバージョン番号は、HTTP/1.1 および HTTP/2 です。 。
ブラウザが HTTP リクエストを開始すると、まずドメイン名解決を実行してターゲット サーバーの IP アドレスを決定し、次に TCP/IP プロトコル スタックを介して接続を確立し、クライアントが HTTP リクエスト メッセージを送信し、サーバーがそのメッセージに応答します。 HTTP リクエスト メッセージ、そして最後にクライアント。エンドは HTTP レスポンス メッセージを受信し、Web ページのコンテンツを表示します。
HTTP リクエスト メッセージには次の内容が含まれます。
- リクエスト行: リクエストメソッド、リクエストURL、HTTPバージョンが含まれます。例: GET /index.html HTTP/1.1
- リクエスト ヘッダー (ヘッダー): キーと値のペアで構成され、1 行に 1 つのヘッダー フィールドがあり、リクエストに関する詳細情報をサーバーに通知します。例: ユーザーエージェント: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/56.0.2924.87 Safari/537.36
- リクエスト本文: オプション。特定のリクエスト データが含まれます。フォーム送信データなど。
HTTP 応答メッセージには次の内容が含まれます。
- 応答行 (ステータス行): HTTP バージョン、ステータス コード、および理由フレーズが含まれます。例: HTTP/1.1 200 OK
- レスポンスヘッダー(header):リクエストヘッダーと同じですが、レスポンス関連の情報が含まれます。例: Content-Type: text/html; charset=utf-8
- 応答本文 (body): 実際の応答内容が含まれます。HTMLソースコードなど。
DNS
ドメイン名解決 (DNS、ドメイン ネーム システム) は、ドメイン名を IP アドレスに変換するプロセスです。ドメイン名解決サーバー (DNS リゾルバー) は、まず自身のドメイン名データベースを確認し、ドメイン名に対応する IP アドレスが存在する場合は直接戻り、存在しない場合はドメイン名サーバーへのクエリを開始します。リクエストを受信した後、ドメイン名サーバーはローカル ドメイン名データベースとルート サーバー情報に基づいて対応する IP アドレスを照会し、それをクライアントに返します。
TCP/IPプロトコルスタック分析
TCP/IP プロトコル スタック (伝送制御プロトコル/インターネット プロトコル スタック) は、インターネット プロトコル スイートの一連の標準プロトコルを指し、連携してネットワーク間の通信を完了します。
クライアントが HTTP リクエストをサーバーに送信するとき、完了するには複数の手順を実行する必要があります。
- アプリケーション層: アプリケーション層は、ユーザーがアクセスするオブジェクトとタイプを決定し、HTTP 要求メッセージを作成します。
- プレゼンテーション層: 伝送路での送信に適したバイト ストリームへの変換を含む、HTTP メッセージのエンコードとデコード。
- セッション層: 接続の確立、終了、維持など、クライアントとサーバー間のセッションを管理します。
- トランスポート層: エンドツーエンドの通信チャネルを確立し、ポート番号を使用してさまざまなプロセスまたはサービスを識別します。
- ネットワーク層: パケットが宛先に正しく配信されることを保証するルーティング。
- データ リンク層: フレームをカプセル化し、ネクスト ホップ ネットワーク ノードに送信します。
URLの正規化
URL (Uniform Resource Locator) は、インターネット上のリソースを識別するために使用されるユニフォーム リソース ロケーターであり、通常は「プロトコル://ドメイン名またはIPアドレス: ポート番号/パス」で構成されます。
ブラウザが URL を入力すると、システムは URL の解析プロセス中に URL を正規化し、スペース、# 記号、% 記号、// 記号、/…/、./ などの無効な文字を削除して、URL を正規化する必要があります。 URL の読みやすさ。
データストレージ
大量のデータの場合、通常、分散ストレージ アーキテクチャが採用されます。Baidu の検索エンジンは、Hadoop、Spark、Hbase、TiDB、Redis などの多くのオープンソース分散ストレージ システムを使用しています。
その中でも、HBase はオープン ソースの NoSQL データベースであり、大量の構造化データと非構造化データの処理に使用され、迅速にクエリを実行でき、分散展開をサポートします。
リンク分析
リンク分析は検索エンジンの重要な機能です。検索エンジンのインデックス構築の過程では、各Webページと他のWebページとのリンク関係を計算する必要があります。このリンク関係はインターネットのグラフ構造を反映しており、検索エンジンが Web ページ間の相互接続を理解するのに役立ちます。
現在、多くの検索エンジンは複雑なアルゴリズムを使用してリンク関係を分析しています。ネットワークの複雑さの制限により、検索エンジンは Web ページの一部しか表示できないため、リンク関係の精度も制限されます。
3. コアアルゴリズム原理、具体的な操作手順、数式の説明
HTMLの解析
HTML 解析 (HTML パーサー) は、ブラウザーがダウンロードされた Web ページのコンテンツを表示可能なページに解析するプロセスを指します。Baidu 検索エンジンのページ パーサーは、単純な HTML パーサーを実装し、C++ 言語で最適化されています。
簡単に言えば、HTML パーサーの役割は、HTML ファイル内のタグ (タグ)、属性、コンテンツを、ブラウザーが読み取って表示できる DOM ツリーに変換することです。DOM ツリーは、HTML ドキュメントの構造、スタイル、コンテンツを表すために使用されるツリー データ構造です。
HTML パーサーの解析ロジックは次のとおりです。
- DOM ツリーのルート ノードを作成します。
- 現在のポインタ位置から最初のラベルを探し、ラベルが不完全な場合は次のデータの到着を待ちます。
- タグが存在する場合は、次のタグの検索を続けます。
- タグが存在する場合は、次のタグの検索を続けます。
- ラベルが の場合、そのラベルは無視されます。
- ラベルが
,则记录该标签的文本内容。 - タグが存在する場合は、イメージ要素を DOM ツリーに追加します。
- タグが の場合、ハイパーリンク要素が DOM ツリーに追加されます。
- ラベルが の場合は、入力制御要素を DOM ツリーに追加します。
- ラベルが の場合は、複数行の入力制御要素を DOM ツリーに追加します。
- ラベルが の場合、選択制御要素を DOM ツリーに追加します。
- ラベルが の場合
- タグがその他の通常のタグの場合は、そのタグ要素を DOM ツリーに追加します。
- 現在のポインタが次のラベルを指すようにします。
- すべてのタグが解析されるまで、手順 2 ~ 14 を繰り返します。
- DOM ツリーのルート ノードを返します。
XPath式
XPath 式 (XML パス言語式) は、XML ドキュメント内のノード (要素、属性、テキスト) の位置を検索するための言語です。検索エンジンのページ解析プロセスでは、DOM ツリーからデータを抽出し、ページ構造を分析するために、いくつかの XPath 式が使用されます。
XPath の構文規則は比較的複雑ですが、一般的に使用される式をいくつか紹介します。
- //tagname: 指定されたタグのすべての子孫ノードを選択します。
- tagname[@attr]: 指定した属性を持つタグを選択します。
3...//タグ名: 現在のノードの下にある同じレベルのタグとその子孫ノードを選択します。 - /tagname: 現在のノードの直接の子孫ノードを選択します。
- node(): ノード自体を選択します。
正規表現
正規表現は文字列パターンを記述するテキスト パターンであり、文字列の一致、置換、分割などの操作を実行するために使用できます。検索エンジンのページ解析プロセス中に、キーワードの抽出や概要の生成など、Web ページのコンテンツに対していくつかの正規表現操作を実行する必要があります。
美しいスープのライブラリー
Beautiful Soup ライブラリ (HTML および XML ファイルからデータを抽出するための Python ライブラリ) は、HTML または XML ドキュメントからデータを抽出し、Web ページのコンテンツを解析するために使用できる Python ライブラリです。Baidu 検索エンジンのページ パーサーも、Web ページを解析するために Beautiful Soup ライブラリを使用します。
検索結果の並べ替え
Baidu の検索結果の並べ替えプロセスは、主にユーザーの検索履歴、検索条件、関連性などの要素に基づいて検索結果を並べ替えます。並べ替えには主に 2 つの方法があります。キーワード一致に基づいた並べ替えとアルゴリズムに基づいた並べ替えです。
キーワード一致に基づく並べ替え: ユーザーが検索したキーワードに従って、Web ページ内での位置を見つけ、その位置に従って検索結果を並べ替えます。たとえば、キーワード「Apple」を検索すると、「Apple 携帯電話」という結果に表示される Web ページが上位に表示され、「Apple ノートブック」という結果に表示される Web ページが下位に表示されます。
アルゴリズムベースの並べ替え: Web ページのさまざまな特性と重みに基づいて並べ替えます。たとえば、Web ページの露出率、クリックスルー率、ページランク値に従って並べ替えます。
ユーザーのクリック率予測モデル
ユーザーのクリックスルー率予測モデル (クリックスルー率予測モデル) は、ユーザーが特定の Web ページをクリックするかどうかを推定するために使用される、検索エンジンにおける重要なアルゴリズム モデルです。たとえば、ユーザーが「Apple 携帯電話」という検索語を入力すると、検索結果には「Apple 携帯電話公式ストア」などのリンクが含まれる可能性があり、クリックスルー率予測モデルは、ユーザーがこのリンクにアクセスします。
現在、多くの検索エンジンは、クリックスルー率を予測するために線形回帰モデルを使用しています。線形回帰モデルは単純な機械学習モデルです。その仮定は、Web ページのクリックスルー率は、Web ページのクリックスルー率を線形結合によって決定できるということです。特徴。例えば、ユーザの検索履歴、検索条件、関連性、位置などがクリック率に影響を与える要因であると仮定すると、クリック率はこれらの要因によって決まる線形結合で表すことができる。
線形回帰モデルに加えて、デシジョン ツリー ベースのモデル、ニューラル ネットワーク モデル、協調フィルタリング モデルなどもあります。さらに、ロングテールに基づくクリックスルー率予測モデルなど、クリックスルー率予測モデルの改良版も存在します。
サイト内検索のレコメンドシステムモデル
レコメンデーション システム (レコメンデーション システム) は、ユーザーが興味のあるコンテンツを見つけ、Web サイトのトラフィックとコンバージョン率を向上させるのに役立つ、非常に注目されている研究方向です。Baidu 検索エンジンのオンサイト検索推奨システム モデルは、ユーザー行動データ、検索履歴データ、Web ページ行動データをさまざまな次元からの推奨戦略と組み合わせて使用し、ユーザーにパーソナライズされた検索提案を生成します。
現在、推奨システム モデルの分類には、協調フィルタリング、コンテンツベースの推奨、リコール戦略、ランキング戦略などが含まれ、多くの異なるアルゴリズムをカバーしています。推薦システムは広大な研究分野であるため、モデルや手法が異なれば効果も異なるため、さまざまな要素を総合的に考慮して最適な推薦モデルを選択する必要があります。