様々な図面における同様の参照番号および指定は、同様の要素を示す。
個人化されたコンテンツ配信は通常、デバイスのブラウジング履歴またはアクセス履歴などの、ユーザおよび/またはデバイスの識別情報を捕捉することに基づく。たとえば、デバイスは、デバイス識別子、アカウント名、クッキー、または他のそのような情報などの識別情報を提供することがあり、コンテンツプロバイダは、パーソナライズされたコンテンツを選択する際に使用するためにこの情報を記憶することがある。結果として、コンテンツプロバイダは、個人についての大量のデータを取得することがある。これは、デバイスおよびユーザのプライバシーとセキュリティに大きな影響を与える。オプトアウトおよびdo-not-trackポリシーは、ユーザのプライバシーについての何らかの制御手段をユーザに与える(コンテンツプロバイダがそれらのポリシーに従う限り)。しかしながら、これらのポリシーは関連するコンテンツを提供するコンテンツプロバイダの能力を損ねるので、一部のコンテンツプロバイダはユーザの要求に従わない可能性がある。
本明細書において論じられるシステムおよび方法は、数百万個または数十億個のデバイスなどの、大量のデバイスの集約されたブラウジング履歴を介した、コンテンツの擬似パーソナライゼーションまたは匿名化されたコンテンツ取り出しを可能にする。たとえば、各デバイスのブラウジング履歴は、長いデータ文字列、またはn次元ベクトルとして符号化され得る。図1Aは、いくつかの実装形態による、例示的なプロファイルベクトル100の図である。プロファイルベクトルは、所与の期間内の、ドメイン、ウェブサイト、またはウェブページへのデバイスによる訪問またはアクセスの識別情報を備え得る。示される例では、ベクトルは、各曜日に対する、多数のドメイン1-nの各々へのビューまたは訪問の回数を特定する。1次元ベクトルとして示されているが、同様の実装形態では、ベクトルはn対7のアレイ(たとえば、各曜日に対して1つの行)を備え得る。他の実装形態では、追加のデータが含まれ得る(たとえば、月の各々の日、一日の中の時間帯など)。したがって、ベクトルは、大きなn次元ベクトルまたはアレイを備え得る。生成時間の識別情報、位置、IPアドレス、または任意の他のそのような情報などの、追加のデータがベクトルに含まれ得る。
上で述べられたように、多くの実装形態では、ベクトルは非常に大きいことがある。たとえば、インターネット上には約18億個のアクティブなウェブサイトがあり、3億3千万個を超える登録されたドメインがある。いくつかの実装形態では、ベクトルは、これらのドメインまたはウェブサイトのいずれかへの訪問またはアクセスを記録し得る。他の実装形態では、ベクトルは、ドメインまたはウェブサイトのサブセットのみへの訪問またはアクセスを記録し得る。たとえば、100万個未満のウェブサイトがウェブトラフィックの約50%を占める。したがって、多くの実装形態において、ベクトルは、ドメインまたはウェブサイトのサブセットへのアクセスまたは訪問を、記録または表現するだけであり得る。それにもかかわらず、多くのそのような実装形態においても、ベクトルは大きいことがあり、たとえばO(226)以上である。
図1Bの図解に示されるように、ベクトルがサーバデバイスに提供されてもよく、サーバデバイスはベクトルを他のデバイスのベクトルと集約してもよい。複数のデバイス102の各々からのプロファイルベクトル100は、非常に大きな行列を作成するために集約され得る。たとえば、ウェブ上には月間数十億人(たとえば、O(230))のアクティブユーザまたはデバイスがある。したがって、これらのデバイスの各々のプロファイルベクトル100を合成する行列はO(230×226)の次元であることがあり、またはいくつかの実装形態ではより大きいことあがる。
しかしながら、この行列は非常に疎である。典型的なユーザは、一週間などの所与の期間に、数億個の潜在的なドメインのうちのO(100)を訪れ得る。任意の所与のデバイスのブラウジング履歴の、この高度に疎な性質および冗長性により、この行列の次元を減らすことが可能である。
いくつかの実装形態では、特異ベクトル分解(SVD)などの線形次元削減技法が、行列に対する最良の近似である(たとえば、二乗誤差を最小にする)ランクX行列を計算するために使用され得る。各プロファイルベクトル100はX個の次元へと投影されてもよく、Xは行列の元の次元より小さい。各次元に対して、投影結果は2のNi乗個のバケットへと量子化されてもよく、i∈[1,X]であり、バケットの数は対応する次元の特異値に比例する。K=ΣNi個のビットが、すべてのX個の次元に対する量子化された投影結果を表すために使用され得る。一緒に連結されたそれらのビットは、デバイスのクラスタ識別子であり得る。他の実装形態では、クラスタリングアルゴリズム(たとえば、最近傍)が、次元削減された空間においてデバイスをクラスタリングするために使用され得る。
特異値ベクトルは互いに直交するので、および量子化プロセスの結果として、プロファイルベクトル間に非線形の依存性があると仮定すると、統計的に類似する数のデバイス(たとえば、デバイスの総数が大きいと仮定すると、ほぼ等しい)が各クラスタ内にあることがあり、または各クラスタに属するものとして特定されることがある。各クラスタは、クラスタ識別子、ブラウジンググループ識別子、または同様の用語で言及されることがある、識別子により表され得る。
他の実装形態では、主要成分分析などの、他の線形分解方法が使用され得る。さらに他の実装形態では、行列の次元を削減するために、非線形次元削減アルゴリズムが使用され得る。最近傍探索、潜在クラス分析などを含む、様々な分類技法が使用され得る。
図1Cは、いくつかの実装形態によるこのプロセスの図である。示されるように、ステップ120において、多数のデバイスからのプロファイルベクトルが大きい行列へと集約され得る。ステップ122において、行列が次元削減され得る。ステップ124において、クラスタが上で論じられたように特定され得る。
いくつかの実装形態では、分類システムは、クラスタ識別情報の一部として、および/またはクラスタ識別情報から訓練され得る。たとえば、いくつかの実装形態では、ニューラルネットワークが、所定の数のクラスタの一部としてデバイスを分類するために使用され得る。そのようなネットワークは、次元削減されたプロファイルベクトルを入力として、クラスタ識別子を出力として使用してもよい。様々な実装形態において、ネットワークは、教師あり学習または教師なし学習を介して訓練され得る。
いくつかの実装形態では、ニューラルネットモデルもしくはモデルに対する重みがクライアントデバイスに提供されてもよく、または、分類のための他のパラメータが提供されてもよい。次元削減から生成される特異ベクトルも、クライアントデバイスに提供され得る。したがって、ベクトルおよび/またはモデルを受信した後、クライアントは、サーバへのさらなる通信を必要とすることなく、ローカルプロファイルベクトルを使用してそれら自身の分類を生成し得る。サーバは、定期的に、たとえば毎月、または四半期ごとに、特異ベクトルおよび/または分類モデルパラメータを再生成し得る。いくつかの実装形態では、データ転送は非常に大きくなることがあり(たとえば、O(226)個の次元の各々にO(24)個の特異ベクトルであり、いくつかの実装形態では、約2GBのデータが必要になる)。いくつかの実装形態では、他のデバイスへのデータ転送を減らすために、サーバは、パラメータおよびベクトルを以前に生成されたパラメータおよびベクトルと比較して、大きな差がある(たとえば、閾値の差を超える)場合にのみ新しいセットを提供し、または、大きく変化したパラメータおよび/もしくはベクトルのサブセットのみを提供し得る。様々な実装形態において、クライアントは、これらのパラメータおよびベクトルを使用して、より頻繁に、たとえば毎日、毎時間、またはコンテンツ要求のたびに、分類をローカルで更新し得る。
同様に、いくつかの実装形態では、特異ベクトルおよび/またはモデルパラメータがコンテンツプロバイダに提供され得る。クライアントデバイスがコンテンツのアイテムを要求するとき、要求はクラスタ識別情報を含み得る。クラスタ識別情報は、HTTPS要求内、またはHTTPヘッダのオプションフィールドの中などの、要求のペイロードまたはヘッダの中に埋め込まれ得る。いくつかの実装形態では、コンテンツプロバイダは、ニューラルネットモデルまたはプロバイダ固有のニューラルネットモデルを使用して、個々のデバイスまたはユーザの特性を特定できない状態で、各クラスタ内のデバイスについて属性および/またはユーザの関心を推測し得る(たとえば、次元削減の特異ベクトルに基づいてクラスタ識別情報に対応するおおよそのプロファイルベクトルを決定し、次いで、ベクトルを機械学習システムに提供して特性を推測することによって)。
したがって、これらの実装形態は、集約、すなわち、類似するブラウジング履歴またはパターンを伴うデバイスを一緒に集約することを通じて、デバイスの匿名性をもたらす。クラスタリングアルゴリズムは、あらゆるクラスタが概ね同じ数のユーザを含むように、類似するクラスタサイズを維持することを試みる。一定の数のアクティブデバイスがインターネット上にあると仮定すると、クラスタ識別子のエントロピーがクラスタサイズを左右する(たとえば、クラスタ識別子のエントロピーが高いほど、各クラスタの中のデバイスは少なく、プライバシー保護が低下する)。クラスタ識別子のエントロピーを調整することによって(たとえば、より少数または多数のクラスタを提供することによって)、システムは、コンテンツのパーソナライゼーションの有効性を依然として維持しながら、望ましいレベルの匿名性およびプライバシー保護を達成することができる。
これらの実装形態は、プライバシーを向上させるとともに有効性を維持しながら、集約および擬似パーソナライゼーションを利用しないシステムを改良する。そのような未改良のシステムでは、デバイスのブラウジング履歴を記録して、累積された履歴に基づいて対応するユーザの属性情報および関心を推測するために、ユーザまたはデバイス識別子が使用され得る。この推測される情報は、クリックスルーレート、注意力、または他のそのような尺度などの、パーソナライズされたコンテンツ選択の有効性を予測するために使用され得る。代わりに、本明細書において論じられるシステムおよび方法を介して、ブラウジング履歴が、所与のクラスタ識別子またはグループと関連付けられるデバイスのグループのみに対して累積され得る。推測されるグループの属性および関心を、推測された有効性の尺度とともにコンテンツ選択のために依然として使用することができ、一方で、コンテンツプロバイダは、グループまたはクラスタ内のデバイスまたはユーザの特性を区別できないままである。
いくつかの実装形態では、2のK乗個の典型的なブラウジング履歴パターンが、数十億人のインターネットユーザの集約されたブラウジング履歴に基づいて定義される。各々の典型的なブラウジング履歴パターンは、固有のクラスタ識別子またはブラウジング履歴識別子を有し、これらは、各クラスタ識別子が多数のデバイスにより共有されるように、Kを何らかの小さい数としてKビットの整数によって表され得る。ユーザがパーソナライズされたコンテンツ選択のオプトアウトまたは擬似パーソナライゼーションへのオプトインを選択するとき、ユーザのデバイスのブラウザアプリケーションは、ユーザの実際のブラウジング履歴に最もよく一致する典型的なブラウジング履歴パターンを選択し得る。ブラウザは、コンテンツパーソナライゼーションの目的で、対応するクラスタ識別子をコンテンツプロバイダに提供し得る。
クラスタ識別子の典型的なブラウジング履歴パターンおよび符号化は、ほぼ等しい数のデバイスが各クラスタ識別子と関連付けられるように選ばれる。Kの値、および各コンテンツプロバイダがコンテンツ要求とともにブラウザから取得し得る他の信号(たとえば、IPアドレス、ユーザエージェント識別子など)のエントロピーを制御することによって、ブラウザは、コンテンツの擬似パーソナライゼーションを可能にしながら、ユーザの再特定リスクを大幅に低減し得る。
図2は、いくつかの実装形態による、擬似パーソナライズされたクラスタリングを提供するための匿名化のためのシステムのブロック図である。デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ウェアラブルコンピュータ、スマートフォン、組み込みコンピュータ、スマートカー、または任意の他のタイプおよび形式のコンピューティングデバイスを備え得る、クライアントデバイス200が、1つまたは複数のサーバ、分類器サーバ230および/またはコンテンツサーバ250とネットワーク225を介して通信し得る。
多くの実装形態において、クライアントデバイス200は、プロセッサ202およびメモリデバイス206を含み得る。メモリデバイス206は、プロセッサによって実行されると、本明細書において説明される動作のうちの1つまたは複数をプロセッサに実行させる機械命令を記憶し得る。プロセッサ202は、マイクロプロセッサ、ASIC、FPGAなど、またはこれらの組合せを含み得る。多くの実装形態では、プロセッサは、マルチコアプロセッサまたはプロセッサのアレイであり得る。メモリデバイス206は、限定はされないが、プログラム命令をプロセッサに提供することが可能な電気的な、光学的な、磁気的な、または任意の他のストレージデバイスを含み得る。メモリデバイスは、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ROM、RAM、EEPROM、EPROM、フラッシュメモリ、光学メディア、またはプロセッサが命令をそこから読み取ることができる任意の他の適切なメモリを含み得る。命令は、限定はされないが、C、C++、C#、Java、JavaScript、Perl、HTML、XML、Python、およびVisual Basicなどの、任意の適切なコンピュータプログラミング言語からのコードを含み得る。
クライアントデバイス200は、1つまたは複数のネットワークインターフェース204を含み得る。ネットワークインターフェース204は、10 Base T、100 Base T、もしくは1000 Base T(「Gigabit」)を含むイーサネット、802.11a、802.11b、802.11g、802.11n、もしくは802.11acなどの種々の802.11ワイヤレスのいずれか、CDMA、LTE、3G、もしくは4Gセルラーを含むセルラー、Bluetoothもしくは他の短距離ワイヤレス接続、または、ネットワークと通信するためのこれらもしくは他のインターフェースの任意の組合せを含む、任意のタイプおよび形式のインターフェースを含み得る。多くの実装形態において、クライアントデバイス200は、異なるタイプの複数のネットワークインターフェース204を含んでもよく、種々のネットワーク225への接続を可能にする。それに対応して、ネットワーク225は、ローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、セルラーネットワーク、ブロードバンドネットワーク、Bluetoothネットワーク、802.11(WiFi)ネットワーク、衛星ネットワーク、または、これらもしくは他のネットワークの任意の組合せを備えてもよく、1つまたは複数の追加のデバイス(たとえば、ルータ、スイッチ、ファイヤーウォール、ハブ、ネットワークアクセラレータ、キャッシュなど)を含み得る。
クライアントデバイスは、1つまたは複数のユーザインターフェースデバイスを含み得る。ユーザインターフェースデバイスは、感覚情報(たとえば、ディスプレイへの視覚化、1つまたは複数の音、触覚フィードバックなど)によってデータをユーザに伝える、および/または、ユーザからの受け取られた感覚情報を電気信号に変換する、任意の電子デバイス(たとえば、キーボード、マウス、ポインティングデバイス、タッチスクリーンディスプレイ、マイクロフォンなど)であり得る。様々な実装形態によれば、1つまたは複数のユーザインターフェースデバイスは、内蔵ディスプレイ、タッチスクリーン、マイクロフォンなどのクライアントデバイスのハウジングの内部にあってもよく、または、クライアントデバイスに接続されるモニタ、クライアントデバイスに接続されるスピーカーなどの、クライアントデバイスのハウジングの外部にあってもよい。
メモリ206は、プロセッサ202により実行するためのアプリケーション208を備え得る。アプリケーション208は、メディアアプリケーション、ウェブブラウザ、生産性向上アプリケーション、または任意の他のそのようなアプリケーションなどの、任意のタイプおよび形式のアプリケーションを備えてもよく、ブラウザアプリケーションと本明細書で全般に呼ばれることがある。アプリケーション208は、コンテンツサーバからコンテンツを受信してもよく、クライアントデバイスのユーザのためにユーザインターフェースを介してそれを表示してもよい。
メモリ206は、アクセスログ210(クライアントデバイス200のためのログ210aとして示される)を記憶してもよく、これは、アプリケーション208の一部であってもよく、アプリケーション208によって維持されてもよい(たとえば、プロファイル、選好ファイル、履歴ファイル、または他のそのようなファイルの一部として)。アクセスログ210は、アプリケーション208によって使用可能な任意のフォーマットで記憶され得る。アクセスログは、アプリケーション208によってアクセスされ、取り出され、表示され、または別様に取得される、ウェブサイト、ドメイン、ウェブページ、コンテンツ、または他のデータの識別情報を備え得る。アクセスログ210はまた、上で論じられたようにプロファイルベクトル100を記憶してもよく、これは、アプリケーションおよび/またはデバイスのアクセス履歴から生成され得る。プロファイルベクトル100は、所定の期間(たとえば、日、週、時間帯など)の間の、1つまたは複数のドメイン、ウェブページ、ウェブサイトへのアクセスを表す値のn次元の文字列もしくはアレイ、または他のそのようなデータを備え得る。上で論じられたように、プロファイルベクトルは、分類器サーバ230に提供され得る(ステップA)。プロファイルベクトル100は、アプリケーション208またはログ削減器214によって生成されてもよく、これは、アプリケーション、サービス、デーモン、ルーチン、プラグイン、またはアクセスログからプロファイルベクトルを生成するための他の実行可能論理を備えてもよい。多くの実装形態において、ログ削減器214は、アプリケーション208の一部を備え得る。
メモリ206は特異ベクトル212も記憶し得る。上で論じられたように、特異ベクトル212は分類器サーバ230から取得されてもよく(ステップB)、これは、上で論じられたような複数のクライアントデバイス200のプロファイルベクトルの行列の次元削減から計算されてもよい。特異ベクトル212は、フラットファイル、データアレイ、または他の構造などの任意の適切なフォーマットで記憶されてもよく、多くの実装形態では圧縮されてもよい。
メモリ206は、ニューラルネットモデル216のパラメータも記憶し得る。上で論じられたように、ニューラルネットモデル216は、分類器サーバによって生成され、クライアントデバイス200に提供されるパラメータまたは重みであり得る(ステップC)。アプリケーション、サービス、サーバ、デーモン、ルーチン、または機械学習アルゴリズムを実行するための他の実行可能論理を備え得る、クライアントデバイス200の分類器218は、クライアントデバイスの次元削減されたプロファイルベクトルからクラスタ識別子220を生成するためのニューラルネットモデル216のパラメータを利用し得る。いくつかの実装形態では、分類器218は、テンソル処理ユニット、または他のそのようなハードウェアなどの、ハードウェア回路を備え得る。他の実装形態では、分類器218は、デバイスのプロセッサ202によって実行されるソフトウェアを備え得る。
メモリ206はクラスタ識別子220も記憶し得る。クラスタ識別子220は、クラスタ識別子と関連付けられるクッキーもしくは他の文字列を備えてもよく、および/または、クラスタの特性を特定する情報(たとえば、XMLコードまたはパラメータ、パラメータ値のペアなど)を符号化し、もしくは備えてもよい。クラスタ識別子220は、サーバ230によってあらかじめ決定され、または生成され、クライアントデバイス200に提供され得る。クライアントデバイスの分類器218は、各クラスタ識別子220のランクまたはスコアを生成するために、ニューラルネットモデルを使用してクライアントデバイスの次元削減されたプロファイルベクトルを処理してもよく、コンテンツ要求の間のコンテンツサーバへの送信のために最高のランクまたはスコアの識別子を選択してもよい(ステップD)。
分類器サーバ230は、1つまたは複数のサーバコンピューティングデバイスを備えてもよく、1つまたは複数の物理コンピューティングデバイス、または、1つまたは複数の物理コンピューティングデバイス(たとえば、クラウド、クラスタ、またはサーバファーム)によって実行される1つまたは複数の仮想コンピューティングデバイスを備えてもよい。分類器サーバ230は全般に、サーバ、測定サーバ、集約サーバ、または他のそのような用語で呼ばれ得る。
分類器サーバ230は、1つまたは複数のプロセッサ202、ネットワークインターフェース204、およびメモリデバイス206、ならびに示されていない他のデバイスを備え得る。分類器サーバ230は、複数のクライアントデバイス200から取得されたアクセスログおよび/またはプロファイルベクトル210a~210nをメモリに記憶し得る。上で論じられたように、アプリケーション、サーバ、サービス、ルーチン、またはプロセッサ202によって実行される他の実行可能論理を備え得る、分類器サーバ230の集約器232は、プロファイルベクトル210a~210nを行列またはn次元アレイへと集約し得る。集約器232はまた、特異ベクトル212への行列の分解または次元削減を計算してもよく、特異ベクトル212はクライアントデバイス200(およびいくつかの実装形態ではコンテンツサーバ250)に提供されてもよい。
分類器サーバ230はまた、分類器218をメモリに記憶してもよい。分類器218は、集約器232の一部であってもよく、または、プロセッサ202によって実行される別々のアプリケーション、サービス、サーバ、ルーチン、もしくは他の実行可能論理、および/または、次元削減された行列の中のクラスタを特定するためのテンソル処理ユニットなどのハードウェアプロセッサであってもよい。多くの実装形態では、分類器218は、複数のクラスタのうちの1つへと次元削減されたベクトルを分類するためのニューラルネットワークまたは同様の人工知能を備え得る。ニューラルネットワークのパラメータは、訓練されると、上で論じられたようなクラスタ識別情報またはランキングを同様に生成するために、クライアントデバイス200に提供され得る。
コンテンツサーバ250は、コンテンツ配信ネットワーク、ウェブサーバ、メディアサーバ、ソーシャルメディアサービス、または任意の他のタイプおよび形式のコンピューティングシステムを含む、任意のタイプおよび形式のコンテンツ提供サーバまたはサービスを備え得る。コンテンツサーバ250は、1つまたは複数のプロセッサ202、ネットワークインターフェース204、およびメモリデバイス206を備え得る。多くの実装形態において、コンテンツサーバ250は、複数のコンテンツアイテム252を記憶してもよく、これは、テキスト、オーディオ、ビデオ、アニメーション、画像、実行可能スクリプト、ウェブページ、または任意の他のそのようなデータを含む、任意のタイプおよび形式のコンテンツを備えてもよい。
コンテンツサーバ250はコンテンツ選択器254を備えてもよく、それは、ウェブサーバもしくはファイルサーバの一部であってもよく、または、クライアントデバイスへ配信するコンテンツを選択するための、別々のアプリケーション、サービス、サーバ、デーモン、ルーチン、または他の実行可能論理であってもよい。コンテンツは、デバイスの推測される特性に基づいて選択され得る。コンテンツサーバは、デバイスからのコンテンツに対する要求とともにクラスタ識別子を受信してもよく、そのクラスタのデバイスに対する推測された特性に基づいてコンテンツを選択してもよい。いくつかの実装形態では、コンテンツサーバは、集約クラスタを表す対応するプロファイルベクトルにクラスタ識別子を拡張するために、分類器サーバ230から取得される特異ベクトルを使用し得る。クラスタのプロファイルベクトルは、任意の特定のデバイスのプロファイルベクトルと一致しないことがあるが、クラスタと関連付けられるすべてのデバイスのベクトルの近似または平均であってもよい。
図3は、いくつかの実装形態による、擬似パーソナライズされたクラスタリングを提供するための匿名化のための方法のフローチャートである。ステップ302において、クライアントデバイス200は、アクセスログまたはアクセスログから生成されたプロファイルベクトルを分類器サーバ230に提供し得る。上で論じられたように、プロファイルベクトルは、クライアントデバイスのブラウジング履歴またはアクセス履歴に基づいてもよく、所定の期間内における文字列またはアレイの中の対応する位置と関連付けられるアドレスへの1回または複数のアクセスの各々を表す値を伴う、n次元のベクトルまたはその文字列を備えてもよい。
ステップ304において、分類器サーバ230は、1つまたは複数の追加のクライアントデバイス200から取得されるプロファイルベクトルまたはログを伴う行列へと、クライアントデバイス200からのプロファイルベクトルまたはログを集約し得る。プロファイルベクトルは、分類器サーバ230によって定期的に、または、分類器サーバもしくは関連するサーバによって提供されるサービスへのログインのときに取得され得る。ステップ302~304が、312において特異ベクトルを利用して314において次元削減を実行できるすべてのデバイスのうちのごく一部であり得る、複数のクライアントデバイスについて繰り返され得る。いくつかの実装形態では、ステップ302からステップ312はクライアントデバイス上での連合学習で置き換えられてもよく、分類器サーバ230は任意選択であっても、または除去されてもよい。
ステップ306において、分類器サーバ230は、行列の次元削減または分解を計算し得る。いくつかの実装形態では、分類器サーバは、特異値分解アルゴリズムを使用してもよく、複数の特異ベクトルおよび次元削減された行列を生成してもよい。
ステップ308において、分類器サーバは任意選択で、次元削減された行列のクラスタのクラスタ境界またはパラメータを特定し得る。分類器サーバは、主要成分分析などの任意の適切なアルゴリズム、または、クラスタを識別するためのニューラルネットワークなどの機械学習システムを使用し得る。
ステップ310において、いくつかの実装形態では、分類器モデルは、特定されたクラスタおよび次元削減されたプロファイルベクトルに基づいて、調整または訓練され得る。様々な実装形態において、訓練は教師ありまたは教師なしであり得る。
ステップ312において、特異ベクトル、およびいくつかの実装形態では、ニューラルネットモデルまたは他の学習アルゴリズムの重みが、クライアントデバイス200に、およびいくつかの実装形態では、1つまたは複数のコンテンツサーバ250に提供され得る。
ステップ314において、クライアントデバイス200は、分類器サーバから受信された特異ベクトルを使用して、プロファイルベクトルの次元削減またはデバイスのアクセスログを計算し得る。次元削減ベクトルは、ステップ316において、分類器サーバから受信されたモデルパラメータを使用して、およびステップ318において決定された分類を使用して、人工知能またはニューラルネットワークを介して分類され得る。分類を決定することは、デバイスのプロファイルベクトルに対する(たとえば、いくつかの実装形態では、分類器サーバによって特定され、パラメータを介して提供される)複数のクラスタの各々のスコアまたはランクを計算することを備え得る。
ステップ320において、クライアントデバイスは、1つまたは複数のコンテンツサーバ250にコンテンツのアイテムに対する要求を送信し得る。要求は、デバイスのプロファイルベクトルに対応するクラスタの識別情報を備え得る。要求は、メディアのアイテムもしくはメディアのアイテムの一部の再生の完了の後で、または任意の他のそのような状況の後で、ウェブページ上でのスクリプトの実行に応答して生成され得る。
ステップ322において、コンテンツサーバは、分類器サーバから受信された分類器モデルパラメータおよび特異ベクトルに基づいて、クラスタの特性を決定し得る。いくつかの実装形態では、コンテンツサーバは、クラスタの中のすべてのデバイスの集約ブラウジング履歴を表すプロファイルベクトルを計算するために特異ベクトルを使用してもよく、次いで、履歴の様相(たとえば、ウェブページまたはドメインまたは他のコンテンツ、他の関連するドメインまたはウェブページなどと関連付けられる、キーワード/話題)に基づいてクラスタの特性を推測してもよい。ステップ324において、コンテンツサーバは、コンテンツのアイテムを選択するために、要求の中のクラスタ識別情報(または、上で論じられたようにクラスタと関連付けられる推測された特性)を使用し得る。ステップ326において、コンテンツがクライアントデバイスに送信されてもよく、ステップ328において、クライアントデバイスがコンテンツアイテムをレンダリングまたは表示してもよい。
したがって、本明細書において論じられるシステムおよび方法は、数百万個または数十億個のデバイスなどの、多数のデバイスの集約されたブラウジング履歴を介したコンテンツの擬似パーソナライゼーションまたは匿名化されたコンテンツ取り出しを可能にする。疎行列を、集約されたブラウジング履歴から構築し、次元削減することができ、エントロピーを低減し、個々のデバイスの匿名性をもたらす。個々のデバイスの詳細をコンテンツプロバイダに曝すことなく、関連するコンテンツが、類似するブラウジング履歴を表す擬似パーソナライズされたクラスタを介して選択され得る。
ネットワーク接続された環境では、クライアントデバイス上で実行されるアプリケーション(たとえば、ウェブブラウザ)は、コンテンツパブリッシャによって提供される主要コンテンツと、補足コンテンツのための1つまたは複数のコンテンツスロット(たとえば、インラインフレーム)とを伴う、情報リソース(たとえば、ウェブページ)を受信することができる。情報リソースは、コンテンツスロットへと挿入すべきコンテンツ選択サービスからのコンテンツプロバイダのコンテンツアイテムの取り出しを指定する、コードスニペットまたはスクリプト(たとえば、コンテンツ選択タグ)を含み得る。情報リソースのスクリプトを解析すると、アプリケーションは、コンテンツスロットへと挿入すべきコンテンツに対する要求を生成することができ、要求をコンテンツ選択サービスに送信することができる。要求の受信に応答して、コンテンツ選択サービスは、情報リソースのコンテンツスロットへと埋め込むべき、コンテンツプロバイダによって供給されるコンテンツアイテムのうちの1つを選択することができる。
コンテンツ選択サービスによるコンテンツアイテムの選択は、ユーザに固有の(またはアカウントを介した)確定的追跡識別子の使用、ユーザにより操作されるクライアントデバイス、またはクライアントデバイス上で実行されるアプリケーションに依存し得る。識別子は、クライアントデバイス上に維持され、クッキーを介してコンテンツ選択サービスによってアクセスされ得る。クッキーは、たとえば、情報リソースのためのコンテンツパブリッシャのドメインとは異なるコンテンツ選択サービスのドメインと関連付けられるサードパーティクッキーであり得る。情報リソースのコンテンツスロットがコンテンツ選択サービスからのコンテンツの取り出しを指定するとき、識別子を含むクッキーがクライアントデバイスからコンテンツ選択サービスに渡され得る。クッキーを使用して、コンテンツ選択サービスは、どの情報リソースがユーザによってクライアントデバイス上で実行されるアプリケーションを介してアクセスされるかを追跡することができる。加えて、コンテンツ選択サービスは、追跡される情報リソースに基づいて、クライアントデバイス上のアプリケーションを操作するユーザに関連があると決定されるコンテンツアイテムを特定することができる。
これらの固有の追跡識別子の使用は、特定のユーザに対してカスタマイズされるコンテンツアイテムの選択を可能にするが、特にデータのセキュリティおよび完全性に関して多くの欠点があり得る。1つには、クライアントデバイスとコンテンツ選択サービスとの間でやり取りされるユーザデータについてのデータセキュリティリスクに、ユーザが曝され得る。たとえば、コンテンツ選択サービスの管理者が、ユーザの同意なしで私的なユーザデータを第三者へ意図的に提供する可能性がある。加えて、権限のない悪意のあるエンティティが、サードパーティクッキーを輸送中に傍受する可能性があり、固有の追跡識別子を使用して影響を受けるクライアントデバイスとアプリケーションのオンライン活動を監視する可能性がある。別のこととして、そのような識別子を使用してアクセスされる情報リソースの集合体により、コンテンツ選択サービスの一部でデータ漏洩の恐れが生じ得る。たとえば、その一部が特定のユーザへと個別にトレースバックされ得るデータの過誤による公開、またはそのような収集されたデータを窃取しようとする悪意のある攻撃は、ユーザのデータプライバシーの喪失につながり得る。
固有の追跡識別子についての問題を考慮する1つの手法は、クライアントデバイスからの固有の追跡識別子を伴うサードパーティクッキーの無効化を含み得る。クライアントデバイス上で実行されるアプリケーションは、固有の追跡識別子の生成、維持、またはコンテンツ選択サービスへの送信を禁止するように構成され得る。しかし、サードパーティクッキーの制約は、無数の他の問題を引き起こし得る。サードパーティクッキーの無効化により、コンテンツ選択サービスは、アプリケーションを介してクライアントデバイスによってどの情報リソースがアクセスされるかを追跡することが不可能であり得る。したがって、コンテンツに対する要求が受信されると、コンテンツ選択サービスは、アプリケーションを操作するユーザとのコンテンツアイテムの関連性を決定する際に、そのような情報を使用することが可能ではないことがある。結果として、選択されたコンテンツアイテムは、追跡識別子を使用して選択されるコンテンツアイテムよりも、クライアントデバイスのユーザとの相互作用の可能性がより低くなり得る。結果として、コンテンツアイテムがその上での表示のために挿入される情報リソースは、人-コンピュータの対話(HCI)の品質の低下を被ることがある。
コンテンツを選択する際に個々のクライアントデバイスまたはアプリケーションを追跡するために固有の識別子の使用を禁止することについての技術的な課題に対処するために、各アプリケーションは、ローカルに維持されているブラウジング履歴に基づいて、多数のクラスタのうちの1つへと自身を類別することができる。類似のブラウジングパターンを伴うアプリケーション、およびそれを拡張すると、そのアプリケーションを操作するユーザは、同じクラスタに類別され得る。類似するブラウジングパターンを伴い、同じクラスタに類別されるユーザは、類似する特質および関心を有するものとして相関付けられ得るので、同じコンテンツアイテムに対する類似する応答を有する可能性がより高いことがある。各クラスタは、多数の関連するユーザ(たとえば、1000より大きい)を有し得るので、クラスタへのユーザの類別は、個々のユーザに特有の特性ではないことがある。
自身をクラスタのうちの1つに割り当てる際、アプリケーションは、あらかじめ設定された数の次元を伴うベクトルへとブラウジング履歴を変換または符号化することができる。ベクトルは、多数の次元があり疎であり得る。たとえば、特徴ベクトルの中の1つの要素は、ユーザが特定のドメイン、ウェブサイトのセクション、特定のカテゴリ(たとえば、休暇)のウェブページ、またさらには特定のURLを、特定の時間スロットに(たとえば、一日の特定の時間および特定の曜日に)訪問したかどうかを示すことができる。アプリケーションは次いで、次元削減技法(たとえば、線形削減、非線形削減、またはランダム投影技法)を適用して、より低次元の空間の別のベクトルにベクトルをマッピングすることができる。アプリケーションは次いで、クラスタリングまたは分類アルゴリズム(たとえば、k最近傍アルゴリズム、線形分類、サポートベクターマシン、およびパターン認識)を削減されたベクトルに適用して、アプリケーション、およびそれを拡張すると、ユーザを割り当てるべきクラスタを特定することができる。クラスタリングアルゴリズムは、アプリケーションのためにアプリケーションマネージャ(たとえば、ブラウザベンダ)によって提供され更新され得る。
クラスタリングアルゴリズムを使用してクラスタを発見すると、アプリケーションは、クラスタのためのクラスタ識別子(クラス識別子またはブラウジング履歴識別子とも呼ばれる)を特定することができる。クラスタ識別子は、アプリケーションマネージャによって各クラスタに割り当てられてもよく、アプリケーションおよびコンテンツ選択サービスに提供されてもよい。固有の確定的追跡識別子とは対照的に、クラスタ識別子は、1つの個々のユーザ、アプリケーション、またはクライアントデバイスに特有ではないことがある。複数のユーザが同じクラスタへと類別されてもよく、クラスタ識別子はまた、類似するブラウジングパターンを伴う複数のユーザ、アプリケーション、またはクライアントデバイスに共通であってもよい。クラスタ識別子は複数のユーザで共有されるので、クラスタ識別子は、個々のユーザに割り当てられた固有の追跡識別子より低いエントロピーを有し得る。たとえば、すべてのインターネットユーザに対する固有の確定的追跡識別子は30ビットを超えるエントロピーを有し得るが、クラスタ識別子は18から22ビットのエントロピーに設定され得る。エントロピーがより低いことで、クラスタ識別子自体が、固有の追跡識別子より短くサイズが小さくなり得る。
コンテンツスロットを伴う情報リソースが受信されると、アプリケーションは、固有の追跡識別子の代わりに、コンテンツスロットのためのコンテンツに対する要求にクラスタ識別子を含め、要求をコンテンツ選択サービスに送信することができる。データのセキュリティと完全性を向上させ、クラスタ識別子および関連する情報の窃取の確率を下げるために、追加の保護対策が採用され得る。ネットワークを介した送信の間のクラスタ識別子の傍受から保護するために、アプリケーションは、ハイパーテキストトランスファープロトコルセキュア(HTTPS)プロトコルなどの、暗号化プロトコルを使用することができる。加えて、クライアントデバイスに維持されているクラスタ識別子を保護するために、アプリケーションは、他のクライアント側のプロセス(たとえば、情報リソース上のJavaScript)がクラスタ識別子にアクセスするのを制限することができる。たとえば、クラスタ識別子は、クラスタ識別子へのアクセスを防ぐために、クライアントデバイスに維持されているセキュアフラグまたはHTTP-onlyフラグクッキーに含まれ得る。これは、そのようなアクセス制御権を持たないサードパーティクッキーとは対照的であり得る。
要求を受信したことに応答して、コンテンツ選択サービスは、クラスタ識別子を使用してコンテンツアイテムのうちの1つを選択することができる。コンテンツ選択サービスは、クラスタのクラスタ識別子を含むコンテンツに対する以前の要求を使用して、クラスタとして類別されるユーザに対するブラウジング履歴を累積することができる。クラスタに対する累積された履歴にプロファイリングモデルを適用して、コンテンツ選択サービスは、クラスタの中のユーザの特質および関心を推測することができる。プロファイリングモデルの結果により、コンテンツ選択サービスは、要求と関連付けられるユーザが類別されるクラスタに関連があると決定されるコンテンツアイテムを発見することができる。
クラスタ識別子を使用することによって、クライアントデバイスに維持されているアプリケーションのブラウジング履歴は、ブラウジング履歴が特定のユーザ、アプリケーション、またはクライアントデバイスへと遡及可能となるようなコンテンツ選択サービスによるアクセスを防がれ得る。加えて、コンテンツ選択サービスは、異なるドメインにわたって個々のユーザ、アプリケーション、またはクライアントデバイスを追跡して詳細なブラウジング履歴を組み立てることが不可能であり得る。代わりに、コンテンツ選択サービスは、アプリケーションから受信されたクラスタ識別子と関連付けられるユーザの特定のクラスタに対するブラウジング履歴を集約することができる。集約する際、コンテンツ選択サービスは、同じクラスタの異なるユーザからブラウザ履歴を併合することによって、個々のユーザのデータプライバシーを保護することができる。各クラスタに割り当てられるべきユーザの数を設定することによって、データプライバシーの程度も制御され得る。
さらに、同じクラスタの中のユーザが類似するブラウジングパターンを有するという仮定のもとで、コンテンツ選択サービスは、クラスタのために集約されたブラウジング履歴に基づいて、同じクラスタのユーザについての類似する特質および関心を推定して決定することができる。コンテンツ選択サービスはさらに、同じクラスタのユーザが同様に応答することを期待して、コンテンツアイテムを選択することができる。このようにして、個々のユーザのブラウジング履歴についてのデータセキュリティ、完全性、およびプライバシーが維持され得る。同時に、コンテンツアイテムの選択における関連性を決定できることで、選択されたコンテンツアイテムまたは全体の情報リソースについての人-コンピュータの対話(HCI)の品質が維持され得る。
ここで図4を参照すると、分類モデルを使用したコンテンツの選択のための識別子を符号化するためのコンピュータネットワーク接続された環境またはシステム400の一実装形態を示すブロック図が示されている。大まかに、システム400は、システム400の構成要素間の通信のための少なくとも1つのネットワーク405を含み得る。システム400は、少なくとも1つのアプリケーション(たとえば、ブラウザ)のためのサービスを提供するために少なくとも1つのアプリケーションマネージャサービス410(本明細書ではブラウザベンダとも呼ばれる)を含み得る。システム400は、コンテンツアイテムを提供するために少なくとも1つのコンテンツプロバイダ415を含み得る。システム400は、情報リソース(たとえば、ウェブページ)を提供するために少なくとも1つのコンテンツパブリッシャ420を含み得る。システム400は、コンテンツアイテムを選択するために少なくとも1つのコンテンツ選択サービス425を含み得る。システム400は、1つまたは複数のクライアントデバイス430A~N(一般にクライアントデバイス430と本明細書で呼ばれる)を含み得る。各クライアントデバイス430は、少なくとも1つのアプリケーション435A~N(一般にアプリケーション435と本明細書で呼ばれる)を含み得る。システム400の構成要素(たとえば、ネットワーク405、アプリケーションマネージャサービス410とその構成要素、コンテンツプロバイダ415とその構成要素、コンテンツパブリッシャ420とその構成要素、コンテンツ選択サービス425とその構成要素、およびクライアントデバイス430とその構成要素)の各々が、図9に関連して本明細書で詳述されるコンピューティングシステム900の構成要素を使用して実装され得る。
さらなる詳細では、システム400のネットワーク405は、アプリケーションマネージャサービス410、コンテンツプロバイダ415、コンテンツパブリッシャ420、コンテンツ選択サービス425、およびクライアントデバイス430を互いに通信可能に結合することができる。システム400のアプリケーションマネージャサービス410、コンテンツプロバイダ415、コンテンツパブリッシャ420、およびコンテンツ選択サービス425は各々、ネットワーク405を介して互いに通信可能に結合される少なくとも1つのデータセンターまたはサーバファームに位置する複数のサーバを含み得る。アプリケーションマネージャサービス410は、コンテンツプロバイダ415、コンテンツパブリッシャ420、コンテンツ選択サービス425、およびクライアントデバイス430とネットワーク接続405を介して通信することができる。コンテンツプロバイダ415は、アプリケーションマネージャサービス410、コンテンツパブリッシャ420、コンテンツ選択サービス425、およびクライアントデバイス430とネットワーク405を介して通信することができる。コンテンツパブリッシャ420は、アプリケーションマネージャサービス410、コンテンツパブリッシャ420、コンテンツ選択サービス425、およびクライアントデバイス430とネットワーク405を介して通信することができる。コンテンツ選択サービス425は、アプリケーションマネージャサービス410、コンテンツプロバイダ415、コンテンツパブリッシャ420、およびクライアントデバイス430とネットワーク405を介して通信することができる。各クライアントデバイス430は、アプリケーションマネージャサービス410、コンテンツプロバイダ415、コンテンツパブリッシャ420、およびコンテンツ選択サービス425とネットワーク405を介して通信することができる。
アプリケーションマネージャサービス410は、クライアントデバイス430上で実行されるアプリケーション435にリソースおよび更新を提供するためにアプリケーションベンダ(本明細書ではブラウザベンダと呼ばれることがある)によって運用される、サーバまたは他のコンピューティングデバイスを含み得る。たとえば、アプリケーションマネージャサービス410は、クライアントデバイス430へインストールするためのアプリケーション435を提供することができる。アプリケーションマネージャサービス410はまた、クライアントデバイス430にインストールされたアプリケーション435に更新を提供することができる。更新は、アプリケーション435のサブコンポーネントのうちの少なくとも1つに影響し得る。アプリケーションマネージャサービス410はまた、クライアントデバイス430上で実行されるアプリケーション435の機能を補強するために、アプリケーション435にプラグインまたはアドオンを提供することができる。アプリケーションマネージャサービス410は、クライアントデバイス430上で実行されるアプリケーション435上で情報を提供するために、コンテンツ選択サービス425と通信することができる。アプリケーション435および関連するファイルまたはデータの準備は、ネットワーク405を介してアプリケーションマネージャサービス410によって通信され得る。
コンテンツプロバイダ415は、クライアントデバイス430における情報リソース上で表示するためのコンテンツアイテムを提供するためにコンテンツプロバイダエンティティによって運用される、サーバまたは他のコンピューティングデバイスを含み得る。コンテンツプロバイダ415によって提供されるコンテンツは、任意の都合のよい形式をとり得る。たとえば、サードパーティコンテンツは、他の表示されるコンテンツに関連するコンテンツを含んでもよく、たとえば、表示されるコンテンツに関するウェブサイトのページであってもよい。コンテンツは、コンテンツパブリッシャ420によって提供される主要コンテンツを含む情報リソースなどの、情報リソース上で表示するためのサードパーティコンテンツアイテムまたは創作物(たとえば、広告)を含み得る。コンテンツアイテムは、検索結果ウェブページにも表示され得る。たとえば、コンテンツプロバイダ415は、ウェブページの主要コンテンツが会社によって提供される場合はその会社のウェブページなどの情報リソース450のコンテンツスロット(たとえば、インラインフレーム要素)において表示するための、または、検索エンジンによって提供される検索結果ランディングページに表示するための、コンテンツアイテム455のソースを提供してもよく、またはそれであってもよい。コンテンツプロバイダ415と関連付けられるコンテンツアイテムは、スマートフォンまたは他のクライアントデバイス430上でのアプリケーションの実行の一部として表示されるコンテンツなどの、ウェブページ以外の情報リソース上で表示され得る。
コンテンツパブリッシャ420は、ネットワーク405を介した表示のための主要コンテンツを含む情報リソースを提供するためにコンテンツパブリッシングエンティティによって運用される、サーバまたは他のコンピューティングデバイスを含み得る。たとえば、コンテンツパブリッシャ420は、情報リソース上で表示するための主要コンテンツを提供するウェブページ運用者を含み得る。情報リソースは、コンテンツパブリッシャ420によって提供されるもの以外のコンテンツを含んでもよく、情報リソースは、コンテンツプロバイダ415からのコンテンツアイテムの表示のために構成されるコンテンツスロットを含んでもよい。たとえば、コンテンツパブリッシャ420は、会社のウェブサイトを運用することができ、ウェブサイトのウェブページ上で表示するためのその会社についてのコンテンツを提供することができる。ウェブページは、コンテンツプロバイダ415によって、またはコンテンツパブリッシャ420自身によって提供されるコンテンツアイテムの表示のために構成されるコンテンツスロットを含み得る。いくつかの実装形態では、コンテンツパブリッシャ420は、検索エンジンウェブサイトを運用する検索エンジン運用者の検索エンジンコンピューティングデバイス(たとえば、サーバ)を含む。検索エンジンウェブページの主要コンテンツ(たとえば、ランディングウェブページの結果)は、コンテンツプロバイダ415からのコンテンツアイテムなどの情報リソースのコンテンツスロットにおいて表示される検索の結果ならびにサードパーティコンテンツアイテムを含み得る。いくつかの実装形態では、コンテンツパブリッシャ420は、ビデオコンテンツを提供するための1つまたは複数のサーバを含み得る。
コンテンツ選択サービス425は、ネットワーク405を介して情報リソースのコンテンツスロットへと挿入すべきコンテンツアイテムを選択または特定するためにコンテンツ配置エンティティによって運用される、サーバまたは他のコンピューティングデバイスを含み得る。いくつかの実装形態では、コンテンツ選択サービス425は、コンテンツ配置システム(たとえば、オンライン広告サーバ)を含み得る。コンテンツ選択サービス425は、情報リソースのコンテンツスロットへ挿入するためのコンテンツアイテムをネットワーク405を介して提供するために、コンテンツアイテムをそこから選択するコンテンツアイテムの目録を維持することができる。目録は、コンテンツ選択サービス425にアクセス可能なデータベース上に維持され得る。コンテンツアイテムまたはコンテンツアイテムの識別子(たとえば、アドレス)は、コンテンツプロバイダ415によって提供され得る。
各クライアントデバイス430は、データを表示するためにネットワーク405を介して通信するためのコンピューティングデバイスであり得る。表示されるデータは、コンテンツ選択サービス425によって特定されるような、コンテンツパブリッシャ420によって提供されるコンテンツ(たとえば、情報リソース)およびコンテンツプロバイダ415によって提供されるコンテンツ(たとえば、情報リソースのコンテンツスロットにおいて表示するためのコンテンツアイテム)を含み得る。クライアントデバイス430は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、携帯情報端末、モバイルデバイス、コンシューマコンピューティングデバイス、サーバ、クライアント、デジタルビデオレコーダ、テレビのセットトップボックス、ビデオゲームコンソール、またはネットワーク405を介して通信するように構成される任意の他のコンピューティングデバイスを含み得る。クライアントデバイス430は、それを通じてエンドユーザがコンテンツを受信するための要求を出すことができる通信デバイスであり得る。要求は検索エンジンに対する要求であってもよく、要求は検索クエリを含んでもよい。いくつかの実装形態では、要求はウェブページにアクセスするための要求を含み得る。
クライアントデバイス430上で実行されるアプリケーション435は、たとえば、インターネットブラウザ、モバイルアプリケーション、または、情報リソースおよびコンテンツアイテムに含まれるコンピュータ実行可能命令などの、クライアントデバイス430に提供されるコンピュータ実行可能命令を実行し、または別様に呼び出すことが可能な任意の他のコンピュータプログラムを含み得る。これに含まれる情報リソースは、スクリプト、論理、マークアップ、または命令(たとえば、ハイパーテキストマークアップ言語(HTML)、拡張ハイパーテキストマークアップ言語(XHTML)、拡張マークアップ言語(XML)、カスケーディングスタイルシート(CSS)、およびJavaScript、またはこれらの任意の組合せ)に対応し得る。コンテンツアイテムは、情報リソースのコンテンツスロットへと挿入され得る。
ここで図5を参照すると、システム400の中のクライアントデバイス430およびアプリケーション管理サービス410の一実装形態を示す、ブロック図が示されている。大まかに、アプリケーションマネージャサービス410は、ブラウジングパターンに基づいてアプリケーション435を類別するための少なくとも1つの分類モデル500を含み得る。アプリケーションマネージャサービス410は、少なくとも1つの分類モデル500を訓練して維持するための少なくとも1つのモデル訓練器505を含み得る。アプリケーションマネージャサービス410は、分類モデル500を変更または調整するための少なくとも1つのモデル更新器510を含み得る。アプリケーションマネージャサービス410は、クラス識別子520A~Nのセット(全般にクラス識別子520と本明細書で呼ばれる)を記憶して維持するために少なくとも1つのデータベース515を含み得る。各クライアントデバイス430上のアプリケーション435は、ブラウジングパターンに基づいてアプリケーション435を類別するために少なくとも1つの分類モデル500を含み得る。アプリケーション435は、分類モデル500を訓練して維持するために少なくとも1つのモデル訓練器505を含み得る。アプリケーション435は、分類モデル500を使用してアプリケーション435を類別するために少なくとも1つのモデル適用器525を含み得る。モデル訓練器505およびモデル適用器525は、アプリケーション435の必須の部分、アプリケーション435へのアドオンもしくはプラグイン、またはアプリケーション435とインターフェースする別個のアプリケーションであり得る。アプリケーション435は、1つまたは複数のエントリ535A~N(全般にエントリ535と本明細書で呼ばれる)を維持して記憶するために少なくとも1つのブラウジング履歴530を含み得る。アプリケーション435は、アプリケーション435の少なくとも1つのクラス識別子520を維持して記憶するために少なくとも1つの識別子キャッシュ540を含み得る。
さらなる詳細において、分類モデル500は、ブラウジング履歴530に基づいて、各アプリケーション435(またはアプリケーション435を実行する各クライアントデバイス430またはアプリケーション435と関連付けられるアカウント)を分類し、グループ化し、または別様に類別することができる。クライアントデバイス430上のアプリケーション435の分類は、クライアントデバイス430上で実行されるアプリケーション435の実例の分類を指示または表示することができる。たとえば、1つのクライアントデバイス430上で実行される1つのアプリケーション435の実例(たとえば、ウェブブラウザ)と、別のクライアントデバイス430上で実行されるアプリケーション435の別の実例(たとえば、同じタイプのウェブブラウザ)があり得る。両方の実例が、同じカテゴリまたは異なるカテゴリへと分類され得る。さらに、それを拡張すると、アプリケーション435の分類は、アプリケーション435を操作するアカウントと関連付けられるユーザの、またはユーザによって操作されるクライアントデバイス430の分類に対応し、またはそれを含み得る。
分類モデル500は、分類もしくはクラスタリングのモデルまたはアルゴリズムであり得る。分類モデル500は、とりわけ、線形分類器(たとえば、線形回帰、ロジスティック回帰、および単純ベイズ分類器)、サポートベクターマシン(SVM)、二次分類器、k最近傍アルゴリズム、および人工ニューラルネットワーク(ANN)などの分類アルゴリズムを含み得る。分類モデル500は、とりわけ、幾何中心ベースのクラスタリングアルゴリズム(たとえば、k平均アルゴリズムまたは期待値最大化(EM)アルゴリズム)、密度ベースのクラスタリングアルゴリズム(たとえば、Density-based spatial clustering of applications with noise (DBSCAN))、分布ベースのクラスタリングアルゴリズム(たとえば、ガウシアン混合モデル)、人工ニューラルネットワーク(ANN)などのクラスタリングモデルを含み得る。分類モデル500は、とりわけ、局所性鋭敏型ハッシュ方式(たとえば、MinHash、SimHash、およびNilsimsa Hash)などのハッシュ関数も含み得る。
分類モデル500は、分類またはクラスタリングのモデルおよびアルゴリズムのいずれかに従った、入力のセット、パラメータのセット、および出力のセットを含み得る。入力のセットは、ブラウジング履歴530のエントリ535を取り入れることができ、またはそれを含むことができる。いくつかの実装形態では、入力のセットは、ブラウジング履歴530のエントリ535の次元削減表現を取り入れることができ、またはそれを含むことができる。パラメータ(または重み)のセットは、入力のセットを出力のセットと接続し、または関連付けることができる。いくつかの実装形態では、パラメータのセットは、クラスの数および各クラスに対する値を含み得る。たとえば、パラメータのセットは、各クラスに対するk平均クラスタリングにおける幾何中心であり得る。別の例では、パラメータのセットは、各クラスと関連付けられる値の範囲を含み得る。クラスの数は、クラス識別子520の数に等しくてもよい。クラスの数およびクラス識別子520の数は、(たとえば、一定の値に)あらかじめ決められていてもよく、または動的に決められてもよい。出力のセットは、クラス識別子520のうちの1つに対応するクラスを作成し、または含み得る。出力のセットは、クラス識別子520のうちの1つ自体を含み得る。たとえば、クラス識別子520は、ハッシュ関数を使用して計算されるハッシュ値であり得る。各クラス識別子520は、英数字または数値(たとえば、整数または二進数)のセットであってもよく、またはそれらを含んでもよい。
アプリケーションマネージャサービス410上で実行されるモデル訓練器505は、分類モデル500を訓練することができる。モデル訓練器505は、分類モデル500を訓練するために訓練データセットを使用することができる。分類モデル500の訓練は、教師なし学習技法に従い得る。訓練データセットは、クライアントデバイス430のサンプルセット上で実行されるアプリケーション435のサンプルセットからのサンプルブラウジング履歴530を含み得る。いくつかの実装形態では、モデル訓練器505は、コンテンツプロバイダ415、コンテンツパブリッシャ420、コンテンツ選択サービス425、またはクライアントデバイス430上で実行されるアプリケーション435からサンプルブラウジング履歴530を取得して累積することができる。訓練の前に、モデル訓練器505は、分類モデル500のクラスの数を特定することができる。いくつかの実施形態では、クラスの数は、アプリケーションマネージャサービス410の管理者によってあらかじめ決められていてもよく、または割り当てられてもよい。いくつかの実装形態では、クラスの数は、アプリケーション435を伴うクライアントデバイス430の数に基づいて、モデル訓練器505によって決定され得る。たとえば、クラスの数は、設定された数のクライアントデバイス430(たとえば、800個から1000個のデバイス)が各クラスに割り当てられるように設定され得る。
分類モデル500を訓練する際、モデル訓練器505は、訓練データセットを使用して分類モデル500の中のパラメータの値(たとえば、各クラスの値)を変更し、調整し、または別様に設定することができる。各反復において、モデル訓練器505は、パラメータの値のセットの変化に基づいて、分類モデル500が以前の反復と比較して収束したかどうかを決定することができる。いくつかの実装形態では、モデル訓練器505は、分類モデル500のパラメータにおける値のセットの変化を収束閾値と比較することができる。変化が収束閾値未満である場合、モデル訓練器505は、分類モデル500が収束したと決定することができる。そうではなく、変化が収束閾値より大きい場合、モデル訓練器505は、分類モデル500が収束していないと決定することができる。分類モデル500が収束していないと決定されるとき、モデル訓練器505は、分類モデル500の訓練を続けることができる。
そうではなく、分類モデル500が収束したと決定されるとき、モデル訓練器505は、分類モデル500の訓練を終了し、終結し、または停止することができる。モデル訓練器505は、アプリケーションマネージャサービス410に分類モデル500を記憶することができる。加えて、モデル訓練器505は、クライアントデバイス430上で実行されるアプリケーション435に分類モデル500を送信し、または送ることができる。いくつかの実装形態では、モデル訓練器505は、分類モデル500のパラメータのセットを送信し、または送ることができる。分類モデル500の中の各クラスに対して、モデル訓練器505は、クラスを特定し、対応するクラス識別子520に割り当て、または別様に関連付けることができる。クラス識別子520は、クラスを参照するための英数字のセットであり得る。分類モデル500は、各クラスを対応するクラス識別子520と関連付けることができる。モデル訓練器505は、クラス識別子520のセットを、各クライアントデバイス430上で実行されるアプリケーション435に、およびコンテンツ選択サービス425に、送信して提供することができる。
クライアントデバイス430上で実行されるアプリケーション435のモデル訓練器505は、分類モデル500も訓練することができる。いくつかの実装形態では、モデル訓練器505は、分類モデル500を訓練するために分散型学習プロトコルを使用することができる。分散型学習プロトコルは、他のクライアントデバイス430上で実行されるアプリケーション435、およびネットワーク405を介して通信しているアプリケーションマネージャサービス410と連携していてもよい。分散型学習プロトコルは、たとえば、分類モデル500を訓練するための最適化アルゴリズム(たとえば、確率勾配降下(SGD)または平均化)を使用した連合学習を含み得る。クラスの数およびクラス識別子520の数は、上で説明されたように、(たとえば、一定の値に)あらかじめ決められていてもよく、または動的に決められてもよい。各反復の間に、各モデル訓練器505は、訓練データセットを使用して分類モデル500の中のパラメータの値(たとえば、各クラスの値)を変更し、調整し、または別様に設定することができる。反復の終わりにおいて、各モデル訓練器505は、分類モデル500の中のパラメータの値(たとえば、各クラスの値)を互いに提供することができる。モデル訓練器505は、パラメータの受信された値を使用して、ローカルに維持されている分類モデル500のパラメータを調整し、変更し、または設定することができる。モデル訓練器505は、上で論じられたようなパラメータの値のセットの変化に基づく、分類モデル500が以前の反復と比較して収束したという決定まで、反復を繰り返すことができる。
アプリケーションマネージャサービス410上で実行されるモデル更新器510は、アプリケーション435上で実行される各クライアントデバイス430に維持される分類モデル500に更新を提供または送信することができる。モデル更新器510は、モデル更新ポリシーに従って分類モデル500を更新するかどうかを決定することができる。モデル更新ポリシーは、分類モデル500が更新されるべき条件のセットを規定することができる。いくつかの実装形態では、モデル更新ポリシーは、分類モデル500を更新すべき時間を示すスケジュールを含み得る。モデル更新ポリシーは、各クラスに割り当てられるアプリケーション435の数が均等に分布していない(たとえば、クラスサイズの差が1つの別のクラスの5%から100%の間にある)とき、分類モデル500が更新されるべきであると規定することができる。モデル更新ポリシーは、累積された追加のブラウジング履歴530の量が閾値の量を満たすとき、分類モデル500が更新されるべきであると規定することができる。決定が、分類モデル500を更新すべきではないというものである場合、モデル更新器510は、分類モデル500を維持することができる。
一方、決定が更新すべきであるというものである場合、モデル更新器510は、分類モデル500を再訓練するために(アプリケーションマネージャサービス410上の、またはクライアントデバイス430上で実行されるアプリケーション435にまたがる)モデル訓練器505を呼び出すことができる。いくつかの実装形態では、モデル更新器510は、コンテンツプロバイダ415、コンテンツパブリッシャ420、コンテンツ選択サービス425、またはクライアントデバイス430上で実行されるアプリケーション435からの訓練データセットのためのブラウジング履歴530を累積することができる。モデル更新器510は、分類モデル500を再訓練するために、累積されたブラウジング履歴530をモデル訓練器505に渡すことができる。分類モデル500が収束したと決定すると、モデル訓練器505は、分類モデル500の訓練を終了し、終結し、または停止することができる。モデル更新器510は、分類モデル500を更新するために、新しく訓練された分類モデル500(または分類モデル500のパラメータのセット)を各アプリケーション435に送信し、または送ることができる。モデル更新器510は、各クライアントデバイス430上で実行されるアプリケーション435に、およびコンテンツ選択サービス425に、クラス識別子520のセットを送信して提供することができる。
クライアントデバイス430上で実行されるアプリケーション435のモデル適用器525は、ネットワーク405を介してアプリケーションマネージャサービス410からの分類モデル500を受信することができる。受信すると、モデル適用器525は、クライアントデバイス430に分類モデル500を記憶して維持することができる。いくつかの実装形態では、モデル適用器525は、アプリケーションマネージャサービス410から分類モデル500のパラメータのセットを受信することができる。パラメータのセットの受信は、分類モデル500を更新するためのものであり得る。受信すると、モデル適用器525は、パラメータの受信されたセットを使用して分類モデル500を変更し、構成し、または別様に修正することができる。加えて、モデル適用器525は、アプリケーションマネージャサービス410から、分類モデル500の中のクラスに対するクラス識別子520のセットを受信することができる。クラス識別子520の受信は、分類モデル500の更新の一部としてであり得る。
分類モデル500の構成により、モデル適用器525は、アプリケーション435によってクライアントデバイス430に維持されているブラウジング履歴530を特定することができる。アプリケーション435は、情報リソースがアクセスされるたびにエントリ535を作成することによって、ブラウジング履歴530を維持することができる。ブラウジング履歴530は、アプリケーション435を介してアクセスされる情報リソース(たとえば、ウェブページ)および他のオンラインコンテンツを記録することができる。ブラウジング履歴530は、エントリ535のセットを含み得る。各エントリ535は、アクセスされた情報リソースのアドレス(たとえば、ウェブページのホスト名およびパス名を含むUniform Resource Locator (URL))と、情報リソースがアクセスされた時間を示すタイムスタンプとを含み得る。エントリ535のセットは、ブラウジング履歴530内の情報リソースのタイムスタンプまたはアドレスによってインデクシングされ得る。いくつかの実装形態では、モデル適用器525は、モデル適用器525による処理を促進するのに用いる、ある時間範囲にわたるブラウジング履歴530の部分を特定することができる。ブラウジング履歴530のその部分は、その時間範囲内のタイムスタンプを伴うエントリ535のサブセットを含み得る。時間範囲は、たとえば、現在の時間から一週間分の量のエントリ535であり得る。
ブラウジング履歴530を特定すると、モデル適用器535は、ブラウジング履歴530のエントリ535を使用して特徴ベクトルのセットを形成または生成することができる。特徴ベクトルのセットは、分類モデル500のための入力として使用され得る。特徴ベクトルのセットは、次元を含んでもよく、または次元によって定義されてもよい。次元は、時間範囲(たとえば、一日のうちの時間帯または曜日)およびアドレス属性(たとえば、ドメイン名、ウェブサイトのセクション、話題カテゴリ、またはアドレス自体)を含み得る。各特徴ベクトルは、対応するエントリ535と関連付けられるタイムスタンプに基づいて、時間範囲のうちの少なくとも1つと関連付けられ得る。各特徴ベクトルは、対応するエントリ535において特定される情報リソースに対するアドレスに基づいて、情報リソースに対するアドレス属性のうちの少なくとも1つと関連付けられ得る。いくつかの実装形態では、モデル適用器535は、時間範囲およびアドレス属性によって定義される特徴ベクトルの次元へとブラウジング履歴530のエントリ535を投影することによって、特徴ベクトルのセットを生成することができる。ブラウジング履歴530のエントリ535に対して、モデル適用器535は、エントリ535の中のアドレスおよびタイムスタンプに基づいて、既存の特徴ベクトルが存在するかどうかを特定することができる。特定するために、モデル適用器525は、既存の特徴ベクトルのいずれかとエントリ535が一致するかどうかを決定することができる。既存の特徴ベクトルが存在するとき、モデル適用器535は、エントリ535を特徴ベクトルに追加することができる。逆に、既存の特徴が存在しないとき、モデル適用器535は、エントリ535のための新しい特徴ベクトルを作成することができる。
モデル適用器535は、削減された特徴ベクトルのセットを形成または生成するために次元削減プロセスを使用することができる。次元削減プロセスは、とりわけ、線形削減技法(たとえば、主要成分分析(PCA)、特異値分解(SVD)、非負値行列因子分解(NMF))、非線形次元削減(たとえば、一般化判別分析(GDA)、locally-linear embedding、およびサモンマッピング)、または他のもの(たとえば、Johnson-Lindenstraussの補題および多因子次元削減)を含み得る。いくつかの実装形態では、モデル適用器525は、特徴ベクトルの次元へとブラウジング履歴530のエントリ535を投影する際に、次元削減プロセスを適用することができる。いくつかの実装形態では、モデル適用器535は、特徴ベクトルの生成されたセットへと次元削減プロセスを適用することができる。次元削減プロセスの適用により、モデル適用器535は、削減された特徴ベクトルのセットを生成するために、特徴ベクトルの元のセットの中の次元の数を削減することができる。削減された特徴ベクトルのセットは、削減された特徴ベクトルの初期のセットより少数の次元およびデータ点を有し得る。たとえば、削減された特徴ベクトルのセットは、どのような関連するエントリ535も伴わない時間範囲またはアドレス属性を省略することができる。
モデル適用器525は、分類モデル500をブラウジング履歴530(または特徴ベクトルなどのブラウジング履歴530のエントリ535の任意のサブセットまたは表現)に適用して、アプリケーション435を類別すべきクラスを特定することができる。適用するために、モデル適用器525は、分類モデル500の入力のセットとしてブラウジング履歴530を供給することができる。いくつかの実装形態では、モデル適用器525は、分類モデル500の入力として特徴ベクトルまたは削減された特徴ベクトルのセットを供給することができる。供給されると、モデル適用器525は、分類モデル500を使用して、クラスを定義するパラメータへの入力を比較し、比較に基づいて出力のセットを生成または作成することができる。出力のセットは、アプリケーション435によって維持されるブラウジング履歴530において示されるようなブラウジングパターンを類別すべき、クラスを含み得る。モデル適用器525は、分類モデル500の出力からクラスを特定することができる。特定されたクラスは、分類モデル500によって定義されるような数のクラスのうちの1つに対応し得る。クライアントデバイス430上で実行されるアプリケーション435に対する特定されるクラスは、他のクライアントデバイス430上で実行される少なくともいくつかの他のアプリケーション435に対する特定されるクラスと共通であり、共有され、または同一であり得る。上で論じられたように、分類モデル500によって定義される各クラスは、クラスへと類別されるべきある数のクライアントデバイスを有し得る。
特定されたクラスに基づいて、モデル適用器525は、クラスの対応するクラス識別子520にアプリケーション435を割り当てることができる。いくつかの実装形態では、モデル適用器525は、分類モデル500を使用して、特定されたクラスと関連付けられるクラス識別子520を特定することができる。この特定により、モデル適用器525は次いで、クラス識別子520をアプリケーション435に割り当てることができる。アプリケーション435へのクラス識別子520の割当ては、アプリケーション435に対するブラウジング履歴530が同じクラス識別子520を伴う他のアプリケーション435上の他のブラウジング履歴530と類似していることを示すことができる。クライアントデバイス430上で実行されるアプリケーション435に割り当てられるクラス識別子520は、他のクライアントデバイス430上で実行される少なくともいくつかの他のアプリケーション435に対するクラス識別子520と共通であり、共有され、または同一であり得る。
割り当てると、モデル適用器525は、クラス識別子520を識別子キャッシュ540に記憶して維持することができる。たとえば、図示されるように、第1のアプリケーション435Aのモデル適用器525は、第1のクラス識別子520Aに対応するクラスを伴う他のアプリケーション435B~Nと類似するブラウジングパターンを有するものとして、第1のアプリケーション435Aを特定した可能性がある。識別子キャッシュ540は、アプリケーション435によって実行されるスクリプトがクラス識別子520にアクセスするのを制御することができる。いくつかの実装形態では、モデル適用器525は、識別子キャッシュ540に維持されているセキュアクッキーにクラス識別子520を記憶することができる。セキュアクッキーは、セキュアフラグまたはHTTP-onlyフラグセットを伴うクッキーを含み得る。セキュアクッキーは、情報リソース上のスクリプトが識別子キャッシュ540に維持されているクラス識別子520にアクセスするのを防ぐことができる。加えて、セキュアクッキーは、識別子キャッシュ540に記憶されているクラス識別子520にアクセスすることを認可されたエンティティに許可することができる。セキュアクッキーは、識別子キャッシュ540上のクラス識別子520にアクセスすることが許容されているものとして、コンテンツ選択サービス425またはアプリケーションマネージャサービス410を特定することができる。
モデル適用器535は、識別子割当てポリシーに従って、分類モデル500を適用すべきかどうかを決定することができる。識別子割当てポリシーは、分類モデル500がクラス識別子520の再割当てのために適用されるべき条件のセットを規定することができる。いくつかの実装形態では、識別子割当てポリシーは、分類モデル500を適用すべき時間を示すスケジュールを含み得る。識別子割当てポリシーは、アプリケーション435への新しい更新がアプリケーションマネージャサービス410によって提供されるときに分類モデル500が更新されるべきであると規定することができる。識別子割当てポリシーは、累積された追加のブラウジング履歴530の量が閾値の量を満たすとき、分類モデル500が適用されるべきであると規定することができる。決定が分類モデル500を再適用するというものではない場合、モデル適用器525はクラス識別子520を維持することができる。一方、決定が分類モデル500を再適用するというものである場合、モデル適用器525は、上で説明された機能を繰り返すことができる。たとえば、モデル適用器525は、ブラウジング履歴530を特定し、次元削減プロセスを使用して削減された特徴ベクトルのセットを生成し、分類モデル500を削減された特徴ベクトルのセットに適用してクラスを特定し、特定されたクラスと関連付けられる分類器識別子520をアプリケーション435に割り当てることができる。
ここで図6を参照すると、システム400におけるクライアントデバイス430、コンテンツプロバイダ415、コンテンツパブリッシャ420、およびコンテンツ選択サービス425の一実装形態を示す、ブロック図が示されている。大まかに、各クライアントデバイス430のアプリケーション435(たとえば、第1のクライアントデバイス430Aについて図示されるような)は、コンテンツプロバイダ415、コンテンツパブリッシャ420、またはコンテンツ選択サービス425と通信される少なくとも1つの情報リソース600および他のデータの読取りと解析を扱うために、少なくとも1つのリソースプロセッサ615を含み得る。
さらなる詳細において、クライアントデバイス430上で実行されるリソースプロセッサ615は、コンテンツパブリッシャ420から情報リソース600を受信することができる。情報リソース600の受信は、アプリケーション435によってコンテンツパブリッシャ420に送信される情報リソース600に対する要求に応答したものであってもよく、クライアントデバイス430において提示するためのものであってもよい。受信された情報リソース600(たとえば、ウェブページ)は、少なくとも1つの主要コンテンツ605(たとえば、ウェブページのボディ、テキスト、および画像)および少なくとも1つのコンテンツスロット610(たとえば、ウェブページのインラインフレーム)を含み得る。主要コンテンツ605は、コンテンツパブリッシャ420によって提供される情報リソース600の一部分に対応し得る。コンテンツスロット610は、コンテンツプロバイダ415またはコンテンツ選択サービス425からコンテンツを受信することが可能であり得る。コンテンツスロット610へと挿入されるべきコンテンツは、情報リソース600のホスト名とは異なるホスト名を有し得る。受信されると、リソースプロセッサ615は、主要コンテンツ605およびコンテンツスロット610を含む情報リソース600を解析することができる。
情報リソース600のコンテンツスロット610に対して、リソースプロセッサ615は、コンテンツ選択サービス425に送信するための要求620A~N(本明細書ではコンテンツに対する要求620と全般に呼ばれる)を生成することができる。コンテンツに対する要求620の生成は、コンテンツスロット610にコンテンツを挿入するためのスクリプト(たとえば、広告タグまたはコンテンツ選択タグ)に従ったものであり得る。コンテンツスロット610に対するスクリプトは、コンテンツスロット610自体もしくは情報リソース600の別の部分に埋め込まれ、または含まれ得る。コンテンツに対する要求620を生成する際、リソースプロセッサ615は、コンテンツに対する要求620へとアドレス625A~N(本明細書では全般にアドレス625と呼ばれる)を含めることができる。アドレス625は、コンテンツ選択サービス425に対するURLなどの、コンテンツスロット610に対するスクリプトによって指定されるコンテンツ選択サービス425を参照することができる。アドレス625は、コンテンツに対する要求620がルーティングされることになる宛先アドレスを示すことができる。さらに、リソースプロセッサ615は、クライアントデバイス430を参照するソースアドレスを、コンテンツに対する要求620に含めることができる。リソースプロセッサ615はまた、アプリケーション435に情報リソース600を提供したコンテンツパブリッシャ420に対応するアドレスを含み得る。
加えて、リソースプロセッサ615は、コンテンツに対する要求620に、アプリケーション435のために特定されたクラス識別子520を含めることができる。いくつかの実装形態では、リソースプロセッサ615は、クラス識別子520を取り出すために識別子キャッシュ540にアクセスすることができる。取り出されると、リソースプロセッサ615は、コンテンツに対する要求620を含めるためのクラス識別子520を含み得る。いくつかの実装形態では、コンテンツスロット610のためのスクリプトを解析する際にアプリケーション435によって最初に生成されたコンテンツに対する要求620は元々、固有の追跡識別子を含み得る。リソースプロセッサ615は、コンテンツに対する要求620から、アプリケーション435に対応するあらゆる固有の追跡識別子(またはアプリケーション435を実行するクライアントデバイス430またはアプリケーション435と関連付けられるアカウント)を削除し、または別様に除外することができる。固有の追跡識別子は、たとえば、アプリケーション435と関連付けられるアカウントに対応するクッキーユーザ識別子またはアプリケーション435を実行するクライアントデバイス430に対応するクッキーデバイス識別子を含み得る。固有の追跡識別子は、コンテンツプロバイダ415または別のコンテンツ配置サービスによって提供されている可能性がある。削除されると、リソースプロセッサ615は、クラス識別子520をコンテンツに対する要求620に含めることができる。いくつかの実装形態では、リソースプロセッサ615は、コンテンツに対する要求620に含まれる固有の追跡識別子をクラス識別子520で置き換えることができる。
いくつかの実装形態では、リソースプロセッサ615は、クラス識別子520をクッキー630A~620N(以後全般にクッキー630と呼ばれる)にパッケージングし、または含めることができる。いくつかの実装形態では、クッキー630は、コンテンツに対する要求620とともに生成され得る。いくつかの実装形態では、クッキー630はアプリケーション435(たとえば、識別子キャッシュ540)から取り出され得る。クッキー630は、認可されていないエンティティの傍受およびクラス識別子520へのアクセスを防ぐように設定された、セキュアフラグまたはHTTP-onlyフラグを有し得る。認可されていないエンティティは、コンテンツ選択サービス425またはアプリケーションマネージャサービス410以外のエンティティを含み得る。セキュアフラグまたはHTTP-onlyフラグを設定することによって、クッキー630は、ネットワーク405を通るセキュア通信チャネル(たとえば、ハイパーテキストトランスファープロトコルセキュア(HTTPS))を介してクラス識別子520にアクセスするのを制限することもできる。リソースプロセッサ615は、クラス識別子520を含むクッキー630をコンテンツに対する要求620へと含めることができる。クッキー630は、アプリケーション435に情報リソース600を提供したコンテンツパブリッシャ420に対応するアドレスも含み得る。生成されると、リソースプロセッサ615は、ネットワーク405を介してコンテンツに対する要求620をコンテンツ選択サービス425に送信することができる。いくつかの実装形態では、アプリケーション435は、クライアントデバイス430とコンテンツ選択サービス425との間にセキュアな通信チャネル(たとえば、HTTPに従った)を確立して、コンテンツに対する要求620を送信することができる。チャネルの確立は、コンテンツに対する要求620のクッキー630に含まれるクラス識別子520へのコンテンツ選択サービス425によるアクセスを可能にできる。
それぞれのモデル適用器525によって、クライアントデバイス430A~N上で実行される異なるアプリケーション435A~Nに割り当てられるクラス識別子520A~Nは、1つのアプリケーション435A~Nに特有ではないことがあり、アプリケーション435A~Nを一意に特定しないことがある。たとえば、図示されるように、第1のクラス識別子520Aは、第1のクライアントデバイス430A上の第1のアプリケーション435Aに、また、第2のクライアントデバイス430B上で実行される第2のアプリケーション435Bに割り当てられていることがある。対照的に、第2のクラス識別子520Bは、n番目のクライアントデバイス430N上で実行されるn番目のアプリケーション435Nに割り当てられていることがある。これは、コンテンツプロバイダ415または他のコンテンツ配置サービスによって提供されるアプリケーション435A~Nまたはクライアントデバイス430A~Nを具体的に特定するユーザまたはクライアント識別子などの、固有の追跡識別子とは対照的であり得る。加えて、クラス識別子520A~Nはクライアントデバイス430上で実行される各アプリケーション435を一意に特定できないので、クラス識別子520A~Nはそのような固有の追跡識別子より低いエントロピーを有し得る。たとえば、固有の追跡識別子のエントロピーは63ビットより大きいエントロピーを有し得るが、クラス識別子520A~Nのエントロピーは18ビットから52ビットのエントロピーを有し得る。したがって、クラス識別子520A~Nは、これらの固有の追跡識別子よりサイズが小さくなり得るので、ネットワーク405を介して送信されるコンテンツに対する要求620のサイズが減る。
ここで図7を参照すると、システム400の中のクライアントデバイス430およびコンテンツ選択サービス425の一実装形態を示すブロック図が示されている。コンテンツ選択サービス425は、ブラウジング履歴を記憶して維持するために少なくとも1つの履歴集約器700を含み得る。コンテンツ選択サービス425は、各クラスに対する選択パラメータを決定するために少なくとも1つのクラス特徴付け器705を含み得る。コンテンツ選択サービス425は、特定されたクラスを使用して要求620と関連付けられるアプリケーション435のためのコンテンツアイテム725A~N(以後全般にコンテンツアイテム725と呼ばれる)を特定するために少なくとも1つのコンテンツ配置器710を含み得る。コンテンツ選択サービス425は、クラス識別子520のためのブラウジング履歴エントリ720A~N(本明細書において全般にエントリ720と呼ばれる)を維持して記憶するために少なくとも1つの履歴データベース715を含み得る。
さらなる詳細において、コンテンツ選択サービス425上で実行される履歴集約器700は、クライアントデバイス430から受信されたコンテンツに対する要求620に含まれるクッキー630を使用して、履歴データベース715を収集し、集約し、または別様に維持することができる。履歴データベース715は、アプリケーションマネージャサービス410によって定義されるクラス識別子520によってインデクシングされるエントリ720のセットを含み得る。各エントリ720は、アクセスされた情報リソース600のためのアドレスと、情報リソース600がアクセスされた時間を示すタイムスタンプとを含み得る。固有の追跡識別子(たとえば、クッキー識別子)を使用してクライアントデバイス430のブラウジング履歴を集約する代わりに、履歴集約器700は、クラス識別子520によってブラウジング履歴を集約することができる。各々の個別のアプリケーション435に維持されているブラウジング履歴530とは異なり、履歴データベース715は、エントリ720がそれから生成されるアプリケーション435(またはアプリケーション435と関連付けられるユーザ)を個別に特定しないことがある。コンテンツに対する要求620が受信されるたびに、履歴集約器700は、コンテンツがその上で返されるべき情報リソース600に対応するアドレスを特定することができる。履歴集約器700はさらに、コンテンツに対する要求620に含まれるクラス識別子520を特定することができる。これらの特定により、履歴集約器700は、コンテンツに対する要求620に含まれるクラス識別子520に対するエントリ720のセットに、アドレスおよびタイムスタンプを含むエントリ720(図4には示されない)を追加することができる。
コンテンツ選択サービス425上で実行されるクラス特徴付け器705は、クラスのクラス識別子520に対するエントリ720に基づいて、各クラスの1つまたは複数の特性を決定することができる。特性は、たとえば、クラス識別子520に対応するクラスの共通の特質、プロファイル、挙動、または関心を含み得る。いくつかの実装形態では、クラス特徴付け器705は、クラス識別子520に対する履歴データベース715の中のエントリ720のセットに基づいて、クラスの特性を決定するためにクラスプロファイルモデルを使用することができる。クラスプロファイルモデルは、とりわけ、線形回帰、ロジスティック回帰、人工ニューラルネットワーク(ANN)、サポートベクターマシン(SVM)、および単純ベイズ分類器などの任意のモデルであり得る。クラスプロファイルモデルは、クラス識別子520によって標識されるブラウジング履歴をある特性と相関付けるサンプルデータセットを使用して訓練されていることがある。クラスプロファイルモデルは、各クラス識別子520に対する履歴データベース715上のエントリ720を対応するクラスに対する特性に変換することができる。いくつかの実装形態では、クラス特徴付け器705は、各クラス識別子520の特性を記憶して維持することができる。
コンテンツ選択サービス425上で実行されるコンテンツ配置器710は、クラス識別子520を使用したコンテンツに対する要求620に応答して、コンテンツアイテム725のセットからコンテンツアイテム725を選択または特定することができる。クラス識別子520の使用は、コンテンツアイテム725の選択が特定のユーザに固有の識別子に基づかないことがあるという点で、コンテンツに対する要求と関連付けられる特定のユーザの固有の識別子を使用することとは対照的であり得る。各コンテンツアイテム725は、情報リソース600のコンテンツスロット610に埋め込み、挿入し、または別様に追加すべきオブジェクトまたは要素を含み得る。各コンテンツアイテム725は、コンテンツプロバイダ415のうちの1つまたは複数によって提供され得る。受信すると、コンテンツ配置器710は、コンテンツに対する要求620を解析してクラス識別子520を特定することができる。特定すると、コンテンツ配置器710は、クラス識別子520に対応するクラスの特性を特定することができる。コンテンツ配置器710は、クラスの特性と関連付けられるコンテンツアイテム725を特定または選択することができる。いくつかの実装形態では、コンテンツ配置器710は、コンテンツ配置プロセスを使用してコンテンツアイテム725を選択することができる。コンテンツ配置プロセスは、とりわけ、線形回帰、ロジスティック回帰、人工ニューラルネットワーク(ANN)、サポートベクターマシン(SVM)、および単純ベイズ分類器などのモデルを使用することができる。各コンテンツアイテム725に対して、コンテンツ配置プロセスは、コンテンツに対する要求620に含まれるクラス識別子520に対応するクラスの中のユーザによる相互作用の予測確率を計算し、決定し、または生成することができる。コンテンツ配置器710は、クラスの中のユーザによる相互作用の確率が最大であるコンテンツアイテム725を特定することができる。選択されると、コンテンツ配置器710は、コンテンツに対する要求620を発したクライアントデバイス430にコンテンツアイテム725を送信することができる。いくつかの実装形態では、コンテンツ配置器710は、コンテンツプロバイダ415から選択されたコンテンツアイテム725を取り出すために、アプリケーション
435のためのクライアントデバイス430にコンテンツアイテム725のアドレスを送信することができる。
図7に関連して図6に戻って参照すると、リソースプロセッサ615は、コンテンツ選択サービス425によって特定されるコンテンツアイテム725を受信することができる。リソースプロセッサ615は、情報リソース600のコンテンツスロット610へとコンテンツアイテム725を埋め込み、挿入し、または追加することができる。いくつかの実装形態では、リソースプロセッサ615は、コンテンツアイテム725のアドレスを受信することができる。コンテンツアイテム725のアドレスは、コンテンツプロバイダ415を参照することができる。リソースプロセッサ615は、コンテンツアイテム725を取り出すために別の要求をコンテンツプロバイダ415に送信し、情報リソース600のコンテンツスロット610にコンテンツアイテム725を挿入することができる。
このようにして、コンテンツ選択サービス425は、同じクラス識別子520と関連付けられるユーザが類似する応答を有すると予想されるとの予想を用いて、コンテンツアイテム725を選択することができる。さらに、個々のユーザのブラウジング履歴530についてのデータのセキュリティ、完全性、およびプライバシーを保護することができる。同時に、コンテンツアイテム725の選択における個々のクラスに対する関連性を決定できることにより、情報リソース600全体との人-コンピュータの対話(HCI)の品質を維持することができる。
ここで図8を参照すると、分類モデルを使用したコンテンツの選択のための識別子を符号化する方法800の実装形態を図示するフロー図が示されている。方法800に関して本明細書において説明される機能は、図4に示されるようなシステム400または図9に示されるようなコンピューティングデバイスによって実施され、または別様に実行され得る。大まかに、クライアントデバイス上で実行されるアプリケーションは、ブラウジング履歴を特定することができる(805)。アプリケーションは次元を削減することができる(810)。アプリケーションは分類モデルを適用することができる(815)。アプリケーションはクラスを特定することができる(820)。アプリケーションはクラス識別子を割り当てることができる(825)。アプリケーションは情報リソースを受信することができる(825)。アプリケーションはコンテンツに対する要求を生成することができる(835)。アプリケーションはクラス識別子を含み得る(840)。アプリケーションはコンテンツに対する要求を送信することができる(845)。アプリケーションは選択されたコンテンツアイテムを受信することができる(850)。アプリケーションは再割当てするかどうかを決定することができる(855)。再割当てしない場合、アプリケーションはクラス識別子を維持することができる(860)。
さらなる詳細において、クライアントデバイス(たとえば、クライアントデバイス430)上のアプリケーション(たとえば、アプリケーション435)は、ブラウジング履歴(たとえば、ブラウジング履歴530)を特定することができる(805)。ブラウジング履歴は、エントリのセット(たとえば、エントリ535)を含み得る。各エントリは、アクセスされた情報リソースのアドレスと、情報リソースがアクセスされた時間を特定するタイムスタンプとを含み得る。アプリケーションは、ブラウジング履歴のエントリのセットから特徴ベクトルのセットを生成することができる。特徴ベクトルは、次元のセットへのブラウジング履歴の投影であり得る。次元は、とりわけ、時間範囲およびアドレス属性を含み得る。アプリケーションは次元を削減することができる(810)。次元削減プロセスを使用して、アプリケーションは、特徴ベクトルの初期のセットから削減された特徴ベクトルのセットを生成することができる。
アプリケーションは、分類モデル(たとえば、分類モデル500)を適用することができる(815)。分類モデルは、入力のセット、パラメータのセット、および出力のセットを含み得る。入力のセットは、ブラウジング履歴のエントリ、またはブラウジング履歴の表現を含み得る。パラメータのセットは入力を出力に関連付けることができる。出力のセットは、アプリケーション上のユーザによるブラウジング履歴に基づいてアプリケーションと対話するユーザを類別すべきクラスを含み得る。アプリケーションは、分類モデルの入力として次元削減された特徴ベクトルのセットを供給することができる。分類モデルはパラメータを入力に適用することができる。アプリケーションはクラスを特定することができる(820)。分類モデルの適用により、分類モデルは、アプリケーションと対話するユーザを類別すべきクラスを特定する出力を生成することができる。それを拡張すると、アプリケーションの分類は、ユーザによって操作されるアプリケーションまたはクライアントデバイスを操作するアカウントと関連付けられるユーザの分類に対応し、またはそれを含み得る。アプリケーションはクラス識別子(たとえば、クラス識別子520)を割り当てることができる(825)。分類モデルは、クラス識別子のうちの1つに各クラスを関連付けることができる。クラス識別子が特定されると、アプリケーションは、クラスに対応するクラス識別子を特定し、アプリケーションをクラス識別子に割り当てることができる。
アプリケーションは情報リソース(たとえば、情報リソース600)を受信することができる(830)。情報リソースは、主要コンテンツ(たとえば、主要コンテンツ605)およびコンテンツスロット(たとえば、コンテンツスロット610)を含み得る。主要コンテンツは、コンテンツパブリッシャ(たとえば、コンテンツパブリッシャ420)によって提供され得る。コンテンツスロットは、コンテンツプロバイダ(たとえば、コンテンツプロバイダ415)またはコンテンツ選択サービス(たとえば、コンテンツ選択サービス425)からのコンテンツの挿入のために利用可能であり得る。受信すると、アプリケーションは情報リソースを解析することができる。アプリケーションは、コンテンツに対する要求(たとえば、コンテンツに対する要求620)を生成することができる(835)。コンテンツに対する要求の生成は、情報リソースの解析と連動していてもよい。
アプリケーションはクラス識別子を含み得る(840)。コンテンツに対する要求は、分類モデルを使用して特定されたクラスに対応するクラス識別子を含み得る。アプリケーションはまた、アプリケーションのユーザ、アプリケーション自体、またはアプリケーション上で実行されるクライアントデバイスと関連付けられるあらゆる固有の追跡識別子も除去することができる。固有の追跡識別子は、コンテンツプロバイダまたは別のコンテンツ配置プラットフォームからサードパーティクッキーの一部として提供されていることがある。クラス識別子は、コンテンツに対する要求に含まれるセキュアクッキーの一部として含まれ得る。アプリケーションは、コンテンツに対する要求を送信することができる(845)。送信は、クライアントデバイスとコンテンツ選択サービスとの間で確立されるセキュア通信チャネルを介したものであり得る。コンテンツに対する要求は、コンテンツ選択サービスによって受信され得る。コンテンツ選択サービスは、コンテンツアイテムのセットからあるコンテンツアイテム(たとえば、コンテンツアイテム725)を特定するために、要求に含まれるクラス識別子を使用することができる。この選択により、コンテンツ選択サービスは、コンテンツアイテムをアプリケーションに送信することができる。アプリケーションは、選択されたコンテンツアイテムを受信することができる(850)。アプリケーションは、コンテンツアイテムを情報リソース上で定義されるコンテンツスロットに挿入することができる。
アプリケーションは、クラス識別子を再割当てするかどうかを決定することができる(855)。再割当ては、識別子割当てポリシーに従ったものであり得る。ポリシーは、新しいクラス識別子を発見するために分類モデルがブラウジング履歴に再び適用されるべき条件のセットを規定することができる。決定が再割当てすべきであるというものである場合、アプリケーションは、(805)~(825)以降の機能を繰り返すことができる。一方、決定が再割当てすべきではないというものである場合、アプリケーションはクラス識別子を維持することができる(860)。
図9は、いくつかの実装形態による、本明細書において論じられるコンピュータシステム(アプリケーションマネージャサービス410とその構成要素、コンテンツプロバイダ415とその構成要素、コンテンツパブリッシャ420とその構成要素、コンテンツ選択サービス425とその構成要素、およびクライアントデバイス430とその構成要素)のいずれかを実装するために利用され得る例示的なコンピュータシステム900の汎用アーキテクチャを示す。コンピュータシステム900は、ネットワーク930を介して、表示する情報を提供するために使用され得る。コンピュータシステム900は、メモリ925に通信可能に結合される1つまたは複数のプロセッサ920、少なくとも1つのネットワーク930(たとえば、ネットワーク405)と通信可能に結合される1つまたは複数の通信インターフェース905、ならびに1つまたは複数の出力デバイス910(たとえば、1つまたは複数の表示ユニット)および1つまたは複数の入力デバイス915を備える。
プロセッサ920は、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、またはこれらの組合せを含み得る。メモリは、限定はされないが、プログラム命令をプロセッサに提供することが可能な、電気的な、光学的な、磁気的な、または任意の他のストレージもしくは送信デバイスを含み得る。メモリ925は、どのようなコンピュータ可読記憶媒体を備えてもよく、それぞれのシステムのための本明細書において説明される様々な機能を実装するためのプロセッサ実行可能命令などのコンピュータ命令、ならびに、通信インターフェースまたは入力デバイス(もしあれば)に関する、それによって生成される、もしくはそれを介して受信される任意のデータを記憶し得る。メモリ925は、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ASIC、FPGA、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能ROM(EEPROM)、消去可能プログラマブルROM(EPROM)、フラッシュメモリ、光学メディア、またはプロセッサがそれから命令を読み取ることができる任意の他の適切なメモリを含み得る。命令は、任意の適切なコンピュータプログラミング言語からのコードを含み得る。
図9に示されるプロセッサ920は、メモリ925に記憶されている命令を実行するために使用されてもよく、そうすることで、命令の実行に従って処理または生成される様々な情報をメモリから読み取り、またはメモリに書き込むこともできる。メモリ925と結合されるプロセッサ920(本明細書では処理ユニットと集合的に呼ばれる)は、アプリケーションマネージャサービス410に含まれ得る。たとえば、アプリケーションマネージャサービス410は、データベース515としてメモリ925を含み得る。メモリ925と結合されるプロセッサ920(本明細書では処理ユニットと集合的に呼ばれる)は、コンテンツプロバイダ415に含まれ得る。たとえば、コンテンツプロバイダ415は、コンテンツアイテム725を記憶するためにメモリ925を含み得る。メモリ925と結合されるプロセッサ920(本明細書では処理ユニットと集合的に呼ばれる)は、コンテンツパブリッシャ420に含まれ得る。たとえば、コンテンツパブリッシャ420は、情報リソース600を記憶するためにメモリ925を含み得る。メモリ925と結合されるプロセッサ920(本明細書では処理ユニットと集合的に呼ばれる)は、コンテンツ選択サービス425に含まれ得る。たとえば、コンテンツ選択サービス425は、履歴データベース720としてメモリ925を含み得る。メモリ925と結合されるプロセッサ920(本明細書では処理ユニットと集合的に呼ばれる)は、クライアントデバイス430に含まれ得る。たとえば、クライアントデバイス430は、ブラウジング履歴530および識別子キャッシュ540としてメモリ925を含み得る。
コンピュータシステム900のプロセッサ920はまた、命令の実行に従って様々な情報を送信または受信するために、通信インターフェース905に通信可能に結合されてもよく、または通信インターフェース905を制御させられてもよい。たとえば、通信インターフェース905は、有線もしくはワイヤレスのネットワーク、バス、または他の通信手段に結合されてもよく、したがって、コンピュータシステム900が、他のデバイス(たとえば、他のコンピュータシステム)に情報を送信すること、またはそれから情報を受信することを可能にし得る。図4~図7または図9のシステムにおいては明示的に示されていないが、1つまたは複数の通信インターフェースは、システム900の構成要素間の情報の流れを促進する。いくつかの実装形態では、通信インターフェースは、コンピュータシステム900の少なくともいくつかの態様にアクセスポータルとしてウェブサイトを提供するように(たとえば、様々なハードウェアコンポーネントまたはソフトウェアコンポーネントを介して)構成され得る。通信インターフェース905の例は、ユーザインターフェース(たとえば、アプリケーション435、情報リソース600、主要コンテンツ605、コンテンツスロット610、およびコンテンツアイテム725)を含み、それを通じて、ユーザはシステム400の他のデバイスと通信することができる。
図9に示されるコンピュータシステム900の出力デバイス910は、たとえば、様々な情報が命令の実行に関連して見られること、または別様に知覚されることを可能にするために提供され得る。入力デバイス915は、たとえば、ユーザが手動の調整を行うこと、選択を行うこと、データを入力すること、または命令の実行の間にプロセッサと様々な方式のいずれかで対話することを可能にするために提供され得る。本明細書において論じられる様々なシステムのために利用され得る一般的なコンピュータシステムアーキテクチャに関する追加の情報は、本明細書においてさらに提供される。
ネットワーク930は、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、メトロエリアネットワーク、または他のエリアネットワーク、イントラネット、衛星ネットワーク、音声もしくはデータ携帯電話通信ネットワークなどの他のコンピュータネットワーク、およびこられの組合せなどの、コンピュータネットワークを含み得る。ネットワーク930は、アプリケーションマネージャサービス410、コンテンツプロバイダ415、コンテンツパブリッシャ420、コンテンツ選択サービス425、およびクライアントデバイス430などの、システム400の構成要素間で情報を中継する任意の形式のコンピュータネットワークであり得る。たとえば、ネットワーク930は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク、または他のタイプのデータネットワークなどの、インターネットおよび/または他のタイプのデータネットワークを含み得る。ネットワーク930は、ネットワーク930内のデータを受信および/または送信するように構成される任意の数のコンピューティングデバイス(たとえば、コンピュータ、サーバ、ルータ、ネットワークスイッチなど)も含み得る。ネットワーク930はさらに、任意の数の有線接続および/またはワイヤレス接続を含み得る。クライアントデバイス430は、ネットワーク930の中の他のコンピューティングデバイスに(たとえば、光ファイバケーブル、CAT5ケーブルなどを介して)有線接続されるトランシーバとワイヤレスに(たとえば、WiFi、セルラー、無線などを介して)通信し得る。
本明細書において説明される主題および動作の実装形態は、デジタル電子回路において、または、本明細書において開示される構造およびそれらの構造的な均等物を含む、有形媒体上で具現化されるコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、または、これらの1つまたは複数の組合せにおいて実装され得る。本明細書において説明される主題の実装形態は、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータ記憶媒体に符号化される、1つまたは複数のコンピュータプログラム、すなわちコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。プログラム命令は、人工的に生成される伝播信号、たとえば、データ処理装置による実行のために適切な受信機装置への送信のための情報を符号化するために生成される、機械で生成される電気信号、光信号、または電磁信号上に符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、または、それらの1つまたは複数の組合せであってもよく、またはそれらに含まれてもよい。その上、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝播信号に符号化されるコンピュータプログラム命令のソースまたはデスティネーションを含み得る。コンピュータ記憶媒体はまた、1つまたは複数の別々の物理的構成要素または媒体(たとえば、複数のCD、ディスク、または他のストレージデバイス)であってもよく、またはそれに含まれてもよい。
本明細書において開示される特徴は、スマートテレビジョンモジュール(またはコネクテッドテレビジョンモジュール、ハイブリッドテレビジョンモジュールなど)に実装されてもよく、これは、より従来型のテレビ番組ソース(たとえば、ケーブル、衛星、電波、または他の信号を介して受信される)とインターネット接続を統合するように構成される処理モジュールを含み得る。スマートテレビジョンモジュールは、テレビジョンセットへと物理的に組み込まれてもよく、または、セットトップボックス、Blu-ray(登録商標)もしくは他のデジタルメディアプレーヤ、ゲームコンソール、ホテルテレビジョンシステム、もしくは他のコンパニオンデバイスなどの、別個のデバイスを含んでもよい。スマートテレビジョンモジュールは、ウェブ上の、ローカルのケーブルTVチャンネル上の、衛星TVチャンネル上の、またはローカルハードドライブに記憶されている、ビデオ、映画、写真、および他のコンテンツを視聴者が検索して発見することを可能にするように構成され得る。セットトップボックス(STB)またはセットトップユニット(STU)は、情報アプライアンスデバイスを含んでもよく、これは、チューナーを含み、信号のテレビジョンセットおよび外部ソースに接続して、テレビ画面または他の表示デバイスへと次いで表示されるコンテンツに信号を変えることができる。スマートテレビジョンモジュールは、ウェブブラウザおよび複数のストリーミングメディアサービス、接続されたケーブルまたは衛星メディアソース、他のウェブ「チャンネル」などの、複数の異なるアプリケーションのアイコンを含むホームスクリーンまたはトップレベルスクリーンを提供するように構成され得る。スマートテレビジョンモジュールはさらに、電子番組表をユーザに提供するように構成され得る。スマートテレビジョンモジュールに対するコンパニオンアプリケーションは、利用可能なプログラムについての追加の情報をユーザに提供すること、ユーザがスマートテレビジョンモジュールを制御することを可能にすることなどのために、モバイルコンピューティングデバイス上で動作可能であり得る。いくつかの実装形態では、特徴は、ラップトップコンピュータもしくは他のパーソナルコンピュータ、スマートフォン、他の携帯電話、ハンドヘルドコンピュータ、タブレットPC、または他のコンピューティングデバイス上で実装され得る。いくつかの実装形態では、本明細書において開示される特徴は、インターネット接続を(たとえば、別のコンピューティングデバイスまたはネットワーク930と)統合するように構成される処理モジュールを含み得る、ウェアラブルデバイスまたはコンポーネント(たとえば、スマートウォッチ)上で実装され得る。
本明細書において開示される動作は、1つまたは複数のコンピュータ可読記憶デバイスに記憶されているデータ、または他のソースから受信されるデータに対して、データ処理装置によって実行される動作として実装され得る。
「データ処理装置」、「データ処理システム」、「ユーザデバイス」、または「コンピューティングデバイス」という用語は、プログラマブルプロセッサ、コンピュータ、システムオンチップもしくは複数のチップ、または前述の組合せを例として含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。装置はまた、ハードウェアに加えて、対象のコンピュータプログラムの実行環境を作り出すコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらの1つまたは複数の組合せを構成するコードを含み得る。装置および実行環境は、ウェブサービス、分散型コンピューティングおよびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続型言語を含む、任意の形式のプログラミング言語で書かれてもよく、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとしてを含めて、任意の形式で展開されてもよい。コンピュータプログラムは、ファイルシステムの中のファイルに相当し得るが、そうである必要はない。プログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語文書に記憶されている1つまたは複数のスクリプト)を保持するファイルの一部分に、対象のプログラムに専用の単一のファイルに、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つの場所に位置する、または複数の場所に分散しており通信ネットワークによって相互接続される、1つのコンピュータまたは複数のコンピュータ上で実行されるように展開され得る。
本明細書において説明されるプロセスおよび論理フローは、入力データを操作して出力を生成することによって活動を実施するために1つまたは複数のコンピュータプログラムを実行する、1つまたは複数のプログラマブルプロセッサによって実施され得る。専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって、プロセスおよび論理フローは実行されてもよく、それらとして、装置は実装されてもよい。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読取り専用メモリまたはランダムアクセスメモリまたは両方から命令とデータを受信する。コンピュータの不可欠な要素は、命令に従って活動を実行するためのプロセッサ、および命令とデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数のマスストレージデバイス、たとえば磁気ディスク、磁気光ディスク、もしくは光ディスクを含み、または、それらからデータを受信すること、それらにデータを転送すること、もしくは両方を行うために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。その上、コンピュータは、別のデバイス、たとえば携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込まれ得る。コンピュータプログラム命令とデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば内部ハードディスクまたはリムーバブルディスク、磁気光ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形式の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補強され、またはそれに組み込まれ得る。
ユーザとの対話を可能にするために、本明細書において説明される主題の実装形態は、情報をユーザに表示するための表示デバイス、たとえばCRT(陰極線管)、プラズマ、またはLCD(液晶ディスプレイ)モニタ、ならびに、ユーザがそれによってコンピュータに入力を提供することができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールを有する、コンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を可能にするために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック、たとえば視覚フィードバック、可聴フィードバック、または触覚フィードバックを含んでもよく、ユーザからの入力は、音響、発話、または触覚入力を含む、任意の形式で受け取られてもよい。加えて、コンピュータは、たとえば、ウェブブラウザから受信された要求に応答して、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザによって使用されるデバイスから文書を送信し、それから文書を受信することによって、ユーザと対話することができる。
本明細書において説明される主題の実装形態は、バックエンドコンポーネントを、たとえばデータサーバとして含む、または、ミドルウェアコンポーネント、たとえばアプリケーションサーバを含む、または、フロントエンドコンポーネント、たとえば、ユーザがそれを通じて本明細書において説明される主題の実装形態と対話できるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータ、または、1つまたは複数のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形式または媒体のデジタルデータ通信、たとえば通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、およびピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
システム900またはシステム400などのコンピューティングシステムは、クライアントおよびサーバを含み得る。たとえば、システム400のアプリケーションマネージャサービス410、コンテンツプロバイダ415、コンテンツパブリッシャ420、およびコンテンツ選択サービス425は各々、1つまたは複数のデータセンターまたはサーバファームの中の1つまたは複数のサーバを含み得る。クライアント(たとえば、クライアントデバイス430)およびサーバは一般に、互いに離れており、通常は通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され互いにクライアント-サーバの関係を有するコンピュータプログラムによって生じる。いくつかの実装形態では、サーバは、データ(たとえば、HTMLページ)をクライアントデバイスに送信する(たとえば、クライアントデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受け取る目的で)。(たとえば、ユーザ対話の結果として)クライアントデバイスにおいて生成されるデータは、サーバにおいてクライアントデバイスから受信され得る。
本明細書において説明される主題の実装形態は、バックエンドコンポーネントを、たとえばデータサーバとして含む、または、ミドルウェアコンポーネント、たとえばアプリケーションサーバを含む、または、フロントエンドコンポーネント、たとえばユーザが本明細書において説明される主題の実装形態とそれを通じて対話できるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含む、または、1つまたは複数のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形式または媒体のデジタルデータ通信、たとえば通信ネットワークによって相互接続され得る。通信ネットワークは、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含み得る。
本明細書において論じられるシステムがユーザについての個人情報を収集する、または個人情報を利用し得る状況では、ユーザは、個人情報(たとえば、ユーザのソーシャルネットワーク、社会的な行動もしくは活動、ユーザの好み、またはユーザの位置についての情報)をプログラムもしくは特徴が収集してもよいかどうかを制御するための機会、または、ユーザにより関連があり得るコンテンツをコンテンツサーバもしくは他のデータ処理システムから受信するかどうか、もしくはどのように受信するかを制御するための機会を与えられ得る。加えて、あるデータは、それが記憶または使用される前に1つまたは複数の方法で匿名化され得るので、パラメータを生成するとき、個人を特定可能な情報が削除される。たとえば、ユーザの識別情報は、個人を特定可能な情報がユーザについて決定され得ないように、または、位置情報が取得されるユーザの地理的位置が(都市レベル、郵便番号レベル、または州レベルなどに)一般化され得るように匿名化され得るので、ユーザの具体的な位置を決定することはできない。したがって、ユーザは、自身についての情報がどのように収集され、コンテンツサーバによって使用されるかを管理することができる。
本明細書は多くの具体的な実装形態の詳細を含むが、これらは、任意の発明の、または特許請求され得るものの範囲に対する制限として解釈されるべきではなく、むしろ、特定の発明の特定の実装形態に固有の特徴の説明として解釈されるべきである。別々の実装形態の文脈で本明細書において説明されるいくつかの特徴は、単一の実装形態における組合せでも実装され得る。逆に、単一の実装形態の文脈で説明される様々な特徴は、複数の実装形態において別々に、または任意の適切な部分組合せでも実装され得る。その上、特徴は、ある組合せで動作するものとして説明されることがあり、そのように最初に特許請求されることすらあるが、特許請求される組合せからの1つまたは複数の特徴は、いくつかの場合、組合せから省略されてもよく、特許請求される組合せは、部分組合せまたは部分組合せの変形を対象としてもよい。
同様に、動作は特定の順序で図面に示されているが、これは、望ましい結果を達成するために、動作が示される特定の順序もしくは逐次的な順序で実行されること、または、すべての示される動作が実行されることを必要とするものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上で説明された実装形態における様々なシステム構成要素の分離は、すべての実装形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されるプログラムコンポーネントおよびシステムは全般に、単一のソフトウェア製品に一緒に統合され、または複数のソフトウェア製品にパッケージングされ得ることを理解されたい。
したがって、本主題の特定の実装形態が説明された。他の実装形態が、以下の特許請求の範囲内にある。いくつかの場合、特許請求の範囲に記載される活動は、異なる順序で実行されてもよく、それでも望ましい結果を達成することができる。加えて、添付の図面に示されるプロセスは、望ましい結果を達成するために、必ずしも示される特定の順序または逐次的な順序を必要としない。いくつかの実装形態では、マルチタスキングまたは並列処理が利用され得る。