(58)【調査した分野】(Int.Cl.,DB名)
前記所与のデジタルコンポーネントの前記現在のコンテキストが、ユーザデバイスにおいて電子文書とともに提示するために前記所与のデジタルコンポーネントが送信された回数、および前記ユーザデバイスにおいて前記所与のデジタルコンポーネントがどの電子文書とともに提示されたかのうちの1つまたは複数に追加的に基づく、請求項1に記載の方法。
前記所与のデジタルコンポーネントが、ランディングページを指定し、前記所与のデジタルコンポーネントをスキャンするステップが、前記ランディングページがマルウェアを宿しているかどうかを決定するステップを備える、請求項1に記載の方法。
前記所与のデジタルコンポーネントの前記更新済みスキャン優先度が、前記所与のデジタルコンポーネントが次にスキャンされるまでの待ち時間を指定する、請求項1に記載の方法。
前記所与のデジタルコンポーネントの前記デフォルトのスキャン優先度と前記スケーリング係数との前記関数が、前記所与のデジタルコンポーネントの前記デフォルトのスキャン優先度と前記スケーリング係数との積を備える、請求項6に記載の方法。
前記マッピング関数が、前記所与のデジタルコンポーネントの前記状態がどのくらいの頻度で変化すると予測されるのかに基づいて、前記所与のデジタルコンポーネントの前記更新済みスキャン優先度を規定するデータに前記所与のデジタルコンポーネントの前記現在のコンテキストをマッピングする、請求項5に記載の方法。
前記所与のデジタルコンポーネントの前記状態がどのくらいの頻度で変化すると予測されるのかが、複数の特定のデジタルコンポーネントの各々に対して、前記特定のデジタルコンポーネントがスキャンされたとき、スキャンしたときの前記特定のデジタルコンポーネントの前記状態、およびスキャンしたときの前記特定のデジタルコンポーネントの前記コンテキストを特徴づける、ロギングされたデータを処理することによって決定される、請求項8に記載の方法。
前記マッピング関数が、前記所与のデジタルコンポーネントの前記現在のコンテキストに基づく前記所与のデジタルコンポーネントが次回スキャンされる前に前記所与のデジタルコンポーネントの前記状態が変化する可能性を使用して、前記所与のデジタルコンポーネントの前記更新済みスキャン優先度を規定するデータに前記所与のデジタルコンポーネントの前記現在のコンテキストをマッピングする、請求項8に記載の方法。
1つまたは複数のコンピュータによって実行されたとき、前記1つまたは複数のコンピュータに動作を実行させる命令を記憶する1つまたは複数のコンピュータ可読記憶媒体であって、前記動作が、
複数のデジタルコンポーネントの中から所与のデジタルコンポーネントを選択することであって、
前記デジタルコンポーネントは、デジタルコンテンツまたはデジタル情報の個別単位であり、
前記複数のデジタルコンポーネントの各デジタルコンポーネントが、前記デジタルコンポーネントをスキャンするための現在の優先度を規定する現在のスキャン優先度を有し、
前記所与のデジタルコンポーネントが、前記所与のデジタルコンポーネントの前記現在のスキャン優先度に基づいて選択される、ことと、
前記所与のデジタルコンポーネントをスキャンすることであって、前記所与のデジタルコンポーネントの現在の状態を決定することを備え、前記所与のデジタルコンポーネントの前記現在の状態が、前記所与のデジタルコンポーネントがポリシー基準に現在適合するかどうかを指定する前記所与のデジタルコンポーネントの現在の適合ステータスを規定する、ことと、
(i)前記所与のデジタルコンポーネントの前記現在の状態、または(ii)前記所与のデジタルコンポーネントがスキャンされた回数を指定する前記所与のデジタルコンポーネントの現在のスキャンインデックスのうちの1つまたは複数に基づいて、前記所与のデジタルコンポーネントの現在のコンテキストを決定することと、
前記所与のデジタルコンポーネントの前記現在のコンテキストに基づいて前記所与のデジタルコンポーネントの更新済みスキャン優先度を決定することと、
前記更新済みスキャン優先度に従って前記所与のデジタルコンポーネントを再スキャンすることと
を備える、1つまたは複数のコンピュータ可読記憶媒体。
前記所与のデジタルコンポーネントの前記現在のコンテキストが、ユーザデバイスにおいて電子文書とともに提示するために前記所与のデジタルコンポーネントが送信された回数、および前記ユーザデバイスにおいて前記所与のデジタルコンポーネントがどの電子文書とともに提示されたかのうちの1つまたは複数に追加的に基づく、請求項12に記載の1つまたは複数のコンピュータ可読記憶媒体。
前記所与のデジタルコンポーネントが、ランディングページを指定し、前記所与のデジタルコンポーネントをスキャンすることが、前記ランディングページがマルウェアを宿しているかどうかを決定することを備える、請求項12に記載の1つまたは複数のコンピュータ可読記憶媒体。
前記所与のデジタルコンポーネントの前記更新済みスキャン優先度が、前記所与のデジタルコンポーネントが次にスキャンされるまでの待ち時間を指定する、請求項12に記載の1つまたは複数のコンピュータ可読記憶媒体。
前記所与のデジタルコンポーネントの前記現在のコンテキストが、ユーザデバイスにおいて電子文書とともに提示するために前記所与のデジタルコンポーネントが送信された回数、および前記ユーザデバイスにおいて前記所与のデジタルコンポーネントがどの電子文書とともに提示されたかのうちの1つまたは複数に追加的に基づく、請求項17に記載のシステム。
前記所与のデジタルコンポーネントが、ランディングページを指定し、前記所与のデジタルコンポーネントをスキャンすることが、前記ランディングページがマルウェアを宿しているかどうかを決定することを備える、請求項17に記載のシステム。
前記所与のデジタルコンポーネントの前記更新済みスキャン優先度が、前記所与のデジタルコンポーネントが次にスキャンされるまでの待ち時間を指定する、請求項17に記載のシステム。
【発明を実施するための形態】
【0024】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【0025】
本明細書は、デジタルコンポーネントがいつスキャンされるのかを動的に決定するスキャンシステムを説明する。デジタルコンポーネントがスキャンされるたびに、スキャンシステムは、どのくらいしたらデジタルコンポーネントが再スキャンされるべきであるのか、たとえば、デジタルコンポーネントが再スキャンされるまでの待ち時間を特徴づける、スキャン優先度を決定し、次いで、スキャン優先度に基づいて後続のスキャンを実行する。
【0026】
本明細書全体にわたって使用するデジタルコンポーネントという句は、たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキストセグメント、またはユニフォームリソースロケータ(URL)のうちの1つまたは複数を含むことができるデジタルコンテンツまたはデジタル情報の個別単位を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合をなして、物理メモリデバイスの中に電子的に記憶することができ、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとることができ、ストリーミングビデオ、ストリーミングオーディオ、ソーシャルネットワークポスト、ブログポスト、および/または広告が、あるタイプのデジタルコンポーネントであるような、広告情報を含むことができる。概して、デジタルコンポーネントは、単一のプロバイダまたはソース(たとえば、広告主、発行者、または他のコンテンツプロバイダ)によって規定されるが(または、それによって提供されるが)、1つのソースから提供されるデジタルコンポーネントは、別のソースからのデータ(たとえば、気象情報、リアルタイムのイベント情報、または別のソースから取得される他の情報)を用いて拡張され得る。
【0027】
本明細書全体にわたって使用するとき、デジタルコンポーネントをスキャンすることは、デジタルコンポーネントの状態、たとえば、デジタルコンポーネントが1つまたは複数のポリシー基準に適合するかどうかを決定することを指す。たとえば、デジタルコンポーネントをスキャンすることは、デジタルコンポーネントの中に含まれるURLに対応するランディングページがマルウェア(たとえば、ウイルス)を宿しているかどうかを決定することを指すことがある。この例では、ポリシー基準は、ランディングページがマルウェアを宿していない場合のみ、デジタルコンポーネントが「適合する」(すなわち、ポリシー基準に適合する)ことを指定し得る。例としてランディングページが使用されるが、デジタルコンポーネントのスキャンは、デジタルコンポーネント自体および/またはデジタルコンポーネントによって参照またはリンクされる任意のネットワークロケーションの評価(たとえば、それのスキャン)を含むことができる。たとえば、特定のデジタルコンポーネントとのユーザ対話は、クライアントデバイスに、複数のネットワークロケーションへの一連のリダイレクトに関与させることがある。この例では、デジタルコンポーネントのスキャンは、デジタルコンポーネント自体および/または一連のリダイレクトにおけるネットワークロケーションのうちのいずれかの評価を含むことができる。
【0028】
概して、デジタルコンポーネントの状態は、経時的に変化することがある。一例では、当初は適合するデジタルコンポーネントは、ある時間期間にわたって非適合になってから、最終的に再び適合するように戻って復帰することがある。
【0029】
スキャンシステムは、デジタルコンポーネントをスキャンするために必要とされる計算リソースの量を減らすように、効率的に、すなわち、実行されるスキャンの数を最小限に抑えながらデジタルコンポーネントの状態の変化が急速に検出されることを可能にする方法で、スキャンをスケジュールすることを試みる。この目的で、デジタルコンポーネントがスキャンされた後、スキャンシステムは、デジタルコンポーネントに対するスキャン優先度をデジタルコンポーネントの現在の「コンテキスト」に基づいて適応的に決定する。
【0030】
デジタルコンポーネントのコンテキストとは、(たとえば、ロギングされたスキャンスケジューリングデータの分析に基づいて)デジタルコンポーネントの状態がどのくらい急速に変化すると予測されるのかと相関関係にある、任意の種類のデータを指すことができる。たとえば、デジタルコンポーネントの現在のコンテキストは、デジタルコンポーネントの現在の状態、デジタルコンポーネントの現在のスキャンインデックス(すなわち、デジタルコンポーネントがスキャンされた回数)、利用可能なスキャン結果の履歴もしくはウィンドウ化された履歴から導出される統計値(たとえば、時間の所与のウィンドウにおける適合スキャン結果および非適合スキャン結果の数)、またはそれらの組合せに基づいてよい。
【0031】
概して、スキャンシステムは、状態のより迅速な変化と相関関係にある現在のコンテキストを用いて、デジタルコンポーネントに対するより高いスキャン優先度(たとえば、再スキャンされるまでのより短い待ち時間)を決定することができる。同様に、スキャンシステムは、状態のより緩慢な変化と相関関係にある現在のコンテキストを用いて、デジタルコンポーネントに対するより低いスキャン優先度(たとえば、再スキャンされるまでのより長い待ち時間)を決定することができる。
【0032】
いくつかの実装形態では、スキャンの結果として、デジタルコンポーネントがポリシー基準に適合しないことが決定されている場合、スキャンシステムは、セキュリティポリシーを呼び出す。たとえば、セキュリティポリシーは、通知メッセージを送信または出力することであって、通知メッセージが、デジタルコンポーネントがポリシー基準に適合しないことを示す、出力すること、またはデジタルコンポーネントが実行することを回避するためにデジタルコンポーネントを隔離することのうちの少なくとも1つを備えてよい。
【0033】
これらの特徴および他の特徴が、以下でより詳細に説明される。
【0034】
図1は、例示的なコンテキスト適応型スキャンシステム100を示す。コンテキスト適応型スキャンシステム100は、以下で説明するシステム、構成要素、および技法が実施される、1つまたは複数のロケーションにおいて1つまたは複数のコンピュータ上でコンピュータプログラムとして実装されるシステムの一例である。
【0035】
コンテキスト適応型スキャンシステム100は、デジタルコンポーネントインデックス104によってインデックスが付けられたデジタルコンポーネントに対するスキャンを適応的にスケジュールするように構成される。
【0036】
複数のデジタルコンポーネントの各々に対して、デジタルコンポーネントインデックス104は、(i)デジタルコンポーネント、および(ii)どのくらいしたらデジタルコンポーネントが再スキャンされるべきであるのかを特徴づける現在のスキャン優先度を指定する、データを含む。デジタルコンポーネントを指定するデータは、たとえば、デジタルコンポーネントを記憶するメモリロケーションへのポインタであってよい。現在のスキャン優先度を指定するデータは、たとえば、デジタルコンポーネントが再スキャンされるまでの待ち時間、または単位のない数値としての優先度値(たとえば、1と10との間の数)であってよい。システム100は、様々な場所のうちのいずれかの中に、たとえば、物理データ記憶デバイスまたは(たとえば、クラウドコンピューティング環境における)論理データ記憶エリアの中に、デジタルコンポーネントインデックス104を保持することができる。
【0037】
本明細書は、主にデジタルコンポーネントのスキャンに関してスキャンシステム100を説明する。いくつかの実装形態では、デジタルコンポーネントをスキャンするのではなく、システム100は、物理的なアイテム、たとえば、デバイス(煙警報器または自動車)または構造物(たとえば、橋)をスキャンするように構成され得る。物理的なアイテムをスキャンするいくつかの例が、以下でより詳細に説明される。
【0038】
システム100は、選択エンジン106、スキャンエンジン102、および優先度更新エンジン108を含む。
【0039】
選択エンジン106は、それらのそれぞれの現在のスキャン優先度に基づいてスキャンするために、デジタルコンポーネントインデックス104によってインデックスが付けられたデジタルコンポーネントを選択するように構成される。たとえば、選択エンジン106は、デジタルコンポーネントが当然再スキャンされるまでの待ち時間が経過しているとき、スキャンするためのデジタルコンポーネントを選択してよい。別の例として、選択エンジン106は、スキャンするための優先度値が最も高いデジタルコンポーネントを継続的に選択してもよい。
【0040】
場合によっては、デジタルコンポーネントインデックス104は、異なるカテゴリーへのデジタルコンポーネントのグループ化を規定し、選択エンジン106は、カテゴリーに基づいて、かつ現在のスキャン優先度において、スキャンするためのデジタルコンポーネントを選択し得る。一例では、デジタルコンポーネントインデックス104は、3つのカテゴリー、すなわち、(i)まだスキャンされていないデジタルコンポーネント、(ii)1つまたは複数の最近のユーザ不満の対象であったデジタルコンポーネント、および(iii)スキャンされており最近のユーザ不満の対象ではなかったデジタルコンポーネントに、デジタルコンポーネントをグループ化し得る。この例では、選択エンジン106は、現在のスキャン優先度にかかわらず、スキャンするために第1または第2のカテゴリーの中のデジタルコンポーネント(すなわち、まだスキャンされていないか、または最近のユーザ不満の対象である、デジタルコンポーネント)を、残りのデジタルコンポーネントの上位に優先させてよい。
【0041】
ユーザは、様々な方法のうちのいずれかでデジタルコンポーネントについて不満を訴えることができる。たとえば、ユーザは、非適合であるものとしてユーザがデジタルコンポーネントにフラグを付けることを可能にする、デジタルコンポーネントの中に含まれる要素(たとえば、ボタン)と対話することによって、ユーザのデバイス上で提示されるデジタルコンポーネントについて不満を訴えることができる。
【0042】
スキャンエンジン102は、スキャンするために選択エンジン106によって選択されたデジタルコンポーネントをスキャンするように構成される。デジタルコンポーネントをスキャンすることは、(デジタルコンポーネントの複数の可能な状態からの)デジタルコンポーネントの状態、たとえば、デジタルコンポーネントが1つまたは複数のポリシー基準に適合するかどうかを決定することを指す。たとえば、デジタルコンポーネントをスキャンすることは、デジタルコンポーネントの中に含まれるURLに対応するランディングページ(または、任意の他のネットワークロケーション)がマルウェア(たとえば、ウイルス)を宿しているかどうかを決定すること、デジタルコンポーネントが不適切な(たとえば、有害または違法な)コンテンツを含むかどうかを決定すること、またはその両方を指すことがある。この例では、デジタルコンポーネントは、ランディングページがマルウェアを宿しておらず、かつデジタルコンポーネントが不適切なコンテンツを含まない場合のみ、適合するものと決定されてよい。
【0043】
一例では、システム100は、デジタルコンポーネントのコンテンツを分析してデジタルコンポーネントがポリシー基準に適合するかどうかを決定する自動化スキャン技法を使用して、デジタルコンポーネントをスキャンし得る。自動化スキャン技法は、テキストデータ、画像データ、またはビデオデータが不適切であるかどうかを特徴づける出力を生成するように構成される分類モデルを使用して、デジタルコンポーネントの中に含まれるテキストデータ、画像データ、またはビデオデータを処理することを含んでよい。自動化スキャン技法はまた、ランディングページがマルウェアを含むかどうかを特徴づける出力を生成するように構成される分類モデルを使用して、デジタルコンポーネントの中に含まれるURLに対応するランディングページのコンテンツを指定するハイパーテキストマークアップ言語(HTML)コードを処理することを含んでよい。分類モデルは、教師あり機械学習技法または教師なし機械学習技法を使用してトレーニングされ得る。
【0044】
以前に説明したように、システム100は、物理的なアイテム(たとえば、デバイスまたは構造物)をスキャンするように構成され得る。デバイスまたは構造物をスキャンすることは、たとえば、デバイスまたは構造物の物理的な条件(たとえば、デバイスまたは構造物がだめになっているかどうか、またはさもなければ劣悪な条件にあるかどうか)を決定することを指すことがある。この例では、デバイスまたは構造物は、デバイスまたは構造物の物理的な条件がそれを安全に動作させることが可能である場合のみ、適合するものと決定されてよい。スキャンエンジン102は、保守技術者がデバイスまたは構造物を検査することを求める要求を生成することによって、デバイスまたは構造物をスキャンし得る。
【0045】
優先度更新エンジン108は、スキャンエンジン102によってスキャンされるデジタルコンポーネントに対する更新済みスキャン優先度112を決定するように構成される。更新済みスキャン優先度112は、どのくらいしたらデジタルコンポーネントが再スキャンされるべきであるのかを特徴づける。デジタルコンポーネントに対する更新済みスキャン優先度を決定するために、優先度更新エンジン108は、デジタルコンポーネントの現在の「コンテキスト」を決定し、次いで、デジタルコンポーネントに対する更新済みスキャン優先度を規定するデータに現在のコンテキストをマッピングするために、マッピング関数を使用する。デジタルコンポーネントの現在のコンテキストを決定するいくつかの例を以下に示す。
【0046】
一例では、システムは、デジタルコンポーネントの現在の適合ステータス、デジタルコンポーネントの現在のスキャンインデックス(すなわち、デジタルコンポーネントが何回スキャンされたかを指定すること)、デジタルコンポーネントが最初にスキャンされてからの持続時間、ユーザデバイスにおいて電子文書とともに提示するためにデジタルコンポーネントがデジタルコンポーネント配信システムによって送信された回数(たとえば、
図5を参照しながら説明するような)、ユーザデバイスにおいてデジタルコンポーネントがどの電子文書とともに提示されたのか、デジタルコンポーネントが提示されたユーザデバイスの特性(たとえば、オペレーティングシステム、ブラウザタイプ、およびコンピューティングプラットフォーム、たとえば、デスクトップまたはモバイル)、デジタルコンポーネントをスキャンする計算量(たとえば、処理時間)、およびデジタルコンポーネントを最後にスキャンした(たとえば、データセンタの)地理的ロケーションのうちの1つまたは複数に基づいて、デジタルコンポーネントの現在のコンテキストを決定することができる。
【0047】
別の例では、システムは、デバイスまたは構造物がどのくらいの頻度で使用されるのか(たとえば、自動車によって移動されるマイル数、または橋を渡った車両の数)、およびデバイスまたは構造物が現在さらされている気象条件(たとえば、雪または雨)のうちの1つまたは複数に基づいて、デバイスまたは構造物の現在のコンテキストを決定することができる。
【0048】
優先度更新エンジン108は、様々な方法のうちのいずれかで、たとえば、数値としての値のベクトルまたは行列などの、数値としての値の順序付きの集合として、デジタルコンポーネントの現在のコンテキストを表すことができる。一例では、優先度更新エンジン108は、2つの成分、すなわち、集合{0,1}の中の値をとることができデジタルコンポーネントの現在の適合ステータスを規定する第1の成分、および非負の整数値をとることができデジタルコンポーネントの現在のスキャンインデックスを規定する第2の成分を有するベクトルとして、デジタルコンポーネントの現在のコンテキストを表すことができる。
【0049】
複数の可能な現在のコンテキストの各々に対して、優先度更新エンジン108によって使用されるマッピング関数(本明細書では「優先度マッピング関数」と呼ぶ)は、可能な現在のコンテキストから、対応するスキャン優先度を規定するデータへの、マッピングを規定する。いくつかの例を以下に示す。
【0050】
一例では、優先度マッピング関数は、可能な現在の各コンテキストから、対応するスキャン優先度を直接規定するデータ、たとえば、デジタルコンポーネントが当然再スキャンされるまでの待ち時間への、マッピングを規定する。
【0051】
別の例では、優先度マッピング関数は、可能な現在の各コンテキストから、デジタルコンポーネントに対するデフォルトのスキャン優先度と組み合わせられたとき(たとえば、それで乗算されたとき)、デジタルコンポーネントに対する対応する更新済みスキャン優先度を規定するスケーリング係数を規定するデータへの、マッピングを規定する。デジタルコンポーネントに対するデフォルトのスキャン優先度とは、「デフォルトの」スケジューリングシステムによって生成されるスキャン優先度を指す。たとえば、現在のコンテキストkを有するデジタルコンポーネントxに対する更新済みスキャン優先度は、
t'(x)=t(x)・α
k (1)
によって与えられてよく、ただし、t'(x)は、デジタルコンポーネントxが再スキャンされるまでの待ち時間であり、t(x)は、デジタルコンポーネントxに対するデフォルトの待ち時間であり、α
kは、コンテキストkに対応する(すなわち、優先度マッピング関数によって指定されるような)スケーリング係数である。スケーリング係数は、より効率的にスキャンがスケジュールされることを可能にする、デフォルトのスケジューリングシステムによって生成されるデフォルトのスキャン優先度の調整値を規定するものと理解され得る。スケーリング係数の例が、式(2)、式(3)、式(4)、および式(5)を参照しながら以下で説明される。
【0052】
デフォルトのスケジューリングシステムは、様々な方法のうちのいずれかで、デジタルコンポーネントに対するデフォルトのスキャン優先度を決定することができる。一例では、デフォルトのスケジューリングシステムは、固定のスケジュールにおいて、たとえば、時間ごとに1回、または日ごとに1回、デジタルコンポーネントを再スキャンさせる、デフォルトのスキャン優先度を決定することができる。別の例では、デフォルトのスケジューリングシステムは、ユーザデバイスにおいて電子文書とともに提示するためにデジタルコンポーネント配信システムがどのくらいの頻度でデジタルコンポーネントを送信するのかに基づいて、デジタルコンポーネントに対するデフォルトのスキャン優先度を決定することができる。
【0053】
図2は、例示的な優先度マッピング関数200の図である。優先度マッピング関数200は、複数の可能な現在のコンテキスト202-A〜202-Nの各々から、対応するスキャン優先度204-A〜204-Nを規定するデータへの、マッピングを規定する。この例では、デジタルコンポーネントの可能な現在の各コンテキストは、(i)デジタルコンポーネントの現在の適合ステータス208、および(ii)デジタルコンポーネントの現在のスキャンインデックス210を含む、ベクトル206として表される。
【0054】
優先度マッピング関数は、デジタルコンポーネントのセットのスキャン履歴を特徴づけるロギングされたデータを分析することによって決定され得る。デジタルコンポーネントごとに、ロギングされたデータは、デジタルコンポーネントがスキャンされたとき、それがスキャンされた各時間のデジタルコンポーネントのそれぞれの状態(たとえば、適合ステータス)、およびそれがスキャンされた各時間のデジタルコンポーネントのそれぞれのコンテキストを記録する。
【0055】
概して、優先度マッピング関数は、状態のより迅速な変化と相関関係にある(すなわち、ロギングされたデータの中の)コンテキストを、より高いスキャン優先度(たとえば、再スキャンされるまでのより短い待ち時間)にマッピングすることができる。同様に、優先度マッピング関数は、状態のより緩慢な変化と相関関係にあるコンテキストを、より低いスキャン優先度(たとえば、再スキャンされるまでのより長い待ち時間)にマッピングすることができる。たとえば、優先度マッピング関数は、デジタルコンポーネントが次回スキャンされる前にデジタルコンポーネントの状態が変化する可能性を、デジタルコンポーネントの可能なコンテキストごとに同じにさせる方法で、コンテキストをスキャン優先度にマッピングすることができる。
【0056】
いくつかの例示的な優先度マッピング関数が、次に説明される。
【0057】
一例では、可能な現在のコンテキストは、変数kによってインデックスが付けられてよく、M≧1個の異なる値をとってよく、優先度マッピング関数は、
【数1】
によって与えられる対応するスケーリング係数α
kに、現在のコンテキストkをマッピングしてよく、ただし、q
kは、デジタルコンポーネントの現在のコンテキストがkである場合、デジタルコンポーネントの状態(たとえば、適合ステータス)がデジタルコンポーネントの現在のスキャンと次のスキャンとの間で変化する「交差」確率(可能性)を表し、p
mは、デジタルコンポーネントの現在のコンテキストの値がmとなる「コンテキスト」確率を表す。
【0058】
式(2)の特定の例では、デジタルコンポーネントの現在のコンテキストは、2次元ベクトル[i,j]によって規定され得る。ベクトルの第1の成分iは、デジタルコンポーネントの現在のスキャンインデックスを表す非負の整数値である。ベクトルの第2の成分jは、デジタルコンポーネントの現在の適合ステータスを示すバイナリ値である(たとえば、ここで、0は非適合を示し、1は適合を示す)。優先度マッピング関数は、
【数2】
によって与えられる対応するスケーリング係数α
i,jに、コンテキスト[i,j]をマッピングしてよく、ただし、q
i(1|0)は、スキャンインデックスiにおいて適合しないデジタルコンポーネントがスキャンインデックスi+1において適合する交差確率を表し、q
i(0|1)は、スキャンインデックスiにおいて適合するデジタルコンポーネントがスキャンインデックスi+1において適合しない交差確率を表し、p
i(0)は、デジタルコンポーネントがスキャンインデックスiにおいて適合しない確率を表し、p
i(1)は、デジタルコンポーネントがスキャンインデックスiにおいて適合する確率を表す。
【0059】
いくつかの状況では、「適合」から「非適合」への適合ステータスの変化の迅速な検出は、「非適合」から「適合」への適合ステータスの変化の迅速な検出よりも重要であり得る。式(3)によって規定される優先度マッピング関数は、重み付け係数w
0およびw
1を含むように調整することができ、ただし、w
0は、「非適合」から「適合」への適合ステータスの変化を検出することの重要性を示す非負の数であり、w
1は、「適合」から「非適合」への適合ステータスの変化を検出することの重要性を示す非負の数であり、優先度マッピング関数は、
【数3】
によって与えられ、ただし、式(4)の中の変数は、式(3)の場合と同じ方法で規定される。
【0060】
式(2)、式(3)、および式(4)を参照しながら説明した、優先度マッピング関数を規定するために使用される交差確率およびコンテキスト確率は、ロギングされたデータを分析することによって決定され得る。たとえば、交差確率q
i(1|0)は、(i)スキャンインデックスiからスキャンインデックスi+1に、非適合であることから適合であることにデジタルコンポーネントが遷移した回数と、(ii)デジタルコンポーネントがスキャンインデックスiにおいてスキャンされ非適合であるものと決定された回数との比として決定され得る。同様に、交差確率q
i(0|1)は、(i)スキャンインデックスiからスキャンインデックスi+1に、適合であることから非適合であることにデジタルコンポーネントが遷移した回数と、(ii)デジタルコンポーネントがスキャンインデックスiにおいてスキャンされ適合であるものと決定された回数との比として決定され得る。非適合確率p
i(0)は、(i)デジタルコンポーネントがスキャンインデックスiにおいてスキャンされ非適合であるものと決定された回数と、(ii)少なくともi回スキャンされたデジタルコンポーネントの個数との比として決定され得る。適合確率p
i(1)は、(i)デジタルコンポーネントがスキャンインデックスiにおいてスキャンされ適合であるものと決定された回数と、(ii)少なくともi回スキャンされたデジタルコンポーネントの個数との比として決定され得る。
【0061】
優先度マッピング関数の別の例では、可能な現在のコンテキストは、スキャンインデックスiによって表されてよく、優先度マッピング関数は、
【数4】
によって与えられる対応するスケーリング係数α
iに、現在のコンテキストiをマッピングしてよく、ただし、U
iは、デジタルコンポーネントの適合ステータスがそれに対してスキャンiからスキャンi+1に変化した、ロギングされたデータの中のデジタルコンポーネントごとに、スキャンiとスキャンi+1との間で経過した持続時間の合計であり、T
iは、ロギングされたデータの中のデジタルコンポーネントごとに、スキャンiとスキャンi+1との間で経過した持続時間の合計であり、Nは、最大スキャンインデックスである。
【0062】
優先度マッピング関数の別の例では、デジタルコンポーネントの可能な現在のコンテキストは、スキャンインデックスiによってインデックスが付けられてよく、優先度マッピング関数は、スキャンインデックスiの後に再びデジタルコンポーネントが当然スキャンされるまでの対応する待ち時間に、スキャンインデックスiをマッピングしてよい。この例では、優先度マッピング関数は、「局所遷移」確率分布を使用して決定され得る。
【0063】
局所遷移確率分布は、デジタルコンポーネントが最初にスキャンされてからの複数の時間の各々に対して、その時間において(または、その時間のあたりの単位持続時間内で)デジタルコンポーネントの状態(たとえば、適合ステータス)が変化するそれぞれの確率を規定する。局所遷移確率分布の累積分布関数(CDF)の一例が
図3によって図示される。グラフ300の水平軸は、デジタルコンポーネントの最初のスキャンからの時間を表し、垂直軸は、状態の変化の累積確率を表す。すなわち、最初のスキャンからの特定の時間におけるグラフ300の高さは、最初のスキャンからの特定の時間が経過している前に、デジタルコンポーネントの状態が1回または複数回変化する確率を示す。
【0064】
優先度マッピング関数は、局所遷移確率分布を使用して、オーバーラップしない区間への持続時間[0,T
max]の区分を識別することによって決定することができ、ここで、デジタルコンポーネントの状態が区間の各々の中で変化する確率は同じである(または、適切な許容差範囲内にある)。デジタルコンポーネントの状態が区間[a,b]の中で変化する確率は、P(b)-P(a)として決定することができ、ここで、P(・)は、局所遷移確率分布のCDFである。
【0065】
区間を識別した後、優先度マッピング関数は、対応する区間の持続時間によって与えられる待ち時間に各スキャンインデックスをマッピングするものとして指定され得る。
図3に示す例では、優先度マッピング関数は、区間302-Aに対応する持続時間にスキャンインデックスi=1を、区間302-Bに対応する持続時間にスキャンインデックスi=2を、区間302-Cに対応する持続時間にスキャンインデックスi=3を、かつ区間302-Dに対応する持続時間にスキャンインデックスi=4をマッピングしてよい。
【0066】
局所遷移確率分布は、ロギングされたデータを処理することによって決定され得る。たとえば、デジタルコンポーネントの状態が最初のスキャンからの特定の時間tにおいて(または、そのあたりの単位持続時間内に)変化する確率p(t)は、
【数5】
として決定することができ、ただし、|C
t|は、時間tの前および後の両方でスキャンされた、ロギングされたデータの中のデジタルコンポーネントの個数であり、D
tは、時間tの直前のスキャンと時間tの直後のスキャンとの間で状態を変化させた、ロギングされたデータの中のデジタルコンポーネントxのセットであり、b(x)は、デジタルコンポーネントxに対して時間tの直後に行われたスキャンが行われた時間を表し、a(x)は、デジタルコンポーネントxに対して時間tの直前に行われたスキャンが行われた時間を表す。
【0067】
(上記で説明したような)局所遷移確率分布に基づいて決定される優先度マッピング関数は、持続時間[0,T
max]が区分される区間の個数に依存する。区間の適切な(たとえば、最適な)個数を識別するために、持続時間[0,T
max]は、K∈{1,…,K
max}ごとに(以前に説明したように)K個の区間に区分することができ、ただし、K
maxは正の整数であり、それぞれの「未定時間」は、
【数6】
としてKごとに決定することができ、ここで、第kの区間は、[a
k,b
k]によって与えられ、P(・)は、局所遷移確率分布のCDFであり、
【数7】
は、時間a
kの後にスキャンされる(すなわち、ロギングされたデータの中の)デジタルコンポーネントの個数である。未定時間U
Kは、デジタルコンポーネントの連続したスキャンの間で経過していることになる総持続時間の推定値であり、ここで、K個の区間への区分に対応する優先度マッピング関数を使用してスキャンがスケジュールされていた場合、デジタルコンポーネントの状態は連続したスキャンの間で変化した。元の未定時間U
O(すなわち、ロギングされたデータの中のデジタルコンポーネントのスキャンの、元のスケジューリングに対応する)は、連続したスキャンの間で経過した持続時間を合計することによって決定することができ、ここで、デジタルコンポーネントの状態は、連続したスキャンの間で変化した。優先度マッピング関数を決定する際に使用されるべき区間の個数は、元の未定時間U
O未満である対応する劣決定時間(underdetermined time)U
Kを有する最小のKとして識別され得る。
【0068】
図4は、デジタルコンポーネントをスキャンするための例示的なプロセス400のフロー図である。便宜上、プロセス400は、1つまたは複数のロケーションに位置する1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、コンテキスト適応型スキャンシステム、たとえば、本明細書に従って適切にプログラムされた、
図1のコンテキスト適応型スキャンシステム100は、プロセス400を実行することができる。
【0069】
システムは、各々が現在のスキャン優先度を有するデジタルコンポーネントのセットの中から、スキャンするためのデジタルコンポーネントを選択する(402)。システムは、デジタルコンポーネントの現在のスキャン優先度に基づいてデジタルコンポーネントを選択する。デジタルコンポーネントの現在のスキャン優先度は、たとえば、デジタルコンポーネントが次にスキャンされるまでの待ち時間を指定し得る。
【0070】
システムは、デジタルコンポーネントの状態を決定することを含めて、デジタルコンポーネントをスキャンする(404)。デジタルコンポーネントの状態は、デジタルコンポーネントの適合ステータス、すなわち、デジタルコンポーネントが1つまたは複数のポリシー基準に適合するかどうかを指定し得る。一例では、デジタルコンポーネントは、ランディングページを指定し、デジタルコンポーネントをスキャンすることは、ランディングページがマルウェアを宿しているかどうかを決定することを含み、デジタルコンポーネントは、ランディングページがマルウェアを宿していない場合のみ、ポリシー基準を満たすものと決定される。
【0071】
システムは、デジタルコンポーネントの現在のコンテキストを決定する(406)。システムは、デジタルコンポーネントの現在の状態(たとえば、適合ステータス)、デジタルコンポーネントの現在のスキャンインデックス、ユーザデバイスにおいて電子文書とともに提示するためにデジタルコンポーネントが送信された回数、およびユーザデバイスにおいてデジタルコンポーネントがどの電子文書とともに提示されたかのうちの1つまたは複数に基づいて、デジタルコンポーネントの現在のコンテキストを決定し得る。
【0072】
システムは、デジタルコンポーネントの現在のコンテキストに基づいてデジタルコンポーネントの更新済みスキャン優先度を決定する(408)。デジタルコンポーネントの更新済みスキャン優先度は、デジタルコンポーネントが次にスキャンされるまでの待ち時間を指定し得る。システムは、デジタルコンポーネントの現在のコンテキストを、デジタルコンポーネントの更新済みスキャン優先度を規定するデータにマッピングするためにマッピング関数を使用することによって、更新済みスキャン優先度を決定し得る。
【0073】
いくつかの実装形態では、更新済みスキャン優先度を規定するデータは、スケーリング係数を含んでよく、システムは、(i)デジタルコンポーネントのデフォルトのスキャン優先度と(ii)スケーリング係数との関数として、デジタルコンポーネントの更新済みスキャン優先度を決定し得る。たとえば、関数は、デフォルトのスキャン優先度とスケーリング係数との積を含んでよい。デフォルトのスキャン優先度は、デフォルトのスケジューリングシステムによって決定され得る。
【0074】
マッピング関数は、デジタルコンポーネントの状態(たとえば、適合ステータス)がどのくらいの頻度で変化すると予測されるのかに基づいて、たとえば、式(2)、式(3)、および式(4)を参照しながら説明した「交差」確率に基づいて、デジタルコンポーネントの現在のコンテキストを、デジタルコンポーネントの更新済みスキャン優先度を規定するデータにマッピングし得る。システムは、たとえば、デジタルコンポーネントの現在のコンテキストに基づく、デジタルコンポーネントが次回スキャンされる前に所与のデジタルコンポーネントの状態が変化する可能性として、デジタルコンポーネントの状態がどのくらいの頻度で変化すると予測されるのかを決定し得る。システムはまた、局所遷移確率分布に基づいてマッピング関数を決定し得る。
【0075】
マッピング関数を決定するために、システムは、特定のデジタルコンポーネントがスキャンされたとき、それらがスキャンされたときのデジタルコンポーネントの状態(たとえば、適合ステータス)、およびそれらがスキャンされたときのデジタルコンポーネントのコンテキストを特徴づける、ロギングされたデータを処理する。
【0076】
システムは、デジタルコンポーネントの更新済みスキャン優先度に従ってデジタルコンポーネントを再スキャンする(410)。一例では、デジタルコンポーネントに対する更新済みスキャン優先度は、デジタルコンポーネントが再スキャンされるまでの持続時間を指定してよく、システムは、持続時間が経過しているとデジタルコンポーネントを再スキャンし得る。
【0077】
図5は、電子文書とともに提示するためにデジタルコンポーネント配信システム510がデジタルコンポーネントデータベース516からデジタルコンポーネントを送信する例示的な環境500のブロック図である。コンテキスト適応型スキャンシステム100は、デジタルコンポーネントデータベース516の中に含まれるデジタルコンポーネントをスキャンして、それらが1つまたは複数のポリシー基準に適合するかどうかを決定するために使用され得る。デジタルコンポーネントは、たとえば、デジタルコンポーネントが有害なコンテンツを含む場合、またはデジタルコンポーネントによって指定されるランディングページがマルウェアを宿している場合、ポリシー基準に適合しないものとして識別され得る。デジタルコンポーネント配信システム510は、ポリシー基準に適合しないデジタルコンポーネントを送信するのを控えてよい。
【0078】
例示的な環境500は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せなどの、ネットワーク502を含む。ネットワーク502は、電子文書サーバ504、クライアントデバイス506、デジタルコンポーネントサーバ508、およびデジタルコンポーネント配信システム510(「配信システム」510とも呼ばれる)を接続する。例示的な環境500は、多くの異なる電子文書サーバ504、クライアントデバイス506、およびデジタルコンポーネントサーバ508を含んでよい。
【0079】
クライアントデバイス506は、ネットワーク502を介してリソースを要求および受信することが可能な電子デバイスである。例示的なクライアントデバイス506は、パーソナルコンピュータ、モバイル通信デバイス(たとえば、モバイルフォン)、ならびにネットワーク502を介してデータを送ることおよび受信することができる他のデバイスを含む。クライアントデバイス506は、通常、ネットワーク502を介してデータを送ることおよび受信することを容易にするために、ウェブブラウザなどのユーザアプリケーションを含むが、クライアントデバイス506によって実行されるネイティブアプリケーションも、ネットワーク502を介してデータを送ることおよび受信することを容易にすることができる。
【0080】
電子文書とは、クライアントデバイス506においてコンテンツのセットを提示するデータである。電子文書の例は、ウェブページ、ワードプロセシング文書、ポータブルドキュメントフォーマット(PDF)文書、画像、ビデオ、検索結果ページ、およびフィードソースを含む。モバイルコンピューティングデバイス、タブレットコンピューティングデバイス、またはデスクトップコンピューティングデバイス上にインストールされたアプリケーションなどのネイティブアプリケーション(たとえば、「アプリ(app)」)も、電子文書の例である。電子文書は、電子文書サーバ504(「電子ドキュメントサーバ(Electronic Doc Server)」)によってクライアントデバイス506に提供され得る。たとえば、電子文書サーバ504は、発行者ウェブサイトをホストするサーバを含むことができる。この例では、クライアントデバイス506は、所与の発行者ウェブページを求める要求を開始することができ、所与の発行者ウェブページをホストする電子サーバ504は、クライアントデバイス506における所与のウェブページの提示を開始する機械実行可能命令を送ることによって、要求に応答することができる。
【0081】
別の例では、電子文書サーバ504は、クライアントデバイス506がそこからアプリをダウンロードできるアプリサーバを含むことができる。この例では、クライアントデバイス506は、クライアントデバイス506においてアプリをインストールするために必要とされるファイルをダウンロードすることができ、次いで、ダウンロードされたアプリを局所的に実行することができる。
【0082】
電子文書は、様々なコンテンツを含むことができる。たとえば、電子文書は、電子文書自体内にあり、かつ/または経時的に変化しない、静的コンテンツ(たとえば、テキストまたは他の指定されたコンテンツ)を含むことができる。電子文書はまた、経時的にまたは要求ごとに変化することがある動的コンテンツを含むことができる。たとえば、所与の電子文書の発行者は、電子文書の部分を埋めるために使用されるデータソースを保持することができる。この例では、所与の電子文書は、所与の電子文書がクライアントデバイス506によって処理(たとえば、レンダリングまたは実行)されると、クライアントデバイス506に、データソースにコンテンツを要求するようにさせる、1つまたは複数のタグまたはスクリプトを含むことができる。クライアントデバイス506は、データソースから取得されたコンテンツを所与の電子文書の中に組み込んで、データソースから取得されたコンテンツを含む複合電子文書を作成する。
【0083】
いくつかの状況では、所与の電子文書は、デジタルコンポーネント配信システム510を参照する、1つまたは複数のデジタルコンポーネントタグまたはデジタルコンポーネントスクリプトを含むことができる。これらの状況では、デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトは、所与の電子文書がクライアントデバイス506によって処理されるとき、クライアントデバイス506によって実行される。デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトの実行は、1つまたは複数のデジタルコンポーネントを求める要求512(「コンポーネント要求」と呼ぶ)を生成するようにクライアントデバイス506を構成し、そうした要求は、ネットワーク502を介してデジタルコンポーネント配信システム510へ送信される。たとえば、デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトは、ヘッダおよびペイロードデータを含むパケット化されたデータ要求をクライアントデバイス506が生成することを可能にすることができる。コンポーネント要求512は、デジタルコンポーネントを要求されているサーバの名称(または、ネットワークロケーション)、要求しているデバイス(たとえば、クライアントデバイス506)の名称(または、ネットワークロケーション)、および/または要求に応答して提供される1つもしくは複数のデジタルコンポーネントを選択するためにデジタルコンポーネント配信システム510が使用できる情報などの、機能を指定するイベントデータを含むことができる。コンポーネント要求512は、クライアントデバイス506によってネットワーク502(たとえば、電気通信ネットワーク)を介してデジタルコンポーネント配信システム510のサーバへ送信される。
【0084】
コンポーネント要求512は、電子文書が要求されること、およびデジタルコンポーネントが提示され得る電子文書のロケーションの特性などの、他のイベント機能を指定するイベントデータを含むことができる。たとえば、デジタルコンポーネントがその中に提示される電子文書(たとえば、ウェブページ)への参照(たとえば、URL)、デジタルコンポーネントを提示するために利用可能な電子文書の利用可能なロケーション、利用可能なロケーションのサイズ、および/またはそのロケーションにおいて提示するのに適格なメディアタイプを指定する、イベントデータが、デジタルコンポーネント配信システム510に提供され得る。同様に、電子文書に関連するキーワード(「文書キーワード」)、または電子文書によって参照されるエンティティ(たとえば、人間、場所、または物)を指定する、イベントデータも、電子文書とともに提示するのに適格なデジタルコンポーネントの識別を容易にするために、(たとえば、ペイロードデータとして)コンポーネント要求512の中に含めることができ、デジタルコンポーネント配信システム510に提供され得る。イベントデータはまた、検索結果ページ、ならびに/あるいは検索結果および/または検索結果の中に含まれるテキストコンテンツ、音響コンテンツ、もしくは他の視覚コンテンツを指定するデータを取得するために、クライアントデバイス506からサブミットされた、検索クエリを含むことができる。
【0085】
コンポーネント要求512はまた、クライアントデバイスのユーザが提供している情報、コンポーネント要求がそこからサブミットされた州もしくは地域を示す地理情報、またはデジタルコンポーネントが表示される環境(たとえば、コンポーネント要求の時刻、コンポーネント要求の曜日、モバイルデバイスまたはタブレットデバイスなどのデジタルコンポーネントが表示されるデバイスのタイプ)に対するコンテキストを提供する他の情報などの、他の情報に関係するイベントデータを含むことができる。コンポーネント要求512は、たとえば、パケット化ネットワークを介して送信することができ、コンポーネント要求512自体は、ヘッダおよびペイロードデータを有するパケット化されたデータとしてフォーマットされ得る。ヘッダは、パケットの宛先を指定することができ、ペイロードデータは、上記で説明した情報のうちのいずれかを含むことができる。
【0086】
コンポーネント配信システム510は、コンポーネント要求512の受信に応答して、かつ/またはコンポーネント要求512の中に含まれる情報を使用して、所与の電子文書とともに提示されるデジタルコンポーネントを選ぶ。いくつかの実装形態では、デジタルコンポーネントは、デジタルコンポーネントの遅延した選択によって引き起こされることがあるエラーを回避するために、1秒未満のうちに(本明細書で説明する技法を使用して)選択される。たとえば、コンポーネント要求512に応答してデジタルコンポーネントを提供する際の遅延は、クライアントデバイス506においてページロードエラーをもたらすことがあり、または電子文書の他の部分がクライアントデバイス506において提示された後でも電子文書の部分を埋められないままにさせることがある。また、デジタルコンポーネントをクライアントデバイス506に提供する際の遅延が大きくなるにつれて、デジタルコンポーネントがクライアントデバイス506に送付されるとき、電子文書がもはやクライアントデバイス506において提示されない可能性が高く、それによって、電子文書とのユーザの体験に悪影響を及ぼす。さらに、デジタルコンポーネントを提供する際の遅延は、たとえば、デジタルコンポーネントが提供されるときに電子文書がもはやクライアントデバイス506において提示されない場合、デジタルコンポーネントの送付の失敗という結果になることがある。
【0087】
いくつかの実装形態では、デジタルコンポーネント配信システム510は、たとえば、相互接続されているサーバおよび複数のコンピューティングデバイスのセット514を含む分散コンピューティングシステムの中に実装され、要求512に応答してデジタルコンポーネントを識別および配信する。複数のコンピューティングデバイスのセット514は、数百万個の利用可能なデジタルコンポーネント(DC1-x)のコーパスから、電子文書の中で提示されるのに適格なデジタルコンポーネントのセットを識別するように一緒に動作する。数百万個の利用可能なデジタルコンポーネントは、たとえば、デジタルコンポーネントデータベース516の中で、インデックスが付けられ得る。各デジタルコンポーネントインデックスエントリは、対応するデジタルコンポーネントを参照することができ、かつ/または対応するデジタルコンポーネントの配信/送信に寄与する(たとえば、それを調整または限定する)配信パラメータ(DP1〜DPx)を含むことができる。たとえば、配信パラメータは、デジタルコンポーネントの配信パラメータのうちの1つに(たとえば、厳密に、またはいくつかの事前指定されたレベルの類似度を伴ってのいずれかで)整合する、少なくとも1つの基準をコンポーネント要求が含むことを要求することによって、デジタルコンポーネントの送信に寄与することができる。
【0088】
いくつかの実装形態では、特定のデジタルコンポーネント用の配信パラメータは、デジタルコンポーネントが提示するのに適格であるように、(たとえば、電子文書、文書キーワード、またはコンポーネント要求512の中で指定された用語によって)整合されなければならない配信キーワードを含むことができる。言い換えれば、配信パラメータは、ネットワーク502を介したデジタルコンポーネントの配信(たとえば、送信)をトリガするために使用される。配信パラメータはまた、デジタルコンポーネントが提示するのに適格であるように、特定の地理的領域(たとえば、国または州)を指定する情報、および/またはコンポーネント要求512が特定のタイプのクライアントデバイス(たとえば、モバイルデバイスまたはタブレットデバイス)において生じたことを指定する情報を、コンポーネント要求512が含むことを要求することができる。
【0089】
配信パラメータはまた、たとえば、コンポーネント評価プロセスによって、配信/送信にとってのデジタルコンポーネントの適格性を(たとえば、他の利用可能なデジタルコンポーネントの間で)評価するために使用される、適格性値(たとえば、ランク付けスコア、つけ値、またはいくつかの他の指定された値)を指定することができる。いくつかの状況では、適格性値は、(たとえば、デジタルコンポーネントとのユーザ対話などの、デジタルコンポーネントの提示に帰属する特定のイベントのインスタンスごとに)デジタルコンポーネントのプロバイダがデジタルコンポーネントの送信に応答してサブミットする意思がある最高の代償額を指定することができる。
【0090】
適格なデジタルコンポーネントの識別は、次いで複数のコンピューティングデバイスのセット514内のコンピューティングデバイスの間で割り当てられる、複数のタスク517a〜517cにセグメント化され得る。たとえば、セット514の中の異なるコンピューティングデバイスは各々、デジタルコンポーネントデータベース516の異なる部分を分析して、コンポーネント要求512の中に含まれる情報に整合する配信パラメータを有する様々なデジタルコンポーネントを識別することができる。いくつかの実装形態では、セット514の中の所与の各コンピューティングデバイスは、様々なデータディメンション(または、ディメンションのセット)を分析することができ、分析の結果(Res1〜Res3)518a〜518cをデジタルコンポーネント配信システム510に戻して渡すこと(たとえば、送信すること)ができる。たとえば、セット514の中のコンピューティングデバイスの各々によって提供される結果518a〜518cは、コンポーネント要求に応答して配信するのに適格なデジタルコンポーネントのサブセット、および/またはいくつかの配信パラメータを有するデジタルコンポーネントのサブセットを識別し得る。デジタルコンポーネントのサブセットの識別は、たとえば、イベントデータを配信パラメータと比較すること、およびイベントデータの少なくともいくつかの特徴に整合する配信パラメータを有するデジタルコンポーネントのサブセットを識別することを含むことができる。
【0091】
デジタルコンポーネント配信システム510は、複数のコンピューティングデバイスのセット514から受信された結果518a〜518cを集約し、集約された結果に関連する情報を使用して、(i)要求512に応答して提供される1つまたは複数のデジタルコンポーネントを選択し、(ii)1つまたは複数のデジタルコンポーネントにとっての送信要件を決定する。たとえば、デジタルコンポーネント配信システム510は、1つまたは複数のコンポーネント評価プロセスの成果に基づいて、勝者のデジタルコンポーネントのセット(1つまたは複数のデジタルコンポーネント)を選択することができる。そして次に、デジタルコンポーネント配信システム510は、クライアントデバイス506が勝者のデジタルコンポーネントのセットを所与の電子文書の中に組み込むことを可能にする返答データ520(たとえば、返答を表すデジタルデータ)を生成すること、およびネットワーク502を介してそれを送信することができ、その結果、勝者のデジタルコンポーネントのセットおよび電子文書のコンテンツが、クライアントデバイス506のディスプレイにおいて一緒に提示される。
【0092】
いくつかの実装形態では、クライアントデバイス506は、返答データ520の中に含まれる命令を実行し、命令は、1つまたは複数のデジタルコンポーネントサーバから勝者のデジタルコンポーネントのセットを取得するようにクライアントデバイス506を構成し、かつクライアントデバイス506がそれを取得することを可能にする。たとえば、返答データ520の中の命令は、デジタルコンポーネントサーバ508から所与の勝者のデジタルコンポーネントを取得するために、ネットワークロケーション(たとえば、ユニフォームリソースロケータ(URL))、およびクライアントデバイス506にサーバ要求(SR:server request)521をデジタルコンポーネントサーバ508へ送信させるスクリプトを含むことができる。要求に応答して、デジタルコンポーネントサーバ508は、サーバ要求521の中で指定された(たとえば、複数のデジタルコンポーネントを記憶するデータベース内の)所与の勝者のデジタルコンポーネントを識別し、クライアントデバイス506において電子文書の中で所与の勝者のデジタルコンポーネントを提示するデジタルコンポーネントデータ(DCデータ)522を、クライアントデバイス506へ送信する。
【0093】
電子文書の検索を容易にするために、環境500は、電子文書をクロール(crawl)するとともに電子文書にインデックスを付ける(たとえば、電子文書のクロールされたコンテンツに基づいてインデックスが付けられる)ことによって電子文書を識別する検索システム550を含むことができる。電子文書についてのデータは、データが関連する電子文書に基づいてインデックスが付けられ得る。電子文書のインデックス付きの随意にキャッシュされたコピーが、検索インデックス552(たとえば、ハードウェアメモリデバイス)の中に記憶される。電子文書に関連するデータは、電子文書の中に含まれるコンテンツを表すデータ、および/または電子文書用のメタデータである。
【0094】
クライアントデバイス506は、ネットワーク502を介して検索クエリを検索システム550にサブミットすることができる。それに応答して、検索システム550は、検索インデックス552にアクセスして、検索クエリに関連する電子文書を識別する。検索システム550は、検索結果の形態での電子文書を識別し、検索結果ページの中でクライアントデバイス506に検索結果を戻す。検索結果は、特定の検索クエリに応答する(たとえば、関連する)電子文書を識別する、検索システム550によって生成されるデータであり、検索結果とのユーザ対話に応答して、クライアントデバイスに、指定されたネットワークロケーション(たとえば、URL)にデータを要求するようにさせる、アクティブリンク(たとえば、ハイパーテキストリンク)を含む。例示的な検索結果は、ウェブページタイトル、ウェブページから抽出されたテキストの断片または画像の一部分、およびウェブページのURLを含むことができる。別の例示的な検索結果は、ダウンロード可能なアプリケーションのタイトル、ダウンロード可能なアプリケーションを記述するテキストの断片、ダウンロード可能なアプリケーションのユーザインターフェースを描写する画像、および/またはアプリケーションがそこからクライアントデバイス506にダウンロードされ得るロケーションへのURLを含むことができる。いくつかの状況では、サブミットされた検索クエリに関連するダウンロード可能なアプリケーションについての情報を提示するために、検索システム550は、クライアントデバイス506においてインストールするためにアプリケーションがそこからダウンロードされ得るアプリケーションストア(または、オンラインポータル)の一部であり得るか、またはそれと対話し得る。他の電子文書と同様に、検索結果ページは、デジタルコンポーネント(たとえば、広告、ビデオクリップ、オーディオクリップ、画像、または他のデジタルコンポーネント)がその中に提示され得る1つまたは複数のスロットを含むことができる。
【0095】
コンポーネント要求に応答して送信されるべきデジタルコンポーネントを選択するために、配信システム510は、コンポーネント要求に応答して送信されるのに適格なデジタルコンポーネントのセットを識別し得る。配信システム510は、次いで、たとえば、オークション手順を通じて送信されるべき、適格なデジタルコンポーネントのうちの1つまたは複数を選択し得る。いくつかの実装形態では、配信システム510は、それらのそれぞれの適格性値に従って、適格なデジタルコンポーネントをランク付けすること、およびコンポーネント要求に応答して送信されるべき、最も高くランク付けされた1つまたは複数のデジタルコンポーネントを選択することによって、オークション手順を実行する。
【0096】
たとえば、配信システム510は、デジタルコンポーネントA、B、およびCを、コンポーネント要求に応答して送信されるのに適格であると識別し得る。この例では、デジタルコンポーネントAは適格性値が$5であり、デジタルコンポーネントBは適格性値が$1であり、デジタルコンポーネントCは適格性値が$5.5であり、ここで、デジタルコンポーネントの適格性値は、デジタルコンポーネントに関連するつけ値を表す。配信システム510は、それらのそれぞれの適格性値に従ってデジタルコンポーネントを(たとえば、降順で)、C、A、Bとしてランク付けし得る。最後に、配信システム510は、コンポーネント要求に応答して送信するために、最も高くランク付けされたデジタルコンポーネントCを選択し得る。
【0097】
デジタルコンポーネント要求に応答して送信されるべきデジタルコンポーネントを選択した後、配信システム510は、選択されたデジタルコンポーネントにとっての送信要件を決定する。送信要件は、デジタルコンポーネントの送信に応答してデジタルコンポーネントのプロバイダによって実行されるべきアクションを指定する。たとえば、送信要件は、デジタルコンポーネントのプロバイダがデジタルコンポーネントの送信に応答してある代償額をサブミットすることを指定してよい。場合によっては、代償額は、デジタルコンポーネントの提示に帰属する特定のイベントのインスタンス(たとえば、デジタルコンポーネントとのユーザ対話)ごとにサブミットされるべき額を指定する。
【0098】
配信システム510は、コンポーネント要求に応答して送信されるのに適格であると決定された、選択されたデジタルコンポーネントの適格性値および/または他のデジタルコンポーネントの適格性値に基づいて、選択されたデジタルコンポーネントの送信要件を決定し得る。たとえば、配信システム510は、デジタルコンポーネントA、B、およびCを、デジタルコンポーネント要求に応答して送信するのに適格であると識別してよく、ここで、A、B、およびCは、それぞれの適格性値が$5、$1、および$5.5である。配信システム510は、送信のために(それが最高の適格性値を有するので)デジタルコンポーネントCを選択してよく、デジタルコンポーネントCにとっての送信要件を、適格なデジタルコンポーネントの適格性値の中から適格性値が次に高くなるように決定してよい。この例では、次に高い適格性値は$5(すなわち、デジタルコンポーネントAの適格性値)であり、したがって、配信システム510は、デジタルコンポーネントCの送信要件を$5となるように決定してよい。
【0099】
図6は、上記で説明した動作を実行するために使用され得る例示的なコンピュータシステム600のブロック図である。システム600は、プロセッサ610、メモリ620、記憶デバイス630、および入力/出力デバイス640を含む。構成要素610、620、630、および640の各々は、たとえば、システムバス650を使用して、相互接続され得る。プロセッサ610は、システム600内での実行のために命令を処理することが可能である。一実装形態では、プロセッサ610はシングルスレッド型プロセッサである。別の実装形態では、プロセッサ610はマルチスレッド型プロセッサである。プロセッサ610は、メモリ620の中または記憶デバイス630上に記憶された命令を処理することが可能である。
【0100】
メモリ620は、システム600内で情報を記憶する。一実装形態では、メモリ620はコンピュータ可読媒体である。一実装形態では、メモリ620は揮発性メモリユニットである。別の実装形態では、メモリ620は不揮発性メモリユニットである。
【0101】
記憶デバイス630は、システム600用の大容量ストレージを提供することが可能である。一実装形態では、記憶デバイス630はコンピュータ可読媒体である。様々な異なる実装形態では、記憶デバイス630は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイス(たとえば、クラウド記憶デバイス)によってネットワークを介して共有される記憶デバイス、またはいくつかの他の大容量記憶デバイスを含むことができる。
【0102】
入力/出力デバイス640は、システム600のための入力/出力動作を行う。一実装形態では、入力/出力デバイス640は、1つまたは複数のネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードを含むことができる。別の実装形態では、入力/出力デバイスは、入力データを受け取るとともに、他の入力/出力デバイス660、たとえば、キーボード、プリンタ、およびディスプレイデバイスへ出力データを送るように構成された、ドライバデバイスを含むことができる。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビジョンクライアントデバイスなどの、他の実装形態も使用され得る。
【0103】
図6において例示的な処理システムが説明されているが、本明細書で説明した主題および機能的動作の実装形態は、他のタイプのデジタル電子回路構成において、または本明細書で開示する構造およびそれらの構造的均等物を含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、あるいはそれらのうちの1つまたは複数の組合せにおいて実施され得る。
【0104】
本明細書は、システムおよびコンピュータプログラム構成要素に関して「構成される」という用語を使用する。1つまたは複数のコンピュータのシステムの場合、特定の動作またはアクションを実行するように構成されることは、動作においてシステムに動作またはアクションを実行させる、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せが、システムにインストールされていることを意味する。1つまたは複数のコンピュータプログラムの場合、特定の動作またはアクションを実行するように構成されることは、1つまたは複数のプログラムが、データ処理装置によって実行されたとき、装置に動作またはアクションを実行させる命令を含むことを意味する。
【0105】
本明細書で説明した主題および機能的動作の実施形態は、デジタル電子回路構成において、有形に具現されたコンピュータソフトウェアまたはファームウェアにおいて、本明細書で開示する構造およびそれらの構造的均等物を含むコンピュータハードウェアにおいて、あるいはそれらのうちの1つまたは複数の組合せにおいて実施され得る。本明細書で説明した主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のための、またはデータ処理装置の動作を制御するための、有形非一時的記憶媒体上で符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実施され得る。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムアクセスメモリデバイスもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つまたは複数の組合せであり得る。代替的にまたは追加として、プログラム命令は、データ処理装置による実行のための好適な受信機装置への送信用に情報を符号化するために生成される、人工的に生成された伝搬信号、たとえば、機械生成された電気信号、光信号、または電磁信号において符号化され得る。
【0106】
「データ処理装置」という用語はデータ処理ハードウェアを指し、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置はまた、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)であり得るか、またはそれをさらに含むことができる。装置は、ハードウェアに加えて、コンピュータプログラム用の実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つまたは複数の組合せを構成するコードを随意に含むことができる。
【0107】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれることもあり、またはそのように説明されることもある、コンピュータプログラムは、コンパイル型言語もしくはインタープリタ型言語、または宣言型言語もしくは手続き型言語を含む、任意の形式のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはコンピューティング環境において使用するのに適したモジュール、コンポーネント、サブルーチン、または他のユニットとしてを含む、任意の形態で展開され得る。プログラムは、ファイルシステムの中のファイルに対応してよいが、そのことは必須ではない。プログラムは、他のプログラムまたはデータ、たとえば、マークアップ言語文書の中、当該のプログラムに専用の単一のファイルの中、あるいは複数の協調ファイル、たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイルの中に記憶された、1つまたは複数のスクリプトを保持するファイルの一部分の中に、記憶され得る。コンピュータプログラムは、1つのサイトに位置するか、または複数のサイトにわたって分散されデータ通信ネットワークによって相互接続される、1つのコンピュータ上または複数のコンピュータ上で実行されるように展開され得る。
【0108】
本明細書では、「エンジン」という用語は、ソフトウェアベースのシステム、サブシステム、または1つもしくは複数の特定の機能を実行するようにプログラムされるプロセスを指すために広く使用される。概して、エンジンは、1つまたは複数のロケーションにおける(たとえば、1つまたは複数のプロセッサを含む)1つまたは複数のコンピュータ上にインストールされた、1つまたは複数のソフトウェアモジュールまたは構成要素として実装される。いくつかの場合には、1つまたは複数のコンピュータは特定のエンジンに専用であり、他の場合には、複数のエンジンが1つまたは複数の同じコンピュータにおいてインストールされ得るとともに実行中であり得る。
【0109】
本明細書で説明したプロセスおよび論理フローは、入力データに対して動作するとともに出力を生成することによって機能を実行するために、1つまたは複数のプログラマブルコンピュータが1つまたは複数のコンピュータプログラムを実行することによって実行され得る。プロセスおよび論理フローはまた、専用論理回路構成、たとえば、FPGAもしくはASICによって、または専用論理回路構成と、プログラムされた1つもしくは複数のコンピュータとの組合せによって実行され得る。
【0110】
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサまたはその両方、あるいは任意の他の種類の中央処理ユニットに基づくことができる。概して、中央処理ユニットは、読取り専用メモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受け取る。コンピュータの必須要素は、命令を行うまたは実行するための中央処理ユニット、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。中央処理ユニットおよびメモリは、専用論理回路構成によって増補され得るか、または専用論理回路構成の中に組み込まれ得る。概して、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、または光ディスクを含むか、あるいはそれらからデータを受け取ること、もしくはそれらにデータを転送すること、またはその両方を行うように動作可能に結合される。しかしながら、コンピュータは、そのようなデバイスを有することは必須ではない。その上、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオプレーヤもしくはモバイルビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス、たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブの中に組み込まれ得る。
【0111】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、不揮発性媒体、および不揮発性メモリデバイスを含む。
【0112】
ユーザとの対話を行うために、本明細書で説明した主題の実施形態は、情報をユーザに表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)モニタまたはLCD(液晶ディスプレイ)モニタ、ならびにユーザがそれによってコンピュータに入力を与えることができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールを有する、コンピュータ上で実施され得る。ユーザとの対話を行うために他の種類のデバイスも使用することができ、たとえば、ユーザに提供されるフィードバックは、任意の形態の知覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む、任意の形態で受け取ることができる。加えて、コンピュータは、ユーザによって使用されるデバイスへ文書を送ること、およびそうしたデバイスから文書を受信することによって、たとえば、ユーザのデバイス上のウェブブラウザから受信された要求に応答してそのウェブブラウザへウェブページを送ることによって、ユーザと対話することができる。また、コンピュータは、パーソナルデバイス、たとえば、メッセージングアプリケーションを動作させているスマートフォンへテキストメッセージまたは他の形式のメッセージを送ること、および見返りとしてユーザから応答メッセージを受信することによって、ユーザと対話することができる。
【0113】
機械学習モデルを実施するためのデータ処理装置はまた、たとえば、機械学習トレーニングまたは機械学習産物の共通の部分および計算集約的な部分、すなわち、推論、作業負荷を処理するための、専用ハードウェアアクセラレータユニットを含むことができる。
【0114】
機械学習モデルは、機械学習フレームワーク、たとえば、TensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークを使用して実装および展開され得る。
【0115】
本明細書で説明した主題の実施形態は、たとえば、データサーバとしての、バックエンド構成要素を含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、本明細書で説明した主題の実装形態とユーザがそれを通じて対話できるグラフィカルユーザインターフェース、ウェブブラウザ、もしくはアプリを有するクライアントコンピュータを含む、コンピューティングシステム、あるいは1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せにおいて実施され得る。システムの構成要素は、デジタルデータ通信の任意の形態または媒体、たとえば、通信ネットワークによって、相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、たとえば、インターネットを含む。
【0116】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に互いからリモートであり、通常は通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータ上で動作しており互いにクライアントサーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、たとえば、クライアントとして働くデバイスと対話するユーザにデータを表示し、かつそうしたユーザからユーザ入力を受信するために、データ、たとえば、HTMLページを、ユーザデバイスへ送信する。ユーザデバイスにおいて生成されるデータ、たとえば、ユーザ対話の結果は、サーバにおいてデバイスから受信され得る。
【0117】
本明細書は多くの特定の実装詳細を含むが、これらは、任意の発明の範囲において、または特許請求され得るものの範囲において、限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。本明細書において別個の実施形態のコンテキストで説明されるいくつかの特徴はまた、単一の実施形態において組合せで実施され得る。反対に、単一の実施形態のコンテキストで説明される様々な特徴はまた、複数の実施形態において別個にまたは任意の好適な部分組合せで実施され得る。その上、特徴はいくつかの組合せで作用するものとして上記で説明されることがあり、さらには当初はそのように特許請求されることがあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除することができ、特許請求される組合せは、部分組合せまたは部分組合せの変形を対象とすることがある。
【0118】
同様に、動作は特定の順序で図面の中に描写され特許請求の範囲の中に記載されるが、このことは、望ましい結果を達成するために、そのような動作が、示された特定の順序または連続的な順序で実行されること、またはすべての図示した動作が実行されることを必要とするものと、理解されるべきではない。いくつかの環境では、マルチタスキングおよび並列処理が有利であり得る。その上、上記で説明した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とするものと理解されるべきではなく、説明したプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品の中に一緒に組み込まれ得るか、または複数のソフトウェア製品の中にパッケージ化され得ることを理解されたい。
【0119】
本主題の特定の実施形態が説明されている。他の実施形態が以下の特許請求の範囲内に入る。たとえば、特許請求の範囲において記載されるアクションは、異なる順序で実行することができ、依然として望ましい結果を達成することができる。一例として、添付の図面の中に示すプロセスは、望ましい結果を達成するために、必ずしも図示の特定の順序または連続的な順序を必要とするとは限らない。場合によっては、マルチタスキングおよび並列処理が有利であり得る。