IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許7512351ターゲティングおよびその他の設定を改善するためのコンテンツプロバイダの推薦
<>
  • 特許-ターゲティングおよびその他の設定を改善するためのコンテンツプロバイダの推薦 図1
  • 特許-ターゲティングおよびその他の設定を改善するためのコンテンツプロバイダの推薦 図2
  • 特許-ターゲティングおよびその他の設定を改善するためのコンテンツプロバイダの推薦 図3
  • 特許-ターゲティングおよびその他の設定を改善するためのコンテンツプロバイダの推薦 図4
  • 特許-ターゲティングおよびその他の設定を改善するためのコンテンツプロバイダの推薦 図5
  • 特許-ターゲティングおよびその他の設定を改善するためのコンテンツプロバイダの推薦 図6
  • 特許-ターゲティングおよびその他の設定を改善するためのコンテンツプロバイダの推薦 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-28
(45)【発行日】2024-07-08
(54)【発明の名称】ターゲティングおよびその他の設定を改善するためのコンテンツプロバイダの推薦
(51)【国際特許分類】
   G06F 16/953 20190101AFI20240701BHJP
   G06Q 30/0251 20230101ALI20240701BHJP
【FI】
G06F16/953
G06Q30/0251
【請求項の数】 7
【外国語出願】
(21)【出願番号】P 2022180535
(22)【出願日】2022-11-10
(62)【分割の表示】P 2020520505の分割
【原出願日】2019-12-11
(65)【公開番号】P2023021113
(43)【公開日】2023-02-09
【審査請求日】2022-12-07
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】マヘシュ・ケララプラ・マンジュナタ
(72)【発明者】
【氏名】チウ・ワ・ソ
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】特開2012-037920(JP,A)
【文献】米国特許出願公開第2011/0264507(US,A1)
【文献】特開2010-026792(JP,A)
【文献】特開2016-177620(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
文書空間の関連付けに基づいて選択基準の集合から選択基準を刈り込むための方法であって、
1つまたは複数のプロセッサを含むデータ処理システムによって、過去の履歴データに基づいて、各々が予測される要求のそれぞれのセットに関連付けられた複数の検索トークンを受信するステップと、
前記データ処理システムによって、前記予測される要求を使用して、刈り込まれた複数の検索トークンを生成するために、前記複数の検索トークンから第1の検索トークンおよび第2の検索トークンを削除するステップと、
前記データ処理システムによって、前記刈り込まれた複数の検索トークンをコンテンツプロバイダのコンピューティングデバイスに提供するステップと
を含む、方法。
【請求項2】
それぞれの予測される要求が、前記予測される要求に関する予測されたトラフィック値に基づいて重み値に関連付けられ、
前記削除するステップが、
前記データ処理システムによって、複数の重み値の各々を所定のトラフィックの閾値と比較すること、
前記データ処理システムによって、刈り込まれた複数の予測される要求を選択することであって、それぞれの重み値が前記所定のトラフィックの閾値よりも大きいことに応じて、前記刈り込まれた複数の予測される要求の各々が前記複数の予測される要求から選択される、選択すること、
前記データ処理システムによって、ビット列を構築することであって、前記ビット列内の各位置が、前記刈り込まれた複数の予測される要求のうちのそれぞれの刈り込まれた予測される要求に対応し、前記それぞれの刈り込まれた予測される要求が前記第1の検索トークンに対応するかどうかを示す値を有する、構築すること
をさらに含む請求項1に記載の方法。
【請求項3】
前記データ処理システムによって、前記複数の検索トークンのうちの前記第1の検索トークンと前記第2の検索トークンとの間の類似性の値が所定の閾値未満であることに応じて前記刈り込まれた複数の検索トークンを生成するために、前記複数の検索トークンから前記第1の検索トークンを削除するステップをさらに含む請求項1に記載の方法。
【請求項4】
前記複数の検索トークンの各々が、コンテンツのレーティング値に関連付けられ、
複数の予測される要求を取り出すことが、前記第1の検索トークンおよび前記第1の検索トークンに関連する前記コンテンツのレーティング値に基づく請求項1に記載の方法。
【請求項5】
前記刈り込まれた複数の検索トークンを前記コンテンツプロバイダのコンピューティングデバイスに提供するステップが、前記第1の検索トークンおよび前記第2の検索トークンの指示を提供することをさらに含む請求項1に記載の方法。
【請求項6】
前記刈り込まれた複数の検索トークンを前記コンテンツプロバイダのコンピューティングデバイスに提供するステップが、
前記データ処理システムによって、前記刈り込まれた複数の検索トークンに基づいて前記刈り込まれた複数の検索トークンに関する妥当性の値を取り出すステップと、
前記データ処理システムによって、前記刈り込まれた複数の検索トークンに基づく前記妥当性の値を前記コンテンツプロバイダのコンピューティングデバイスに提供するステップと
をさらに含む請求項1に記載の方法。
【請求項7】
1つまたは複数のプロセッサを含むデータ処理装置を含むシステムであって、前記データ処理装置が、請求項1から6のいずれか1項に記載の方法を実行するように構成される、システム。
【発明の詳細な説明】
【技術分野】
【0001】
インターネットなどのコンピュータネットワーク環境においては、第三者のコンテンツプロバイダが、エンドユーザのコンピューティングデバイス上に表示するための第三者のコンテンツアイテムを提供する。これらの第三者のコンテンツアイテム、たとえば、広告は、それぞれのパブリッシャに関連するウェブページ上に表示され得る。これらの第三者のコンテンツアイテムは、コンテンツアイテムを提供した第三者のコンテンツプロバイダを特定するコンテンツを含み得る。
【0002】
第三者のコンテンツアイテムは、一部の実装においては、肯定的検索トークン(retrieval token)および否定的検索トークンの使用によって選択される可能性がある。肯定的検索トークンは、検索トークンに関連するコンテンツアイテムが肯定的検索トークンの属性に合致する属性を有する情報リソースに挿入されるべきであることをコンテンツ選択プラットフォームに示す可能性がある。対照的に、否定的検索トークンは、関連するコンテンツが否定的検索トークンの属性に合致する属性を有する情報リソースに挿入されるべきでないことをコンテンツ選択プラットフォームに示すことができる。このようにして、コンテンツプロバイダは、肯定的と否定的との両方の検索トークンのリストを使用して、どの情報リソースがそれらのコンテンツプロバイダのコンテンツアイテムを含み得るかを調整することができる。
【0003】
しかし、検索トークンのどの組合せがターゲティング可能な情報リソースを最大化するかを決定することは、計算上難しいタスクであり、それは、その決定がコンテンツプロバイダによって提供される検索トークンのそれぞれの可能な順列(permutation)の影響を推定することを含み得るからである。多くのコンテンツプロバイダは、数百から数千の検索トークンを利用し、各順列の繰り返しの推定を計算上ほぼ実行不可能にし、いかなる人の能力も遙かに超えたものにする。結果として、本明細書において検討されるシステムおよび方法を使用しないコンテンツプロバイダの実装は、検索トークンのどの組合せがどのような効果を有するかについて当て推量するかまたは勘で推測するにとどまる。これは、誤ったコンテンツ選択および望ましくないまたは最適でないコンテンツの送信をもたらし、帯域幅および電力リソースを無駄にする可能性がある。
【発明の概要】
【課題を解決するための手段】
【0004】
本明細書において検討されるシステムおよび方法は、データ処理システムが、履歴データに基づく推定技術を使用して情報リソースに挿入するために選択されるコンテンツアイテムの数に対して否定的検索トークンの集合のうちのどの否定的検索トークンが最も大きな影響を与えているのかを特定することによってコンテンツ選択プロセスを自動的に改善することを可能にする。データ処理システムは、情報リソースの同様の集合に関連付けられる、コンテンツプロバイダによって提供されたその他の検索トークンをさらに特定することができる。どの検索トークンがコンテンツ選択プロセスに対して最も大きな影響を与えるのかを特定した後、データ処理システムは、提供された検索トークンからそれらの検索トークンを取り除き、それらのコンテンツアイテムを提供することができる情報リソースの数に改善が見られるかどうかを判定するための推定プロセスを実行することができる。これは、誤ったコンテンツ選択の削減または排除を可能にし、データ処理システムがそのようなコンテンツを伝達することを防止することを可能にし、それによってシステムの帯域幅および電力消費を削減する可能性がある。
【0005】
本開示の少なくとも1つの態様は、文書空間(document space)の関連付けに基づいて選択基準の集合から選択基準を刈り込むための方法を対象とする。方法は、複数の検索トークンをコンテンツプロバイダのコンピューティングシステムから1つまたは複数のプロセッサを含むデータ処理システムによって受信するステップを含み得る。複数の検索トークンの各々は、第2の検索トークンを含み得る。方法は、データ処理システムによって第1の検索トークンの指示を取り出すステップを含み得る。第1の検索トークンは、複数の検索トークンに含まれ得る。方法は、データ処理システムによって複数の検索トークンに基づいて複数の予測される要求(predicted request)を取り出すステップを含み得る。方法は、データ処理システムによって、複数の検索トークンのうちの第1の検索トークンに関する関連する予測される要求を示す第1のデータ構造を構築するステップを含み得る。そのようなデータ構造は、ビット列を含む可能性があり、第1のビット列内の各位置は、複数の予測される要求のうちのそれぞれの予測される要求に対応し、それぞれの予測される要求が第1の検索トークンに対応するかどうかを示す値を有する。一部のそのような実装において、方法は、データ処理システムによって第2のビット列を取り出すステップを含むことが可能であり、第2のビット列は、複数の検索トークンの中の第2の検索トークンに関連付けられ得る。第2のビット列内の各位置は、第1の複数の予測される要求のうちのそれぞれの予測される要求に対応し、それぞれの予測される要求が第2の検索トークンに対応するかどうかを示す値を有することが可能である。方法は、データ処理システムによって、類似性の値を計算するために、第1のデータ構造またはビット列を、(たとえば、複数の検索トークンのうちの第2の検索トークンに関する関連する予測される要求を示す)第2のデータ構造またはビット列と比較するステップを含み得る。方法は、データ処理システムによって、類似性の値が所定の閾値よりも大きいかどうかを判定するステップを含み得る。方法は、データ処理システムによって、類似性の値が所定の閾値よりも大きいと判定することに応じて刈り込まれた複数の検索トークンを生成するために複数の検索トークンから第1の検索トークンおよび第2の検索トークンを削除するステップを含み得る。方法は、データ処理システムによって、刈り込まれた複数の検索トークンをコンテンツプロバイダのコンピューティングデバイスに提供するステップを含み得る。
【0006】
一部の実装において、第1のデータ構造および第2のデータ構造は、それぞれビット列を含み、各ビット列内の各位置は、複数の予測される要求のうちの予測される要求に対応し、それぞれの予測される要求がそれぞれの検索トークンに対応するかどうかを示す値を有する。一部のさらなる実装において、方法は、第1の刈り込まれたビット列を生成するために第1のビット列内の位置をビット列選択基準を使用して選択するステップを含み得る。第1の刈り込まれたビット列は、第1のビット列よりも小さい可能性がある。一部の実装において、方法は、第2の刈り込まれたビット列を生成するために第2のビット列内の位置をビット列選択基準を使用して選択するステップを含み得る。第2の刈り込まれたビット列は、第2のビット列よりも小さい可能性がある。一部の実装において、第1のビット列を第2のビット列と比較するステップは、第1の刈り込まれたビット列を第2の刈り込まれたビット列と比較することを含む。
【0007】
一部の実装において、第1の刈り込まれたビット列を生成するための選択基準は、擬似ランダムな選択に基づく。一部の実装において、複数の予測される要求を取り出すステップは、複数の重み値を取り出すことをさらに含む。複数の重み値の各々は、それぞれの予測される要求に関する推定されたトラフィック値に対応し得る。一部の実装において、方法は、データ処理システムによって、複数の重み値の各々を所定のトラフィックの閾値と比較するステップを含み得る。一部の実装において、方法は、データ処理システムによって、刈り込まれた複数の予測される要求を選択するステップを含み得る。それぞれの重み値が所定のトラフィックの閾値よりも大きいことに応じて、刈り込まれた複数の予測される要求の各々が、複数の予測される要求から選択される。一部の実装において、方法は、データ処理システムによって第1のビット列を構築するステップを含み得る。第1のビット列内の各位置は、刈り込まれた複数の予測される要求のうちのそれぞれの予測される要求に対応し、それぞれの刈り込まれた予測される要求が第1の検索トークンに対応するかどうかを示す値を有することが可能である。
【0008】
一部の実装において、方法は、データ処理システムによって、比較されたビット列を生成するために第1のビット列と第2のビット列との間で論理AND演算を実行するステップを含み得る。一部の実装において、方法は、データ処理システムによって、類似性の値を計算するために所定のマッチ値に等しい比較されたビット列内の位置の数をカウントするステップを含み得る。一部の実装において、方法は、データ処理システムによって、類似性の値が所定の閾値未満であることに応じて刈り込まれた複数の検索トークンを生成するために複数の検索トークンから第1の検索トークンを削除するステップを含み得る。一部の実装において、複数の検索トークンの各々は、コンテンツのレーティング値に関連付けられる。一部の実装において、方法は、複数の検索トークンおよび第1の検索トークンに関連するコンテンツのレーティング値に基づいて複数の予測される要求を取り出すステップを含み得る。一部の実装において、方法は、第1の検索トークンおよび第2の検索トークンの指示を提供するステップを含み得る。一部の実装において、方法は、データ処理システムによって、刈り込まれた複数の検索トークンに基づいて刈り込まれた複数の検索トークンに関する妥当性(relevance)の値を取り出すステップを含み得る。一部の実装において、方法は、データ処理システムによって、刈り込まれた複数の検索トークンに基づく妥当性の値をコンテンツプロバイダのコンピューティングデバイスに提供するステップを含み得る。
【0009】
本開示の少なくとも1つのその他の態様は、1つまたは複数のプロセッサを含むデータ処理システムを含むシステムを対象とする。データ処理システムは、複数の検索トークンをコンテンツプロバイダのコンピューティングシステムから受信し得る。複数の検索トークンは、第2の検索トークンを含み得る。データ処理システムは、第1の検索トークンの指示を取り出すことができ、第1の検索トークンは、複数の検索トークンに含まれる。データ処理システムは、複数の検索トークンに基づいて複数の予測される要求を取り出し得る。データ処理システムは、複数の検索トークンのうちの第1の検索トークンに関する関連する予測される要求を示す第1のデータ構造を構築し得る。そのようなデータ構造は、ビット列を含む可能性があり、第1のビット列内の各位置は、複数の予測される要求のうちのそれぞれの予測される要求に対応し、それぞれの予測される要求が第1の検索トークンに対応するかどうかを示す値を有する。一部のそのような実装において、データ処理システムは、第2のビット列を取り出すことが可能であり、第2のビット列は、複数の検索トークンの中の第2の検索トークンに関連付けられる。第2のビット列内の各位置は、第1の複数の予測される要求のうちのそれぞれの予測される要求に対応することが可能であり、それぞれの予測される要求が第2の検索トークンに対応するかどうかを示す値を有する。データ処理システムは、類似性の値を計算するために、第1のデータ構造またはビット列を、(たとえば、複数の検索トークンのうちの第2の検索トークンに関する関連する予測される要求を示す)第2のデータ構造またはビット列と比較し得る。データ処理システムは、類似性の値が所定の閾値よりも大きいと判定し得る。データ処理システムは、類似性の値が所定の閾値よりも大きいと判定することに応じて刈り込まれた複数の検索トークンを生成するために複数の検索トークンから第1の検索トークンおよび第2の検索トークンを削除し得る。データ処理システムは、刈り込まれた複数の検索トークンをコンテンツプロバイダのコンピューティングデバイスに提供し得る。
【0010】
一部の実装において、第1のデータ構造および第2のデータ構造は、それぞれビット列を含み、各ビット列内の各位置は、複数の予測される要求のうちの予測される要求に対応し、それぞれの予測される要求がそれぞれの検索トークンに対応するかどうかを示す値を有する。一部のさらなる実装において、データ処理システムは、第1の刈り込まれたビット列を生成するために第1のビット列内の位置をビット列選択基準を使用して選択することが可能であり、第1の刈り込まれたビット列は、第1のビット列よりも小さい。一部の実装において、データ処理システムは、第2の刈り込まれたビット列を生成するために第2のビット列内の位置をビット列選択基準を使用して選択することが可能であり、第2の刈り込まれたビット列は、第2のビット列よりも小さい。一部の実装において、データ処理システムは、第1の刈り込まれたビット列を第2の刈り込まれたビット列と比較することによって第1のビット列を第2のビット列と比較し得る。一部の実装において、第1の刈り込まれたビット列を生成するためのビット列選択基準は、擬似ランダムな選択に基づく。一部の実装において、データ処理システムは、複数の重み値を取り出すことが可能であり、複数の重み値の各々は、それぞれの予測される要求に関する推定されたトラフィック値に対応する。一部の実装において、データ処理システムは、複数の重み値の各々を所定のトラフィックの閾値と比較し得る。
【0011】
一部の実装において、データ処理システムは、刈り込まれた複数の予測される要求を選択することが可能であり、それぞれの重み値が所定のトラフィックの閾値よりも大きいことに応じて、刈り込まれた複数の各々が、複数の予測される要求から選択される。一部の実装において、データ処理システムは、第1のビット列を構築することが可能であり、第1のビット列内の各位置は、刈り込まれた複数の予測される要求のうちのそれぞれの予測される要求に対応し、それぞれの刈り込まれた予測される要求が第1の検索トークンに対応するかどうかを示す値を有する。一部の実装において、データ処理システムは、比較されたビット列を生成するために第1のビット列と第2のビット列との間で論理AND演算を実行し得る。一部の実装において、データ処理システムは、類似性の値を計算するために所定のマッチ値に等しい比較されたビット列内の位置の数をカウントし得る。
【0012】
一部の実装において、データ処理システムは、類似性の値が所定の閾値未満であることに応じて刈り込まれた複数の検索トークンを生成するために複数の検索トークンから第1の検索トークンを削除し得る。一部の実装において、複数の検索トークンの各々は、コンテンツのレーティング値に関連付けられ得る。一部の実装において、データ処理システムは、複数の検索トークンおよび第1の検索トークンに関連するコンテンツのレーティング値に基づいて複数の予測される要求を取り出し得る。一部の実装において、データ処理システムは、第1の検索トークンおよび第2の検索トークンの指示を提供し得る。一部の実装において、データ処理システムは、刈り込まれた複数の検索トークンに基づいて刈り込まれた複数の検索トークンに関する妥当性の値を取り出し得る。一部の実装において、データ処理システムは、妥当性の値をコンテンツプロバイダのコンピューティングデバイスに提供し得る。
【0013】
これらのおよびその他の態様および実装が、下で詳細に検討される。上述の情報および下の詳細な説明は、様々な態様および実装の例示的な例を含み、特許請求される態様および実装の本質および特徴を理解するための概要または枠組みを提供する。図面は、様々な態様および実装を例示し、さらに理解させ、本明細書の一部に組み込まれ、本明細書の一部を構成する。態様は、組み合わされることが可能であり、本発明の1つの態様の文脈で説明される特徴は、その他の態様と組み合わされ得ることが容易に理解されるであろう。態様は、任意の都合のよい形態で実装されることが可能である。たとえば、有形の担持媒体(たとえば、ディスク)または無形の担持媒体(たとえば、通信信号)である可能性がある適切な担持媒体(コンピュータ可読媒体)上で運ばれる可能性がある適切なコンピュータプログラムによる。態様は、態様を実装するように構成されたコンピュータプログラムを実行するプログラミング可能なコンピュータの形態をとる可能性がある好適な装置を使用して実装される可能性もある。
【0014】
添付の図面は、正しい縮尺で描かれるように意図されていない。様々な図面における同様の参照番号および参照指示は、同様の要素を示す。明瞭にする目的で、あらゆる図面においてあらゆる構成要素がラベル付けされるとは限らない可能性がある。
【図面の簡単な説明】
【0015】
図1】コンテンツプロバイダのプラットフォームのために検索トークンを刈り込むための例示的なシステムを示すブロック図である。
図2】予測される要求に基づいて検索トークンに関するビット列を構築する例示的な図である。
図3】2つのビット列から類似性の値を決定する例示的な図である。
図4】予測される要求に基づいて検索トークンの集合から検索トークンを刈り込む方法の流れ図である。
図5】予測される要求に基づいて検索トークンに関するビット列を構築する方法の流れ図である。
図6】検索トークンの集合から検索トークンを刈り込む方法の流れ図である。
図7】本明細書において検討されるコンピュータのいずれかを実装するために使用される可能性がある例示的なコンピュータシステムの全体的なアーキテクチャを示す図である。
【発明を実施するための形態】
【0016】
以下は、ユーザ識別子の集合の交わりのプライバシーを保護した決定の方法、装置、およびシステムに関連する様々な概念ならびにそれらの方法、装置、およびシステムの実装の詳細な説明である。上で導入され、下でより詳細に検討される様々な概念は、説明される概念が実装のいかなる特定の方法にも限定されないので、多数の方法のいずれかで実装される可能性がある。
【0017】
コンテンツプロバイダは、とりわけ、ウェブページ、ビデオセグメント、またはモバイルアプリケーションである可能性がある情報リソースに挿入するためにコンテンツ選択システムにコンテンツアイテムを提供することができる。コンテンツ選択システムは、情報リソースのコンテンツに基づいて、コンテンツプロバイダによって提供されたコンテンツアイテムを情報リソースに挿入することができる。たとえば、特定のキーワードが情報リソースに関連付けられる場合、または情報リソースが特定のデモグラフィックス(demographic)情報に関連するユーザのグループによって見られる場合、コンテンツ選択システムは、同様の属性に関連付けられるコンテンツアイテムを選択することができる。したがって、コンテンツプロバイダシステムは、ターゲティングされた情報リソースにコンテンツアイテムを挿入するようにコンテンツ選択システムに指示することができるターゲティング情報を含み得る検索トークンをそれらのコンテンツプロバイダのコンテンツアイテムに関連付けることができる。コンテンツプロバイダによって提供される検索トークンは、とりわけ、言語情報、ユーザのデモグラフィックス情報、ユーザの関心の垂直情報(user interest vertical information)、コンテンツレーティング情報、およびキーワード情報を含み得る。
【0018】
検索トークンは、肯定的性質または否定的性質などの性質も含み得る。肯定的検索トークンは、検索トークンに関連するコンテンツアイテムが肯定的検索トークンの属性に合致する属性を有する情報リソースに挿入されるべきであることをコンテンツ選択プラットフォームに示すことができる。対照的に、否定的検索トークンは、関連するコンテンツが否定的検索トークンの属性に合致する属性を有する情報リソースに挿入されるべきでないことをコンテンツ選択プラットフォームに示すことができる。このようにして、コンテンツプロバイダは、肯定的と否定的との両方の検索トークンのリストを使用して、どの情報リソースがそれらのコンテンツプロバイダのコンテンツアイテムを含み得るかを調整することができる。さらに、特定のコンテンツ選択プラットフォームは、コンテンツプロバイダによって提供されたコンテンツアイテムに関連する検索トークンに基づいてそれらのコンテンツアイテムを含み得る情報リソースの数および性質を推定するためのインターフェースを提供することができる。
【0019】
しかし、検索トークンのどの組合せがターゲティング可能な情報リソースを最大化するかを決定することは、計算上難しいタスクであり、それは、その決定がコンテンツプロバイダによって提供される検索トークンのそれぞれの可能な順列の影響を推定することを含み得るからである。多くのコンテンツプロバイダは、数百から数千の検索トークンのリストを提供し、各順列の繰り返しの推定を計算上ほぼ実行不可能にする。これらの問題は、多くのコンテンツプロバイダが単純に肯定的および否定的検索トークンの準備された第三者のリストを使用し、それがコンテンツプロバイダのコンテンツアイテムを含み得る情報リソースの数に予期しないおよび意図しない否定的影響を与える可能性があるという事実によって悪化させられる。さらに、コンテンツプロバイダによる推定されたフィードバックに基づく検索トークンの手動調整は、実行不可能なほど時間がかかり得る。
【0020】
上述の技術的な問題に対処するために、データ処理システムは、履歴データに基づく推定技術を使用して情報リソースに挿入するために選択されるコンテンツアイテムの数に対して否定的検索トークンのうちのどれが最も大きな影響を与えているのかを自動的に特定することができる。データ処理システムは、情報リソースの同様の集合に関連付けられる、コンテンツプロバイダによって提供されたその他の検索トークンをさらに特定することができる。どの検索トークンがコンテンツ選択プロセスに対して最も大きな影響を与えているのかを特定した後、データ処理システムは、提供された検索トークンからそれらの検索トークンを取り除き、それらのコンテンツアイテムを提供することができる情報リソースの数に改善が見られるかどうかを判定するための推定プロセスを実行することができる。
【0021】
たとえば、「Go to my channel to see my other videos.」と述べる説明を伴う「Phone Unboxing Video」という題名の情報リソースを考える。したがって、情報リソースは、英語に関連付けられ得る。コンテンツアイテムによってこの情報リソースおよび恐らくはその他の同様の情報リソースにターゲティングしたいコンテンツプロバイダを考える。しかし、コンテンツプロバイダは、とりわけ、否定的なターゲティングの基準(たとえば、否定的検索トークン)「video」、「videos」、および「TV」を意図せず追加した。否定的キーワード「video」がターゲティング可能な情報リソースの数に最も大きな否定的影響を与えていると仮定する。一部の実装においては、キーワード「videos」および「TV」が同様の情報リソースからの同様の履歴的要求に関連付けられているので、データ処理システムは、それらのキーワード「videos」および「TV」もコンテンツプロバイダによって提供された検索トークンのリストから削除されるべきであると判定し得る。したがって、データ処理システムは、同様の履歴的パターンに基づいてすべての同様の検索トークンを代わりに削除することによって、否定的キーワードの各組合せに関する予測される要求の推定を繰り返し削除および実行する必要をなくすことができる。
【0022】
したがって、本明細書において説明される技術的な解決策は、コンテンツアイテムの到達範囲に否定的影響を与える可能性がある不必要なまたは意図されない検索トークンの削除の計算の複雑さを大幅に減らすことができる。さらに、統計分析に基づくビット圧縮技術を適用することによって、データ処理システムは、各検索トークンに関して同様に関連する情報リソースを決定するストレージの要件および計算の複雑さを大幅に減らすことができ、これは、その他の実装に優る改善である。
【0023】
図1は、コンテンツプロバイダのプラットフォームのために検索トークンを刈り込むためのシステム100を示す。システム100は、少なくとも1つのコンピュータネットワーク110を含み得る。システム100は、少なくとも1つのコンテンツプロバイダ115を含み得る。システム100は、少なくとも1つのデータ処理システム105を含み得る。データ処理システム105は、少なくとも1つの検索トークンレシーバ125を含み得る。データ処理システム105は、少なくとも1つの予測される要求リトリーバ(predicted request retriever) 130を含み得る。データ処理システム105は、少なくとも1つのビット列コンストラクタ135を含み得る。データ処理システム105は、少なくとも1つのビット列比較モジュール140を含み得る。データ処理システム105は、少なくとも1つの検索トークンプルーナ(retrieval token pruner) 145を含み得る。データ処理システム105は、少なくとも1つの刈り込み済みトークンプロバイダ150を含み得る。システム100は、少なくとも1つのデータベース120を含み得る。一部の実装においては、データ処理システムが、コンテンツプロバイダ115を含み得る。一部の実装においては、データ処理システムが、データベース120を含み得る。
【0024】
システム100の構成要素(たとえば、ネットワーク110、コンテンツプロバイダ115、データ処理システム105、検索トークンレシーバ125、予測される要求リトリーバ130、ビット列コンストラクタ135、ビット列比較モジュール140、検索トークンプルーナ145、刈り込み済みトークンプロバイダ150、データベース120)の各々は、図7に関連して本明細書において詳細に説明されるコンピューティングシステム700のハードウェア構成要素またはソフトウェアとハードウェア構成要素との組合せを使用して実装され得る。たとえば、データ処理システム105は、サーバまたはその他のコンピューティングデバイスを含み得る。コンテンツプロバイダ115も、サーバまたはその他のコンピューティングデバイスを含み得る。データ処理システム105の構成要素の各々は、本明細書において詳細に説明される機能を実行することができる。
【0025】
ネットワーク110は、インターネット、ローカルエリアネットワーク、広域ネットワーク、メトロエリアネットワーク、またはその他のエリアネットワークなどのコンピュータネットワーク、イントラネット、衛星ネットワーク、音声またはデータモバイル電話通信ネットワークなどのその他のコンピュータネットワーク、およびこれらの組合せを含み得る。システム100のデータ処理システム105は、たとえば、少なくとも1つのコンテンツプロバイダ115および少なくとも1つのデータベース120とネットワーク110を介して通信することができる。ネットワーク110は、コンテンツプロバイダ115と、データ処理システム105と、とりわけウェブサーバなどの1つまたは複数のコンテンツソースとの間で情報を中継する任意の形態のコンピュータネットワークである可能性がある。一部の実装において、ネットワーク110は、インターネット、ならびに/またはローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、セルラネットワーク、衛星ネットワーク、もしくはその他の種類のデータネットワークなどのその他の種類のデータネットワークを含む可能性がある。ネットワーク110は、ネットワーク110内でデータを受信および/または送信するように構成される任意の数のコンピューティングデバイス(たとえば、コンピュータ、サーバ、ルータ、ネットワークスイッチなど)も含む可能性がある。ネットワーク110は、任意の数の有線および/またはワイヤレス接続をさらに含む可能性がある。コンテンツプロバイダ115は、ネットワーク110内のその他のコンピューティングデバイスに(たとえば、光ファイバケーブル、CAT5ケーブルなどによって)結線されるトランシーバと(たとえば、WiFi、セルラ、無線などによって)ワイヤレスで通信する可能性がある。コンテンツプロバイダ115は、プロキシデバイス(たとえば、ルータ、ネットワークスイッチ、またはゲートウェイ)を介してネットワーク110のコンピューティングデバイスとワイヤレスで通信する可能性もある。
【0026】
データ処理システム105は、少なくとも1つのプロセッサおよびメモリ、すなわち、処理回路を含み得る。メモリは、プロセッサによって実行されるときプロセッサに本明細書において説明される動作のうちの1つまたは複数を実行させるプロセッサが実行可能な命令を記憶する。プロセッサは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、またはこれらの組合せを含む可能性がある。メモリは、プロセッサにプログラム命令を与えることができる電子、光、磁気、または任意のその他のストレージまたは送信デバイスを含む可能性があるがこれに限定されない。メモリは、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ASIC、FPGA、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能プログラマブルROM (EEPROM)、消去可能プログラマブルROM (EPROM)、フラッシュメモリ、光学式媒体、またはプロセッサが命令を読むことができる任意のその他の好適なメモリをさらに含む可能性がある。命令は、任意の好適なコンピュータプログラミング言語からのコードを含む可能性がある。データ処理システム105は、様々な機能を実行することができる1つまたは複数のコンピューティングデバイスまたはサーバを含み得る。
【0027】
コンテンツプロバイダ115は、情報リソース上に表示するためのコンテンツアイテムを提供するためにコンテンツプロバイダの主体によって運用されるサーバまたはその他のコンピューティングデバイスを含み得る。コンテンツプロバイダ115によって提供されるコンテンツは、主コンテンツ、たとえば、コンテンツプロバイダ115によって提供されるコンテンツを含む情報リソースなどの情報リソース上に表示するための第三者のコンテンツアイテムを含み得る。コンテンツアイテムは、検索結果ウェブページ上にも表示され得る。たとえば、コンテンツプロバイダ115は、ウェブページの主コンテンツが会社によって提供される会社のウェブページなどの情報リソースのコンテンツスロット内に表示するための、または検索エンジンによって提供される検索結果のランディングページ上に表示するためのコンテンツアイテムを提供するかまたはその他のコンテンツアイテムのソースであることが可能である。コンテンツプロバイダ115に関連するコンテンツアイテムは、スマートフォンまたはその他のクライアントデバイス上のアプリケーションの実行の一部として表示されるコンテンツなどの、ウェブページ以外の情報リソース上に表示され得る。システム100との関連で、コンテンツプロバイダ115の機能が以下で説明される。
【0028】
データベース120は、本明細書において説明される情報のいずれかを記憶および/または保持するように構成されたデータベースであることができる。データベース120は、配列、フラットファイル、区切りファイル(delineated file)、または任意のその他の種類および形態のデータベースファイルなどの任意の適切な種類および形態のデータ構造に記憶され得る。一部の実装において、データベース120は、予測される要求の値を予め投入され得る。予測される要求の値は、履歴データおよび関連する検索トークンに基づいて外部システムによって生成され得る。データベース120は、本明細書において説明される値の各々、複数、または閾値を含むおよび/またはインデックス付けすることができる1つまたは複数のデータ構造を保有し得る。一部の実装において、データベースは、1つまたは複数のメモリアドレスまたはインデックス値を使用してアクセスされる可能性がある。データベース120は、ネットワーク110を介してデータ処理システム105のモジュールまたはコンテンツプロバイダ115によってアクセスされる可能性がある。一部の実装において、データベース120は、データ処理システム105の内部にある。一部の実装において、データベース120は、データ処理システム105の外部にある可能性があり、ネットワーク110を介してアクセスされる可能性がある。一部の実装において、データベース120は、多くの異なるコンピュータシステムまたはストレージ要素に分散される可能性があり、ネットワーク110および/または好適なコンピュータバスインターフェースを介してアクセスされる可能性がある。データ処理システムは、演算、決定、選択、特定、または計算のいずれかまたはすべての結果を適切な値をインデックス付けされた1つまたは複数のデータ構造に記憶することができ、それらのデータ構造の各々は、本明細書において説明される機能のいずれかを実行するためにデータ処理システム105またはコンテンツプロバイダ115によってアクセスされる可能性がある。
【0029】
検索トークンレシーバ125は、1つまたは複数のコンテンツプロバイダから検索トークンを受信するためのアプリケーション、サーバ、サービス、デーモン、ルーチン、またはその他の実行可能な論理を含む可能性があり、コンピューティングシステムのプロセッサ、またはコプロセッサ、またはその他のハードウェア(たとえば、ASICもしくはFPGA回路など)によって実行される可能性がある。検索トークンレシーバ125は、コンテンツプロバイダ115から複数の検索トークンを受信することができる。一部の実装において、検索トークンレシーバ125は、複数の検索トークンから検索トークンを刈り込む要求を受信することができる。複数の検索トークンを刈り込むことは、複数の検索トークンに関連するコンテンツアイテムとのインタラクションの回数を増やすことによってコンテンツプロバイダ115のためのコンテンツ選択プロセスを改善することができる。さらに、検索トークンは、コンテンツアイテムの選択および情報リソースへの挿入の見込み(likelihood)を高めるためにそれらのコンテンツアイテムに挿入される可能性がある。検索トークンが情報リソース内に何らかの形で存在する(たとえば、ウェブページ上のキーワードなど)かまたは情報リソースに直接関連する(たとえば、同様の言語、もしくはデモグラフィックス情報などを含む)場合、検索トークンに関連するコンテンツアイテムは、情報リソースに挿入されるより高い見込みを有する可能性がある。検索トークンは、特定の性質に関連付けられる可能性があり、たとえば、肯定的検索トークンまたは否定的検索トークンである可能性がある。肯定的検索トークンは、関連する(たとえば、合致するキーワード、同様のユーザのデモグラフィックスなど)情報リソースにコンテンツアイテムが挿入される見込みを高める可能性がある。対照的に、否定的性質を有する検索トークンは、反対の効果を有する可能性があり、関連するコンテンツアイテムが関連する(たとえば、合致するキーワード、同様のユーザのデモグラフィックスなど)情報リソースに挿入される見込みを下げることができる。否定的検索トークンは、1つまたは複数の情報リソースからコンテンツアイテムを除外する可能性がある。
【0030】
コンテンツプロバイダ115は、どの検索トークンが特定のコンテンツアイテムに関連付けられるか、複数の検索トークンの中の各検索トークンのコンテンツおよび性質を指定することができる。検索トークンを使用して、コンテンツプロバイダ115は、コンテンツアイテムに関する特定のターゲティングの基準を提供することができる。たとえば、コンテンツプロバイダ115は、コンテンツアイテムが特定のキーワードまたはフレーズを含む情報リソース上に示されるべきでないと指定する可能性がある。別の例において、コンテンツプロバイダ115は、コンテンツアイテムが別の言語、たとえば、スペイン語の情報リソース上に示されるべきであることを示す検索トークンを提供する可能性がある。一部の実装においては、コンテンツアイテムに関する複数のターゲティングの基準を指定するために、複数の検索トークンが使用され得る。
【0031】
一部の実装において、検索トークンは、1つまたは複数の情報リソースおよび/または文書に関連付けられ得る。検索トークンは、デモグラフィックス情報、コンテンツのレーティング、言語、コンテンツの主題、キーワード、フレーズ、または情報リソースに関連するその他の情報のうちの1つまたは複数を含み得る。たとえば、検索トークンは、デモグラフィックス情報を含む。情報リソースは、特定のデモグラフィックスに関連するユーザからより高いトラフィックを有する可能性がある。したがって、それらの検索トークンは、(たとえば、ユーザプロファイル情報などに基づいて)同じデモグラフィックス情報を有するユーザによってアクセスされる情報リソースに関連付けられ得る。別の例においては、情報リソースが、特定のコンテンツのレーティングまたは主題に関連付けられ得る。そのような状況においては、同様なコンテンツのレーティングおよび/またはコンテンツの主題の指示を含む検索トークンが、そのような情報リソースに関連付けられる可能性がある。別の例においては、情報リソースが、1つまたは複数のキーワードまたはフレーズを含み得る。1つまたは複数のキーワードまたはフレーズが情報リソース内に存在する場合、検索トークンは、情報リソースに関連付けられる可能性がある。検索トークンは、コンテンツアイテムが挿入される可能性がある情報リソースに関連するコンテンツアイテムを選択するためにコンテンツ選択プラットフォームによって使用され得る。肯定的検索トークンは、コンテンツプロバイダがコンテンツアイテムを特定のキーワード、デモグラフィックス、およびその他の情報に関連付けられ情報リソースに向けることを可能にし、一方、否定的検索トークンは、コンテンツプロバイダがコンテンツアイテムを関連する情報リソースから逸らすことを可能にする。データ処理システム105は、データベース120の検索トークンに関連する情報リソースにアクセスすることができる。
【0032】
予測される要求リトリーバ130は、要求の予測を取り出すためのアプリケーション、サーバ、サービス、デーモン、ルーチン、またはその他の実行可能な論理を含む可能性がある。予測される要求リトリーバ130は、一部の実装において、検索トークンレシーバ125と組み合わされる可能性がある。予測される要求リトリーバ130は、第1の検索トークンの指示を取り出すことができる。第1の検索トークンは、検索トークンレシーバ125によって受信される複数の検索トークンに含まれ得る。第1の検索トークンは、関連するコンテンツアイテムを要求することができる情報リソースの数に対して最も大きな否定的影響を与えると判定されたトークンであることが可能である。たとえば、第1の検索トークンは、関連するコンテンツアイテムがキーワード「ビデオ」を含むいかなる情報リソース上にも表示されないようにすることができる、キーワード「ビデオ」を含む否定的検索トークンであることが可能である。一部の実装において、第1の検索トークンは、データベース120内のデータ構造にアクセスすることによって示され得る。一部の実装において、第1の検索トークンの指示は、複数の検索トークンの中の最上位の否定的検索トークンの要求であることが可能である。たとえば、予測される要求リトリーバ130は、複数のキーワードの各々に関する情報リソースの関連付けを取り出す可能性がある。予測される要求リトリーバ130は、複数の検索トークンのうちのどれが否定的であり、しかも最も多くの情報リソースに関連するかを判定し、それによって、複数の検索トークンから最上位の否定的検索トークンを取り出すことができる。一部の実装において、予測される要求リトリーバ130は、複数の最上位の否定的検索トークンを取り出し、それらの否定的検索トークンをコンテンツプロバイダ115に伝達することができる。コンテンツプロバイダ115は、提供された複数の否定的検索トークンのうちの少なくとも1つの選択を行い、予測される要求リトリーバ130に指示を伝達することができる。
【0033】
予測される要求リトリーバ130は、データベース120から複数の予測される要求を取り出すことができる。一部の実装において、予測される要求リトリーバ130は、複数の検索トークンの各々に基づいて複数の予測される要求を取り出すことができる。たとえば、第1の検索トークンは、複数の予測される要求の一部またはすべてが記憶されるデータベース120内の位置に対応し得る。一部の実装において、予測される要求リトリーバ130は、第1の検索トークンを使用することなく複数の予測される要求を取り出すためにデータベース120にアクセスすることができる。データベース120は、複数の検索トークンの各々に関連する予測される要求のリストを予め投入され得る。予測される要求リトリーバ130は、検索トークンの各々からの予測される要求を集約して複数の予測される要求を生成することができる。それぞれの予測される要求は、データベース120の履歴的コンテンツアイテム情報に基づいて情報リソースが特定の検索トークンに関連するコンテンツアイテムを要求すると予測されるという指示を含む可能性がある。たとえば、各検索トークンは、コンテンツを情報リソースに挿入させる特定の要求に関連付けられ得る。一部の実装において、予測される要求の各々は、関連するコンテンツのレーティング値を含み得る。コンテンツのレーティング値は、関連する情報リソースのレーティング(たとえば、G、PG、R、ESRBレーティングなど)に対応し得る。データベース120の履歴データに基づいて、予測される要求リトリーバ130は、情報リソースが複数の検索トークンの各々に関連するコンテンツを要求すると予測されるかどうかを取り出すことができる。予測される要求リトリーバ130は、検索トークンに関する予測される要求の数と、要求に関連する情報リソースの各々とを取り出すことができる。たとえば、データベース120に記憶された過去の性能データに基づいて、どの情報リソースが複数の検索トークンの各々に関連するコンテンツを要求したかを示すデータ構造が生成され得る。過去の履歴データは、複数の検索トークンの各々に関して予測される要求の値および予測される要求の情報リソース(たとえば、どれだけの情報リソースが検索トークンに関連するコンテンツを要求する可能性があるかなど)を決定するために季節性データ(seasonality data)およびその他のコンテンツアイテム情報に基づいて外挿され得る。
【0034】
ビット列コンストラクタ135は、複数の検索トークンの各々に関連する複数の要求の各々に関するビット列を構築するためのアプリケーション、サーバ、サービス、デーモン、ルーチン、またはその他の実行可能な論理を含む可能性がある。一部の実装において、ビット列コンストラクタ135は、メモリデバイス内の列のビット値をインクリメントするためのハードウェアカウンタ回路を含む可能性がある。ビット列は、複数の検索トークンに関連する予測される要求の各々に関する文書空間を表し得る。予測される要求の各々は、情報リソースに関連付けられ得る。ビット列コンストラクタ135は、検索トークンレシーバ125によって受信された複数の検索トークンの各々に対して動作し得る。一部の実装において、ビット列コンストラクタ135は、複数の検索トークンの各々に関するビットマップを順に(たとえば、一度に1つずつ)構築することができる。一部の実装において、ビット列コンストラクタ135は、複数の検索トークンの各々に関するビット列を並列に構築することができる(たとえば、一部のまたはすべてのビット列が同時に構築されるなど)。検索トークンに関するビット列を構築するために、ビット列コンストラクタ135は、ビット列を記憶するためのメモリの領域を割り当てることができる。一部の実装において、メモリの領域は、データ処理システム105の別の構成要素によって事前に割り当てられ得る。検索トークンに関するビット列の各ビットに関して、ビット列コンストラクタ135は、複数の予測される要求のうちのそれぞれの予測される要求に対応するインデックスインデックスを割り振ることができる。ビット列コンストラクタ135は、それぞれの検索トークンと予測される要求リトリーバ130によって取り出された複数の予測される要求との間の関連付けの集合を取り出すためにデータベース120にアクセスすることができる。複数の予測される要求の各々は、その検索トークンに関するビット列内の位置に対応するインデックス値を含み得る。
【0035】
ビット列コンストラクタ135は、予測される要求の各々が検索トークンに関連付けられるかどうかを判定するためにデータベース120においてアクセスされる関連付けの各々を分析することができる。予測される要求が検索トークンに対応する場合、ビット列コンストラクタ135は、予測される要求のインデックス値に対応するビット列内のビット位置をマッチ値に設定することができる。一部の実装において、マッチ値は、2進数(たとえば、0または1)であることが可能である。たとえば、予測される要求が検索トークンに対応する場合、マッチ値は、「1」として設定され得る。予測される要求が検索トークンに関連付けられない場合、ビット列コンストラクタ135は、予測される要求のインデックス値に対応するビット列内の位置を非マッチ値に設定することができる。一部の実装において、非マッチ値は、2進数(たとえば、0または1)であることが可能である。たとえば、予測される要求が検索トークンに対応しない場合、ビット列コンストラクタ135は、適切なビット列位置を「0」に設定することができる。一部の実装においては、2進数「0」が、マッチ値であることが可能であり、2進数「1」が、非マッチ値であることが可能である。
【0036】
検索トークンに関するビット列を構築するプロセスを視覚化するために、ここで図2を参照する。示されるのは、それぞれの予測される要求210A~Nが検索トークン205Aとの関連付けに基づいてビット列215Aを埋めるためにどのように使用され得るかを理解するのを助けるための例示である。示されるように、検索トークン205Aは、予測される要求210A、予測される要求210C、および予測される要求210Nとの関連付けを有する。任意の数の予測される要求が任意のサイズのビット列を構築するために使用され得ることを示すために、点が追加される。検索トークン205Aは、予測される要求210Bに関連付けられない(または予測される要求に否定的に関連付けられる)ことに留意されたい。関連付けおよび非関連付けの各々に基づいて、ビット列の各位置が、特定の予測される要求に対応するように埋められる。たとえば、予測される要求210A、予測される要求210C、および予測される要求210Nに対応するビット列の位置は、すべて「1」に設定され、「1」は、この例においてはマッチ値である。予測される要求210Bが検索トークン205Aに関連付けられないので、ビット列215A内の予測される要求210Bの対応する位置は、非マッチ値に設定され、非マッチ値は、この例においては2進数「0」である。ここで示されるのは単一の検索トークンの関連付けからビット列への変換の1つの例だけであるが、ビット列コンストラクタ135は、予測される要求リトリーバ130によって取り出された複数の予測される要求の各々に関してビット列を構築することができる。多くの実装において、構築されるビット列は、かなり疎らである可能性がある(たとえば、2:1、5:1、10:1、100:1、もしくは任意のその他のそのような値を超える0と1との比率を有するか、および/またはビット列内で複数の否定的データインジケータ(たとえば、0)によって平均して広く隔てられた肯定的データインジケータを有する)。たとえば、一部の実装において、ビット列は、数千個または数万個の位置と、ビット列全体に散らばったわずかに百個以下の正の値とを有する可能性がある。そのようなビット列は、データの疎らな性質が網羅的で非効率的な総当たりプロセスにつながるので、繰り返し処理することが非常に難しい可能性がある。
【0037】
再び図1を参照して、ビット列コンストラクタ135は、2進ビット列の代わりのフォーマットを用いてビット列を生成し得ることを理解されたい。たとえば、一部の実装において、予測される要求リトリーバ130によって取り出された予測される要求の各々は、それぞれの重み値を含み得る。重み値は、予測される要求がそれぞれの検索トークンとどれだけ密接に関連するのかに対応し得る。一部の実装において、ビット列コンストラクタは、検索トークンに関してそれぞれの予測される要求に対応する重み値をビット列の各位置に投入することができる。一部の実装において、重み値は、対応する予測される要求に関する推定されたトラフィック値に対応し得る。
【0038】
一部の実装において、ビット列コンストラクタ135は、刈り込まれた複数の予測される要求を生成するために予測される要求の各々に関連する重み値に閾値を適用することによってビット列を構築することができる。刈り込まれた複数の予測される要求は、本明細書において上で説明されたようにビット列を構築するために使用され得る。たとえば、特定の予測される要求は、高レベルのトラフィックを示す可能性がある(たとえば、予測される要求は、多くのユーザを有するウェブページに由来する可能性がある)。高レベルのトラフィックを示す予測される要求は、低レベルのトラフィックを示す予測される要求よりもコンテンツプロバイダ115にとって妥当である可能性がある。したがって、ビット列コンストラクタは、所定のトラフィックの閾値未満である推定されたトラフィックの重み値を有する特定の予測される要求を削除し得る。一部の実装において、ビット列コンストラクタ135は、所定のトラフィックの閾値を取り出すためにデータベース120にアクセスすることができる。一部の実装において、ビット列コンストラクタ135は、コンテンツプロバイダ115から所定のトラフィックの閾値を受信することができる。ビット列コンストラクタ135は、複数の予測される要求の各々に含まれる推定されたトラフィック値の各々を所定のトラフィックの閾値と比較して、複数の予測される要求から予測される要求を削除すべきかどうかを判定することができる。一部の実装において、予測される要求に含まれる推定されたトラフィック値が所定のトラフィックの閾値未満である場合、その予測される要求は、複数の予測される要求から削除される可能性がある。予測される要求に含まれる推定されたトラフィック値が所定のトラフィックの閾値以上である場合、その予測される要求は、複数の予測される要求に含まれる可能性がある。ビット列コンストラクタ135は、複数の予測される要求の各々に含まれる推定されたトラフィック値を所定のトラフィックの閾値と繰り返し比較して、刈り込まれた複数の予測される要求を生成することができる。
【0039】
システムの計算性能を改善するために、ビット列コンストラクタ135は、ストレージフットプリントを削減し、さらなる処理においてビット列を使用するデータ処理システム105のその他のモジュールによって必要とされる計算の量を削減するために、ビット列に対して圧縮処理を実行することができる。ビット列を圧縮するために、ビット列コンストラクタ135は、選択基準に基づいて各ビット列の特定のビットを選択し、ビット列に関連する検索トークンに対応する刈り込まれたビット列を構築するために選択されたビットの各々を使用することができる。たとえば、ビット列コンストラクタ135は、それぞれの刈り込まれたビット列を生成するために各ビット列内の特定の範囲の位置(たとえば、各ビット列の最初の百個の位置)を選択する可能性がある。刈り込まれたビット列は、完全なビット列よりも少ない位置を持ち得る。一部の実装において、選択基準は、データベース120から取り出され得るかまたはコンテンツプロバイダ115から受信され得る。一部の実装において、ビット列コンストラクタ135は、擬似ランダムな選択を選択基準として使用し得る。ビット列コンストラクタ135は、検索トークンレシーバ125によって受信された検索トークンの各々に対応するビット列の各々のために同じ選択基準(たとえば、同じ擬似ランダムに選択された位置)を使用し得る。このようにして、それぞれの刈り込まれたビット列内の位置が予測される要求の同じ集合に対応するとき、刈り込まれたビット列の各々が、本明細書において以下で説明されるように同じ方法で比較され得る。
【0040】
一部の実装において、ビット列コンストラクタ135は、検索トークンの各々のためまたは検索トークンの組合せのためにブルームフィルタを構築することによって刈り込まれたビット列を生成することができる。たとえば、ビット列コンストラクタ135は、検索トークンに対応するビット列を記憶するためのメモリの領域を割り当てることができる。予測される要求リトリーバ130によって取り出された検索トークンに関連する予測される要求に基づいて、ビット列比較モジュールは、1つまたは複数のハッシュアルゴリズム(たとえば、SHA-1、SHA-2、MD5など)を使用することができ、それらのハッシュアルゴリズムの各々は、予測される要求をビット列内の位置にマッピングすることができる。ビット列コンストラクタ135は、ハッシュアルゴリズムの各々を使用して検索トークンに関連するそれぞれの予測される要求をハッシュして一群のビット位置の値を生成することができる。ビット列コンストラクタ135は、一群のビット位置の値の各々に対応するビット列内の位置の各々をマッチ値(たとえば、2進数「1」)に設定することができる。一部の実装において、割り当てられたビット列内のビット列の位置の数は、検索トークンのすべてに関する予測される要求の総数よりも少ないことが可能であり、したがって、各検索トークンに関するビット列のメモリフットプリントを削減する。一部の実装において、ビット列コンストラクタ135は、同様の予測される要求がブルームフィルタを生成するために使用される場合に結果として得られるビット列がマッチ値に設定された同様のビット位置を持つようにハッシュアルゴリズムを使用してビット列を構築することができる。
【0041】
一部の実装において、ビット列コンストラクタ135は、各検索トークンに関して整数値のベクトルを生成するCount Min-Sketchアルゴリズムを使用することによって刈り込まれたビット列を生成することができる。刈り込まれたビット列は、整数値のベクトルを含むことが可能であり、ベクトルの各位置は、ハッシュ値の確率的なカウントであることが可能である。刈り込まれたビット列を生成するために、ビット列コンストラクタ135は、ゼロに初期化されるベクトルのためのメモリの領域を割り当てることができる。一部の実装において、ベクトル内の位置の数は、検索トークンのすべてに関する予測される要求の総数よりも少ないことが可能である。ビット列コンストラクタ135は、ハッシュされた予測される要求の集合を生成するために検索トークンに関する予測される要求の各々をハッシュすることができる。ハッシュされた予測される要求を生成すると、ビット列コンストラクタ135は、それぞれのハッシュされた予測される要求に対応する刈り込まれたビット列ベクトル内の各位置をインクリメントすることができる。たとえば、ハッシュされた予測される要求が3に等しい場合、ビット列コンストラクタは、ベクトルの3番目の位置を1だけインクリメントすることができる。一部の実装において、ビット列コンストラクタ135は、検索トークンに関する複数のベクトルを生成することができ、各ベクトルは、ハッシュ関数に対応する。複数のベクトルの場合、ビット列コンストラクタ135は、ハッシュされた予測される要求に対応する各ベクトルの各位置をインクリメントすることができ、ハッシュされた予測される要求は、そのベクトルのためのそれぞれのハッシュ関数を使用して計算される。
【0042】
ビット列コンストラクタ135は、複数の検索トークンの各々に関する構築されたビット列をデータベース120に記憶することができる。一部の実装において、ビット列コンストラクタ135は、対応する検索トークンの識別子によってインデックス付けされたデータ構造内の各ビット列を記憶することができる。一部の実装において、記憶されたビット列は、データ処理システム105のその他のモジュール、たとえば、ビット列比較モジュール140によってアクセスされる可能性がある。一部の実装において、ビット列コンストラクタ135によって構築されたビット列は、コンピュータメモリ、たとえば、図7に関連して本明細書において下で説明されるコンピュータシステム700のメモリ725に記憶される可能性がある。一部の実装において、ビット列比較モジュール140は、さらなる計算のために1つまたは複数のビット列を取り出すためにデータベース120にアクセスすることができる。一部の実装において、ビット列コンストラクタ135は、完全なビット列の代わりに刈り込まれたビット列を記憶することが可能であり、これは、本明細書において説明される計算の正確さを損なうことなくシステムのストレージの要件を引き下げることができる。
【0043】
ビット列比較モジュール140は、複数の検索トークンのうちの第1の検索トークンに関連するビット列と比較するためにコンピュータメモリ(たとえば、データベース120)に記憶されたビット列の各々を取り出すことができる。本明細書において上で説明されたように、第1の検索トークンは、最上位の否定的検索トークンであることが可能である。一部の実装において、ビット列比較モジュール140は、1つまたは複数の示された検索トークンの指示を受信する可能性がある。たとえば、ビット列比較モジュール140は、コンテンツプロバイダ115から、データベース120から、データ処理システム105の別のモジュールから、または別の外部コンピューティングデバイスから指示を受信し得る。指示に基づいて、ビット列比較モジュール140は、指示に関連するビット列を取り出すためにデータベース120にアクセスすることができる。ビット列比較モジュール140が示されたビット列を取り出すことを可能にすることは、妥当な検索トークンのみを分析しながら計算の改善をもたらし得る。一部の実装において、ビット列コンストラクタ135は、取り出されたビット列を、ローカルメモリコンピュータメモリ、たとえば、図7に関連して本明細書において説明されるメモリ725に記憶することができる。一部の実装において、ビット列比較モジュール140は、ビット列コンストラクタ135からビット列を取り出すことができる。
【0044】
複数の検索トークンのうちのどれが第1の検索トークンと密接に関連する(たとえば、同様の予測される要求に関連付けられる)のかを判定するために、ビット列比較モジュール140は、取り出されたビット列の各々を、広く第1のビット列と呼ばれる第1の検索トークン(たとえば、最上位の否定的検索トークンなど)に対応するビット列と比較することができる。一部の実装において、ビット列比較モジュール140は、取り出されたビット列の各々に関して類似性の値を決定するために取り出されたビット列の各々を第1のビット列と繰り返し比較することができる。類似性の値は、取り出されたビット列の各々が第1のビット列と共通して有する予測される要求の数を表し得る。類似性の値は、0から1までの間の10進値である可能性があり、同様の予測される要求を共有する2つのビット列は、1に近いかまたは1に等しい類似性の値を有する可能性があり、同様の予測される要求を共有しない2つのビット列は、0に近いかまたは0に等しい類似性の値を有する可能性がある。一部の実装において、類似性の値は、2つのビット列によって共有される予測される要求の数に対応する整数値である可能性がある。一部の実装において、ビット列比較モジュール140は、3つ以上のビット列のグループに関する類似性の値を決定することができる。
【0045】
類似性の値を計算することは、1つまたは複数の論理演算または計算に基づくことが可能である。たとえば、ビット列比較モジュール140は、どの予測される要求が2つのビット列の間で共有されるかを判定するために論理AND演算を使用して2つのビット列に対して動作する可能性がある。2つのビット列の論理AND演算を実行することは、両方の列に共通しないビットをマスクすることができる。ビット列の各位置が予測される要求に対応し得るので、結果として得られるANDされたビット列に残るマッチ値は、予測される要求が比較されたビット列に対応する検索トークンに関連付けられることを示し得る。一部の実装において、ビット列比較モジュールは、共有された類似性の値を計算するために3つ以上のビット列に対して論理的なビット毎の演算を実行することができる。ビット列比較モジュール140は、2つ以上のビット列の間のビット毎の論理演算から結果ビット列を計算することができる。結果ビット列内の各位置は、対応する要求される要求が2つ以上の検索トークンの間で共有されることを示し得る。2つ以上のビット列の間で共有される予測される要求の数を判定するために、ビット列比較モジュール140は、結果ビット列内のマッチ値の総数をカウントすることができる。ビット列比較モジュール140は、結果ビットマップ内の各位置を繰り返し比較し、結果ビット列内の位置がマッチ値に等しい度にカウンタレジスタをインクリメントすることができる。ビット列比較モジュールが結果ビット列内の各位置で繰り返されると、カウンタレジスタの値は、結果ビット列を計算するために使用された検索トークンの間の共有される予測される要求の総数に等しくなり得る。
【0046】
ビット列比較モジュール140によって実行されるプロセスの少なくとも一部を視覚化するために、ここで図3を参照されたい。図3に示されるのは、第1のビット列215Aおよび第2のビット列215Bである。第1のおよび第2のビット列の各々は、それぞれ、第1のおよび第2の検索トークンに対応する。この例示において、マッチ値は2進数の1に等しい。したがって、2進数「1」の値を有する各ビット列内の各位置は、対応する予測される要求がそのそれぞれの検索トークン(たとえば、その検索トークンに関連するコンテンツを要求する可能性が高い情報リソース)に関連付けられることを示す。マッチ値が2進数「1」であり、非マッチ値が2進数「0」であるので、ビット列比較モジュール140は、結果ビット列305を決定するために第1のビット列215Aと第2のビット列215Bとの間のビット毎の論理ANDを実行することができる。示されるように、ビット毎の論理AND演算を実行することは、第1のビット列215Aと第2のビット列215Bとの間で共有される予測される要求に対応するビットのみを維持することができる。結果ビット列305を計算した後、ビット列比較モジュール140は、類似性の値310を決定することができる。一部の実装において、ビット列比較モジュールは、マッチ値に等しい結果ビット列305内の位置の数を繰り返し決定することができる。結果ビット列305内の位置の総数は、類似性の値310に等しいことが可能である。一部の実装において、ビット列比較モジュールは、マッチ位置の数を結果ビット列305内の位置の総数によって割ることができる。
【0047】
再び図1を参照すると、ビット列比較モジュール140は、2つのビット列の間の類似性の値を決定するためにその他の方法を使用することができる。一部の実装において、第1のビット列および第2のビット列内の各位置は、対応する検索トークンとビット列内のそれぞれの位置に対応する予測される要求との間の妥当性の値に対応し得る重み値に等しい可能性がある。この場合、ビット列は、整数値または浮動小数点値である可能性がある重み値のベクトルである可能性がある。そのようなビット列の間の類似性の値を決定するために、ビット列比較モジュール140は、第1のビット列の各位置の妥当性の値が許容範囲値(たとえば、10%、15%など)以内で第2のビット列のそれぞれの位置に等しいかどうかを判定することができる。一部の実装において、許容範囲値は、データベース120から取り出されるか、コンテンツプロバイダ115から受信されるか、データ処理システム105の別のモジュールから受信されるか、またはネットワーク110を介して別の外部コンピューティングデバイスから受信される可能性がある。2つの値が所定の許容範囲値以内で等しい場合、ビット列比較モジュールは、結果ビット列(たとえば、結果ビット列305)の対応する位置をマッチ値に設定することができる。ビット列比較モジュール140は、完全な結果ビット列を決定するために第1のおよび第2のビット列内の位置の各々を繰り返し比較することができる。そして、ビット列比較モジュール140は、類似性の値を決定するために、結果ビット列内に存在するマッチ値の数を繰り返しカウントして本明細書において上で説明されたように類似性の値を決定することができる。ビット列比較モジュール140は、類似性の値を第1のまたは第2のビット列のうちの少なくとも一方に関連付けることができる。一部の実装において、ビット列比較モジュール140は、類似性の値を、第1のビット列、第2のビット列、第1の検索トークン、または第2の検索トークンのうちの少なくとも1つとともに、データ構造、たとえば、データベース120または別のコンピュータメモリ(たとえば、図7に関連して本明細書において下で説明されるメモリ725)に記憶することができる。
【0048】
検索トークンプルーナ145は、対応する検索トークンが複数の検索トークンから削除されるべきであるかどうかを判定するために、ビット列比較モジュール140によって計算された類似性の値の各々を所定の類似性の閾値と比較することができる。一部の実装において、検索トークンプルーナ145は、データベース120にアクセスすることによって所定の類似性の閾値を取り出すことができる。一部の実装において、検索トークンプルーナ145は、コンテンツプロバイダ115から所定の類似性の閾値を受信することができる。検索トークンプルーナ145は、刈り込み値(prune value)を決定するために、検索トークンレシーバ125によって受信された検索トークンの各々に関連するビット列比較モジュール140によって計算された類似性の値の各々を繰り返し比較することができる。刈り込み値は、ブールレジスタ値である可能性があり、2進数「0」または2進数「1」の値を取る可能性がある。一部の実装において、検索トークンプルーナ145は、それぞれの検索トークンに関する類似性の値が所定の類似性の閾値よりも大きいかどうかを判定することができる。類似性の値が所定の閾値よりも大きい場合、検索トークンプルーナ145は、刈り込み値(たとえば、2進値「1」)をそれぞれの検索トークンに関連付けることができる。たとえば、検索トークンプルーナ145は、刈り込み値を、対応する検索トークンまたは検索トークンの識別子を含むデータ構造に(たとえば、データベース120または図7に関連して本明細書において下で説明されるコンピュータメモリ725に)記憶することができる。類似性の値が所定の類似性の閾値よりも小さい場合、検索トークンプルーナ145は、非刈り込み値(non-prune value) (たとえば、2進値「0」など)を、対応する検索トークンまたは対応する検索トークンの識別子を含むデータ構造に(たとえば、データベース120または図7に関連して本明細書において下で説明されるコンピュータメモリ725に)記憶することによって、非刈り込み値をそれぞれの検索トークンに関連付けることができる。一部の実装において、検索トークンプルーナ145は、第1の検索トークン(たとえば、最上位の否定的検索トークン)を刈り込み値「1」に自動的に関連付けることができる。
【0049】
刈り込み値に基づいて、検索トークンプルーナ145は、複数の検索トークンから指定された検索トークンの各々を削除することができる。一部の実装において、検索トークンプルーナ145は、たとえ複数の検索トークンのうちのいずれも刈り込み値に関連付けられないとしても複数の検索トークンから第1の検索トークン(たとえば、最上位の否定的検索トークン)を削除することができる。検索トークンプルーナは、刈り込み値または非刈り込み値および対応する検索トークンまたは対応する検索トークンの識別子を含むデータ構造にアクセスすることができる。データ構造が刈り込み値を含む場合、検索トークンプルーナは、複数の検索トークンの各々を含むデータ構造から対応する検索トークンを削除し、それによって、刈り込まれた検索トークンのデータ構造を生成することができる。一部の実装において、検索トークンプルーナ145は、刈り込まれた検索トークンを含むデータ構造を生成することができる。検索トークンプルーナ145は、各検索トークンが非刈り込み値に関連付けられるかどうかを繰り返し判定することができる。検索トークンが非刈り込み値に関連付けられる場合、検索トークンプルーナ145は、刈り込まれた検索トークンを含むように生成されたデータ構造に対応する検索トークンを追加することができる。検索トークンがその代わりに刈り込み値に関連付けられる場合、検索トークンプルーナ145は、対応する検索トークンを無視し、刈り込まれた検索トークンを含むように生成されたデータ構造にその対応する検索トークンを追加しないことが可能である。一部の実装において、検索トークンプルーナ145は、どの検索トークンが複数の検索トークンから削除されたかのレコードを保有するために、どの検索トークンが刈り込まれた検索トークンのデータ構造内に存在しないかを示す値のリストを生成することができる。
【0050】
刈り込み済みトークンプロバイダ150は、ネットワーク110を介してコンテンツプロバイダ115に刈り込まれた複数の検索トークンを含むデータ構造を提供することができる。一部の実装において、刈り込み済みトークンプロバイダ150は、刈り込まれた複数の検索トークンの各々に関する妥当性の値を取り出すためにデータベース120にアクセスすることができる。一部の実装において、妥当性の値は、対応する検索トークンに関連する予測される要求の各々に関する推定されたトラフィック値の合計であることが可能である。一部の実装において、刈り込み済みトークンプロバイダ150は、コンテンツプロバイダ115から検索トークンレシーバ125によって受信された要求に対応する値によってインデックス付けされた、刈り込まれた複数の検索トークンを含むデータ構造をデータベース120に記憶することができる。コンテンツプロバイダ115は、刈り込み済みトークンプロバイダ150からの刈り込まれた検索トークンを含むデータ構造を要求することができる。要求に応答して、刈り込み済みトークンプロバイダ150は、データベース120にアクセスし、要求されたデータ構造をネットワークを介してコンテンツプロバイダ115に伝達することができる。一部の実装において、刈り込み済みトークンプロバイダ150は、刈り込まれた検索トークンを含むデータ構造が生成されるとき(たとえば、検索トークンプルーナ145による生成およびデータ投入後)、刈り込まれた検索トークンを含むデータ構造をコンテンツプロバイダ115に伝達することができる。刈り込まれた検索トークンを提供することに加えて、刈り込み済みトークンプロバイダ150は、検索トークンレシーバ125によって受信された複数の検索トークンから削除された検索トークンの各々の指示を提供することができる。
【0051】
ここで図4を参照すると、示されるのは、選択基準に基づいて検索トークンの集合から検索トークンを刈り込む例示的な方法400のフローチャートである。方法400は、データ処理システム105、図7に関連して本明細書において説明されるコンピュータシステム700、または本明細書において説明される任意のその他のコンピューティングデバイスによって行われ得るかまたはそうでなければ実行され得る。データ処理システムが、複数の検索トークンを受信し得る(402)。データ処理システムが、第1の検索トークンの指示を取り出し得る(404)。データ処理システムが、複数の予測される要求を取り出し得る(406)。データ処理システムが、第iの検索トークンを選択し得る(407)。データ処理システムが、第iの検索トークンに対応するビット列を構築し得る(408)。データ処理システムが、カウンタレジスタが検索トークンの数nに等しいかどうかを判定し得る(410)。データ処理システムが、カウンタレジスタiをインクリメントし得る(412)。データ処理システムが、複数の検索トークンから検索トークンを選択し、刈り込み得る(414)。データ処理システムが、刈り込まれた検索トークンを提供し得る(416)。
【0052】
データ処理システム(たとえば、データ処理システム105)が、複数の検索トークンを受信し得る(402)。一部の実装においては、データ処理システムが、ネットワーク(たとえば、ネットワーク110)を介してコンテンツプロバイダ(たとえば、コンテンツプロバイダ115)から複数の検索トークンを受信し得る。検索トークンは、デモグラフィックス情報、コンテンツのレーティング、コンテンツの主題、キーワード、フレーズ、または情報リソースに関連するその他の情報のうちの1つまたは複数を含み得る。複数の検索トークンを受信することは、コンテンツプロバイダによって提供されるコンテンツアイテムの性能に影響を与える可能性がある予測される要求に関連付けられる検索トークンを削除する要求を含む可能性がある。一部の実装において、複数の検索トークンを受信することは、検索トークンの総数nを受信することを含み得る。一部の実装において、データ処理システムは、複数の検索トークンを受信した後、検索トークンの総数nを決定し得る。一部の実装において、データ処理システムは、コンピュータメモリ(たとえば、データベース120、図7に関連して本明細書において下で説明されるメモリ725など)から複数の検索トークンを取り出し得る。データ処理システムは、本明細書において説明される値の中でもとりわけ、各検索トークンに関するコンテンツのレーティング情報、推定されたトラフィックの閾値、類似性の閾値などの追加的な構成情報も複数の検索トークンと一緒にコンテンツプロバイダから受信する可能性がある。
【0053】
データ処理システムが、複数の検索トークンの中の第1の検索トークンの指示を取り出し得る(404)。指示は、データ処理システムが複数の検索トークンからの第1の検索トークンにアクセスすることを可能にし得る識別子またはその他のデータなどの検索トークンについての情報を含む可能性がある。たとえば、複数の検索トークンは、コンピュータメモリ(たとえば、データベース120または図7に関連して本明細書において下で説明されるメモリ725など)に記憶される可能性がある。指示は、データ処理システムが第1の検索トークンを含むデータ構造内の位置にアクセスすることを可能にするインデックス値である可能性がある。一部の実装において、指示は、検索トークンの性質情報を含む可能性がある。たとえば、第1の検索トークンは、最上位の否定的検索トークンである可能性があり、つまり、第1の検索トークンは、本明細書において上で説明されたように最も多くの予測される要求に否定的に関連付けられる。一部の実装において、指示は、ネットワーク(たとえば、ネットワーク110)を介してコンテンツプロバイダのコンピューティングデバイスからまたは別の外部コンピューティングデバイスから受信され得る。一部の実装において、指示を取り出すことは、2つ以上の検索トークンの指示を取り出すことを含み得る。そのような実装において、本明細書において説明される方法400の各ステップは、示される検索トークンの各々を使用して実行され得る。
【0054】
データ処理システムが、複数の予測される要求を取り出し得る(406)。コンテンツプロバイダから受信された検索トークンの各々は、1つまたは複数の予測される要求に関連付けられ得る。予測される要求は、情報リソースが対応する検索トークンに関連するコンテンツを要求したことを示し得る、コンピュータメモリから取り出された履歴データに基づくことができる。それぞれの予測される要求は、季節性データ(たとえば、時間期間、デモグラフィックス情報など)に基づく可能性がある。一部の実装において、予測される要求は、たとえば、情報リソースがとりわけ1つまたは複数のキーワードもしくはフレーズ、関連する画像、関連する動画、または関連するメタデータを含む場合、情報リソースに基づくことができる。検索トークンに含まれる情報を含む情報リソースは、情報リソースが検索トークンに関連するコンテンツを要求し得ることを示し、その他の要因に基づいてその予測される要求を予測される要求の候補にする可能性がある。一部の実装において、予測される要求は、たとえば、情報リソースが検索トークンに含まれるデモグラフィックス情報に関連付けられるユーザから(たとえば、履歴データに基づいて)定期的に閲覧される場合、デモグラフィックス情報に基づく可能性がある。
【0055】
データ処理システムが、第iの検索トークンを選択し得る(407)。複数の検索トークンのうちの検索トークンが削除されることを決定するために、ビット列が、検索トークンの各々に関して構築され得る。ビット列は、複数の予測される要求のうちのどれが検索トークンに関連付けられるか、および複数の予測される要求のうちのどれが検索トークンに関連付けられないかを表し得る。一部の実装において、データ処理システムは、カウンタレジスタiに基づいて検索トークンの各々を繰り返しループし得る。検索トークンの各々は、インデックス値(たとえば、インデックス0、インデックス1、インデックス2など)によってデータ構造内でインデックス付けされる可能性がある。検索トークンにアクセスするために、データ処理システムは、カウンタレジスタiに等しいインデックス値を含む検索トークンを選択し得る。それがループの最初の繰り返しである場合、カウンタレジスタiは、第iの検索トークンを選択する前に初期値(たとえば、i = 0)に初期化される可能性がある。検索トークンを選択することは、検索トークンに関連するデータをコンピュータメモリの異なる領域、たとえば、メモリの作業領域(working region)にコピーすることを含み得る。
【0056】
データ処理システムが、第iの検索トークンに対応するビット列を構築し得る(408)。ビット列を構築することは、図5に関連して本明細書において下で説明される方法の動作408を実行することを含み得る。一部の実装において、データ処理システムは、コンピュータメモリ(たとえば、データベース120、図7に関連して本明細書において下で説明されるメモリ725など)から複数のビット列を取り出し得る。一部の実装において、データ処理システムは、ネットワーク110を介してコンテンツプロバイダまたは別の外部コンピューティングデバイスからビット列を受信し得る。
【0057】
データ処理システムが、カウンタレジスタが検索トークンの数nに等しいかどうかを判定し得る(410)。データ処理システムがコンテンツプロバイダから受信された検索トークンの各々に関するビット列を生成したかどうかを判定するために、データ処理システムは、各検索トークンを選択するために使用されるカウンタレジスタを検索トークンの総数nと比較することができる。カウンタレジスタiが検索トークンの総数nに等しくない(たとえば、それよりも小さい)場合、データ処理システムは、ステップ(412)を実行し得る。カウンタレジスタiが検索トークンの総数nに等しい(たとえば、それ以上である)場合、データ処理システムは、ステップ(414)を実行し得る。
【0058】
データ処理システムが、カウンタレジスタiをインクリメントし得る(412)。一部の実装において、データ処理システムは、複数の検索トークンの中の次の未処理の検索トークンを示すためにレジスタiに1を足すことができる。一部の実装において、データ処理システムは、カウンタレジスタiを次の未処理の検索トークンのメモリアドレス値(たとえば、コンピュータメモリ内の位置)に設定することができる。一部の実装において、次の未処理の検索トークンのメモリアドレス値は、現在の(たとえば、選択された)検索トークンの位置のデータ構造に含まれ得る。カウンタレジスタiの値をインクリメントした後、データ処理システムは、方法400のステップ(407)を実行し得る。
【0059】
データ処理システムが、複数の検索トークンから検索トークンを選択し、刈り込み得る(416)。複数の検索トークンからトークンを選択し、刈り込むことは、図6に関連して本明細書において下で説明される方法の動作414を実行することを含み得る。一部の実装において、データ処理システムは、複数の検索トークンから選択され、刈り込まれる各検索トークンの指示を受信し得る。一部の実装において、データ処理システムは、データベースまたはコンピュータメモリ(たとえば、データベース120または図7に関連して本明細書において説明されるメモリ725)にアクセスし、データ構造から指示を取り出すことによって検索トークンを選択し、削除するための指示を受信し得る。一部の実装において、データ処理システムは、ネットワーク(たとえば、ネットワーク110)を介してコンテンツプロバイダまたは別の外部コンピューティングデバイスから検索トークンを選択し、刈り込むための指示を受信し得る。
【0060】
データ処理システムが、刈り込まれた検索トークンを提供し得る(416)。一部の実装において、刈り込まれた検索トークンは、コンピュータメモリに記憶されるデータ構造へと集約され得る。データ構造は、コンピュータメモリ似記憶された刈り込まれた検索トークンにアクセスし、データ構造をネットワークを介してコンテンツプロバイダに送信することができる。一部の実装において、データ処理システムは、ステップ(402)において受信された複数の検索トークンから削除された検索トークンの各々の指示を送信し得る。一部の実装において、データ処理システムは、それぞれの複数の検索トークンに関連するそれぞれの予測される要求に対応する推定されたトラフィック値に基づいて複数の検索トークンの各々に関する推定されたトラフィック値(たとえば、過去の性能に基づく予測される閲覧、情報リソースの訪問者数など)を提供することができる。
【0061】
ここで図5を参照すると、示されるのは、検索トークンに関するビット列を生成する例示的な方法408が示される。方法408は、図4に関連して本明細書において上で説明された方法400のステップ(408)の一部として実行され得る。方法408は、たとえば、データ処理システム105、図7に関連して本明細書において説明されるコンピュータシステム700、または本明細書において説明される任意のその他のコンピューティングデバイスによって実行され得る。データ処理システムが、第kの予測される要求を選択し得る(502)。データ処理システムが、予測される要求が検索トークンに対応するかどうかを判定し得る(504)。データ処理システムが、第kのビット列の位置を非マッチ値に設定し得る(506)。データ処理システムが、第kのビット列の位置をマッチ値に設定し得る(508)。データ処理システムが、カウンタレジスタkが予測される要求の数mに等しいかどうかを判定し得る(510)。データ処理システムが、カウンタレジスタkをインクリメントし得る(512)。データ処理システムが、ビット列に圧縮を適用し得る(514)。
【0062】
データ処理システムが、第kの予測される要求を選択し得る(502)。それぞれの検索トークンに関するビット列を構築するために、データ処理システムは、図4に関連して本明細書において説明されたステップ(406)において取り出された複数の予測される要求の各々に対して繰り返さなければならない。ビット列は、複数の予測される要求のうちのどれが検索トークンに関連付けられるか、および複数の予測される要求のうちのどれが検索トークンに関連付けられないかを表し得る。一部の実装において、データ処理システムは、カウンタレジスタkに基づいて複数の予測される要求の各々を繰り返しループし得る。複数の予測される要求の各々は、インデックス値(たとえば、インデックス0、インデックス1、インデックス2など)によってデータ構造内でインデックス付けされる可能性がある。予測される要求を処理するために、データ処理システムは、カウンタレジスタkに等しいインデックス値を含む予測される要求を選択し得る。それがループの最初の繰り返しである場合、カウンタレジスタkは、第kの予測される要求を選択する前に初期値(たとえば、k = 0)に初期化される可能性がある。予測される要求を選択することは、予測される要求に関連するデータをコンピュータメモリの異なる領域、たとえば、メモリの作業領域にコピーすることを含み得る。
【0063】
データ処理システムが、予測される要求が検索トークンに対応するかどうかを判定し得る(504)。予測される要求に関する関連付けを決定するために、データ処理システムは、複数の予測される要求の各々に関する関連付けについての情報を含むコンピュータメモリの領域にアクセスすることができる。データ処理システムは、データベース(たとえば、データベース120)から予測される要求に関する関連付けの各々を取り出すことができる。一部の実装において、データベースは、各検索トークンによってインデックス付けされたルックアップテーブルを含み得る。データ処理システムは、検索トークンをキー値として使用してデータベースにアクセスし、検索トークンに対応する関連する予測される要求のリストを取り出すことができる。選択された予測される要求が関連する予測される要求のリストに含まれる場合、データ処理システムは、ステップ(508)を実行し得る。選択された予測される要求が関連する予測される要求のリストに含まれない場合、データ処理システムは、ステップ(506)を実行し得る。
【0064】
データ処理システムが、第kのビット列の位置を非マッチ値に設定し得る(506)。一部の実装において、データ処理システムは、検索トークンに関連するビット列を表すメモリの領域にアクセスすることができる。ビット列は、コンピュータメモリ(たとえば、データベース120または図7に関連して本明細書において説明されるメモリ725)内のデータ構造内にある可能性がある。一部の実装において、非マッチ値を設定することは、カウンタレジスタkに対応するビット位置を2進値(たとえば、「0」または「1」)に設定することを含み得る。たとえば、非マッチ値が「1」であると決定される場合、データ処理システムは、検索トークンに対応するビット列の第kのビット位置を「1」に設定し得る。非マッチ値が「0」であると決定される場合、データ処理システムは、検索トークンに対応するビット列の第kのビット位置を「0」に設定し得る。一部の実装において、非マッチ値は、予測される要求が検索トークンに関連付けられないことを示す別の種類の値である可能性がある。
【0065】
データ処理システムが、第kのビット列の位置をマッチ値に設定し得る(508)。一部の実装において、データ処理システムは、検索トークンに関連するビット列を表すメモリの領域にアクセスすることができる。ビット列は、コンピュータメモリ(たとえば、データベース120または図7に関連して本明細書において説明されるメモリ725)内のデータ構造内にある可能性がある。一部の実装において、マッチ値を設定することは、カウンタレジスタkに対応するビット位置を2進値(たとえば、「0」または「1」)に設定することを含み得る。たとえば、マッチ値が「1」であると決定される場合、データ処理システムは、検索トークンに対応するビット列の第kのビット位置を「1」に設定し得る。マッチ値が「0」であると決定される場合、データ処理システムは、検索トークンに対応するビット列の第kのビット位置を「0」に設定し得る。一部の実装において、マッチ値は、1よりも大きな値、たとえば、予測される要求に関連する推定されたトラフィック値であることが可能である。
【0066】
データ処理システムが、カウンタレジスタkが予測される要求の数mに等しいかどうかを判定し得る(510)。データ処理システムがそれぞれの予測される要求に関するビット列内のマッチ値または非マッチ値を設定したかどうかを判定するために、データ処理システムは、それぞれの予測される要求を選択するために使用されるカウンタレジスタkを予測される要求の総数mと比較することができる。カウンタレジスタkが予測される要求の総数mに等しくない(たとえば、それよりも小さい)場合、データ処理システムは、ステップ(512)を実行し得る。カウンタレジスタkが予測される要求の総数mに等しい(たとえば、それ以上である)場合、データ処理システムは、ステップ(514)を実行し得る。
【0067】
データ処理システムが、カウンタレジスタkをインクリメントし得る(512)。一部の実装において、データ処理システムは、複数の予測される要求の中の次の未処理の予測される要求を示すためにレジスタkに1を足すことができる。一部の実装において、データ処理システムは、カウンタレジスタkを次の未処理の予測される要求のメモリアドレス値(たとえば、コンピュータメモリ内の位置)に設定することができる。一部の実装において、次の未処理の予測される要求のメモリアドレス値は、現在の(たとえば、選択された)予測される要求の位置のデータ構造に含まれ得る。カウンタレジスタkの値をインクリメントした後、データ処理システムは、方法408のステップ(502)を実行し得る。
【0068】
データ処理システムが、ビット列に圧縮を適用し得る(514)。一部の実装においては、各検索トークンに関する各ビット列を処理するストレージの要件および計算負荷を減らすために、データ処理システムが、刈り込まれたビット列を生成するために選択基準に基づいてビット列の特定の位置を選択し得る。一部の実装において、刈り込まれたビット列は、未圧縮のビット列よりも小さくなり得る。一部の実装において、選択基準は、擬似ランダムな選択に基づくことが可能である。たとえば、データ処理システムは、複数の予測される要求に基づいて検索トークンに関して生成されたビット列から選択するいくつかのビット位置を擬似ランダムに決定する可能性がある。一部の実装において、データ処理システムは、ビット列からの選択された位置を刈り込まれたビット列に挿入することができる。たとえば、データ処理システムは、刈り込まれたビット列を生成するためにビット列の最初の百個(たとえば、位置0から位置99まで)を選択し得る。一部の実装において、刈り込まれたビット列は、図4に関連して本明細書において上で説明された方法400のステップによるおよび図6に関連して本明細書において下で説明される方法414のステップによるさらなる処理のためにビット列の代わりに使用され得る。
【0069】
ここで図6を参照すると、示されるのは、ビット列に基づいて検索トークンを刈り込む例示的な方法414である。方法414は、図4に関連して本明細書において上で説明された方法400のステップ(414)の一部として実行され得る。方法414は、たとえば、データ処理システム105、図7に関連して本明細書において説明されるコンピュータシステム700、または本明細書において説明される任意のその他のコンピューティングデバイスによって実行され得る。データ処理システムが、示されたビット列を選択し得る(602)。データ処理システムが、第jのビット列を選択し得る(604)。データ処理システムは、示されたビット列と選択されたビット列との間の類似性の値を計算し得る(606)。データ処理システムは、類似性の値が閾値よりも大きいかどうかを判定し得る(608)。データ処理システムが、第jのビット列に対応する検索トークンを削除し得る(610)。データ処理システムが、カウンタレジスタjがビット列の数pに等しいかどうかを判定し得る(612)。データ処理システムが、カウンタレジスタjをインクリメントし得る(614)。データ処理システムが、刈り込まれたトークンを集約し得る(616)。
【0070】
データ処理システムが、示されたビット列を選択し得る(602)。示されたビット列は、図4に関連して本明細書において上で説明された方法400のステップ(404)において示された第1の検索トークン(たとえば、最上位の否定的検索トークン)に関連付けられ得る。一部の実装において、データ処理システムは、ビット列を含むデータ構造にアクセスし、第1の検索トークンに含まれるインデックス値に基づいて示されたビット列を選択することができる。一部の実装において、ビット列を含むデータ構造は、それぞれの関連する検索トークンによってインデックス付けされる可能性があり、したがって、示されたビット列は、第1の検索トークンをインデックス値として使用して選択される可能性がある。示されたビット列を選択することは、示されたビット列をメモリの異なる領域(たとえば、データ処理システム上の作業メモリ)にコピーすることを含み得る。一部の実装において、データ処理システムは、示されたビット列を選択するためにデータベース(たとえば、データベース120)にアクセスすることができる。
【0071】
データ処理システムが、第jのビット列を選択し得る(604)。検索トークンが複数の検索トークンから削除され得るかどうかを判定するために、データ処理システムは、図4に関連して本明細書において上で説明されたステップ(402)において受信された各検索トークンに関連する複数のビット列の各々に対して繰り返さなければならない。ビット列は、複数の予測される要求のうちのどれが検索トークンに関連付けられるか、および複数の予測される要求のうちのどれが検索トークンに関連付けられないかを表し得る。一部の実装において、データ処理システムは、カウンタレジスタjに基づいてビット列の各々を繰り返しループし得る。ビット列の各々は、インデックス値(たとえば、インデックス0、インデックス1、インデックス2など)によってデータ構造内でインデックス付けされる可能性がある。ビット列を処理するために、データ処理システムは、カウンタレジスタjに等しいインデックス値を含むビット列を選択し得る。それがループの最初の繰り返しである場合、カウンタレジスタjは、第jの予測される要求を選択する前に初期値(たとえば、j = 0)に初期化される可能性がある。予測される要求を選択することは、予測される要求に関連するデータをコンピュータメモリの異なる領域、たとえば、メモリの作業領域にコピーすることを含み得る。一部の実装においては、第jのビット列が示されたビット列と同じである場合、データ処理システムは、ステップ(614)に関連して本明細書において下で説明されるようにカウンタレジスタjをインクリメントすることができる。カウンタレジスタをインクリメントすることがjの値をビット列の総数p以上にする場合、データ処理システムは、本明細書において下で説明されるステップ(616)を実行することができる。
【0072】
データ処理システムは、示されたビット列と選択されたビット列との間の類似性の値を計算し得る(606)。類似性の値を計算することは、示されたビット列および選択されビット列に対してビット毎の論理演算を実行することを含み得る。たとえば、データ処理システムは、結果ビット列を生成するために、選択されたビット列および示されたビット列をオペランドとして使用して論理AND演算を実行することができる。結果ビット列は、第1の検索トークンおよび選択されたビット列に対応する検索トークンに関連付けられる予測される要求の各々の指示を含み得る。データ処理システムは、マッチ値を含む結果ビット列内の位置の数をカウントすることによって示されたビット列と選択されたビット列との間の類似性の値を計算することができる。一部の実装において、第1のビット列および第2のビット列内の各位置は、妥当性の値に等しいことが可能である重み値に等しい可能性がある。妥当性の値は、対応する検索トークンとビット列内のそれぞれの値の予測される要求に関連する情報リソースとの間の妥当性の測定基準を示し得る。この場合、ビット列は、整数値または浮動小数点値である可能性がある重み値のベクトルである可能性がある。2つのそのようなビット列の間の類似性の値を決定するために、ビット列比較モジュール140は、第1のビット列の各位置の妥当性の値が許容範囲値(たとえば、10%、15%など)以内で第2のビット列のそれぞれの位置に等しいかどうかを判定することができる。一部の実装において、許容範囲値は、データベース(たとえば、データベース120)から取り出されるか、コンテンツプロバイダから受信されるか、または別の外部コンピューティングデバイスから受信される可能性がある。2つの値が所定の許容範囲値以内で等しい場合、ビット列比較モジュールは、結果ビット列(たとえば、結果ビット列305)の対応する位置をマッチ値に設定することができる。ビット列比較モジュール140は、完全な結果ビット列を決定するために第1のおよび第2のビット列内の位置の各々を繰り返し比較し、本明細書において上で詳細に説明されたように結果ビット列を使用して類似性の値を計算することができる。
【0073】
データ処理システムは、類似性の値が類似性の閾値よりも大きいかどうかを判定し得る(608)。データ処理システムは、コンテンツプロバイダ(たとえば、コンテンツプロバイダ115)から類似性の閾値を受信することができる。一部の実装において、データ処理システムは、類似性の閾値を取り出すためにデータベース(たとえば、データベース120)にアクセスすることができる。データ処理システムが選択されたビット列に関連する類似性の値が類似性の閾値以上であると判定する場合、データ処理システムは、方法414のステップ(610)を実行することができる。データ処理システムが選択されたビット列に関連する類似性の値が類似性の閾値未満であると判定する場合、データ処理システムは、方法414のステップ(612)を実行することができる。
【0074】
データ処理システムが、第jのビット列に対応する検索トークンを削除し得る(610)。示されたビット列との類似性に基づいて、データ処理システムは、p個のビット列の各々を含むデータ構造にアクセスすることによって第jのビット列に対応する検索トークンを削除し得る。データ処理システムは、複数の検索トークンを含むデータ構造から第jのビット列に対応するエントリを削除し得る。たとえば、データ構造が連結リストとして構成される場合、データ処理システムは、前のノード(たとえば、j-1)のポインタを第jのノードのアドレスから第jのノードによって指されるノードのアドレスに変更し得る。データ処理システムは、複数の検索トークンを記憶するためにその他のデータ構造を使用する可能性がある。一部の実装において、データ処理システムは、第jのビット列を含むデータ構造のエントリに削除識別子を記憶し得る。削除識別子は、トークンが刈り込まれた検索トークンの集合へと集約されるべきでないことを示し得る。
【0075】
データ処理システムが、カウンタレジスタjがビット列の数pに等しいかどうかを判定し得る(612)。データ処理システムが各ビット列を示されたビット列と比較したかどうかを判定するために、データ処理システムは、各ビット列を選択するために使用されるカウンタレジスタjをビット列の総数pと比較し得る。カウンタレジスタjがビット列の総数pに等しくない(たとえば、それよりも小さい)場合、データ処理システムは、ステップ(614)を実行し得る。カウンタレジスタjがビット列の総数pに等しい(たとえば、それ以上である)場合、データ処理システムは、ステップ(616)を実行し得る。
【0076】
データ処理システムが、カウンタレジスタjをインクリメントし得る(614)。一部の実装において、データ処理システムは、複数のビット列の中の次の未処理のビット列を示すためにレジスタjに1を足すことができる。一部の実装において、データ処理システムは、カウンタレジスタjを次の未処理のビット列のメモリアドレス値(たとえば、コンピュータメモリ内の位置)に設定することができる。一部の実装において、次の未処理のビット列のメモリアドレス値は、現在の(たとえば、選択された)予測される要求の位置のデータ構造に含まれ得る。カウンタレジスタjの値をインクリメントした後、データ処理システムは、方法414のステップ(604)を実行し得る。
【0077】
データ処理システムが、刈り込まれたトークンを集約し得る(616)。データ処理システムは、ステップ(610)において削除されなかった複数の検索トークンのうちの検索トークンの各々を記憶するためのメモリの領域を割り当てることができる。たとえば、元の複数の検索トークンが5つの検索トークンを含み、2つが方法414の前のステップにおいて削除された場合、データ処理システムは、データ構造が3つの検索トークンを含むためのメモリ領域を割り当てることができる。一部の実装において、データ処理システムは、複数の検索トークンのうちのどれが削除識別子と一緒に記憶されないかを繰り返し判定することができる。データ処理システムは、これらの検索トークンの各々を選択し、それらを刈り込まれた検索トークンを集約するために生成されたデータ構造に記憶することができる。したがって、データ処理システムは、複数の検索トークンのうちの、削除識別子によってフラグを立てられなかった検索トークンのみを挿入することによって刈り込まれた検索トークンのデータ構造を生成することができる。
【0078】
図7は、一部の実装によって本明細書において検討されるコンピュータシステムのいずれかを実装するために使用される可能性がある例示的なコンピュータシステム700の全体的なアーキテクチャを示す。コンピュータシステム700は、表示するためにネットワーク110を介して情報を与えるために使用され得る。図7のコンピュータシステム700は、メモリ725に通信可能なように結合された1つまたは複数のプロセッサ720、1つまたは複数の通信インターフェース705、ならびに1つまたは複数の出力デバイス710 (たとえば、1つまたは複数のディスプレイユニット)および1つまたは複数の入力デバイス715を含む。プロセッサ720は、データ処理システム105またはデータ処理システム105などのシステム700のその他の構成要素に含まれ得る。
【0079】
図7のコンピュータシステム700において、メモリ725は、任意のコンピュータ可読ストレージ媒体を含む可能性があり、それぞれのシステムのための本明細書において説明された様々な機能を実装するためのプロセッサが実行可能な命令などのコンピュータ命令と、それらのシステムに関連する、それらのシステムによって生成される、または通信インターフェースもしくは入力デバイスを介して受信される任意のデータ(もしあれば)とを記憶する可能性がある。再び図7のシステム700を参照すると、データ処理システムは、とりわけ、ユーザ識別子の集合に関連する情報、生成されたベクトルを記憶するためのメモリ725を含み得る。図7に示されたプロセッサ720は、メモリ725に記憶された命令を実行するために使用される可能性があり、そのようにする際に、命令の実行によって処理および/または生成された様々な情報をメモリから読むかまたはメモリに書き込む可能性もある。
【0080】
図7に示されたコンピュータシステム700のプロセッサ720は、命令の実行によって様々な情報を送信または受信するための通信インターフェース705に通信可能なように結合されるかまたは通信インターフェース705を制御する可能性もある。たとえば、通信インターフェース705は、有線もしくはワイヤレスネットワーク、バス、またはその他の通信手段に結合される可能性があり、したがって、コンピュータシステム700がその他のデバイス(たとえば、その他のコンピュータシステム)に情報を送信するかまたはその他のデバイス(たとえば、その他のコンピュータシステム)から情報を受信することを可能にする可能性がある。図7のシステムに明示されていないが、1つまたは複数の通信インターフェースが、システム700の構成要素の間の情報の流れを促進する。一部の実装において、通信インターフェースは、コンピュータシステム700の少なくとも一部の態様にウェブサイトをアクセスポータルとして提供するように(たとえば、様々なハードウェア構成要素またはソフトウェア構成要素によって)構成される可能性がある。通信インターフェース705の例は、ユーザがコンピュータシステム700と通信し得るユーザインターフェース(たとえば、ウェブページ)を含む。
【0081】
図7に示されたコンピュータシステム700の出力デバイス710は、たとえば、命令の実行に関連して様々な情報が見られるかまたはその他の方法で知覚されることを可能にするために提供される可能性がある。入力デバイス715は、たとえば、ユーザが命令の実行中に手動の調整を行うか、選択を行うか、データを入力するか、またはプロセッサと様々な方法のいずれかでインタラクションすることを可能にするために提供され得る。本明細書において検討される様々なシステムのために使用される可能性がある通常のコンピュータシステムのアーキテクチャに関連する追加的な情報が、本明細書においてさらに提供される。
【0082】
本明細書に記載の対象の実装および動作は、本明細書で開示される構造およびそれらの構造的均等物を含むデジタル電子回路、または有形の媒体上に具現化されたコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書に記載の対象の実装は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータストレージ媒体上に符号化されたコンピュータプログラム命令の1つまたは複数の構成要素として実装され得る。プログラム命令は、データ処理装置による実行のために好適な受信機装置に送信するために情報を符号化するように生成される人為的に生成された伝播信号、たとえば、機械によって生成された電気的信号、光学的信号、または電磁的信号上に符号化され得る。コンピュータストレージ媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはこれらのうちの1つもしくは複数の組合せであるか、あるいはこれらに含まれることが可能である。さらに、コンピュータストレージ媒体は、伝播信号ではないが、人為的に生成された伝播信号に符号化されたコンピュータプログラム命令の送信元または送信先を含み得る。また、コンピュータストレージ媒体は、1つまたは複数の別個の物理的構成要素または媒体(たとえば、複数のCD、ディスク、もしくはその他のストレージデバイス)であるか、またはこれらに含まれることが可能である。
【0083】
本明細書において開示された特徴は、インターネット接続性を(たとえば、ケーブル、衛星、電波、またはその他の信号によって受け取られる)より旧来型のテレビ番組のソースと統合するように構成された処理モジュールを含む可能性があるスマートテレビモジュール(またはコネクテッドテレビモジュール(connected television module)、ハイブリッドテレビモジュールなど)上に実装される可能性がある。スマートテレビモジュールは、テレビセットに物理的に組み込まれる可能性があり、またはセットトップボックス、ブルーレイもしくはその他のデジタルメディアプレイヤー、ゲームコンソール、ホテルのテレビシステム、およびその他のコンパニオンデバイス(companion device)などの別個のデバイスを含む可能性がある。スマートテレビモジュールは、ウェブ、ローカルケーブルTVチャンネル、衛星TVチャンネルの、またはローカルのハードドライブに記憶されたビデオ、ムービー、写真、およびその他のコンテンツを視聴者が検索し、見つけることを可能にするように構成される可能性がある。セットトップボックス(STB)またはセットトップユニット(STU)は、チューナを含み、テレビセットおよび信号の外部ソースに接続する可能性がある情報家電デバイスを含む可能性があり、信号をコンテンツに変換し、そして、そのコンテンツが、テレビのスクリーンまたはその他のディスプレイデバイス上に表示される。スマートテレビモジュールは、ウェブブラウザなどの複数の異なるアプリケーション、および複数のストリーミングメディアサービス、接続されたケーブルまたは衛星媒体のソース、その他のウェブ「チャンネル」などに関するアイコンを含むホーム画面または最上位の画面を提供するように構成される可能性がある。スマートテレビモジュールは、ユーザに電子番組ガイドを提供するようにさらに構成される可能性がある。スマートテレビモジュールに対するコンパニオンアプリケーション(companion application)は、利用可能な番組についての追加的な情報をユーザに提供すること、ユーザがスマートテレビモジュールを制御することを可能にすることなどのためにモバイルコンピューティングデバイス上で動作し得る可能性がある。代替的な実装において、特徴は、ラップトップコンピュータもしくはその他のパーソナルコンピュータ、スマートフォン、その他のモバイル電話、ハンドヘルドコンピュータ、タブレットPC、またはその他のコンピューティングデバイス上に実装される可能性がある。
【0084】
本明細書に記載の動作は、1つもしくは複数のコンピュータ可読ストレージデバイスに記憶された、またはその他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
【0085】
用語「データ処理装置」、「データ処理システム」、「ユーザデバイス」、または「コンピューティングデバイス」は、例として、1つのプログラミング可能なプロセッサ、1台のコンピュータ、1つのシステムオンチップ、またはこれらの複数もしくは組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用の論理回路、たとえば、FPGA (フィールドプログラマブルゲートアレイ)またはASIC (特定用途向け集積回路)を含み得る。装置は、ハードウェアに加えて、問題にしているコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサのファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはこれらのうちの1つもしくは複数の組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービスインフラストラクチャ、分散コンピューティングインフラストラクチャ、およびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0086】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語もしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で記述可能であり、独立型プログラムとしての形態、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境内での使用に好適なその他の単位としての形態を含む任意の形態で展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応する可能性があるが、必ずそうであるとは限らない。プログラムは、その他のプログラムもしくはデータを保持するファイルの一部(たとえば、マークアップ言語の文書に記憶された1つもしくは複数のスクリプト)、問題にしているプログラムに専用の単一のファイル、または複数の組織されたファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に置かれるか、もしくは複数の場所に分散され、通信ネットワークによって相互に接続される複数のコンピュータ上で実行されるように展開され得る。
【0087】
本明細書に記載のプロセスおよび論理フローは、入力データに対して演算を行い、出力を生成することによって行為を行うために1つまたは複数のコンピュータプログラムを1つまたは複数のプログラミング可能なプロセッサが実行することによって実行され得る。また、プロセスおよび論理フローは、専用の論理回路、たとえば、FPGA (フィールドプログラマブルゲートアレイ)またはASIC (特定用途向け集積回路)によって実行されることが可能であり、さらに、装置は、それらの専用の論理回路として実装されることが可能である。
【0088】
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサとの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。概して、プロセッサは、読み出し専用メモリ、またはランダムアクセスメモリ、またはこれらの両方から命令およびデータを受け取る。コンピュータの要素は、命令に従って行為を実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスを含む。また、概してコンピュータは、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはこれらの大容量ストレージデバイスからデータを受け取るか、もしくはこれらの大容量ストレージデバイスにデータを転送するか、もしくはそれら両方を行うために動作可能なように結合される。しかし、コンピュータは、そのようなデバイスを有していなくてもよい。さらに、たとえば、コンピュータは、別のデバイス、たとえば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレイヤー、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込まれ得る。コンピュータプログラム命令およびデータを記憶するのに好適なデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含むすべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完され得るか、または専用論理回路に組み込まれ得る。
【0089】
ユーザとのインタラクションを行うために、本明細書に記載の対象の実装は、ユーザに対して情報を表示するためのディスプレイデバイス、たとえば、CRT (ブラウン管)、プラズマ、またはLCD (液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を与えることができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールを有するコンピュータ上に実装され得る。その他の種類のデバイスが、ユーザとのインタラクションを行うためにやはり使用されることが可能であり、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックを含むことが可能であり、ユーザからの入力は、音響、発話、または触覚による入力を含む任意の形態で受け取られることが可能である。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そのデバイスから文書を受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによってユーザとインタラクションすることができる。
【0090】
本明細書に記載の対象の実装は、バックエンド構成要素を、たとえば、データサーバとして含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザが本明細書に記載の対象の実装とインタラクションすることができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムに実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって相互に接続されることが可能である。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0091】
データ処理システム105などのコンピューティングシステムは、クライアントおよびサーバを含み得る。たとえば、データ処理システム105は、1つまたは複数のデータセンターまたはサーバファーム内の1つまたは複数のサーバを含み得る。クライアントおよびサーバは、概して互いに離れており、通常は通信ネットワークを通じてインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されており、互いにクライアント-サーバの関係にあるコンピュータプログラムによって生じる。一部の実装において、サーバは、(たとえば、クライアントデバイスとインタラクションするユーザに対してデータを表示し、そのようなユーザからユーザ入力を受信する目的で)クライアントデバイスにデータ(たとえば、HTMLページ)を送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザのインタラクションの結果)が、サーバにおいてクライアントデバイスから受信され得る。
【0092】
本明細書は多くの特定の実装の詳細を含むが、これらは、いかなる発明の範囲または特許請求される可能性があるものの範囲に対する限定とも見なされるべきでなく、むしろ、本明細書において説明されたシステムおよび方法の特定の実装に固有の特徴の説明と見なされるべきである。別々の実装に関連して本明細書に記載されている特定の特徴が、単一の実装に組み合わせて実装されことも可能である。反対に、単一の実装に関連して説明されている様々な特徴が、複数の実装に別々に、または任意の適切な部分的組合せで実装されることも可能である。さらに、特徴は、特定の組合せで動作するものとして上で説明されている可能性があり、最初にそのように主張されてさえいる可能性があるが、主張された組合せの1つまたは複数の特徴は、場合によっては組合せから削除されことが可能であり、主張された組合せは、部分的組合せ、または部分的組合せの変形を対象とする可能性がある。
【0093】
同様に、動作が図中に特定の順序で示されているが、これは、そのような動作が示された特定の順序でもしくは逐次的順序で実行されること、または所望の結果を達成するために示されたすべての動作が実行されることを必要とするものと理解されるべきでない。場合によっては、請求項に挙げられた行為は、異なる順序で実行され、それでも所望の結果を達成することができる。加えて、添付の図面に示されたプロセスは、所望の結果を達成するために、必ずしも、示された特定の順序または逐次的順序である必要はない。
【0094】
特定の状況においては、マルチタスクおよび並列処理が有利である可能性がある。さらに、上述の実装における様々なシステム構成要素の分割は、すべての実装においてそのような分割を必要とするものと理解されるべきでなく、説明されたプログラム構成要素およびシステムは、概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされることが可能であることが理解されるべきである。たとえば、データ処理システム105は、単一のモジュール、1つもしくは複数の処理モジュールを有する論理デバイス、1つもしくは複数のサーバ、または検索エンジンの一部である可能性がある。
【0095】
今やいくつかの例示的な実装および実装を説明したが、以上は例示的であり、限定的でなく、例として提示されたことは明らかである。特に、本明細書において提示された例の多くは方法の行為またはシステムの要素の特定の組合せを含むが、それらの行為およびそれらの要素は、同じ目的を達成するためにその他の方法で組み合わされる可能性がある。1つの実装にのみ関連して検討された行為、要素、および特徴は、その他の実装または実装において同様の役割から除外されるように意図されていない。
【0096】
本明細書において使用された言葉遣いおよび用語は、説明を目的としており、限定と見なされるべきでない。本明細書における「~を含む(including)」、「~を含む(comprising)」、「~を有する」、「~を含む(containing)」、「~を含む(involving)」、「~によって特徴付けられる(characterized by)」、「~ことを特徴とする(characterized in that)」、およびこれらの変化形の使用は、その後に列挙された項目、それらの項目の均等物、および追加的な項目、ならびにその後に列挙された項目だけからなる代替的な実装を包含するように意図される。1つの実装において、本明細書に記載のシステムおよび方法は、説明された要素、行為、または構成要素のうちの1つ、2つ以上のそれぞれの組合せ、またはすべてからなる。
【0097】
本明細書において単数形で言及されたシステムおよび方法の実装または要素または行為へのすべての言及は、複数のこれらの要素を含む実装も包含する可能性があり、本明細書における任意の実装または要素または行為への複数形のすべての言及は、単一の要素のみを含む実装も包含する可能性がある。単数形または複数形の言及は、今開示されたシステムもしくは方法、それらの構成要素、行為、または要素を単一のまたは複数の構成に限定するように意図されていない。任意の情報、行為、または要素に基づいている任意の行為または要素への言及は、行為または要素が任意の情報、行為、または要素に少なくとも部分的に基づく実装を含む可能性がある。
【0098】
本明細書において開示された任意の実装は、任意のその他の実装と組み合わされる可能性があり、「実装」、「いくつかの実装」、「代替的な実装」、「様々な実装」、「1つの実装」などの言及は、必ずしも相互排他的ではなく、実装に関連して説明された特定の特徴、構造、または特色が少なくとも1つの実装に含まれる可能性があることを示すように意図される。本明細書において使用されるそのような用語は、必ずしもすべてが同じ実装に言及していない。任意の実装は、本明細書において開示された態様および実装に合致する任意の方法で包括的または排他的に任意のその他の実装と組み合わされる可能性がある。
【0099】
「または(or)」との言及は、「または(or)」を使用して記載された任意の項が記載された項のうちの1つ、2つ以上、およびすべてのいずれかを示す可能性があるように包括的であると見なされ得る。
【0100】
図面、詳細な説明、または任意の請求項の技術的な特徴が後に参照符号が付されている場合、参照符号は、図面、詳細な説明、および請求項の理解しやすさを高めることのみを目的として含められた。したがって、参照符号があることもないことも、いかなる請求項の要素の範囲に対してのいかなる限定的な効果も持たない。
【0101】
本明細書に記載のシステムおよび方法は、それらの特徴を逸脱することなくその他の特定の形態で具現化される可能性がある。本明細書において提供された例は情報リソースのコンテンツの表示を制御することに関するが、本明細書において説明されたシステムおよび方法は、その他の環境に適用され得る。上述の実装は、説明されたシステムおよび方法の限定ではなく、例示的である。したがって、本明細書に記載のシステムおよび方法の範囲は、上述の説明ではなく添付の請求項によって示され、請求項の均等の意味および範囲内に入る変更は、それに包含される。
【符号の説明】
【0102】
100 システム
105 データ処理システム
110 コンピュータネットワーク
115 コンテンツプロバイダ
120 データベース
125 検索トークンレシーバ
130 予測される要求リトリーバ
135 ビット列コンストラクタ
140 ビット列比較モジュール
145 検索トークンプルーナ
150 刈り込み済みトークンプロバイダ
205A 検索トークン
210A~N 予測される要求
215A ビット列
215B ビット列
305 結果ビット列
310 類似性の値
400 方法
406 方法
408 方法
414 方法
700 コンピュータシステム
705 通信インターフェース
710 出力デバイス
715 入力デバイス
720 プロセッサ
725 メモリ
図1
図2
図3
図4
図5
図6
図7