(58)【調査した分野】(Int.Cl.,DB名)
たとえ前記所与の禁止された用語が受信されたクエリの前記組に含まれるクエリに含まれなかったとしても、前記受信されたクエリに応答して検索結果を特定するために所与の用語が使用された受信されたクエリの前記組を特定することが、前記禁止された用語を含むように前記検索エンジンによって拡張された所与の受信されたクエリを特定することを含む請求項1に記載のシステム。
前記1つまたは複数のバックエンドサーバが、用語の意味ネットワークを使用して、前記禁止された用語に意味的にリンクされた用語を前記禁止された用語の変化形として特定することを含む動作を実行する請求項1に記載のシステム。
候補の変化形の前記組が、第1の候補の変化形の綴りが前記禁止された用語に訂正された前記第1の候補の変化形と、前記禁止された用語を含んでいた受信されたクエリに追加された第2の候補の変化形とを含み、
前記第1の候補の変化形に関する前記スコアが、前記第1の候補の変化形と前記禁止された用語との間の編集距離に基づき、
前記第2の候補の変化形に関する前記スコアが、前記第2の候補の変化形に関する逆文書頻度のスコアに基づく請求項4に記載のシステム。
たとえ所与の禁止された用語が受信されたクエリの組に含まれるクエリに含まれなかったとしても、前記受信されたクエリに応答して検索結果を特定するために前記所与の禁止された用語が使用された受信されたクエリの前記組を前記クエリログ内で特定することが、map手順を使用して、前記クエリログからそれぞれの禁止された用語の候補の変化形を特定することを含む請求項1に記載のシステム。
検索エンジンに、受信されたクエリの前記組内の1つまたは複数のクエリに応答して、前記禁止された用語を使用して1つまたは複数の検索結果を特定させた、前記1つまたは複数のクエリからの用語を前記禁止された用語の変化形として分類することが、それぞれの禁止された用語に関してreduce手順を使用して、前記禁止された用語の前記候補の変化形から、前記禁止された用語の1つまたは複数の変化形を選択することを含み、それぞれのreduce手順が、別々のバックエンドサーバ上で実行される請求項6に記載のシステム。
たとえ前記所与の禁止された用語が受信されたクエリの前記組に含まれるクエリに含まれなかったとしても、前記受信されたクエリに応答して検索結果を特定するために所与の用語が使用された受信されたクエリの前記組を特定するステップが、前記禁止された用語を含むように前記検索エンジンによって拡張された所与の受信されたクエリを特定することを含む請求項8に記載の方法。
用語の意味ネットワークを使用して、前記禁止された用語に意味的にリンクされた用語を前記禁止された用語の変化形として特定するステップをさらに含む請求項8に記載の方法。
候補の変化形の前記組が、第1の候補の変化形の綴りが前記禁止された用語に訂正された前記第1の候補の変化形と、前記禁止された用語を含んでいた受信されたクエリに追加された第2の候補の変化形とを含み、
前記第1の候補の変化形に関する前記スコアが、前記第1の候補の変化形と前記禁止された用語との間の編集距離に基づき、
前記第2の候補の変化形に関する前記スコアが、前記第2の候補の変化形に関する逆文書頻度のスコアに基づく請求項11に記載の方法。
たとえ所与の禁止された用語が受信されたクエリの組に含まれるクエリに含まれなかったとしても、前記受信されたクエリに応答して検索結果を特定するために前記所与の禁止された用語が使用された受信されたクエリの前記組を前記クエリログ内で特定するステップが、map手順を使用して、前記クエリログからそれぞれの禁止された用語の候補の変化形を特定することを含む請求項8に記載の方法。
検索エンジンに、受信されたクエリの前記組内の1つまたは複数のクエリに応答して、前記禁止された用語を使用して1つまたは複数の検索結果を特定させた、前記1つまたは複数のクエリからの用語を前記禁止された用語の変化形として分類するステップが、それぞれの禁止された用語に関してreduce手順を使用して、前記禁止された用語の前記候補の変化形から、前記禁止された用語の1つまたは複数の変化形を選択することを含み、それぞれのreduce手順が、別々のバックエンドサーバ上で実行される請求項13に記載の方法。
コンピュータプログラムを用いて符号化された非一時的コンピュータ記憶媒体であって、前記プログラムが、1つまたは複数のデータ処理装置によって実行されるときに、前記データ処理装置に、
データ通信ネットワーク上での配信のためのコンテンツを1つまたは複数のサーバによって受信することと、
たとえ所与の禁止された用語が受信されたクエリの組に含まれるクエリに含まれなかったとしても、前記受信されたクエリに応答して検索結果を特定するために前記所与の禁止された用語が使用された受信されたクエリの前記組を、受信されたクエリを含むクエリログ内で特定することと、
検索エンジンに、受信されたクエリの前記組内の1つまたは複数のクエリに応答して、前記所与の禁止された用語を使用して1つまたは複数の検索結果を特定させた、前記1つまたは複数のクエリからの用語を前記所与の禁止された用語の変化形として分類することと、
前記所与の禁止された用語の変化形を含むコンテンツの配信を前記1つまたは複数のサーバによって防止することとを含む動作を実行させる命令を含む、非一時的コンピュータ記憶媒体。
たとえ前記所与の禁止された用語が受信されたクエリの前記組に含まれるクエリに含まれなかったとしても、前記受信されたクエリに応答して検索結果を特定するために所与の用語が使用された受信されたクエリの前記組を特定することが、前記禁止された用語を含むように前記検索エンジンによって拡張された所与の受信されたクエリを特定することを含む請求項15に記載の非一時的コンピュータ記憶媒体。
前記動作が、用語の意味ネットワークを使用して、前記禁止された用語に意味的にリンクされた用語を前記禁止された用語の変化形として特定することを含む請求項15に記載の非一時的コンピュータ記憶媒体。
候補の変化形の前記組が、第1の候補の変化形の綴りが前記禁止された用語に訂正された前記第1の候補の変化形と、前記禁止された用語を含んでいた受信されたクエリに追加された第2の候補の変化形とを含み、
前記第1の候補の変化形に関する前記スコアが、前記第1の候補の変化形と前記禁止された用語との間の編集距離に基づき、
前記第2の候補の変化形に関する前記スコアが、前記第2の候補の変化形に関する逆文書頻度のスコアに基づく請求項18に記載の非一時的コンピュータ記憶媒体。
たとえ所与の禁止された用語が受信されたクエリの組に含まれるクエリに含まれなかったとしても、前記受信されたクエリに応答して検索結果を特定するために前記所与の禁止された用語が使用された受信されたクエリの前記組を前記クエリログ内で特定することが、map手順を使用して、前記クエリログからそれぞれの禁止された用語の候補の変化形を特定することを含む請求項15に記載の非一時的コンピュータ記憶媒体。
【発明を実施するための形態】
【0011】
概して、本明細書において説明されるシステムおよび技術は、禁止された用語の変化形の特定および選択を可能にする。禁止された用語または禁止された用語の変化形を含むコンテンツは、ネットワークを介した、たとえば、インターネットを介した配信を遮断され得る。たとえば、インターネットコンテンツプロバイダおよび政府機関は、特定の禁止された用語を含むコンテンツの公開を禁止する可能性がある。ユーザは、禁止された用語の変化形を使用することによってこれらの禁止をかいくぐろうとする可能性がある。たとえば、用語「gadog」が違法薬物の名前であると仮定する。ユーザは、コンテンツレビューシステムによる検出を避けるためにgadogの流通に関連するコンテンツ内の用語「gadog」を用語「gad0g」で置き換える可能性がある。本明細書において説明されるシステムおよび技術は、変化形「gad0g」を特定し、この変化形を含むコンテンツの配信を防止することができる。
【0012】
それぞれの禁止された用語は、数千または数百万の潜在的な変化形を有する可能性がある。たとえば、用語「gadog」は、それぞれの変化形に関して、1つの文字を異なる文字、数字、または符号に変更することによる数千の変化形を有する可能性がある。それぞれの禁止された用語のそれぞれのあり得る変化形を特定することは、かなりの量のデータ処理を必要とし、多くのプロセッサおよび/または各プロセッサのCPUサイクルを消費することになる。それぞれの禁止された用語の数千の変化形を保持することは、比較的高くランク付けされたまたは使用される見込みが高い変化形のインデックスよりも多くのデータ記憶装置(たとえば、ハードドライブ、フラッシュメモリなど)を必要とし、その他のデータのための記憶空間がより少なくなりおよび/またはデータアクセス時間がより低速になる。加えて、コンテンツの配信を許すべきかどうかを判定するためにコンテンツに含まれる用語を禁止された用語の数千または数百万の変化形と比較することは、テキストを比較的高くランク付けされたまたは使用される見込みが高い変化形のインデックスと比較するよりも多くの計算リソース(たとえば、より多くのプロセッサまたはCPUサイクル)を必要とする。したがって、より少ない処理およびネットワークリソースを使用する効率的な方法で、配信を防止された禁止された用語のすべての潜在的な変化形が特定されることを保証し、そのような変化形もネットワークを介して配信されることを防止されることを保証するニーズが存在する。
【0013】
本開示は、禁止された用語の新しいまたはこれまで特定されていない変化形が考慮されることをやはり保証するために、いくつかのデータソースのうちの1つまたは複数を使用して禁止された用語の変化形を特定するための説明されるシステムおよび技術を提供する。本明細書において説明される実施形態の態様は、効率的で、正確で、信頼性が高く、スケーラブルな方法で禁止された用語の変化形を特定し、それらの変化形が通信ネットワークを介して配信されることを防止するための方法およびシステムを提供することによって上述の欠点に対処する。たとえば、たとえクエリが禁止された用語を含まなかったとしても、検索エンジンが禁止された用語を使用してクエリに関する検索結果を特定したクエリの用語を禁止された用語の変化形として特定するために、クエリログが使用される可能性がある。特定の例において、検索エンジンは、クエリに含まれる用語の同義語などの、クエリの用語に含まれる用語に関連する1つまたは複数の用語を含むようにクエリを拡張する可能性がある。特定の用語が検索エンジンに禁止された用語をクエリに追加させる場合、特定の用語は、禁止された用語の変化形として分類される可能性がある。同様に、クエリが禁止された用語を含み、そのクエリが禁止された用語に基づいて別の用語を含むように拡張される場合、その別の用語は、禁止された用語の変化形として分類される可能性がある。
【0014】
別の例示的な変化形は、クエリ内で受け取られた禁止された用語の誤った綴りである可能性がある。この例において、検索エンジンは、用語の綴りを禁止された用語に訂正する可能性がある。検索エンジンが禁止された用語に綴りを訂正した用語は、禁止された用語の変化形として特定される可能性がある。
【0015】
禁止された用語の変化形を特定するために使用され得る別のデータソースは、意味ネットワークである。意味ネットワークは、用語の間の意味の関係を表すネットワークである。システムは、意味ネットワークを使用してそれぞれの禁止された用語に意味的に関連する用語を特定することができる。
【0016】
システムは、候補の変化形の組から禁止された用語の変化形を選択する可能性がある。たとえば、システムは、1または複数の基準に基づいて候補の変化形の組をランク付けし、ランク付けに基づいて禁止された用語の変化形を選択する可能性がある。一部の実装において、システムは、異なる種類の変化形を別々にランク付けし、別々のランク付けの各々から禁止された用語の変化形を選択する可能性がある。
【0017】
図1は、コンテンツ配信システム110が禁止された用語の変化形を特定し、変化形を含むコンテンツの配信を防止する例示的な環境100の図である。コンテンツ配信システム110は、データ通信ネットワーク130、たとえば、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、モバイルネットワーク、またはこれらの組合せを介してコンテンツを配信し得る。このコンテンツは、電子ドキュメント(たとえば、ウェブページ、ポータブルドキュメントフォーマット(pdf)ドキュメントなど)、オーディオ、ビデオ、画像、および/またはその他の適切な種類のコンテンツを含む可能性がある。コンテンツ配信システム110は、その他のコンテンツ上にまたはその他のコンテンツと共に提示されるコンテンツ、たとえば、プロモーション用コンテンツを配信する可能性もある。
【0018】
コンテンツ配信システム110は、クライアントデバイス150にコンテンツを提供する1つまたは複数のフロントエンドサーバ112を含む。たとえば、フロントエンドサーバ112は、クライアントデバイスからコンテンツの要求を受信し、要求に応答してコンテンツを提供することができる。フロントエンドサーバ112は、コンテンツ発行者140からクライアントデバイス150に配信するためのコンテンツを受信することができる。コンテンツ発行者140は、主体、たとえば、人、組織、および/または会社を含む可能性があり、それらの人、組織、および/または会社は、ユーザに提示するためにクライアントデバイス150に配信される、それらの人、組織、および/または会社が望むコンテンツを提供する。コンテンツは、コンテンツデータ記憶装置124、たとえば、1つまたは複数のハードドライブ、フラッシュメモリ、ソリッドステートドライブなどに記憶される可能性がある。
【0019】
コンテンツ配信システム110は、1つまたは複数の変化形検出サーバ114および1つまたは複数のコンテンツレビューサーバ116も含む。変化形検出サーバ114およびコンテンツレビューサーバ116は、たとえば、ネットワークを介してフロントエンドサーバ112とデータ通信するバックエンドサーバとして実装される可能性がある。
【0020】
変化形検出サーバ114は、禁止された用語の変化形を特定し、禁止された用語および禁止された用語の変化形のインデックス123を保持することができる。インデックス123は、禁止された用語および変化形データ記憶装置122、たとえば、1つまたは複数のハードドライブ、フラッシュメモリ、ソリッドステートドライブなどに記憶される可能性がある。インデックス123は、コンテンツ配信システム110によって配信されるコンテンツに含まれることをコンテンツ配信システム110が禁止するまたはやめさせる禁止された用語の組を特定するデータを含み得る。インデックス123は、禁止された用語のうちの1つまたは複数に関して、コンテンツ配信システム110によって配信されるコンテンツに含まれることをやはり禁止されるまたはやめさせられる可能性がある禁止された用語の1つまたは複数の変化形も含み得る。
【0021】
変化形検出サーバ114は、1つまたは複数のデータソースを使用して禁止された用語の変化形を特定することができる。たとえば、変化形検出サーバ114は、クエリログ118および/または意味ネットワーク120を使用して禁止された用語の変化形を特定することができる。クエリログ118は、受信されたクエリ、たとえば、検索エンジンによって、複数のクライアントデバイス150または複数のユーザから受信されたクエリを特定するデータを含み得る。クエリログ118は、検索エンジンによって受信されたクエリに対してなされた調整を特定するデータをも含み得る。たとえば、検索エンジンは、受信されたクエリの用語に関連する用語などの1つまたは複数のさらなる用語を含むようにクエリを拡張する可能性がある。これは、検索エンジンが受信されたクエリに関連する可能性があるが、受信されたクエリの用語を含まないドキュメントを特定することを可能にする。別の例において、クエリログ118は、受信されたクエリの用語に対して検索エンジンによってなされた綴りの訂正を特定するデータを含む可能性がある。たとえば、検索エンジンは、受信されたクエリの用語が誤って綴られていることを検出し、検索エンジンが用語の正しい綴りと考える用語を特定し、用語の正しい綴りを使用して受信されたクエリに関する検索結果を特定する可能性がある。クエリログ118は、誤って綴られた用語を有するものとして検索エンジンが検出した各クエリに関して、受信されたクエリの誤って綴られた用語と、誤って綴られた用語の正しい綴りであると検索エンジンが考える用語とを特定するデータを含む可能性がある。
【0022】
変化形検出サーバ114は、検索エンジンにクエリに関する拡張用語(expansion term)として禁止された用語を含めさせたクエリの用語を禁止された用語の変化形として特定する可能性がある。拡張用語は、ユーザによって送られ、受信されたクエリに含まれる用語とは異なるが、受信されたクエリに関する検索結果を特定するために検索エンジンによって使用される用語である。変化形検出サーバ114は、検索エンジンに用語の綴りを禁止された用語に訂正させたクエリの用語を禁止された用語の変化形として特定する可能性もある。例示的なクエリログが、
図2に示され、クエリログを使用して禁止された用語の変化形を特定するための例示的な技術が、下でより詳細に説明される。
【0023】
意味ネットワーク120は、用語の間の意味の関係を表すノードおよび辺のネットワークである。たとえば、意味ネットワーク120は、ノードのグラフを含む可能性があり、各ノードは、用語を表す。関連する用語を表すノードは、辺によって接続され得る。2つのノードを接続する辺は、接続されたノードによって表される用語の間の類似性を表す。たとえば、エッジは、用語の間の意味の類似性を表し得る。例示的な意味ネットワーク120が、
図2に示され、意味ネットワークを使用して禁止された用語の変化形を特定するための例示的な技術が、下でより詳細に説明される。
【0024】
変化形検出サーバ114は、クエリログ118、意味ネットワーク120、および/またはその他のデータソースを使用して禁止された用語の変化形を特定することができる。たとえば、変化形検出サーバ114は、クエリログ118および意味ネットワーク120を含むデータソースの組合せを使用して禁止された用語の変化形を特定し得る。変化形検出サーバ114によって使用されるその他のデータソースは、シソーラス、たとえば、シソーラスウェブサイトおよびスラング(または大衆文化)辞書を含み得る。たとえば、変化形検出サーバ114は、シソーラスを使用して、禁止された用語の1つまたは複数の類義語を禁止された用語の変化形として特定することができる。別の例において、変化形検出サーバ114は、スラング(または大衆文化)辞書を使用して、禁止された用語の代わりに使用されたスラングの用語を禁止された用語の変化形として特定することができる。
【0025】
下でより詳細に説明されるように、変化形検出サーバ114は、データソースを使用して、禁止された用語に関する候補の変化形の用語の組を特定することができる。そして、変化形検出サーバ114は、禁止された用語の1つまたは複数の変化形を候補の変化形の用語から選択することができる。たとえば、変化形検出サーバ114は、1つまたは複数の基準に基づいて候補の変化形をランク付けし、いくつかの最も高くランク付けされた候補の変化形(たとえば、予め指定された数)、または少なくとも閾値のスコアを有する候補の変化形を選択する可能性がある。変化形検出サーバ114は、選択された変化形をインデックス123に記憶することができる。禁止された用語の変化形を特定し、ランク付けし、選択するための例示的な技術が、下でより詳細に説明される。
【0026】
コンテンツレビューサーバ116は、コンテンツを精査して、コンテンツがインデックス123に含まれる禁止された用語または禁止された用語の変化形を含むかどうかを判定することができる。たとえば、コンテンツレビューサーバ116は、コンテンツ発行者140から受信されたコンテンツおよび/またはコンテンツを精査して、コンテンツがインデックス123に含まれる禁止された用語または禁止された用語の変化形を含むかどうかを判定することができる。コンテンツレビューサーバ116は、禁止された用語または禁止された用語の変化形を含むものとして特定されたコンテンツがフロントエンドサーバ112によってクライアントデバイス150に配信されることを防止することができる。たとえば、コンテンツレビューサーバ116は、コンテンツデータ記憶装置124からコンテンツを自動的に取り除く可能性がある。別の例において、コンテンツレビューサーバ116は、インデックス123において、フラグまたはその他のデータを、禁止された用語または禁止された用語の変化形を含むコンテンツと関連付ける。フロントエンドサーバ112は、フロントエンドサーバ112が配信することを意図するコンテンツが禁止された用語または禁止された用語の変化形を有するものとしてフラグを立てられたかどうかを判定するためにインデックス123を調べる可能性がある。フラグを立てられている場合、フロントエンドサーバ112は、クライアントデバイス150にコンテンツを配信しない可能性がある。
【0027】
さらに別の例において、コンテンツレビューサーバ116は、禁止された用語および禁止された用語の変化形を含むコンテンツをシステム管理者に知らせるためにシステム管理者に通知またはアラートを送信し得る。それから、システム管理者は、コンテンツを取り除くか、またはコンテンツを提供したコンテンツ発行者140に知らせる可能性がある。
【0028】
コンテンツレビューサーバ116は、コンテンツ内の用語を特定し、特定された用語をインデックス123内のインデックス付けされた禁止された用語および変化形と比較することによってコンテンツをレビューすることができる。たとえば、コンテンツレビューサーバ116は、コンテンツに含まれるテキストを特定するために光学式文字認識またはその他の技術を使用し得る。インデックス123が比較的高くランク付けされた変化形のみを含む可能性があるとき、この比較プロセスは、インデックス123がそれぞれの禁止された用語のあらゆるあり得るまたはあらゆる特定された変化形を含むとした場合よりも迅速に、より少ない計算リソースを使用することによって計算され得る。
【0029】
図2は、禁止された用語の変化形を特定するための例示的なプロセスのシステムフロー
図200である。変化形検出サーバ114は、クエリログ210、意味ネットワーク220、および/またはその他のデータソースからデータを取得し、取得されたデータを使用して禁止された用語の変化形を特定することができる。
【0030】
例示的なクエリログ210は、3つの受信されたクエリ「gadog」、「gad0g」、および「badog」に関するエントリを含む。再び、用語「gadog」が違法薬物の名前であると仮定する。クエリを受信した検索エンジンは、クエリを受信することに応答してそれぞれのクエリに関してクエリログのエントリを生成し得る。たとえば、クエリログ210の各行は、特定のクライアントデバイスから受信された単一の受信されたクエリを表す可能性がある。このようにして、クエリログ210は、まったく同じクエリに関する複数の行を含む可能性がある。クエリログ210は、受信されたクエリに関する列、クエリの用語の綴りが訂正されたかどうかを示す誤った綴りフラグに関する列、検索エンジンによって使用された綴りの訂正、およびクエリのどの用語がその用語に綴りを訂正されたのかを明記する綴り訂正列、クエリが1つまたは複数の追加的な用語を含むように拡張されたかどうかを示す拡張フラグに関する列、ならびに拡張の一部としてクエリに追加された追加的な用語を明記する列を含む。言うまでもなく、クエリログは、受信されたクエリに関するその他のデータを含むその他の列を含み得る。
【0031】
この例示的なクエリログ210の第1のエントリ211は、受信されたクエリ「gadog」が綴りを訂正されなかったが、追加的な用語「badog」を含むように拡張されたことを示す。たとえば、検索エンジンは、用語「gadog」の類義語またはスラングの用語であるものとして用語「badog」を特定した可能性がある。検索エンジンは、たとえ用語「badog」が受信されたクエリに含まれなかったとしてもクエリ「gadog」に応答して検索結果を特定するために用語「gadog」に加えてまたは用語「gadog」の代わりに用語「badog」を特定し、用語「badog」を使用した可能性がある。拡張用語「badog」を使用して特定された検索結果は、たとえば、検索結果が検索エンジンによって選択されるのに十分なだけ高くランク付けされる場合、クエリを送ったクライアントデバイスに提供され得る。第1のエントリ211の拡張用語のセルは、受信されたクエリに追加されたそれぞれの拡張用語と、任意で、それぞれの拡張用語に関して、検索エンジンに拡張用語を追加させた用語とを含む可能性がある。
【0032】
クエリログ210の第2のエントリ212は、受信されたクエリ「gad0g」が「gadog」に綴りを訂正されたことを示す。たとえば、検索エンジンは、受信されたクエリの用語「gad0g」が誤って綴られた可能性が高く、その代わりに「gadog」であるべきであったことを検出した可能性がある。それに応じて、検索エンジンは、受信されたクエリ「gad0g」に応答して提供するために、用語「gad0g」ではなくまたは「gad0g」に加えて、用語「gadog」に関連する検索結果を特定した可能性がある。拡張用語「gadog」を使用して特定された検索結果は、たとえば、検索結果が検索エンジンによって選択されるのに十分なだけ高くランク付けされる場合、クエリを送ったクライアントデバイスに提供され得る。クエリログ210は、検索エンジンが正しい綴りであると考えるものを表す用語「gadog」と、訂正された受信されたクエリの用語「gad0g」とを綴り訂正列に含める可能性がある。このようにして、変化形検出サーバ114は、クエリのどの用語が検索エンジンに訂正された用語を使用して受信されたクエリに関する検索結果を特定させたのかを特定することができる。
【0033】
クエリログ210の第3のエントリ213は、受信されたクエリ「badog」が綴りを訂正されなかったが、追加的な用語「gadog」を含むように拡張されたことを示す。たとえば、検索エンジンは、用語「badog」の類義語であるものとして用語「gadog」を特定した可能性がある。検索エンジンは、たとえ用語「gadog」が受信されたクエリに含まれなかったとしてもクエリ「badog」に応答して検索結果を特定するために用語「gadog」を特定し、用語「gadog」を使用した可能性がある。拡張用語「gadog」を使用して特定された検索結果は、たとえば、検索結果が検索エンジンによって選択されるのに十分なだけ高くランク付けされる場合、クエリを送ったクライアントデバイスに提供され得る。
【0034】
変化形検出サーバ114は、クエリログ210に基づいて禁止された用語の変化形を特定する変化形検出エンジン250を含み得る。たとえば、変化形検出エンジン250は、綴りが禁止された用語に訂正されたクエリの用語を禁止された用語の変化形として特定する可能性がある。例示的なクエリログ210においては、用語「gad0g」の綴りが「gadog」に訂正された。用語「gadog」が禁止された用語である場合、変化形検出エンジン250は、クエリログ210の第2のエントリ212が用語「gad0g」の綴りが禁止された用語「gadog」に訂正されたことを示すので、用語「gad0g」を用語「gadog」の変化形として分類し得る。綴りの訂正に基づいて禁止された用語の変化形を特定するために、変化形検出エンジン250は、誤った綴りフラグ(たとえば、用語が綴りを訂正された用語として特定されたかどうかを明示するデータフラグ)が「yes」であるおよび/または綴りの訂正が禁止された用語を含むエントリを特定するためにクエリログ210を評価することができる。それぞれのそのようなエントリに関して、変化形検出エンジン250は、禁止された用語に訂正された受信されたクエリの用語と特定し、用語を禁止された用語の変化形として分類することができる。
【0035】
変化形検出エンジン250は、禁止された用語を含むように拡張された受信されたクエリを禁止された用語の変化形として特定する可能性もある。たとえば、用語「gadog」が禁止された用語である場合、変化形検出エンジン250は、第3のエントリ213がクエリ「badog」が禁止された用語「gadog」を含むように拡張されたことを示すので、第3のエントリ213を使用して用語「badog」を変化形として特定し得る。拡張用語に基づいて禁止された用語の変化形を特定するために、変化形検出エンジン250は、拡張フラグが「yes」であるおよび/または拡張用語が禁止された用語を含むエントリを特定するためにクエリログ210を評価することができる。それぞれのそのようなエントリに関して、変化形検出エンジン250は、検索エンジンに禁止された用語を拡張用語として特定させ、その用語を禁止された用語の変化形として分類させた受信されたクエリの用語を特定することができる。
【0036】
同様に、変化形検出エンジン250は、禁止された用語を含む受信されたクエリに追加された拡張用語を禁止された用語の変化形として特定することができる。たとえば、用語「gadog」が禁止された用語である場合、変化形検出エンジン250は、第1のエントリ211が禁止された用語「gadog」を含む受信されたクエリを明示し、このクエリが用語「badog」を含むように拡張されたので、第1のエントリ211を使用して用語「badog」を禁止された用語「gadog」の変化形として特定し得る。拡張用語に基づいて禁止された用語の変化形を特定するために、変化形検出エンジン250は、拡張フラグが「yes」であるおよび/または受信されたクエリが禁止された用語を含むエントリを特定するためにクエリログ210を評価することができる。それぞれのそのようなエントリに関して、変化形検出エンジン250は、禁止された用語を含むクエリに基づいて受信されたクエリに追加された拡張用語を特定し、拡張用語を禁止された用語の変化形として分類することができる。
【0037】
クエリログを使用して禁止された用語の変化形を特定することは、コンテンツレビューシステムによる検出を避けるためにユーザによって比較的よく使用されるおよび/またはユーザによって比較的使用される見込みがある用語を変化形検出サーバ114が特定することを可能にする。クエリログの使用は、変化形検出サーバ114が禁止された用語の平常の変化である用語を特定することも可能にする。
【0038】
変化形検出エンジン250は、意味ネットワーク220を使用して禁止された用語の変化形を特定することもできる。意味ネットワーク220は、用語を表すノードおよび意味的に関連する用語の間の辺のグラフである。たとえば、「gadog」に関するノードが、「badog」、「catov」、および「mvepp」に関するノードに辺を用いて接続される。これは、用語「gadog」が用語「badog」、「catov」、および「mvepp」と意味的に関連する(たとえば、意味的に同様である)ことを示す。同様に、「badog」に関するノードは「tpvot」に関するノードに接続され、用語「badog」が用語「tpvot」と意味的に関連することを示す。
【0039】
変化形検出エンジン250は、意味ネットワーク220内の禁止された用語、たとえば、「gadog」に関するノードを特定することができる。そのとき、変化形検出エンジン250は、禁止された用語に関するノードに接続されたノードの用語を禁止された用語の変化形として分類することができる。用語「gadog」に関して、変化形検出エンジン250は、用語「badog」、「catov」、および「mvepp」に関するノードが「gadog」に関するノードに接続されるので、これらの用語を変化形に分類する。
【0040】
一部の実装において、変化形検出エンジン250は、意味ネットワーク220内でノードが禁止された用語に関するノードに直接接続される用語のみを禁止された用語の変化形として分類する。したがって、禁止された用語に関するノードに直接接続される別のノードに接続されるノードによって表される用語は、禁止された用語の変化形として分類されない。たとえば、用語「cagog」は、この例示的な実装においては、「gadog」の変化形として分類されない。一部の実装において、変化形検出エンジン250は、禁止された用語の指定された数のノードの中の用語を禁止された用語の変化形として分類し得る。たとえば、指定された数が2以上である場合、用語「cagog」は、用語「gadog」の変化形として分類される。
【0041】
変化形検出エンジン250は、禁止された用語を指定するデータおよびそれぞれの禁止された用語の特定された変化形を変化形選択エンジン260に提供することができる。変化形選択エンジン260は、インデックス123に含めるために、それぞれの禁止された用語に関して、変化形のうちの1つまたは複数を選択することができる。たとえば、変化形検出エンジン250によって特定された変化形は、候補の変化形である可能性があり、それらの候補の変化形から、変化形選択エンジン260が、変化形を選択する。
【0042】
一部の実装において、変化形選択エンジン260は、禁止された用語の変化形をランク付けし、より高くランク付けされた変化形のうちの1つまたは複数を選択する。変化形選択エンジン260は、1つまたは複数の基準に基づいて変化形をランク付けし得る。たとえば、変化形選択エンジン260は、変化形に関する編集距離のスコアを使用して、クエリログの綴りの訂正を使用して特定された変化形をランク付けし得る。禁止された用語の変化形に関する編集距離のスコアは、変化形の文字列と禁止された用語の文字列との間の相違の尺度である。たとえば、変化形に関する編集距離のスコアは、変化形を禁止された用語に変えるための文字変更の数に基づく可能性がある。より大きな相違がある変化形は、より大きな編集距離のスコアを有する可能性がある。変化形選択エンジン260は、禁止された用語と綴りがかなり異なる類義語に関しては編集距離がそれほど有用でない可能性があるので、変化形の逆文書頻度のスコアに基づいて、意味ネットワーク、シソーラス、および/またはスラング辞書を使用して、クエリログのクエリの拡張を使用して特定された変化形をランク付けし得る。このようにして、より多い頻繁で現れる変化形が、より少ない頻度で現れる変化形よりも高くランク付けされ得る。
【0043】
変化形選択エンジン260は、禁止された用語に関して、編集距離のスコアに基づいてランク付けされた変化形に関する第1のランク付けと、逆文書頻度に基づいてランク付けされた変化形に関する第2のランク付けとを生成することができる。そのとき、変化形選択エンジン260は、変化形のうちの1つまたは複数のために一方のまたは両方のランキングを選択する可能性がある。たとえば、変化形選択エンジン260は、それぞれのランキングから上位N個の変化形を選択する可能性があり、Nは、予め指定された数である。別の例において、変化形選択エンジン260は、それぞれのランキングから、少なくともそのランク付けに関する閾値のスコアを有するそれぞれの変化形を選択する可能性がある。変化形選択エンジン260は、選択された変化形をインデックス123に記憶することができる。
【0044】
変化形検出サーバ114は、たとえば、周期的に自動的に変化形を特定し、ランク付けし、および/または選択することができる。たとえば、変化形検出サーバ114は、クエリログおよび/または意味ネットワークを毎日、毎週、または毎月処理して、禁止された用語の変化形を特定し、ランク付けし、および/または選択し得る。このようにして、変化形検出サーバ114は、禁止された用語の変化形を経時的に習得することができる。これは、新しい変化形、または特定の変化形のより頻繁な使用が原因でより普及しつつある変化形を変化形検出サーバ114が特定することを可能にする。
【0045】
一部の実装において、変化形検出サーバ114は、新しい変化形が特定されているのかどうかおよび/または禁止された用語に関して特定されている新しい変化形の数に基づいて特定の禁止された用語の変化形を特定するための期間を決定する。たとえば、変化形検出サーバ114は、変化形検出サーバ114が特定の禁止された用語の変化形を特定しようとする以前の試みにおいて特定の禁止された用語の少なくとも閾値の数の変化形を特定しなかった場合、変化形検出サーバ114が特定の禁止された用語の変化形を特定しようと試みる頻度を減らすために期間を延ばす可能性がある。これは、禁止された用語の変化形を特定するために使用される計算リソースの消費を減らし、計算リソースがその他の目的のために使用されることを可能にする。
【0046】
図3は、禁止された用語の変化形を特定し、変化形を含むコンテンツの配信を防止するための例示的なプロセス300の流れ図である。プロセス300の動作は、たとえば、
図1のコンテンツ配信システム110などの1つまたは複数のデータ処理装置を含むシステムによって実装される可能性がある。プロセス300は、コンピュータ記憶媒体に記憶された命令によって実装される可能性もあり、データ処理装置を含むシステムによる命令の実行が、データ処理装置にプロセス300の動作を実行させる。
【0047】
システムは、たとえ所与の禁止された用語が受信されたクエリの組に含まれるクエリに含まれなかったとしても、受信されたクエリに応答して検索結果を特定するために所与の禁止された用語が使用された受信されたクエリの組をクエリログ内で特定する(302)。たとえば、システムは、所与の禁止された用語に関して、たとえ所与の禁止された用語がクエリに含まれなかったとしても、所与の禁止された用語を含むようにクエリが拡張されたクエリログ内の1つまたは複数のエントリを特定し得る。別の例において、システムは、所与の禁止された用語に関して、クエリの用語の綴りが所与の禁止された用語に訂正されたクエリログ内の1つまたは複数のエントリを特定し得る。受信されたクエリの組は、禁止された用語を含むように拡張されたそれぞれのクエリおよび/またはクエリの用語が禁止された用語に綴りを訂正されたそれぞれのクエリを含み得る。
【0048】
システムは、検索エンジンに、受信されたクエリの組内の1つまたは複数のクエリに応答して、所与の禁止された用語を使用して1つまたは複数の検索結果を特定させた、1つまたは複数のクエリからの用語を禁止された用語の変化形として分類する(304)。たとえば、システムは、検索エンジンに禁止された用語を含むようにクエリを拡張させたクエリの用語を所与の禁止された用語の変化形として分類し得る。特定の例において、検索エンジンは、受信されたクエリに含まれる用語「badog」の類義語として禁止された用語「gadog」を特定し、用語「gadog」を含むようにクエリを拡張する可能性がある。この例において、システムは、用語「badog」を禁止された用語「gadog」の変化形として分類し得る。クエリログは、それぞれの拡張用語に関して、受信されたクエリのどの用語が検索エンジンにクエリを拡張用語を含むように拡張させたのかを明示するデータを含み得る。
【0049】
別の例において、システムは、検索エンジンが禁止された用語に綴りを訂正したクエリの用語を所与の禁止された用語の変化形として分類し得る。特定の例において、検索エンジンは、用語「gad0g」の綴りを禁止された用語「gadog」に訂正する可能性がある。この例において、システムは、用語「gad0g」を禁止された用語「gadog」の変化形として分類し得る。クエリログは、クエリのどの用語が綴りを訂正された用語に綴りを訂正されたのかを明示するデータを含み得る。
【0050】
上述のように、システムは、所与の禁止された用語に意味的に関連する用語も所与の禁止された用語の変化形として分類し得る。たとえば、システムは、意味ネットワークにアクセスし、所与の禁止された用語に直接リンクされる1つまたは複数の用語を所与の禁止された用語の変化形として分類し得る。また、システムは、シソーラス、スラング辞書、および/またはその他の適切なデータソースを使用して所与の禁止された用語の変化形を特定し得る。
【0051】
システムは、所与の禁止された用語の変化形を含むコンテンツの配信を防止する(306)。たとえば、システムは、所与の禁止された用語または所与の禁止された用語の変化形を含むコンテンツを特定し得る。システムは、たとえば、利用可能なコンテンツの組からコンテンツを取り除くことによって、特定されたコンテンツの配信を自動的に遮断することができる。別の例において、システムは、コンテンツをレビューするためにコンテンツをシステム管理者に転送する可能性がある。それから、システム管理者は、変化形が禁止された目的のために使用されている場合、たとえば、利用可能なコンテンツの組からコンテンツを取り除くことによってコンテンツを遮断し得る。
【0052】
図4は、候補の変化形の組から禁止された用語の変化形を選択するための例示的なプロセス400の流れ図である。プロセス400の動作は、たとえば、
図1のコンテンツ配信システム110などの1つまたは複数のデータ処理装置を含むシステムによって実装される可能性がある。プロセス400は、コンピュータ記憶媒体に記憶された命令によって実装される可能性もあり、データ処理装置を含むシステムによる命令の実行が、データ処理装置にこのプロセス400の動作を実行させる。
【0053】
システムは、複数の異なるソースから禁止された用語の候補の変化形を特定する(402)。たとえば、システムは、クエリログから候補の変化形の第1の組を特定し得る。これらの候補の変化形は、検索エンジンが禁止された用語を含むようにクエリを拡張したクエリの用語および/または検索エンジンが禁止された用語に綴りを訂正したクエリの用語を含み得る。また、システムは、意味ネットワークを使用して変化形の第2の組を特定し得る。たとえば、これらの候補の変化形は、意味ネットワーク内で禁止された用語に直接リンクされる用語を含み得る。システムは、その他のデータソース、たとえば、シソーラス、スラング辞書などから変化形のさらなる組を特定する可能性がある。
【0054】
システムは、候補の変化形の各々に関するスコアを決定する(404)。変化形に関するスコアは、異なる基準に基づく、たとえば、候補の変化形の種類、または候補の変化形が特定されたデータソースに基づく可能性がある。たとえば、変化形の綴りが禁止された用語に訂正されることに基づいて特定された候補の変化形に関するスコアは、候補の変化形と禁止された用語との間の編集距離に基づく可能性がある。禁止された用語に関連する候補の変化形のスコアは、逆文書頻度に基づく可能性がある。たとえば、意味ネットワークから特定される候補の変化形に関するスコアおよび/またはクエリログ内のクエリの拡張から特定された変化形に関するスコアは、逆文書頻度に基づく可能性がある。シソーラスおよびスラング辞書から特定された類義語およびスラングの候補の変化形に関するスコアも、逆文書頻度に基づく可能性がある。
【0055】
クエリログから特定された候補の変化形に関するスコアは、変化形がクエリログ内に現れる頻度に基づく可能性がある。たとえば、クエリログ内に頻繁に現れる普及した候補の変化形は、クエリログ内により少ない頻度で現れるより普及していない変化形よりも高いスコアを有する可能性がある。そのような候補の変化形に関するスコアは、綴りを訂正されたかまたは禁止された用語を含むように拡張されたクエリ内の候補の変化形の出現回数に基づく可能性がある。たとえば、別の候補の変化形よりも多く禁止された用語に訂正された候補の変化形は、その別の候補の変化形よりも高いスコアを有する可能性がある。クエリログから特定された候補の変化形に関するスコアは、編集距離または逆文書頻度と、クエリログ内の候補の変化形の出現回数または受信されたクエリが綴りを訂正されたかもしくは禁止された用語を含むように拡張されたエントリ内の変化形の出現回数との組合せに基づく可能性がある。
【0056】
システムは、決定されたスコアに基づいて候補の変化形から1つまたは複数の変化形を選択する(406)。一部の実装において、システムは、それぞれのスコアの種類に関して候補の変化形のランク付けを生成する。たとえば、システムは、編集距離(またはクエリログ内の発生の頻度と組み合わされた編集距離)に基づいてスコアを付けられた候補の変化形の第1のランク付けを生成する可能性がある。システムは、逆文書頻度(またはクエリログ内の発生の頻度と組み合わされた逆文書頻度)に基づいてスコアを付けられた候補の変化形の第2のランク付けを生成する可能性もある。
【0057】
システムは、ランク付けのうちの1つまたは複数からの1つまたは複数の候補の変化形を禁止された用語の変化形として選択し得る。たとえば、システムは、両方のランク付けから変化形を選択する可能性がある。システムは、各ランク付けから上位N個の変化形を選択するおよび/または少なくとも閾値のスコアを有する各ランク付けの変化形を選択する可能性があり、ここで、Nは、予め指定された数である。
【0058】
システムは、選択された1つまたは複数の変化形を含むように禁止された用語のインデックスを更新する(408)。インデックスは、禁止された用語および禁止された用語の選択された変化形を含み得る。システムは、インデックスにまだ含まれていない選択された変化形を含むようにインデックスを更新し得る。
【0059】
図5は、MapReduce技術を使用して禁止された用語の変化形を特定するための例示的なプロセス500の流れ図である。プロセス500の動作は、たとえば、
図1のコンテンツ配信システム110などの1つまたは複数のデータ処理装置を含むシステムによって実装される可能性がある。プロセス500は、コンピュータ記憶媒体に記憶された命令によって実装される可能性もあり、データ処理装置を含むシステムによる命令の実行が、データ処理装置にこのプロセス500の動作を実行させる。
【0060】
システムは、禁止された用語の組に関するデータを取得する(502)。たとえば、システムは、禁止された用語のインデックスまたはリストを取得する可能性がある。システムは、たとえば、1つまたは複数の検索システムから、クエリ、クエリの拡張、および/またはクエリの綴りの訂正を明示するデータを含むクエリログを取得する可能性もある。システムは、用語の間の意味の関係を明示するデータ、たとえば、意味ネットワークを明示するデータを取得する可能性もある。
【0061】
システムは、map手順を使用して、データからそれぞれの禁止された用語の候補の変化形を特定する(504)。map手順は、コンピュータのクラスタによって実行され得る。クラスタの各コンピュータは、データの一部をたとえば並列に処理して、禁止された用語に基づいてデータをソートすることができる。たとえば、各コンピュータは、データの一部を処理して、データに含まれるそれぞれの禁止された用語を特定し、それぞれの禁止された用語に関して、禁止された用語の候補の変化形を特定する可能性がある。このようにして、データは、1台のコンピュータによるデータの逐次処理を使用するよりも迅速および効率的に禁止された用語に基づいてソートされ得る。
【0062】
一部の実装において、システムは、クラスタの各コンピュータにデータの一部を割り当てる可能性がある。たとえば、システムは、コンピュータのうちの1台または複数の各々にクエリログの一部を割り当てる可能性がある。システムは、コンピュータのうちの1台または複数の各々に意味ネットワーク、シソーラス、スラング辞書などの一部を割り当てる可能性もある。各コンピュータは、データのそのコンピュータの部分を処理し、データ内で発見された禁止された用語を出力し、それぞれの禁止された用語に関して、データ内で発見された禁止された用語のすべての候補の変化形を出力し得る。コンピュータは、上述のように、クエリログ、意味ネットワーク、シソーラス、スラング辞書を処理することによって候補の変化形を特定することができる。
【0063】
コンピュータのうちの1台または複数は、コンピュータによって出力されたデータを受信し、禁止された用語に基づいて出力されたデータをグループ分けすることができる。たとえば、複数のコンピュータが、データのそれらのコンピュータのそれぞれの部分の中に同じ禁止された用語を発見する可能性がある。1台または複数のコンピュータは、それぞれの特定された禁止された用語に関して、map手順からコンピュータによって出力されたデータを含むグループを生成することができる。
【0064】
システムは、reduce手順を使用して、それぞれの禁止された用語に関して、禁止された用語の候補の変化形から禁止された用語の1つまたは複数の変化形を選択する(506)。一部の実装において、システムは、それぞれの禁止された用語のために別々のコンピュータを使用する。たとえば、コンピュータのクラスタが、reduce手順を実行する可能性があり、各コンピュータが、禁止された用語のサブセットに関するデータを処理する。データが各コンピュータによって処理される禁止された用語のサブセットは、禁止された用語の一部、たとえば、禁止された用語のうちの1つを含む可能性がある。コンピュータのクラスタは、禁止された用語に関するデータを並列に処理し、単一のコンピュータがそれぞれの禁止された用語に関するデータを順番に処理した場合よりも迅速で効率的なデータの処理をもたらすことができる。
【0065】
各コンピュータは、そのコンピュータの禁止された用語の候補の変化形から、禁止された用語およびそれらの変化形のインデックスに追加する1つまたは複数の変化形を選択することができる。たとえば、各コンピュータは、候補の禁止された用語にスコアを付け、ランク付けし、スコアおよび/またはランクに基づいて、候補のうちの1つまたは複数を禁止された用語の変化形として選択する可能性がある。コンピュータは、
図4に示され、上で説明された例示的なプロセス400を使用して変化形を選択することができる。
【0066】
各コンピュータは、そのコンピュータのそれぞれの禁止された用語の選択された変化形を出力することができる。システムは、出力を受信し、コンピュータによって選択されたすべての新しい変化形を含むようにインデックスを更新することができる。
【0067】
本明細書に記載の対象の実施形態および動作は、本明細書において開示された構造およびそれらの構造的均等物を含む、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書に記載の対象の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替的にまたは追加的に、プログラム命令は、データ処理装置による実行のために好適な受信機装置に送信するために情報を符号化するように生成される人為的に生成された伝播信号、たとえば、機械によって生成された電気信号、光学信号、または電磁信号上に符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶装置、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであるか、あるいはそれらに含まれる可能性がある。さらに、コンピュータ記憶媒体は、伝播信号ではないが、人為的に生成された伝播信号に符号化されたコンピュータプログラム命令の送信元または送信先である可能性がある。コンピュータ記憶媒体は、1つまたは複数の別個の物理的構成要素または媒体(たとえば、複数のCD、ディスク、またはその他の記憶装置)であるか、またはそれらに含まれる可能性もある。
【0068】
本明細書に記載の動作は、1つもしくは複数のコンピュータ可読記憶装置に記憶された、またはその他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
【0069】
用語「データ処理装置」は、例として、1つのプログラミング可能なプロセッサ、1台のコンピュータ、1つのシステムオンチップ、またはそれらの複数もしくは組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用の論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。装置は、ハードウェアに加えて、問題にしているコンピュータプログラムのための実行環境を生成するコード、たとえば、プロセッサのファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービスインフラストラクチャ、分散コンピューティングインフラストラクチャ、およびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0070】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語もしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で記述可能であり、独立型プログラムとしての形態、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境での使用に適したその他の単位としての形態を含む任意の形態で配置され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応する可能性があるが、必ずそうであるとは限らない。プログラムは、その他のプログラムもしくはデータを保持するファイルの一部(たとえば、マークアップ言語のドキュメントに記憶された1つもしくは複数のスクリプト)、問題にしているプログラムに専用の単一のファイル、または複数の組織されたファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に置かれるか、もしくは複数の場所に分散され、通信ネットワークによって相互に接続される複数のコンピュータ上で実行されるように配置され得る。
【0071】
本明細書に記載のプロセスおよび論理フローは、入力データに対して演算を行い、出力を生成することによって動作を行うために1つまたは複数のコンピュータプログラムを1つまたは複数のプログラミング可能なプロセッサが実行することによって実行され得る。また、プロセスおよび論理フローは、専用の論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行される可能性があり、さらに、装置は、それらの専用の論理回路として実装される可能性がある。
【0072】
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサとの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。概して、プロセッサは、読み出し専用メモリ、またはランダムアクセスメモリ、またはそれらの両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令にしたがって動作を実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。また、概してコンピュータは、データを記憶するための1つまたは複数の大容量記憶装置、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはそれらの大容量記憶装置からデータを受信するか、もしくはそれらの大容量記憶装置にデータを転送するか、もしくはその両方を行うために動作可能なように結合される。しかし、コンピュータは、そのようなデバイスを備えていなくてもよい。さらに、コンピュータは、別のデバイス、たとえば、ほんのいくつか例を挙げるとすれば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレイヤー、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶装置(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込まれる可能性がある。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用の論理回路によって補完されるか、または専用の論理回路に組み込まれる可能性がある。
【0073】
ユーザとのインタラクションを行うために、本明細書に記載の対象の実施形態は、ユーザに対して情報を表示するためのディスプレイデバイス、たとえば、CRT(ブラウン管)またはLCD(液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を与えることができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールを有するコンピュータ上に実装され得る。その他の種類のデバイスが、ユーザとのインタラクションを行うためにやはり使用される可能性があり、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックである可能性があり、ユーザからの入力は、音響、発話、または触覚による入力を含む任意の形態で受け取られる可能性がある。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そのデバイスから文書を受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイスのウェブブラウザにウェブページを送信することによってユーザとインタラクションすることができる。
【0074】
本明細書に記載の対象の実施形態は、バックエンド構成要素を、たとえば、データサーバとして含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザが本明細書に記載の対象の実装とインタラクションすることができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムに実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって相互に接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0075】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、概して互いに離れており、通常は通信ネットワークを通じてインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されており、互いにクライアント-サーバの関係にあるコンピュータプログラムによって生じる。一部の実施形態において、サーバは、(たとえば、クライアントデバイスとインタラクションするユーザに対してデータを表示し、そのようなユーザからユーザ入力を受信する目的で)クライアントデバイスにデータ(たとえば、HTMLページ)を送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザのインタラクションの結果)が、サーバにおいてクライアントデバイスから受信される可能性がある。
【0076】
本明細書は多くの特定の実装の詳細を含むが、これらは、いかなる発明の範囲または特許請求され得るものの範囲に対する限定とも見なされるべきでなく、むしろ、特定の発明の特定の実施形態に固有の特徴の説明と見なされるべきである。別々の実施形態の文脈で本明細書に記載されている特定の特徴が、単一の実施形態において組み合わせて実装される可能性もある。反対に、単一の実施形態の文脈で説明されている様々な特徴が、複数の実施形態に別々に、または任意の適切な部分的組合せで実装される可能性もある。さらに、特徴は、特定の組合せで動作するものとして上で説明されている可能性があり、最初にそのように特許請求されてさえいる可能性があるが、特許請求された組合せの1つまたは複数の特徴は、場合によっては組合せから削除される可能性があり、特許請求された組合せは、部分的組合せ、または部分的組合せの変形を対象とする可能性がある。
【0077】
同様に、動作が図中に特定の順序で示されているが、これは、そのような動作が示された特定の順序でもしくは逐次的順序で実行されること、または所望の結果を達成するために示されたすべての動作が実行されることを必要とするものと理解されるべきでない。特定の状況においては、マルチタスクおよび並列処理が有利である可能性がある。さらに、上述の実施形態における様々なシステム構成要素の分割は、すべての実施形態においてそのような分割を必要とするものと理解されるべきでなく、説明されたプログラムコンポーネントおよびシステムは、概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされる可能性があると理解されるべきである。このように、対象の特定の実施形態が説明された。その他の実施形態は、添付の請求項の範囲内にある。場合によっては、請求項に挙げられた動作は、異なる順序で実行され、それでも所望の結果を達成し得る。加えて、添付の図面に示されたプロセスは、所望の結果を達成するために、必ずしも、示された特定の順序または逐次的順序である必要はない。特定の実装においては、マルチタスクおよび並列処理が有利である可能性がある。