【文献】
Hisashi KOGA et al.,Fast agglomerative hierarchical clustering algorithm using Locality-Sensitive Hashing,Knowledge and Information Systems 12.1,2007年,pp.25-53
【文献】
Parisa HAGHANI et al.,Distributed Similarity Search in High Dimensions Using Locality Sensitive Hashing,Proceedings of the 12th International Conference on Extending Database Technology: Advances in Database Technology,2009年,p.744-755
【文献】
Qin LV et al.,Multi-Probe LSH: Efficient Indexing for High-Dimensional Similarity Search,Proceedings of the 33rd international conference on Very large data bases,2007年,pp.950-961
【文献】
小林卓夫 外2名,局所鋭敏な階層的ハッシュ関数を用いた探索時可変パラメータの高次元近似最近傍探索手法,電子情報通信学会論文誌 (J96−A) 第5号,日本,一般社団法人電子情報通信学会,2013年 5月 1日,第J96-A巻 第5号,pp.225-237
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0038】
これらの図は、例示のみの目的で本発明のさまざまな実施形態を示しており、これらの図は、同様の要素を識別するために同様の参照番号を使用している。本明細書において記述されている本発明の原理から逸脱することなく、本明細書に示される構造および方法の代替実施形態が採用されることを当業者であれば下記の記載から容易に認識されるであろう。
【0039】
ソーシャルネットワーキングシステム−概略紹介
図1は、本発明の一実施形態によるソーシャルネットワーキングシステム130に関連したイメージの類似性を決定するためのシステム100のネットワークを示す図である。システム100は、1つまたは複数のユーザデバイス110と、1つまたは複数の外部システム120と、ソーシャルネットワーキングシステム130と、ネットワーク140とを含む。例示の目的で、
図1によって示されるシステム100の実施形態は、単一の外部システム120と、単一のユーザデバイス110とを含んでいる。しかしながら、その他の実施形態において、システム100は、より多くのユーザデバイス110、および/またはより多くの外部システム120を含む。特定の実施形態において、ソーシャルネットワーキングシステム130は、ソーシャルネットワークプロバイダによって運営され、その一方で外部システム120は、異なるエンティティによって運営されるという点でソーシャルネットワーキングシステム130とは別個のものである。しかしながら、さまざまな実施形態において、ソーシャルネットワーキングシステム130および外部システム120は、ソーシャルネットワーキングサービスをソーシャルネットワーキングシステム130のユーザ(またはメンバ)に提供するために連携して機能する。この意味において、ソーシャルネットワーキングシステム130は、プラットフォームまたはバックボーンを提供し、外部システム120などのその他のシステムは、そのプラットフォームまたはバックボーンを使用して、インターネットを通じてソーシャルネットワーキングサービスお
よび機能をユーザに提供する。
【0040】
ユーザデバイス110は、ユーザから入力を受け取ることが可能な、ならびにネットワーク140を通じてデータを送ることおよび受け取ることが可能な1つまたは複数のコンピューティングデバイスを含む。一実施形態において、ユーザデバイス110は、たとえば、Microsoft Windows(登録商標)に準拠したオペレーティングシステム(OS)、Apple(登録商標)OS X、および/またはLinux(登録商標)ディストリビューションを実行する従来のコンピュータシステムである。別の実施形態において、ユーザデバイス110は、コンピュータ機能を有するデバイス、たとえば、スマートフォン、タブレット、携帯情報端末(PDA)、移動体電話などである。ユーザデバイス110は、ネットワーク140を通じて通信を行うように構成されている。ユーザデバイス110は、ユーザデバイス110のユーザがソーシャルネットワーキングシステム130と対話することを可能にするアプリケーション、たとえば、ブラウザアプリケーションを実行する。別の実施形態において、ユーザデバイス110は、iOSおよびANDROID(登録商標)など、ユーザデバイス110のネイティブオペレーティングシステム上で動作するアプリケーションプログラミングインタフェース(API)を通じてソーシャルネットワーキングシステム130と対話する。ユーザデバイス110は、ネットワーク140を通じて外部システム120およびソーシャルネットワーキングシステム130と通信するように構成されており、ネットワーク140は、有線通信システムおよび/または無線通信システムを使用する、ローカルエリアネットワークおよび/またはワイドエリアネットワークの任意の組合せを含む。
【0041】
一実施形態において、ネットワーク140は、標準通信技術および/または標準プロトコルを使用する。したがって、ネットワーク140は、イーサネット(登録商標)、802.11、ワールドワイドインターオペラビリティーフォーマイクロウェーブアクセス(WiMAX)、3G、4G、CDMA、GSM(登録商標)、LTE、デジタルサブスクライバーライン(DSL)等などの技術を使用するリンクを含む。同様に、ネットワーク140上で使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング(MPLS)、トランスミッション制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、ハイパーテキストトランスポートプロトコル(HTTP)、シンプルメールトランスファープロトコル(SMTP)、およびファイルトランスファープロトコル(FTP)を含む。ネットワーク140を通じてやり取りされるデータは、ハイパーテキストマークアップ言語(HTML)および拡張マークアップ言語(XML)を含む技術および/または形式を使用して表される。加えて、すべてまたはいくつかのリンクは、セキュアソケットレイヤ(SSL)、トランスポートレイヤセキュリティ(TLS)、およびインターネットプロトコルセキュリティ(IPsec)などの従来の暗号化技術を使用して暗号化される。
【0042】
一実施形態において、ユーザデバイス110は、ブラウザアプリケーション112を使用して外部システム120から、およびソーシャルネットワーキングシステム130から受け取られたマークアップ言語ドキュメント114を処理することによって、外部システム120からの、および/またはソーシャルネットワーキングシステム130からのコンテンツを表示する。マークアップ言語ドキュメント114は、コンテンツ、およびそのコンテンツの形式または提示の体裁について記述する1つまたは複数の命令を識別する。マークアップ言語ドキュメント114内に含まれている命令を実行することによって、ブラウザアプリケーション112は、マークアップ言語ドキュメント114によって記述されている形式または提示の体裁を使用して、識別されたコンテンツを表示する。たとえば、マークアップ言語ドキュメント114は、外部システム120およびソーシャルネットワーキングシステム130から取り出されたテキストおよび/またはイメージデータを含む複数のフレームを有するウェブページを生成および表示するための命令を含む。さまざま
な実施形態において、マークアップ言語ドキュメント114は、拡張マークアップ言語(XML)データ、拡張ハイパーテキストマークアップ言語(XHTML)データ、またはその他のマークアップ言語データを含むデータファイルを含む。加えて、マークアップ言語ドキュメント114は、外部システム120とユーザデバイス110との間におけるデータ交換を容易にするために、JSON(JavaScript(登録商標)Object Notation)データ、JSONP(JSON with padding)、およびJavaScriptデータを含む。ユーザデバイス110上のブラウザアプリケーション112は、そのようなマークアップ言語ドキュメント114をデコードするためにJavaScriptコンパイラを使用する。
【0043】
一実施形態において、ユーザデバイス110はまた、ユーザデバイス110のユーザがソーシャルネットワーキングシステム130内に記録されているか否かを示すデータを含む1つまたは複数のクッキー116を含み、それは、ソーシャルネットワーキングシステム130からユーザデバイス110へ通信されるデータのカスタム化を可能にする。
【0044】
外部システム120は、ネットワーク140を使用してユーザデバイス110へ通信される1つまたは複数のウェブページ122a、122bを含む1つまたは複数のウェブサーバを含む。外部システム120は、ソーシャルネットワーキングシステム130とは別個のものである。たとえば、外部システム120は、第1のドメインに関連付けられており、その一方で、ソーシャルネットワーキングシステム130は、別のソーシャルネットワーキングドメインに関連付けられている。外部システム120内に含まれているウェブページ122a、122bは、コンテンツを識別する、および識別されたコンテンツの形式または提示の体裁を明示する命令を含むマークアップ言語ドキュメントを含む。
【0045】
ソーシャルネットワーキングシステム130は、1つまたは複数のコンピューティングデバイスを含み、複数のユーザを含むソーシャルネットワークまたは「ソーシャルグラフ」を記憶し、ソーシャルネットワークのユーザが、ソーシャルネットワークのその他のユーザと通信および対話をすることができるようにする。ソーシャルネットワーキングシステム130について、以下にさらに記述する。使用に際して、ユーザは、ソーシャルネットワーキングシステム130に加入し、次いで、自らがつながりたいと望むソーシャルネットワーキングシステム130のその他の任意の数のユーザにつながりを付加する。本明細書において使用される場合、「友達」という用語は、ユーザがソーシャルネットワーキングシステム130を通じて、つながり、関連付け、または関係を形成するソーシャルネットワーキングシステム130のその他の任意のユーザを示す。
【0046】
つながりは、ユーザによって明示的に付加されることが可能であり、またはユーザ同士の共通の特徴(たとえば、同じ教育機関の卒業生であるユーザ同士)に基づいてソーシャルネットワーキングシステム130によって自動的に作成される。たとえば、第1のユーザが、その他の特定のユーザを、友達であるとして特に選択する。ソーシャルネットワーキングシステム130におけるつながりは、通常は双方向であるが、そうである必要はなく、したがって「ユーザ」および「友達」という用語は、参照構造に依存する。ソーシャルネットワーキングシステム130のユーザ同士の間におけるつながりは、通常は双方向の(「二方向の」)、または「相互の」ものであるが、つながりは、一方的な、または「一方向の」ものであることも可能である。たとえば、ボブとジョーが両方ともソーシャルネットワーキングシステム130のユーザであって、互いにつながっている場合、ボブとジョーは、互いにとってのつながりである。その一方で、ボブが、ジョーによってソーシャルネットワーキングシステムに通信されたデータを見るためにジョーにつながりたいと望んでいるが、ジョーは、相互のつながりを形成することを望んでいない場合、一方的なつながりが確立される。ユーザ同士の間におけるつながりは、直接のつながりであるが、ソーシャルネットワーキングシステムのいくつかの実施形態は、つながりが、1つもしく
は複数のレベルのつながりまたは1つもしくは複数の度合いの分離を通じて間接的であることを可能にする。
【0047】
ユーザ同士の間におけるつながりを確立することおよび維持すること、ならびにユーザ同士の間における対話を可能にすることに加えて、ソーシャルネットワーキングシステム130は、ソーシャルネットワーキングシステム130によってサポートされるさまざまなタイプのアイテムに関してユーザがアクションを取るようにする。これらのアイテムは、ソーシャルネットワーキングシステムのユーザが属するグループまたはネットワーク(この場合、ここでの「ネットワーク」とは、物理的な通信ネットワークではなく、むしろ人々、エンティティ、およびコンセプトのソーシャルネットワークを示す)、ユーザが関心を抱くイベントまたはカレンダへのエントリ、ユーザがソーシャルネットワーキングシステム130を通じて使用するコンピュータベースのアプリケーション、ユーザがサービスを通じてアイテムを購入または販売することを可能にする取引、ならびにユーザがソーシャルネットワーキングシステムの上でまたは外で実行する広告との対話を含む。これらは、ユーザがソーシャルネットワーキングシステム上で作用するアイテムのうちのほんの数例であり、その他の多くのアイテムが可能である。ユーザは、ネットワーク140を通じてソーシャルネットワーキングシステム130に結合されている、ソーシャルネットワーキングシステム130において、またはソーシャルネットワーキングシステム130とは別個の外部システム120において表される任意のものと対話する。
【0048】
ソーシャルネットワーキングシステム130は、さまざまなエンティティ同士をリンクさせることも可能である。たとえば、ソーシャルネットワーキングシステム130は、ユーザがAPIまたはその他の通信チャネルを通じて互いにおよび外部システム120またはその他のエンティティと対話することを可能にする。ソーシャルネットワーキングシステム130は、複数のエッジによって相互につながっている複数のノードを含む「ソーシャルグラフ」を生成および維持する。ソーシャルグラフ内のそれぞれのノードは、別のノードに作用することが可能な、および/または別のノードによって作用されることが可能なエンティティを表す。ソーシャルグラフは、さまざまなタイプのノードを含む。ノードのタイプの例として、ユーザ、人間以外のエンティティ、コンテンツアイテム、ウェブページ、グループ、イベント、メッセージ、コンセプト、および、ソーシャルネットワーキングシステム130内のオブジェクトによって表されるその他の任意のものが含まれる。ソーシャルグラフ内のノードのその他のタイプは、ソーシャルネットワーキングシステム130によるイメージの類似性の決定に関連する。以下にさらに詳細に記述されるように、これらのノードタイプは、イメージ、イメージのハッシュ値が収まる座標系におけるバケット、類似するイメージ同士をグループ化するクラスタセンタ、ならびにイメージにリンクされているユーザを含む。ソーシャルグラフ内の2つのノードの間におけるエッジは、それらの2つのノードの間における特定の種類のつながりまたは関連付けを表し、そのつながりまたは関連付けは、ノードの関係から、またはそれらのノードのうちの一方によって他方のノードに対して実行されたアクションから生じる。たとえば、第1のユーザが第2のユーザを友達として識別した場合、第1のユーザを表すノードと、第2のユーザを表す第2のノードとをつなげるソーシャルグラフ内のエッジが生成される。さまざまなノード同士は互いに関係または対話するため、ソーシャルネットワーキングシステム130は、それらのさまざまなノード同士をつなげているエッジを修正して、それらの関係および対話を反映する。
【0049】
ノードの関係のさらなる例は、イメージの類似性の決定に関連するため、バケットは、クラスタセンタに関連付けられることが可能であり、クラスタセンタは、イメージに関連付けられることが可能であり、イメージは、ユーザに関連付けられる。これらの関連付けは、一方向または二方向である。本発明の一実施形態において、バケットとクラスタセンタとの間における関連付けは、バケットからクラスタセンタへの一方向であり、クラスタ
センタとイメージとの間における関連付けは、二方向であり、イメージとユーザとの間における関連付けは、二方向である。ソーシャルネットワーキングシステム130は、それらの関連付けを使用して、たとえば、以下にさらに詳細に記載されるように、類似するイメージを識別すること、およびそれらのイメージに関して特定の管理アクションを実行する。別の例として、ユーザが、ソーシャルネットワーキングシステム130への特定の新たなイメージの投稿を提案した場合、ソーシャルネットワーキングシステム130は、その新たなイメージと、ソーシャルネットワーキングシステム130によって維持されているその他のイメージとのあり得る類似性を決定する。ユーザおよびその新たなイメージは、それらのつながりを表すそれらの間におけるエッジを伴ってノードとして取り扱われる。
【0050】
ソーシャルネットワーキングシステム130はまた、ユーザによって生成されるコンテンツを含み、このコンテンツは、ソーシャルネットワーキングシステム130とのユーザの対話を向上させる。ユーザによって生成されるコンテンツは、ユーザがソーシャルネットワーキングシステム130に付加、アップロード、送信、または「投稿」する任意のものを含む。たとえば、ユーザは、ユーザデバイス110からソーシャルネットワーキングシステム130へ投稿を通信する。投稿は、状況の更新またはその他のテキストデータ、ロケーション情報、写真などのイメージ、ビデオ、リンク、音楽、またはその他の類似したデータなどのデータおよび/もしくは媒体を含む。コンテンツは、サードパーティによってソーシャルネットワーキングシステム130に付加されることも可能である。コンテンツ「アイテム」は、ソーシャルネットワーキングシステム130においてオブジェクトとして表される。この方法において、ソーシャルネットワーキングシステム130のユーザは、さまざまな通信チャネルを通じてさまざまなタイプの媒体のテキストおよびコンテンツアイテムを投稿することによって互いに通信して、ユーザ同士の相互の対話を増大させ、ユーザがソーシャルネットワーキングシステム130と対話する頻度を増大させるように奨励される。
【0051】
ユーザは、自分自身または自分の関心に関する情報を共有するためにイメージをソーシャルネットワーキングシステム130に投稿したいと望む場合がある。そのようなイメージは、写真またはその他の任意のタイプのコンテンツアイテムである。ユーザ同士の間における通信を増大させるために、ソーシャルネットワーキングシステム130は、ユーザに、自分の個性および一意の関心を示すまたはその他の形で適切に反映するイメージを投稿するように奨励または勧誘する。アップロードされるイメージが、ソーシャルネットワーキングシステム130にとって一意であることおよびその他の形で適切であることの両方を確実にするために、ソーシャルネットワーキングシステム130は、いくつかの状況においてユーザによるイメージの公開を制御または制限する。たとえば、あるユーザに関連付けられたイメージが、別のユーザに関連付けられた別のイメージとあまりにも類似するかまたは同じである場合、ソーシャルネットワーキングシステム130は、そのイメージの公開を制御または制限する。別の例として、ソーシャルネットワーキングシステム130は、ある特定のイメージのコンテンツがガイドラインまたはその他の標準に違反しているため、そのイメージは公開するのに不適切であると決定する。その状況において、ソーシャルネットワーキングシステム130は、そのイメージおよびすべての類似するまたは同じイメージの公開を制御または制限する。イメージの公開を管理するために、ソーシャルネットワーキングシステム130は、以下にさらに詳細に記載されるイメージの類似性解析モジュール132を含む。
【0052】
図2は、本発明の一実施形態による
図1のソーシャルネットワーキングシステム130の図である。
図2に示される実施形態において、ソーシャルネットワーキングシステム130は、イメージの類似性解析モジュール132、ウェブサーバ210、アクションロガー224、APIリクエストサーバ220、アクティビティログ226、ユーザプロフィ
ールストア212、つながりストア214、および認証サーバ228を含む。イメージの類似性解析モジュール132は、ラージハッシングモジュール240、スモールハッシングモジュール242、空間検索モジュール244、クラスタセンタ作成モジュール246、近接性決定モジュール248、および管理アクションモジュール270を含む。本発明の一実施形態において、
図2に示されるモジュールによって実行される機能は、その他のモジュールもしくは構成要素によってさまざまに置き換えられること、その他のモジュールもしくは構成要素と結合されること、またはその他のモジュールもしくは構成要素へと統合されてもよい。本発明の一実施形態において、ソーシャルネットワーキングシステム130は、さまざまなアプリケーションに関するさらなる、より少ない、または別のモジュールを含む。その他のモジュール、たとえば、ネットワークインタフェース、セキュリティ機構、ロードバランサ、フェイルオーバサーバ、管理およびネットワークオペレーションコンソールなどは、このシステムの詳細をわかりにくくすることのないように示されない。
【0053】
ユーザプロフィールは、ユーザによって言明されている、またはソーシャルネットワーキングシステム130によって推測されている、経歴情報、人口統計学的情報、およびその他のタイプの記述的情報、たとえば、職業経験、学歴、趣味または好み、ロケーションなどを含む。この情報は、ユーザプロフィールストア212内に記憶され、それによって、それぞれのユーザは一意に識別される。ソーシャルネットワーキングシステム130はまた、別々のユーザの間における1つまたは複数のつながりについて記述するデータをつながりストア214内に記憶する。つながり情報は、類似するまたは共通の職業経験、グループメンバシップ、趣味、または学歴を有するユーザを示す。加えて、ソーシャルネットワーキングシステム130は、別々のユーザの間におけるユーザ定義のつながりを含み、ユーザがその他のユーザとの自分の関係を明示することを可能にする。たとえば、ユーザ定義のつながりは、ユーザが、友達、同僚、パートナ等など、ユーザの実生活の関係に似ているその他のユーザとの関係を生成することを可能にする。ユーザは、事前に定義されたタイプのつながりから選択を行うこと、または必要に応じて自分自身のつながりタイプを定義する。ソーシャルネットワーキングシステム130内のその他のノード、たとえば、人間以外のエンティティ、バケット、クラスタセンタ、イメージ、関心、ページ、外部システム、コンセプトなどとのつながりも、つながりストア214内に記憶される。
【0054】
ソーシャルネットワーキングシステム130は、ユーザが対話するオブジェクトに関するデータを維持する。このデータを維持するために、ユーザプロフィールストア212およびつながりストア214は、ソーシャルネットワーキングシステム130によって維持されている対応するタイプのオブジェクトのインスタンスを記憶する。それぞれのオブジェクトタイプは、そのタイプのオブジェクトにとって適切な情報を記憶するのに適している情報フィールドを有する。たとえば、ユーザプロフィールストア212は、ユーザのプロフィールについて記述するのに適したフィールドを伴うデータ構造を含む。特定のタイプの新たなオブジェクトが作成された場合、ソーシャルネットワーキングシステム130は、対応するタイプの新たなデータ構造を初期化し、一意のオブジェクト識別子をそのデータ構造に割り振り、必要に応じてそのオブジェクトにデータを付加することを開始する。これは、たとえば、ユーザがソーシャルネットワーキングシステム130のユーザになった場合に生じることが可能であり、ソーシャルネットワーキングシステム130は、ユーザプロフィールストア212においてユーザプロフィールの新たなインスタンスを生成し、一意の識別子をそのユーザプロフィールに割り振り、ユーザによって提供された情報をユーザプロフィールのフィールドに入力することを開始する。
【0055】
つながりストア214は、ユーザのその他のユーザへのつながり、外部システム120へのつながり、またはその他のエンティティへのつながりについて記述するのに適したデータ構造を含む。つながりストア214は、つながりタイプをユーザのつながりに関連付
けることもでき、つながりタイプは、ユーザに関する情報へのアクセスを規制するためにユーザのプライバシ設定とともに使用される。本発明の一実施形態において、ユーザプロフィールストア212およびつながりストア214は、連合データベースとして実装される。
【0056】
つながりストア214、ユーザプロフィールストア212、およびアクティビティログ226内に記憶されているデータは、ソーシャルネットワーキングシステム130が、別々のオブジェクトの間における関係を識別する目的で、ノード同士をつなげているさまざまなオブジェクトおよびエッジを識別するためにノードを使用するソーシャルグラフを生成することを可能にする。たとえば、第1のユーザが、ソーシャルネットワーキングシステム130内の第2のユーザとのつながりを確立した場合、ユーザプロフィールストア212からの第1のユーザおよび第2のユーザのユーザプロフィールは、ソーシャルグラフ内のノードとして機能する。つながりストア214によって記憶されている第1のユーザと第2のユーザとの間におけるつながりは、第1のユーザに関連付けられたノードと、第2のユーザに関連付けられたノードとの間におけるエッジである。この例を続けると、第2のユーザは次いで、ソーシャルネットワーキングシステム130内でメッセージを第1のユーザに送信する。メッセージを送信するというアクションは、記憶されてもよく、第1のユーザおよび第2のユーザを表すソーシャルグラフ内の2つのノードの間における別のエッジである。加えて、メッセージそのものが識別されて、第1のユーザおよび第2のユーザを表すノードにつながっている別のノードとしてソーシャルグラフ内に含まれる。
【0057】
別の例において、第1のユーザは、ソーシャルネットワーキングシステム130によって維持されているイメージ内に(または、代替として、ソーシャルネットワーキングシステム130の外部の別のシステムによって維持されているイメージ内に)第2のユーザをタグ付けする。イメージは、それ自体がソーシャルネットワーキングシステム130内のノードとして表される。このタグ付けアクションは、第1のユーザと第2のユーザとの間におけるエッジを作成すること、およびユーザのうちのそれぞれとイメージ(これも、ソーシャルグラフ内のノードである)との間におけるエッジを作成する。さらに別の例において、あるユーザが、あるイベントに参加することを確認した場合、そのユーザおよびそのイベントは、ユーザプロフィールストア212から得られるノードであり、そのイベントの参加は、アクティビティログ226から取り出されるそれらのノードの間におけるエッジである。ソーシャルグラフを生成することおよび維持することによって、ソーシャルネットワーキングシステム130は、多くの異なるタイプのオブジェクト、ならびにそれらのオブジェクトの間における対話およびつながりについて記述するデータを含み、社交上関連する情報の豊かな源を提供する。
【0058】
ウェブサーバ210は、ネットワーク140を通じてソーシャルネットワーキングシステム130を1つもしくは複数のユーザデバイス110および/または1つもしくは複数の外部システム120にリンクさせる。ウェブサーバ210は、ウェブページ、およびその他のウェブ関連コンテンツ、たとえばJava(登録商標)、JavaScript、Flash、XMLなどを供給する。ウェブサーバ210は、ソーシャルネットワーキングシステム130と1つまたは複数のユーザデバイス110との間におけるメッセージを受け取って回送するためのメールサーバまたはその他のメッセージング機能を含む。それらのメッセージは、インスタントメッセージ、キューに入れられたメッセージ(たとえば、Eメール)、テキストおよびSMSメッセージ、またはその他の任意の適切なメッセージング形式である。
【0059】
APIリクエストサーバ220は、1つまたは複数の外部システム120およびユーザデバイス110が1つまたは複数のAPIを呼び出すことによってソーシャルネットワーキングシステム130からの情報にアクセスすることを可能にする。APIリクエストサ
ーバ220は、外部システム120がAPIを呼び出すことによってソーシャルネットワーキングシステム130へ情報を送信することも可能にする。外部システム120は、一実施形態において、ネットワーク140を通じてソーシャルネットワーキングシステム130へAPI要求を送信し、APIリクエストサーバ220は、そのAPI要求を受け取る。APIリクエストサーバ220は、そのAPI要求に関連付けられたAPIを呼び出すことによってその要求を処理して、適切な応答を生成し、その応答を、APIリクエストサーバ220がネットワーク140を通じて外部システム120へ通信する。たとえば、API要求に応答して、APIリクエストサーバ220は、外部システム120にログインしているユーザのつながりなど、ユーザに関連付けられたデータを収集し、それらの収集されたデータを外部システム120へ通信する。別の実施形態において、ユーザデバイス110は、外部システム120と同じ様式でAPIを通じてソーシャルネットワーキングシステム130と通信する。
【0060】
アクションロガー224は、ソーシャルネットワーキングシステム130内のおよび/またはソーシャルネットワーキングシステム130の外のユーザアクションに関するウェブサーバ210からの通信を受け取る。アクションロガー224は、ユーザアクションに関する情報をアクティビティログ226に入力し、ソーシャルネットワーキングシステム130が、ソーシャルネットワーキングシステム130内で、およびソーシャルネットワーキングシステム130の外でそのユーザによって取られたさまざまなアクションを見つけることを可能にする。特定のユーザがソーシャルネットワーキングシステム130上の別のノードに関して取るアクションは、アクティビティログ226内に、または類似したデータベースもしくはその他のデータリポジトリ内に維持されている情報を通じて、それぞれのユーザのプロフィールに関連付けられる。識別および記憶されるソーシャルネットワーキングシステム130内のユーザによって取られるアクションの例として、たとえば、別のユーザへのつながりを付加すること、メッセージを別のユーザへ送信すること、別のユーザからのメッセージを読み取ること、別のユーザに関連付けられたコンテンツを閲覧すること、別のユーザによって投稿されたイベントに参加すること、イメージを投稿すること、イメージを投稿しようと試みること、または別のユーザもしくは別のオブジェクトと対話するその他のアクションを含む。ユーザがソーシャルネットワーキングシステム130内でアクションを取った場合、そのアクションは、アクティビティログ226内に記録される。一実施形態において、ソーシャルネットワーキングシステム130は、エントリのデータベースとしてアクティビティログ226を維持する。ソーシャルネットワーキングシステム130内でアクションが取られた場合、そのアクションに関するエントリが、アクティビティログ226に付加される。アクティビティログ226は、アクションログと呼ばれる場合がある。
【0061】
加えて、ユーザアクションは、ソーシャルネットワーキングシステム130とは別個の外部システム120など、ソーシャルネットワーキングシステム130外のエンティティ内で生じるコンセプトおよびアクションに関連付けられる。たとえば、アクションロガー224は、外部システム120とのユーザの対話について記述するデータをウェブサーバ210から受け取る。この例において、外部システム120は、ソーシャルグラフ内の構造化されたアクションおよびオブジェクトに従ってユーザの対話を報告する。ユーザが外部システム120と対話するアクションのその他の例として、ユーザが外部システム120もしくは別のエンティティへの関心を示すこと、ユーザが、外部システム120、もしくは外部システム120内のウェブページ122aについて論じるコメントをソーシャルネットワーキングシステム130に投稿すること、ユーザが、外部システム120に関連付けられたユニフォームリソースロケータ(URL)もしくはその他の識別子をソーシャルネットワーキングシステム130に投稿すること、ユーザが、外部システム120に関連付けられたイベントに参加すること、または外部システム120に関連しているユーザによるその他の任意のアクションが含まれる。したがって、アクティビティログ226は
、ソーシャルネットワーキングシステム130のユーザと、ソーシャルネットワーキングシステム130とは別個の外部システム120との間における対話について記述するアクションを含む。
【0062】
認証サーバ228は、ソーシャルネットワーキングシステム130のユーザの1つまたは複数のプライバシ設定を実施する。ユーザのプライバシ設定は、ユーザに関連付けられた特定の情報がどのように共有されるかを決定する。プライバシ設定は、ユーザに関連付けられた特定の情報の指定、およびその情報を共有する1つまたは複数のエンティティの指定を含む。情報を共有するエンティティの例として、その他のユーザ、アプリケーション、外部システム120、または、その情報にアクセスするであろう任意のエンティティを含む。ユーザによって共有される情報は、プロフィール写真のようなユーザプロフィール情報、ユーザに関連付けられた電話番号、ユーザのつながり、ユーザによって取られたアクション、たとえば、つながりを付加すること、ユーザプロフィール情報を変更することなどを含む。
【0063】
プライバシ設定の指定は、さまざまなレベルの細かさで提供される。たとえば、プライバシ設定は、その他のユーザと共有される特定の情報を識別する。たとえば、プライバシ設定は、職場の電話番号、または関連した情報の特定のセット、たとえば、プロフィール写真、自宅の電話番号、および状況を含む個人情報を識別する。あるいは、プライバシ設定は、ユーザに関連付けられたすべての情報に適用されることも可能である。特定の情報にアクセスするエンティティのセットの指定は、さまざまなレベルの細かさで指定されることも可能である。情報を共有するエンティティのさまざまなセットは、たとえば、ユーザのすべての友達、友達のすべての友達、すべてのアプリケーション、またはすべての外部システム120を含む。一実施形態は、エンティティのセットの指定がエンティティの列挙を含むことを可能にする。たとえば、ユーザは、特定の情報にアクセスすることを許可されている外部システム120の一覧を提供する。別の実施形態は、指定が、情報にアクセスすることを許可されていない例外とともにエンティティのセットを含むことを可能にする。たとえば、ユーザは、すべての外部システム120がそのユーザの職業情報にアクセスすることを許可する一方で、それらの職業情報にアクセスすることを許可されていない外部システム120の一覧を指定する。特定の実施形態は、特定の情報にアクセスすることを許可されていない例外の一覧を「ブロックリスト」と呼ぶ。ユーザによって指定されたブロックリストに属している外部システム120は、プライバシ設定内に指定されている情報にアクセスすることをブロックされる。情報の指定の細かさと、情報を共有するエンティティの指定の細かさとのさまざまな組合せが可能である。たとえば、すべての個人情報は友達と共有されることができ、その一方で、すべての職業情報は友達の友達と共有される。
【0064】
認証サーバ228は、ユーザに関連付けられた特定の情報がユーザの友達、外部システム120、ならびに/またはその他のアプリケーションおよびエンティティによってアクセスされるか否かを決定するための論理部を含む。外部システム120は、ユーザの職場の電話番号など、ユーザのさらにプライベートな保護すべき情報にアクセスするためには、認証サーバ228からの認証を必要とする場合がある。ユーザのプライバシ設定に基づいて、認証サーバ228は、別のユーザ、外部システム120、アプリケーション、または別のエンティティが、ユーザによって取られたアクションに関する情報を含む、ユーザに関連付けられた情報にアクセスすることを許可されているか否かを決定する。
【0065】
イメージの類似性解析モジュール132は、ソーシャルネットワーキングシステム130に提供されたイメージ同士の類似性を決定すること、および管理アクションを実行するためにそれらの類似性に基づいてイメージ同士を関連付ける。本明細書において使用される場合、2つ以上のイメージの間における類似性とは、しきい値に従って同じまたはほぼ
同じであるイメージコンテンツを示す。イメージ比較のために、ラージハッシングモジュール240は、イメージに関する「ラージ」ハッシュ値を計算し、そのラージハッシュ値は、ソーシャルネットワーキングシステム130内のその他のイメージとの類似性について検査される。ラージハッシュ値とは、ビットによって表されるピクセルを含むイメージの表現である。ラージハッシュ値は、値のセットを含む。本発明の一実施形態において、ラージハッシングモジュール240は、イメージに関するラージハッシュ値を計算するためにコンテンツ認識型ハッシュ関数を使用する。
【0066】
イメージ同士の間における比較を容易にするために、スモールハッシングモジュール242は、ラージハッシュ値を、減少した次元を有するd次元の(d次元)座標系(dは、座標系の次元数であり、1以上の任意の整数値である)上に射影することによって、ラージハッシュ値の「スモール」ハッシュ値を計算する。スモールハッシュ値は、イメージのさらに小型の表現であり、値のセットを含む。本発明の一実施形態において、スモールハッシングモジュール242は、スモールハッシュ値を計算するためにラージハッシュ値に局所性鋭敏型ハッシュ関数を適用する。ラージハッシュ値の射影の結果、スモールハッシュ値は、座標系のバケット内に収まる。バケットは、座標系の最小単位である。たとえば、バケットは、一次元座標系における最小セグメント、二次元座標系における最小正方形、または三次元座標系における最小立方体である。
【0067】
空間検索モジュール244は、あり得る類似するイメージに関連付けられたクラスタセンタを検索するために座標系における空間を決定する。クラスタセンタは、類似すると判断されたイメージ同士が関連付けられている座標系における点である。本発明の一実施形態において、空間検索モジュール244は、スモールハッシュ値が収まるバケット内でのみクラスタセンタを検索する。類似する可能性のあるイメージを探して同じバケット内で検索を行うことは、同じバケット内に収まるスモールハッシュ値に関連付けられたすべてのイメージは類似するという誤った想定を回避する。本発明の一実施形態において、空間検索モジュール244は、隣接するバケットを識別すること、およびそれらの隣接するバケット内の類似するイメージに関連付けられたクラスタセンタを検索することも可能である。隣接するバケットは、スモールハッシュ値に最も近い座標系の交点と重なるバケットを含む。類似する可能性のあるイメージを探して複数のバケット内で検索を行うことは、別々のバケット内に収まるスモールハッシュ値に関連付けられたイメージ同士は異なるという誤った想定を回避する。空間検索モジュール244は、座標系のバケットのうちのすべてにおいてクラスタセンタを検索しないことによって、計算効率を達成する。
【0068】
クラスタセンタ作成モジュール246は、バケットおよびイメージに関連付けられたクラスタセンタを作成する。ソーシャルネットワーキングシステム130によって受け取られた第1のイメージに関して、クラスタセンタ作成モジュール246は、その第1のイメージに関連付けられた第1のクラスタセンタを作成する。第2のイメージに関連付けられたスモールハッシュ値と、第1のクラスタセンタとの間における距離(たとえば、ユークリッド距離)が、しきい値の距離を超えていると決定された場合、クラスタ作成モジュール246は、第2のイメージに関する第2のクラスタセンタを作成する。そうでない場合、第2のイメージは、第1のクラスタセンタに関連付けられ、第2のイメージに関する新たなクラスタセンタは作成されない(これについて、以下にさらに詳細に記述する)。それぞれのクラスタセンタは、類似すると判断された1つまたは複数のイメージを表す。
【0069】
近接性決定モジュール248は、入ってくるイメージに関連付けられたスモールハッシュ値と、ソーシャルネットワーキングシステム130内に維持されている1つまたは複数の既存のイメージに関するクラスタセンタとの間における距離を決定する。イメージが類似するか否かを解析するために、近接性決定モジュール248は、(i)入ってくるイメージのスモールハッシュ値と、既存のイメージのクラスタセンタとの間における距離を計
算すること、および(ii)その計算された距離をしきい値の距離と比較する。近接性決定モジュール248は、スモールハッシュ値を中心にして半径を効果的に適用し、その半径は、しきい値の距離によって決定されている。しきい値の距離(および半径)の値は、構成可能であり、たとえば、近接性決定モジュール248、またはソーシャルネットワーキングシステム130の管理者によって決定される。近接性決定モジュール248は、クラスタセンタが半径内に収まる場合、および半径の外へ出る場合を決定する。計算された距離が、しきい値の距離よりも短い場合、入ってくるイメージは、既存のイメージのクラスタセンタに関連付けられる。逆に、計算された距離が、しきい値の距離よりも長い場合、クラスタセンタ作成モジュール246は、入ってくるイメージのスモールハッシュ値に関連付けられた新たなクラスタセンタを作成する。
【0070】
管理アクションモジュール270は、ソーシャルネットワーキングシステム130の管理者が、類似するイメージ同士の関連付けに基づいてイメージを管理することを可能にする。たとえば、管理アクションモジュール270は、類似するイメージ同士の取り下げおよびブロックを可能にする。
【0071】
ラージハッシングモジュール240、スモールハッシングモジュール242、空間検索モジュール244、クラスタセンタ作成モジュール246、近接性決定モジュール248、および管理アクションモジュール270の特徴および機能について、以下にさらに詳細に記述する。
【0072】
ハッシュ関数
特定の状況において、ソーシャルネットワーキングシステム130は、複製されたイメージの公開を制御または防止したいと望む場合がある。たとえば、ソーシャルネットワーキングシステム130は、それぞれのユーザが、そのユーザにとって一意のコンテンツを投稿することを奨励または要求する。別の例として、ソーシャルネットワーキングシステム130は、不適切なイメージおよびすべての類似するイメージの投稿を限定または制限する。特定のイメージに類似するイメージの識別は、そのイメージを、ソーシャルネットワーキングシステム130内に記憶されている既存のイメージのうちのそれぞれと比較することによって達成される。しかしながら、既存のイメージの数が多い場合があり、また、それぞれのイメージが多くのピクセルを含んでいる場合があるため、特定のイメージをそれぞれの既存のイメージと比較することは、計算集約的である場合があり、したがって実用的でない場合がある。
【0073】
イメージは、1つまたは複数のハッシュ関数を適用することによって類似性を探して解析される。ハッシュ関数は、(多くの情報ビットを含む)入力値を受け取って、その入力値を(その入力値よりも少ないビットを含む)ハッシュ値にマッピングする関数である。イメージに関して使用されるいくつかのハッシュ関数は、「コンテンツ認識型」である。コンテンツ認識型であるハッシュ関数が有する特徴としては、2つのイメージがコンテンツにおいて類似する場合、それらのイメージと、類似したハッシュ値とのマッピングが行われる。2つのイメージの2つのハッシュ値の間における距離が相対的に短い場合、それらのイメージは、類似すると判断される。たとえば、コンテンツ認識型ハッシュ関数は、第1のハッシュ値を得るためにりんごの第1のイメージに適用され、第2のハッシュ値を得るために別のりんごの第2のイメージに適用され、および第3のハッシュ値を得るために犬の第3のイメージに適用される。この例において、第1のイメージの第1のハッシュ値と、第2のイメージの第2のハッシュ値とは、距離において近い可能性が高く、それは第1のイメージおよび第2のイメージにおいて示されるコンテンツが類似するからである。対照的に、第1のイメージの第1のハッシュ値と、第3のイメージの第3のハッシュ値とは、距離において近い可能性が低く、それは第1のイメージおよび第3のイメージにおいて示されるコンテンツが異なるからである。同様に、第2のイメージの第2のハッシュ
値と、第3のイメージの第3のハッシュ値とは、距離において近い可能性が低く、それは第2のイメージおよび第3のイメージにおいて示されるコンテンツが異なるからである。
【0074】
イメージは、コンテンツ認識型ハッシュ関数を用いてハッシュされ、これらのイメージに関する「ラージ」ハッシュ値が得られる。たとえば、コンテンツ認識型ハッシュ関数は、数千または数百万のピクセルを含むイメージをハッシュして、数百の値を含むラージハッシュ値を得る。したがってラージハッシュ値は、値のセットによって表され、そのセット内の値の数は、コンテンツ認識型ハッシュ関数の次元数に対応する。コンテンツ認識型ハッシュ関数は、イメージを表すために使用される情報の量を大幅に減少させるが、ラージハッシュ値は、依然として相対的に多くの量の情報を含む。したがって、類似するイメージを識別するために多数のイメージのラージハッシュ値同士の間における距離を比較する、すなわち算出することは、計算的に不経済である。イメージ同士の間におけるあり得る類似性の決定は、ラージハッシュ値の次元数が多い場合、またはかなりの数のイメージが比較を必要とする場合、計算リソースの点で特に不経済である。たとえば、特定のイメージがソーシャルネットワーキングシステムのその他の任意のイメージに類似するか否かを決定するためには、数百万または数十億のイメージに関するラージハッシュ値が計算され、次いで比較されることが必要となり、かなりの計算負担が課される場合がある。
【0075】
計算負担に対処するために、局所性鋭敏型ハッシュ(lsh)が使用される。より少ない次元を有する「スモール」ハッシュ値を得るために、相対的に多数の次元を有するラージハッシュ値に局所性鋭敏型ハッシュが適用される。たとえば、局所性鋭敏型ハッシュは、数百の次元を有するラージハッシュ値をハッシュして、少ない(たとえば、2または3の)次元を有するスモールハッシュ値を得る。スモールハッシュ値は、少ない値を含むことができ、その一方でラージハッシュ値は、多くの値を含む。
【0076】
イメージxおよびイメージyに関して、局所性鋭敏型ハッシュは、下記のプロパティを伴ってラージハッシュ値からスモールハッシュ値を生成する:
lsh(hx)=lsh(hy)である場合:
d(hx,hy)<高い確率を伴うR;
d(hx,hy)>低い確率を伴うcR
この場合
hxは、イメージxのラージハッシュ値であり、
hyは、イメージyのラージハッシュ値であり、
lsh(hx)は、hxのスモールハッシュ値であり、
lsh(hy)は、hyのスモールハッシュ値であり、
d(hx,hy)は、hxとhyとの間におけるユークリッド距離である。
スモールハッシュ値lsh(hx)およびlsh(hy)は、それぞれラージハッシュ値hxおよびhyの局所性鋭敏型ハッシュから生じる。局所性鋭敏型ハッシュのプロパティによれば、スモールハッシュ値lsh(hx)およびlsh(hy)が等しい場合、ラージハッシュ値hxとhyとの間におけるユークリッド距離は、たとえば、高い確率を伴う適切な値Rよりも短い。また、スモールハッシュ値lsh(hx)およびlsh(hy)が等しい場合、ラージハッシュ値hxとhyとの間におけるユークリッド距離は、たとえば、低い確率を伴う係数cをかけた適切な値Rよりも長い。これらのプロパティは、スモールハッシュ値lsh(hx)およびlsh(hy)が等しい場合のイメージxとyとの間における類似性を反映する。
【0077】
局所性鋭敏型ハッシュは、ラージハッシュ値を、それらのラージハッシュ値よりも少ない次元数を有する座標系の1つまたは複数のベクトル上へ射影することによって、ラージハッシュ値の次元数を減少させる。それぞれのベクトルは、座標系の別々の軸を表し、座標系の1つの次元に対応する。座標系のベクトル同士は、互いに直交することが可能であ
り、または直交しないことも可能である。射影を通じてラージハッシュ値の次元数を減少させることは、イメージの類似性を決定するためにスモールハッシュ値同士をより効率的に比較することを可能にする。局所性鋭敏型ハッシュにおいて、ラージハッシュ値は、1つまたは複数のベクトルのセグメントへ射影される。スモールハッシュ値が収まるベクトルのセグメントを、対応する座標系におけるバケットにマッピングする。したがって、イメージに関連付けられたラージハッシュ値の射影の結果、スモールハッシュ値は、特定のバケットへと収まる。
【0078】
図3Aは、一次元座標系の単一のベクトル312上への4つのラージハッシュ値の射影310を示す。ベクトル312は、複数のセグメントへと分けられ、4つのセグメント314、316、318、320が、
図3Aに示される。一次元座標系において、それぞれのセグメントは、バケットと判断される。4つのイメージを表す4つのラージハッシュ値330、332、334、336が、ベクトル312上へ射影され、そのベクトル312の特定のバケット内に収まる。ラージハッシュ値330は、ベクトル312上へ射影され、バケット316内に収まる。ラージハッシュ値332、334、336は、ベクトル312上へ射影され、バケット318内に収まる。
図3Aにおいてラベル付けされていないが、4つのラージハッシュ値330、332、334、336に対応する4つのスモールハッシュ値が、4つの破線が終端しているベクトル312上の4つの点によって表されている。
【0079】
従来、同じバケット上へ射影するラージハッシュ値に関連付けられたイメージ同士は、類似すると判断され、別々のバケット上へ射影するラージハッシュ値に関連付けられたイメージ同士は、異なる(すなわち、類似しない)と判断される。
図3Aに示される例において、ラージハッシュ値332、334、336は、同じバケット318上へ射影しており、それらの対応するイメージ同士は、類似すると判断される。逆に、ラージハッシュ値330、332は、それぞれ別々のバケット316、318上へ射影しており、それらの対応するイメージ同士は、異なると判断される。イメージ同士が類似するか否かを、それらのイメージのラージハッシュ値が射影するバケットのみに基づいて決定することは、以下に記述されるように、誤った結果にしばしばつながる。
【0080】
図3Aに示される例において、ラージハッシュ値334は、ラージハッシュ値330、332、336から相対的に離れている。ラージハッシュ値330、332、336の間における相対的に小さな分離は、これらのラージハッシュ値同士の対応するイメージ同士が類似する可能性が高いことを示す。ラージハッシュ値334と、ラージハッシュ値330、332、336との間における相対的に大きな分離は、ラージハッシュ値334の対応するイメージが、ラージハッシュ値330、332、336の対応するイメージとは異なる可能性が高いことを示す。したがって、ラージハッシュ値332、336と同じバケット318内に収まるラージハッシュ値334の射影は、それらの対応するイメージ同士が類似することを最終的に示すべきでない。別の例として、ラージハッシュ値330は、ラージハッシュ値332に相対的に近い。ラージハッシュ値330、332の間における相対的に小さな分離は、それらの対応するイメージ同士が類似する可能性が高いことを示す。したがって、別々のバケット(すなわち、それぞれバケット316およびバケット318)内に収まるラージハッシュ値330およびラージハッシュ値332、336の射影は、それらの対応するイメージ同士が異なることを最終的に示すべきでない。
【0081】
図3Aにおける例によって示されるように、ラージハッシュ値334に関連付けられたイメージは、ラージハッシュ値332、336に関連付けられたイメージに類似すると誤って決定される場合がある。なぜなら、これらのラージハッシュ値は、同じバケット318に射影されるからである。さらに、ラージハッシュ値330に関連付けられたイメージは、ラージハッシュ値332に関連付けられたイメージとは異なると誤って決定される場
合がある。なぜなら、これらのラージハッシュ値は、別々のバケット316、318に射影されるからである。これらの誤りは、たとえば、(i)おそらくは多くの次元を有するラージハッシュ値を、
図3Aの一次元座標系における1つだけの次元を有するスモールハッシュ値にマッピングすること、および(ii)スモールハッシュ値をベクトル312のセグメントのうちの1つへと量子化することから生じる。
【0082】
一般には、ラージハッシュ値は、d次元座標系におけるd個のベクトル上へ射影されることが可能であり、dは、任意の整数値である。局所性鋭敏型ハッシュを含む射影において1つのベクトルの代わりに複数のベクトルを使用することは、類似するイメージおよび異なるイメージのさらに正確な識別を提供する。一般に、より多くのベクトルが射影において使用される場合、イメージの類似性および相違性に関する決定は、より正確になる。
【0083】
図3Bは、イメージの類似性および相違性をよりよく決定するための二次元座標系の2つのベクトル312、352上へのラージハッシュ値の射影350を示す。ベクトル312は、複数のセグメントへと分けられ、4つのセグメント314、316、318、320が、
図3Bに示される。ベクトル352もまた、複数のセグメントへと分けられ、3つのセグメント360、362、364が、
図3Bに示される。4つのラージハッシュ値330、332、334、336は、ベクトル312上へ、さらにベクトル352上へも射影され、それぞれのベクトルの特定のセグメント内に収まる。ラージハッシュ値334は、ベクトル352上へ射影され、セグメント364内に収まる。ラージハッシュ値330、332、336は、ベクトル352上へ射影され、セグメント362内に収まる。
図3Bにおいてラベル付けされていないが、それぞれのラージハッシュ値に対応するスモールハッシュ値が、(i)そのラージハッシュ値に関する第1の破線が終端しているベクトル312上の第1の点と、(ii)そのラージハッシュ値に関する第2の破線が終端しているベクトル352上の第2の点とによって表されている。それぞれのスモールハッシュ値は、ベクトル312、352上の2つの値を含む。バケットは、ベクトル312上のセグメントによって形成されている1つの辺と、ベクトル352上のセグメントによって形成されている別の辺とを有する四角形である。
【0084】
特定の例において、ベクトル352の別々のセグメント(すなわち、それぞれセグメント364およびセグメント362)内に収まるラージハッシュ値334およびラージハッシュ値330、332、336の射影は、ラージハッシュ値334の対応するイメージが、ラージハッシュ値330、332、336の対応するイメージとは異なることをさらに正確に示す。同様に、特定の例において、同じセグメント362内に収まるラージハッシュ値330、332、336の射影は、ラージハッシュ値330、332、336の対応するイメージ同士が類似することをさらに正確に示す。
【0085】
別々のバケットへと射影されるラージハッシュ値同士は、それらの対応するイメージ同士が異なることを意味し、同じバケットへと射影されるラージハッシュ値同士は、それらのイメージ同士が類似することを意味すると想定される場合が多い。しかしながら、(
図3Bに示される)複数のベクトルを含む射影に関しても、これらの想定は、しばしば誤っている。ラージハッシュ値の局所性鋭敏型ハッシュは、そのラージハッシュ値の次元数を減少させる。この減少は、情報の喪失をもたらす。次元数における減少が大きい場合、情報の喪失が大きくなる可能性があり、スモールハッシュ値の対応するイメージ同士が実際には異なっていても、スモールハッシュ値同士が類似する確率が増大する。したがって、別々のイメージが類似すると誤って判断される場合があり、それは、それらのスモールハッシュ値同士が類似するか、または同じバケット内に収まるからである。このタイプの誤りは、しばしば「フォルスポジティブ」と呼ばれる。さらに、バケットの境界を決定する任意の座標定義に基づいて、類似するイメージ同士が異なると誤って判断される場合があり、それは、それらのスモールハッシュ値同士が、別々のバケット内に収まるからである
。このタイプの誤りは、しばしば「フォルスネガティブ」と呼ばれる。
【0086】
フォルスポジティブの決定
図4A〜
図4Eは、本発明の一実施形態による、1つのバケットに関連付けられた複数のクラスタセンタの作成をグラフに示す。それぞれのクラスタセンタは、類似すると判断される1つまたは複数のイメージに関連付けられる。本発明の一実施形態において、それぞれのクラスタセンタは、1つまたは複数のバケットに関連付けられることも可能である。複数のクラスタセンタを1つのバケットに関連付けることは、同じバケット内に収まるすべてのスモールハッシュ値が、類似するイメージ同士に対応するという想定における誤りを回避する。1つのバケットに関連付けられた複数のクラスタセンタは、同じバケット内に収まるスモールハッシュ値同士に関連付けられた類似するイメージ同士および類似しないイメージ同士の間における区別を可能にする。このようにして、フォルスポジティブの問題に対処する。
【0087】
本発明の一実施形態において、はじめに、イメージに関するラージハッシュ値が、そのイメージにコンテンツ認識型ハッシュ関数を適用することによって生成される。次いで、そのイメージに関するスモールハッシュ値が、ラージハッシュ値に局所性鋭敏型ハッシュを適用することによって生成される。局所性鋭敏型ハッシュは、1つまたは複数のベクトルへのラージハッシュ値の射影を含む。そのような射影は、次元数kから次元数dへのラージハッシュ値の減少を含む。この減少は、下記のようなマトリックス乗算によって実行される:
u=Hv
この場合、vは、ラージハッシュ値を表すk個の値のセットを示しており、Hは、次元(d×k)を有するマトリックスを示しており、uは、スモールハッシュ値を表すd個の値のセットを示す。本発明の一実施形態において、k個の値のセットおよびd個の値のセットは、実数、整数、それらの組合せ、またはその他の任意の適切なタイプの値である。上記の方程式によって示されるように、ラージハッシュ値に(d×k)マトリックスHをかけて、スモールハッシュ値を得る。実際には、ラージハッシュ値を表すセットvと、マトリックスHのそれぞれの行との間においてドット積を実行して、スモールハッシュ値を表すセットu内の対応する値を得る。マトリックスHのそれぞれの行は、d次元座標系における1つのベクトルに対応する。このマトリックス乗算は、次元数dに等しい複数のベクトル上へのラージハッシュ値の射影をもたらす。本発明の一実施形態において、射影において複数のベクトルが使用されている場合、それらの複数のベクトルは、互いに直交している。d次元座標系のそれぞれのベクトルは、複数のセグメントへと分けられる。バケットは、d次元座標系のd個のベクトルのd個のセグメント(すなわち、それぞれのベクトルの1つのセグメント)によって形成される。
【0088】
本発明の一実施形態において、次元数dは、3という値を有するように選択され、バケットの総数は10
9である。本発明の別の実施形態において、次元数dは、3以外の値を有するように選択される。本発明の一実施形態において、1つのベクトルに関するセグメントの総数は10
3であり、したがって、バケットの総数は10
3*dである。例示の目的で、ここで示される射影は、二次元における、すなわち、次元数dが、2という値を有するように選択されている場合の局所性鋭敏型ハッシュの簡略化された例である。
【0089】
図4Aは、本発明の一実施形態による、新たなイメージに関連付けられた第1のクラスタセンタの作成を示す、局所性鋭敏型ハッシュに関する射影410および二次元座標系における関連したマッピング450のグラフ表示である。
図2におけるラージハッシングモジュール240は、(
図4Aに示されず)新たなイメージp1に関連付けられたラージハッシュ値408を生成する。新たなイメージは、たとえば、ソーシャルネットワーキングシステム130への投稿用に提案されたイメージである。
図2におけるスモールハッシン
グモジュール242は、ラージハッシュ値408をベクトル412およびベクトル424上へ射影する。ベクトル412は、複数のセグメントへと分けられ、4つのセグメント414、416、418、420が、
図4Aに示される。ベクトル424は、複数のセグメントへと分けられ、4つのセグメント426、428、430、432が、
図4Aに示される。スモールハッシングモジュール242は、ラージハッシュ値408を、ベクトル412のセグメント418内に収まるように射影する。スモールハッシングモジュール242はまた、ラージハッシュ値408を、ベクトル424のセグメント428内に収まるように射影する。
【0090】
二次元座標系におけるマッピング450は、射影410のグラフ表現を示す。この二次元座標系は、ベクトル424に対応するx軸460と、ベクトル412に対応するy軸462とを含む。x軸460は、ベクトル424の複数のセグメントに対応する複数の単位へと分けられている。y軸462も、ベクトル412の複数のセグメントに対応する複数の単位へと分けられている。ベクトル412、424のセグメントは、この二次元座標系におけるバケットを形成している。たとえば、ベクトル412のセグメント418、およびベクトル424のセグメント428は、この二次元座標系におけるバケット440を形成している。イメージp1に関連付けられたスモールハッシュ値434は、バケット440内に収まる。スモールハッシュ値434は、(i)ラージハッシュ値408からの破線がベクトル424上で終端している点に対応するxの値と、(ii)ラージハッシュ値408からの破線がベクトル412上で終端している点に対応するyの値とを含む。
【0091】
イメージp1に類似するイメージを検索するために、
図2における空間検索モジュール244は、いずれかのクラスタセンタがバケット440に関連付けられているか否かをはじめに決定する。いずれのクラスタセンタもバケット440に関連付けられていないため、クラスタセンタ作成モジュール246は、スモールハッシュ値434に基づいて第1のクラスタセンタ422を作成する。本発明の一実施形態において、新たなイメージに関連付けられたスモールハッシュ値が、あるバケット内に収まることをスモールハッシングモジュール242が決定した場合、空間検索モジュール244は、その同じバケット内で、その新たなイメージに類似するイメージに関連付けられたクラスタセンタを探す検索を実行する。検索を1つのバケット内のクラスタセンタに限定することによって、空間検索モジュール244は、検索プロセスを最適化して、検索がより迅速に効率よく行われることを可能にする。本発明の別の実施形態において、空間検索モジュール244は、以下にさらに詳細に記載されるように、新たなイメージのスモールハッシュ値が収まるバケットに加えて、座標系におけるその他のバケットを含むように検索のパラメータを定義する。
【0092】
図4Bは、本発明の一実施形態による、既存のクラスタセンタへの新たなイメージの関連付けを示す、局所性鋭敏型ハッシュに関する射影470および二次元座標系における関連したマッピング472のグラフ表示である。ラージハッシングモジュール240は、新たなイメージp2に関連付けられたラージハッシュ値448を生成する。スモールハッシングモジュール242は、ラージハッシュ値448をベクトル412およびベクトル424上へ射影する。スモールハッシングモジュール242は、ベクトル412のセグメント418内に、およびベクトル424のセグメント428内に収まるようにラージハッシュ値448を射影する。
【0093】
二次元座標系におけるマッピング472は、射影470のグラフ表現を示す。スモールハッシングモジュール242は、イメージp2に関連付けられたスモールハッシュ値436がバケット440内に収まることを決定する。イメージp2に類似するイメージを検索するために、空間検索モジュール244は、いずれかのクラスタセンタがバケット440に関連付けられているか否かをます決定する。クラスタセンタ422がバケット440に関連付けられているため、
図2における近接性決定モジュール248は、クラスタセンタ
422がスモールハッシュ値436に十分に近い距離にあるか否かを決定する。近接性決定モジュール248は、スモールハッシュ値436とクラスタセンタ422との間における距離を計算する。次いで近接性決定モジュール248は、計算された距離が、しきい値の距離よりも短いか否かを決定する。計算された距離が、しきい値の距離よりも短い場合(
図4Bの場合)、イメージp2は、イメージp1に類似すると判断され、イメージp2は、クラスタセンタ422に関連付けられる。
図4Cにおいて示されるように、新たなクラスタセンタは作成されない。逆に、計算された距離が、しきい値の距離を超えている場合(
図4Bに示されず)、イメージp2は、イメージp1とは異なると判断され、クラスタセンタ作成モジュール246は、イメージp2に関する新たなクラスタセンタを作成する。実際には、半径466を有する円468が、スモールハッシュ値436を中心にして描かれる。半径466は、しきい値の距離に対応する。クラスタセンタ422が、円468の内側に収まる場合、イメージp2は、イメージp1に類似すると判断され、クラスタセンタ422に関連付けられる。逆に、クラスタセンタ422が、円468の外側に存在する場合、イメージp2は、イメージp1とは異なると判断され、イメージp2に関する新たなクラスタセンタが作成される。
【0094】
本発明の一実施形態において、しきい値の距離(すなわち、半径466)は、任意の適切な値である。しきい値の距離の値は、イメージ同士が類似すると判断される前のイメージ同士の間における可能な実際の類似性の所望の度合いに基づいて選択される。たとえば、イメージ同士が、相対的に高い度合いの可能な実際の類似性がある場合にのみ、類似すると判断されるべきであるコンテキストにおいて、しきい値の距離は、相対的に小さな値に設定される。別の例として、イメージ同士が、あまり高くない度合いの可能な実際の類似性しかない場合でも、類似すると判断されるコンテキストにおいて、しきい値の距離は、相対的に大きな値に設定される。さらに別の例として、あるイメージが特に不適切なコンテキストにおいて、しきい値の距離は、その不適切なイメージに類似するイメージをより多く識別するために相対的に大きな値に設定される。したがって、しきい値の距離は、ソーシャルネットワーキングシステム130の所与のコンテキスト、たとえば、特定のアプリケーション、モジュール、キャンペーン、グループ、ユーザ、イメージなどにとって適切な任意の値を有するように、ソーシャルネットワーキングシステム130の管理者によって構成され、プログラムされることが可能である。
【0095】
図4Dは、本発明の一実施形態による、バケットに関連付けられている複数のクラスタセンタを示す、局所性鋭敏型ハッシュに関する射影480および二次元座標系における関連したマッピング482のグラフ表示である。ラージハッシングモジュール240は、新たなイメージp3に関連付けられたラージハッシュ値488を生成する。スモールハッシングモジュール242は、ラージハッシュ値488をベクトル412およびベクトル424上へ射影する。スモールハッシングモジュール242は、ベクトル412のセグメント418内に、およびベクトル424のセグメント428内に収まるようにラージハッシュ値488を射影する。二次元座標系におけるマッピング482は、射影480のグラフ表現を示す。スモールハッシングモジュール242は、イメージp3に関連付けられたスモールハッシュ値492がバケット440内に収まることを決定する。
【0096】
イメージp3に類似するイメージを検索するために、空間検索モジュール244は、いずれかのクラスタセンタがバケット440に関連付けられているか否かをはじめに決定する。クラスタセンタ422がバケット440に関連付けられているため、近接性決定モジュール248は、クラスタセンタ422がスモールハッシュ値492に十分に近い距離にあるか否かを決定する。近接性決定モジュール248は、スモールハッシュ値492とクラスタセンタ422との間における距離を計算する。次いで近接性決定モジュール248は、計算された距離が、しきい値の距離よりも短いか否かを決定する。計算された距離が、(
図4Dに示されるように)しきい値の距離を超えている場合、イメージp3は、イメ
ージp1とは異なると判断され、クラスタセンタ作成モジュール246は、
図4Eにおいて示されるように、イメージp3に関する新たなクラスタセンタ414を作成する。逆に、計算された距離が、しきい値の距離よりも短い場合、イメージp3は、イメージp1に類似すると判断され、イメージp3は、クラスタセンタ422に関連付けられ(
図4Dまたは
図4Eに示されず)、新たなクラスタセンタは作成されない。実際には、半径466を有する円490が、スモールハッシュ値492を中心にして描かれる。クラスタセンタ422が、円490の内側に収まる場合、イメージp3は、イメージp1およびイメージp2に類似すると判断され、イメージp3は、クラスタセンタ422に関連付けられる。逆に、クラスタセンタ422が、円490の外側に存在する場合、イメージp3は、イメージp1およびイメージp2とは異なると判断され、イメージp3に関する新たなクラスタセンタが作成される。
【0097】
さらなるイメージに関連付けられたスモールハッシュ値が、上述の様式と同様の様式で考慮される。たとえば、さらに別のイメージp4に関連付けられたスモールハッシュ値が、あるバケット内に収まる場合がある。そのバケットは、類似するイメージを検索するための検索空間を構成する。そのバケットに関連付けられたすべてのクラスタセンタが識別される。スモールハッシュ値と、それぞれの識別されたクラスタセンタとの間における距離が計算され、しきい値の距離と比較される。いずれかの識別されたクラスタセンタに関する計算された距離が、しきい値の距離よりも短い場合、イメージp4は、イメージp4に関するスモールハッシュ値までの最短距離を有する識別されたクラスタセンタ(たとえば、
図5に示される識別されたクラスタセンタ414)に関連付けられる。逆に、すべての識別されたクラスタセンタに関する計算された距離が、しきい値の距離よりも長い場合、イメージp4に関する新たなクラスタセンタが作成される。実際には、所定の半径の円が、スモールハッシュ値を中心にして描かれる。その円の中にクラスタセンタが見つかった場合、イメージp4は、そのクラスタセンタに関連付けられ、そのクラスタセンタに既に関連付けられているイメージに類似すると判断される。逆に、その円の中にクラスタセンタが見つからなかった場合、スモールハッシュ値に基づいて新たなクラスタセンタが作成され、イメージp4は、その他のクラスタセンタに関連付けられたその他のイメージとは異なると判断される。イメージp1、p2、p3、p4に加えてさらに別のイメージを考慮することも、同様の様式で進行する。一般には、任意の数のクラスタセンタが、所与のバケットに関連付けられる。
【0098】
図5は、本発明の一実施形態による、
図4A〜
図4Eに関連して記述されているバケット、クラスタセンタ、およびイメージの間における関連付けを表す図である。バケット440は、クラスタセンタ422、414に関連付けられている。クラスタセンタ422、414のそれぞれは、類似すると判断された1つまたは複数のイメージに関連付けられている。イメージp1 400、p2 402、p3 404、p4 406は、クラスタセンタ422、414に従ってグループ化されている。詳細には、イメージp1 400およびイメージp2 402は、類似すると判断されており、クラスタセンタ422に関連付けられている。イメージp3 404およびイメージp4 406は、類似すると判断されており、クラスタセンタ414に関連付けられている。バケット440、クラスタセンタ422、414、およびイメージp1 400、p2 402、p3 404、p4 406、ならびにそれらの関連付けは、ソーシャルネットワーキングシステム130のソーシャルグラフの一部を形成する。
【0099】
図6は、本発明の一実施形態による、フォルスポジティブを減少させるようにイメージの類似性を決定するためのプロセス600を示す。はじめに、ブロック610において、新たなイメージが受け取られる。ブロック612において、その新たなイメージに関するラージハッシュ値が決定される。ラージハッシュ値は、たとえば、コンテンツ認識型のラージハッシュ関数を使用して決定される。次いでブロック614において、ラージハッシ
ュ値に基づいて新たなイメージに関するスモールハッシュ値が決定される。スモールハッシュ値は、たとえば、局所性鋭敏型ハッシュ関数を使用して決定される。スモールハッシュ値に関するハッシュ関数は、たとえば、二次元座標系の例に関して上で
図4A〜
図4Eにおいて示されるように、ラージハッシュ値をd次元座標系におけるd個のベクトル上へ効果的に射影する。スモールハッシュ値は、d次元座標系を形成するd個のベクトルに関するd個の値を含む。ブロック616において、スモールハッシュ値が収まる(d次元座標系における)バケットが決定される。そのバケットは、(i)スモールハッシュ値のd個の値を量子化すること、および(ii)それらのd個の量子化された値によって形成されるd次元座標系におけるバケットを識別することによって決定される。
【0100】
ブロック620において、そのバケットに関連付けられているすべての既存のクラスタセンタが識別される。既存のクラスタセンタとは、既存のイメージに関して既に作成されているクラスタセンタである。その他のバケットに関連付けられたすべてのクラスタセンタを考慮する代わりに、そのバケットに関連付けられているクラスタセンタのみを考慮することによって、新たなイメージに関する検索空間は、大幅に減少する。次いでブロック622において、そのバケットに関連付けられたいずれかの既存のクラスタセンタがあるか否かの決定が行われる。ブロック622に関する回答が「いいえ」である場合、新たなイメージのスモールハッシュ値が、そのバケット上へ射影される最初のスモールハッシュ値である。次いでブロック636において、新たなイメージに関する新たなクラスタセンタが作成され、スモールハッシュ値の座標を与えられる。次いでブロック638において、新たなイメージが、その新たなクラスタセンタに関連付けられる。
【0101】
逆に、そのバケットに関連付けられた少なくとも1つの既存のクラスタセンタがあり、ブロック622に関する回答が「はい」である場合、ブロック624において、スモールハッシュ値と、そのバケットに関連付けられたそれぞれの既存のクラスタセンタとの間における距離が決定される。次いでブロック626において、スモールハッシュ値からいずれかの既存のクラスタセンタまでの距離が、しきい値の距離よりも短いか否かの決定が行われる。ブロック626に関する回答が「いいえ」である場合、ブロック634において、新たなイメージは、そのバケットに関連付けられている既存のクラスタセンタに関連付けられたイメージとは異なると判断される。次いでブロック636において、新たなイメージに関する新たなクラスタセンタが作成され、ブロック638において、新たなイメージが、その新たなクラスタセンタに関連付けられる。したがって、イメージ同士が類似すると判断されない場合、複数のクラスタセンタが作成されて、そのバケットに関連付けられる。
【0102】
しかしながら、スモールハッシュ値から少なくとも1つの既存のクラスタセンタまでの距離が、しきい値の距離よりも短く、ブロック626に関する回答が「はい」である場合、ブロック628において、新たなイメージのスモールハッシュ値までの最短距離を有する既存のクラスタセンタが識別される。スモールハッシュ値までのしきい値の距離よりも短い距離を有する別の既存のクラスタセンタが選択されることも可能である。いずれの場合においても、ブロック630において、新たなイメージは、識別された既存のクラスタセンタに関連付けられる。ブロック632において、新たなイメージは、識別された既存のクラスタセンタに関連付けられたイメージに類似すると判断される。
【0103】
本発明の一実施形態において、プロセス600は、全体的にまたは部分的にイメージの類似性解析モジュール132によって実行される。本発明の一実施形態において、プロセス600は、少なくとも部分的にソーシャルネットワーキングシステム130によって実行される。
【0104】
フォルスネガティブの決定
図7A〜
図7Gは、本発明の一実施形態による、イメージの類似性を決定する際の複数のバケットの説明をグラフに示す。2つの類似するイメージの2つのスモールハッシュ値は、d次元座標系において互いに対して相対的に近くに存在する場合があるが、量子化に起因して別々のバケット上へ射影される場合がある。たとえば、
図3Bにおけるラージハッシュ値330および332に対応するスモールハッシュ値同士は、互いに対して相対的に近くに存在するが、量子化に起因して2つの異なるバケット上へ射影される。複数のバケットにおいて類似するイメージを検索することは、量子化の影響を考慮する。複数のバケットを考慮することは、別々のバケット内に偶然に収まるスモールハッシュ値同士が別々のイメージに対応するという想定における誤りを回避する。このようにして、フォルスネガティブの問題に対処する。
【0105】
図7Aは、本発明の一実施形態による、新たなイメージに関連付けられた第1のクラスタセンタの作成を示す、局所性鋭敏型ハッシュに関する射影710および二次元座標系における関連するマッピング750のグラフ表示である。
図2におけるラージハッシングモジュール240は、新たなイメージp5に関連付けられたラージハッシュ値708を生成する。
図2におけるスモールハッシングモジュール242は、ラージハッシュ値708をベクトル712およびベクトル724上へ射影する。ベクトル712は、複数のセグメントへと分けられ、4つのセグメント714、716、718、720が、
図7Aに示される。ベクトル724は、複数のセグメントへと分けられ、4つのセグメント726、728、730、732が、
図7Aに示される。ラージハッシュ値708は射影され、ベクトル712のセグメント718内に、およびベクトル724のセグメント728内に収まる。
【0106】
二次元座標系におけるマッピング750は、射影710のグラフ表現を示す。この二次元座標系は、ベクトル724に対応するx軸760と、ベクトル712に対応するy軸762とを含む。x軸760は、ベクトル724の複数のセグメントに対応する複数の単位へと分けられている。y軸762も、ベクトル712の複数のセグメントに対応する複数の単位へと分けられている。ベクトル712、724のセグメントは、この二次元座標系におけるバケットを形成している。たとえば、ベクトル712のセグメント718、およびベクトル724のセグメント728は、この二次元座標系におけるバケット782を形成する。イメージp5に関連付けられたスモールハッシュ値734は、バケット782内に収まる。
【0107】
イメージp5に類似するイメージを検索するために、空間検索モジュール244は、バケット782だけでなく、隣接するバケットを考慮する。本発明の一実施形態において、空間検索モジュール244は、新たなイメージに関連付けられたスモールハッシュ値に最も近い交点をはじめに見つけることによって、隣接するバケットを決定する。交点とは、バケットのセットの角に対応するd次元座標系における点である。本発明の一実施形態において、イメージのスモールハッシュ値が量子化されることが可能であり、その量子化されたスモールハッシュ値は、交点と判断される。その交点と重なる(すなわち、その交点のところに角を有する)バケット同士は、隣接するバケット同士と判断される。一般には、1つの交点を共有する隣接するバケットの数は、d次元座標系における次元数(d)に依存する。d次元座標系において、1つの交点を共有する2
d個の隣接するバケットが存在する。
【0108】
本発明の一実施形態において、三次元座標系では、隣接するバケットの数は8であり、二次元座標系では、隣接するバケットの数は4である。一般には、類似するイメージを探して任意の数の隣接するバケットが検索される。検索するための隣接するバケットの数は、さまざまな要素、たとえば、類似するイメージを識別するために使用されるしきい値の距離、それぞれのバケットを形成するセグメントのサイズ、フォルスネガティブの所望の
確率などに依存する。例示の目的で、ここで示される射影は、二次元における、すなわち、次元数dが、2という値を有するように選択されている場合の局所性鋭敏型ハッシュの簡略化された例である。したがって、この簡略化された例に基づいて、検索するための隣接するバケットの数は、ここで示されるように、4である。
【0109】
図7Aにおいて示されるように、交点790は、スモールハッシュ値734に最も近い。次いで交点790の観点から、バケット782、784、786、788が、スモールハッシュ値734に関する隣接するバケットであると判断される。いずれかのクラスタセンタがバケット782、784、786、788に関連付けられているか否かに関する決定が行われる。クラスタセンタを探す検索を、限定された数のバケットに限定することによって、空間検索モジュール244は、検索プロセスを最適化して、検索がより迅速に効率よく行われることを可能にする。いずれのクラスタセンタもバケット782、784、786、788に関連付けられていないため、クラスタセンタ作成モジュール246は、スモールハッシュ値734に基づいて第1の新たなクラスタセンタ712を作成する。イメージp5が、クラスタセンタ712に関連付けられる。本発明の一実施形態において、第1のクラスタセンタ712は、4つの隣接するバケット782、784、786、788に関連付けられる。
【0110】
図7Bは、本発明の一実施形態による、既存のクラスタセンタへの新たなイメージの関連付けを示す、局所性鋭敏型ハッシュに関する射影770および二次元座標系における関連するマッピング772のグラフ表示である。ラージハッシングモジュール240は、新たなイメージp6に関連付けられたラージハッシュ値748を生成する。スモールハッシングモジュール242は、ラージハッシュ値748をベクトル712およびベクトル724上へ射影する。ラージハッシュ値748は射影され、ベクトル712のセグメント718内に、およびベクトル724のセグメント728内に収まる。
【0111】
二次元座標系におけるマッピング772は、射影770のグラフ表現を示す。スモールハッシングモジュール242は、イメージp6に関連付けられたラージハッシュ値748に基づいてスモールハッシュ値736を生成する。スモールハッシングモジュール242は、スモールハッシュ値736がバケット782内に収まることを決定する。イメージp6に類似するイメージを検索するために、空間検索モジュール244は、バケット782だけでなく、隣接するバケットを考慮する。
図7Bにおいて示されるように、交点790は、スモールハッシュ値736に最も近い。次いで交点790の観点から、バケット782、784、786、788が、スモールハッシュ値734と同様に、スモールハッシュ値736に関する隣接するバケットであると判断される。空間検索モジュール244は、いずれかのクラスタセンタが、隣接するバケット782、784、786、788のいずれかまたはすべてに関連付けられているか否かを決定する。本発明の一実施形態において、スモールハッシュ値736に関する隣接するバケット782、784、786、788の4つすべてに関連付けられたそれぞれのクラスタセンタが考慮される。別の実施形態において、スモールハッシュ値736に関する4つの隣接するバケット782、784、786、788のいずれか1つに関連付けられたそれぞれのクラスタセンタが考慮される。クラスタセンタ712が、バケット782、784、786、788に関連付けられているため、近接性決定モジュール248はさらに、クラスタセンタ712が、ユークリッド距離においてスモールハッシュ値736に十分に近いか否かを決定する。スモールハッシュ値736と、クラスタセンタ712との間における距離が、近接性決定モジュール248によって計算され、しきい値の距離と比較される。計算された距離が、しきい値の距離よりも短い場合(
図7Bの場合)、イメージp6は、イメージp5に類似すると判断され、イメージp6は、クラスタセンタ712に関連付けられる。
図7Cに示されるように、イメージp6に関する新たなクラスタセンタは作成されない。逆に、計算された距離が、しきい値の距離を超えている場合(
図7Bに示されず)、イメージp6は、イメージp5
とは異なると判断され、クラスタセンタ作成モジュール246は、イメージp6に関する新たなクラスタセンタを作成する。実際には、半径766を有する円768が、スモールハッシュ値736を中心にして描かれる。クラスタセンタ712が、円768の内側に収まる場合、イメージp6は、イメージp5に類似すると判断され、イメージp6は、クラスタセンタ712に関連付けられる。クラスタセンタ712が、円768の外側に存在する場合、イメージp6は、イメージp5とは異なると判断され、クラスタセンタ作成モジュール246は、バケット782、784、786、788に関連付けられた新たなクラスタセンタを作成する。
【0112】
しきい値の距離は、任意の適切な値であり、その値は、上で
図4B〜
図4Eに関連して記述されている考慮に基づいて選択される。
図7B〜
図7Fにおけるしきい値の距離は、
図4B〜
図4Eにおけるしきい値の距離よりも長い。本発明の一実施形態において、フォルスポジティブを決定するためのしきい値の距離は、フォルスネガティブを決定するためのしきい値の距離とは異なる。
【0113】
図7Dは、本発明の一実施形態による、新たなクラスタセンタへの新たなイメージの関連付けを示す、局所性鋭敏型ハッシュに関する射影774および二次元座標系における関連するマッピング776のグラフ表示である。ラージハッシングモジュール240は、新たなイメージp7に関連付けられたラージハッシュ値792を生成する。スモールハッシングモジュール242は、ラージハッシュ値792をベクトル712およびベクトル724上へ射影する。ラージハッシュ値792は射影され、ベクトル712のセグメント718内に、およびベクトル724のセグメント730内に収まる。
【0114】
二次元座標系におけるマッピング776は、射影774のグラフ表現を示す。スモールハッシングモジュール242は、イメージp7に関連付けられたラージハッシュ値792に基づいてスモールハッシュ値794を生成する。スモールハッシュ値794は、バケット784内に収まる。イメージp7に類似するイメージを検索するために、空間検索モジュール244は、バケット784だけでなく、隣接するバケットを考慮する。
図7Dにおいて示されるように、交点790は、スモールハッシュ値794に最も近い。次いで交点790の観点から、バケット782、784、786、788が、スモールハッシュ値734およびスモールハッシュ値736と同様に、スモールハッシュ値794に関する隣接するバケットであると判断される。空間検索モジュール244は、いずれかのクラスタセンタが、たとえば、バケット782、784、786、788のすべてまたはいずれかに関連付けられているか否かを決定する。クラスタセンタ712が、バケット782、784、786、788に関連付けられているため、近接性決定モジュール248はさらに、クラスタセンタ712が、ユークリッド距離においてスモールハッシュ値794に十分に近いか否かを決定する。スモールハッシュ値794と、クラスタセンタ712との間における距離が、近接性決定モジュール248によって計算され、しきい値の距離と比較される。計算された距離が、しきい値の距離を超えている場合(
図7Dに示される)、イメージp7は、イメージp5とは異なると判断され、クラスタセンタ作成モジュール246は、
図7Eに示されるように、イメージp7に関する新たなクラスタセンタ796を作成する。逆に、計算された距離が、しきい値の距離よりも短い場合(
図7Dの場合ではない)、イメージp7は、イメージp5に類似すると判断され、イメージp7は、クラスタセンタ712に関連付けられる(
図7Dに示されず)。実際には、半径766を有する円768が、スモールハッシュ値794を中心にして描かれる。クラスタセンタ712が、円768の内側に収まる場合、イメージp7は、イメージp5に類似すると判断され、イメージp7は、クラスタセンタ712に関連付けられる。クラスタセンタ712が、円768の外側に存在する場合、イメージp7は、イメージp5とは異なると判断され、クラスタセンタ作成モジュール246は、バケット782、784、786、788に関連付けられた新たなクラスタセンタ796を作成する(
図7Eに示される)。
【0115】
図7Fは、本発明の一実施形態による、新たなイメージおよび既存のクラスタセンタに関連付けられたスモールハッシュ値が、別々の隣接するバケット内に収まる場合の既存のクラスタセンタへの新たなイメージの関連付けを示す、局所性鋭敏型ハッシュに関する射影778および二次元座標系における関連するマッピング780のグラフ表示である。ラージハッシングモジュール240は、新たなイメージp8に関連付けられたラージハッシュ値798を生成する。スモールハッシングモジュール242は、ラージハッシュ値798をベクトル712およびベクトル724上へ射影する。ラージハッシュ値798は射影され、ベクトル712のセグメント718内に、およびベクトル724のセグメント726内に収まる。
【0116】
二次元座標系におけるマッピング780は、射影778のグラフ表現を示す。スモールハッシングモジュール242は、イメージp8に関連付けられたラージハッシュ値798に基づいてスモールハッシュ値746を生成する。スモールハッシュ値746は、バケット812内に収まる。イメージp8に類似するイメージを検索するために、空間検索モジュール244は、バケット812だけでなく、隣接するバケットを考慮する。
図7Fにおいて示されるように、交点830は、スモールハッシュ値746に最も近い。次いで交点830の観点から、バケット812、782、816、786が、スモールハッシュ値746に関する隣接するバケットであると判断される。
【0117】
空間検索モジュール244は、いずれかのクラスタセンタが、たとえば、バケット812、782、816、786のすべてまたはいずれかに関連付けられているか否かを決定する。クラスタセンタ712およびクラスタセンタ796が、バケット812、782、816、786に関連付けられているため、近接性決定モジュール248はさらに、クラスタセンタ712およびクラスタセンタ796のいずれかが、ユークリッド距離においてスモールハッシュ値746に十分に近いか否かを決定する。スモールハッシュ値746と、クラスタセンタ712および796のそれぞれとの間における距離が、近接性決定モジュール248によって計算され、しきい値の距離と比較される。いずれかの計算された距離が、しきい値の距離よりも短い場合(
図7Fの場合)、スモールハッシュ値746は、最も近いクラスタセンタ712に関連付けられ、イメージp8は、
図7Gにおいて示されるように、クラスタセンタ712に関連付けられたイメージp5に類似すると判断される。逆に、すべてのクラスタセンタに関する計算された距離が、しきい値の距離を超えている場合(
図7Fに示されず)、イメージp8は、これらのクラスタセンタのイメージとは異なると判断され、クラスタセンタ作成モジュール246は、イメージp8に関する新たなクラスタセンタを作成する。実際には、半径766を有する円768が、スモールハッシュ値746を中心にして描かれる。クラスタセンタ712またはクラスタセンタ796が、円768の内側に収まる場合、イメージp8は、それぞれイメージp5またはイメージp7に類似すると判断され、イメージp8は、それぞれクラスタセンタ712またはクラスタセンタ796のうちの近い方に関連付けられる。クラスタセンタ712およびクラスタセンタ796が、円768の外側に存在する場合、イメージp8は、それぞれイメージp5およびイメージp7とは異なると判断され、クラスタセンタ作成モジュール246は、バケット812、782、816、786に関連付けられた新たなイメージp8に関する新たなクラスタセンタを作成する。
【0118】
本発明の別の実施形態において、クラスタセンタは、隣接するバケットのグループの代わりに、単一のバケットに関連付けられる。新たなイメージに類似するイメージを検索するために、その新たなイメージに関するスモールハッシュ値に最も近い交点が、空間検索モジュール244によって決定される。この交点を共有するすべての隣接するバケットが識別されることが可能であり、これらの隣接するバケットに関連付けられたすべてのクラスタセンタが識別される。次いで、新たなイメージに関するスモールハッシュ値が、識別
されたクラスタセンタのうちのいずれかに十分に近いか(たとえば、しきい値の距離内にあるか)否かの決定が、近接性決定モジュール248によって行われる。
【0119】
さらなるイメージに関連付けられたスモールハッシュ値は、上述の様式と同様の様式で考慮される。たとえば、さらに別のイメージp9に関連付けられたスモールハッシュ値が、あるバケット内に収まる場合がある。そのスモールハッシュ値に最も近い交点が識別されることが可能であり、隣接するバケットが識別される。それらの隣接するバケットは、類似するイメージに関する検索空間を構成する。それらの隣接するバケットに関連付けられたすべてのクラスタセンタが識別される。スモールハッシュ値と、それぞれの識別されたクラスタセンタとの間における距離が計算され、しきい値の距離と比較される。いずれかの識別されたクラスタセンタに関する計算された距離が、しきい値の距離よりも短い場合、イメージp9は、識別されたクラスタセンタ(たとえば、イメージp9に関するスモールハッシュ値までの最短距離を有すると識別されたクラスタセンタ)に関連付けられる。逆に、すべての識別されたクラスタセンタに関する計算された距離が、しきい値の距離よりも長い場合、イメージp9に関する新たなクラスタセンタが作成される。実際には、適切な半径の円が、スモールハッシュ値を中心にして描かれる。その円の中にクラスタセンタが見つかった場合、たとえそのクラスタセンタが、異なるバケット内で見つかったとしても、イメージp9は、そのクラスタセンタに関連付けられ、そのクラスタセンタに既に関連付けられているイメージに類似すると判断される。その円の中にクラスタセンタが見つからなかった場合、スモールハッシュ値に基づいて新たなクラスタセンタが作成され、イメージp9は、その他のクラスタセンタに関連付けられたその他のイメージとは異なると判断される。イメージp5、p6、p7、p8、p9に加えてさらに別のイメージを考慮することも、同様の様式で進行する。
【0120】
上述の実施形態において、隣接するバケットは、共通の交点を共有するバケットのみを含むように形成されている。この実施形態において、交点を囲むバケットの1つの「層(レイヤ)」のみが考慮される。隣接するバケットは、その他の様式で形成されることも可能である。たとえば、隣接するバケットは、スモールハッシュ値に最も近い交点を囲むバケットの2つのレイヤを含むように形成される。この実施形態において、隣接するバケットは、スモールハッシュ値と同じ交点を共有する「内側」バケット、ならびに内側バケットのうちのいずれかと交点を共有する「外側」バケットを含む。一般には、フォルスネガティブの確率は、より多くの隣接するバケットを考慮することによって減少するが、それと引き換えに、検索空間および関連した計算が増大する。
【0121】
図8は、本発明の一実施形態による、
図7A〜
図7Gに関連して記述されているバケット、クラスタセンタ、およびイメージの間における関連付けを表す図である。グラフ850は、バケット782、784、786、788、812、816を含む。クラスタセンタ712は、隣接するバケット782、784、786、788に関連付けられている。クラスタセンタc7 796は、隣接するバケット782、784、786、788に関連付けられている。クラスタセンタ712、796のそれぞれは、類似すると判断されている1つまたは複数のイメージに関連付けられている。イメージp5 840、p6 842、p8 846は、類似すると判断されており、クラスタセンタ712に関連付けられている。イメージp7 844は、クラスタセンタ796に関連付けられている。バケット782、784、786、788、812、816、クラスタセンタc5 712、c7 796、およびイメージp5 840、p6 842、p7 844、p8 846、ならびにそれらの関連付けは、ソーシャルネットワーキングシステム130のソーシャルグラフの一部を形成する。
【0122】
図9は、本発明の一実施形態による、フォルスネガティブを減少させるようにイメージの類似性を決定するためのプロセス900を示す。はじめに、ブロック910において、
新たなイメージが受け取られる。ブロック912において、その新たなイメージのラージハッシュ値が決定される。ラージハッシュ値は、たとえば、コンテンツ認識型のラージハッシュ関数を使用して決定される。次いでブロック914において、新たなイメージのラージハッシュ値からスモールハッシュ値が決定される。スモールハッシュ値は、たとえば、局所性鋭敏型ハッシュ関数を使用することによって決定される。ブロック916において、スモールハッシュに最も近いd次元座標系の交点が決定される。その最も近い交点は、(i)スモールハッシュ値のd個の値を量子化すること、および(ii)それらのd個の量子化された値によって形成されるd次元座標系における交点を識別することによって決定される。
【0123】
ブロック918において、交点に基づいて、スモールハッシュ値に近いバケットが識別される。識別されるバケットは、スモールハッシュ値に隣接しているバケットで、かつブロック916において決定された交点をその交点のうちの1つとして有するバケットである。スモールハッシュ値に近いバケットは、その他の様式で識別されることも可能である。いずれの場合においても、ブロック920において、識別されたバケットに関連付けられているすべての既存のクラスタセンタが識別される。すべてのバケットに関連付けられたすべてのクラスタセンタを考慮する代わりに、スモールハッシュ値に近いバケットに関連付けられているクラスタセンタのみを考慮することによって、新たなイメージに関する検索空間は、大幅に減少する。次いでブロック922において、識別されたバケットのうちのいずれかに関連付けられたいずれかの既存のクラスタセンタがあるか否かの決定が行われる。ブロック922に関する回答が「いいえ」である場合、新たなイメージのスモールハッシュ値が、識別されたバケットのうちの1つの上へ射影される最初のスモールハッシュ値である。次いでブロック936において、新たなイメージに関する新たなクラスタセンタが作成され、スモールハッシュ値の座標を与えられる。次いでブロック938において、新たなイメージは、その新たなクラスタセンタに関連付けられる。
【0124】
逆に、それらの識別されたバケットに関連付けられた少なくとも1つの既存のクラスタセンタがあり、ブロック922に関する回答が「はい」である場合、ブロック924において、スモールハッシュ値と、いずれかの識別されたバケットに関連付けられたそれぞれの既存のクラスタセンタとの間における距離が決定される。次いでブロック926において、スモールハッシュ値からいずれかの既存のクラスタセンタまでの距離が、しきい値の距離よりも短いか否かの決定が行われる。ブロック926に関する回答が「いいえ」である場合、ブロック934において、新たなイメージは、既存のクラスタセンタに関連付けられたイメージとは異なると判断される。次いでブロック936において、新たなイメージに関する新たなクラスタセンタが作成され、ブロック938において、新たなイメージが、その新たなクラスタセンタに関連付けられる。
【0125】
しかしながら、スモールハッシュ値から少なくとも1つの既存のクラスタセンタまでの距離が、しきい値の距離よりも短く、ブロック926に関する回答が「はい」である場合、ブロック928において、新たなイメージのスモールハッシュ値までの最短距離を有する既存のクラスタセンタが識別される。スモールハッシュ値までのしきい値の距離よりも短い距離を有する別の既存のクラスタセンタが選択されることも可能である。いずれの場合においても、ブロック930において、新たなイメージは、識別された既存のクラスタセンタに関連付けられる。ブロック932において、新たなイメージは、識別された既存のクラスタセンタに関連付けられたイメージに類似すると判断される。
【0126】
本発明の一実施形態において、プロセス900は、全体的にまたは部分的にイメージの類似性解析モジュール132によって実行される。本発明の一実施形態において、プロセス900は、少なくとも部分的にソーシャルネットワーキングシステム130によって実行される。
【0127】
さまざまな実施形態において、本明細書における前述の図およびそれらの関連した論考は、関連するバケットを識別するために、およびクラスタセンタを作成するために、または識別されたバケットに関連付けられた既存のクラスタセンタと比較するために、イメージのラージハッシュ値のスモールハッシュ値を使用することについて記述している。別の実施形態において、スモールハッシュ値を用いて、関連するバケットが識別されると、クラスタセンタを作成するために、または識別されたバケットに関連付けられた既存のクラスタセンタと比較するために、スモールハッシュ値の代わりにラージハッシュ値が使用される。たとえば、フォルスポジティブの決定に関しては、新たなイメージに関するラージハッシュ値が決定される。ラージハッシュ値は、たとえば、コンテンツ認識型のラージハッシュ関数を使用して決定される。次いで、ラージハッシュ値に基づいて新たなイメージに関するスモールハッシュ値が決定される。スモールハッシュ値は、たとえば、局所性鋭敏型ハッシュ関数を使用して決定される。スモールハッシュ値に関するハッシュ関数は、ラージハッシュ値をd次元座標系におけるd個のベクトル上へ効果的に射影する。スモールハッシュ値は、d次元座標系を形成するd個のベクトルに関するd個の値を含む。スモールハッシュ値が収まる(d次元座標系における)バケットが決定される。
【0128】
そのバケットに関連付けられているすべての既存のクラスタセンタが識別される。既存のクラスタセンタとは、既存のイメージに関して既に作成されているクラスタセンタである。その他のバケットに関連付けられたすべてのクラスタセンタを考慮する代わりに、そのバケットに関連付けられているクラスタセンタのみを考慮することによって、新たなイメージに関する検索空間は、大幅に減少する。そのバケットに関連付けられたいずれかの既存のクラスタセンタがあるか否かに関する決定が行われる。存在しない場合、新たなイメージのラージハッシュ値が、そのバケット上へ射影される最初のラージハッシュ値である。次いで、新たなイメージに関する新たなクラスタセンタが作成されることが可能であり、ラージハッシュ値の座標を与えられる。次いで、新たなイメージが、その新たなクラスタセンタに関連付けられる。
【0129】
逆に、そのバケットに関連付けられた少なくとも1つの既存のクラスタセンタがある場合、ラージハッシュ値と、そのバケットに関連付けられたそれぞれの既存のクラスタセンタとの間における距離が決定される。次いで、ラージハッシュ値からいずれかの既存のクラスタセンタまでの距離が、しきい値の距離よりも短いか否かの決定が行われる。短くない場合、新たなイメージは、そのバケットに関連付けられている既存のクラスタセンタに関連付けられたイメージとは異なると判断される。次いで、新たなイメージに関する新たなクラスタセンタが作成されることが可能であり、新たなイメージが、その新たなクラスタセンタに関連付けられる。したがって、イメージ同士が類似すると判断されない場合、複数のクラスタセンタが作成されて、そのバケットに関連付けられる。
【0130】
しかしながら、ラージハッシュ値から少なくとも1つの既存のクラスタセンタまでの距離が、しきい値の距離よりも短い場合、新たなイメージのラージハッシュ値までの最短距離を有する既存のクラスタセンタが識別される。ラージハッシュ値までのしきい値の距離よりも短い距離を有する別の既存のクラスタセンタが選択されることも可能である。いずれの場合においても、新たなイメージは、識別された既存のクラスタセンタに関連付けられる。新たなイメージは、識別された既存のクラスタセンタに関連付けられたイメージに類似すると判断される。
【0131】
別の例として、フォルスネガティブの決定に関して、新たなイメージのラージハッシュ値が決定される。ラージハッシュ値は、たとえば、コンテンツ認識型のラージハッシュ関数を使用して決定される。次いで、新たなイメージのラージハッシュ値からスモールハッシュ値が決定される。スモールハッシュ値は、たとえば、局所性鋭敏型ハッシュ関数を使
用することによって決定される。スモールハッシュに最も近いd次元座標系の交点が決定される。その最も近い交点は、(i)スモールハッシュ値のd個の値を量子化すること、および(ii)それらのd個の量子化された値によって形成されるd次元座標系における交点を識別することによって決定される。
【0132】
交点に基づいて、スモールハッシュ値に近いバケットが識別される。識別されるバケットは、スモールハッシュ値に隣接しているバケットで、かつ以前に決定された交点をその交点のうちの1つとして有するバケットである。スモールハッシュ値に近いバケットは、その他の様式で識別されることも可能である。いずれの場合においても、識別されたバケットに関連付けられているすべての既存のクラスタセンタが識別される。すべてのバケットに関連付けられたすべてのクラスタセンタを考慮する代わりに、スモールハッシュ値に近いバケットに関連付けられているクラスタセンタのみを考慮することによって、新たなイメージに関する検索空間は、大幅に減少する。次いで、識別されたバケットのうちのいずれかに関連付けられたいずれかの既存のクラスタセンタがあるか否かの決定が行われる。存在しない場合、新たなイメージのラージハッシュ値が、識別されたバケットのうちの1つの上へ射影される最初のラージハッシュ値である。次いで、新たなイメージに関する新たなクラスタセンタが作成されることが可能であり、ラージハッシュ値の座標を与えられる。次いで、新たなイメージが、その新たなクラスタセンタに関連付けられる。
【0133】
逆に、それらの識別されたバケットに関連付けられた少なくとも1つの既存のクラスタセンタがある場合、ラージハッシュ値と、いずれかの識別されたバケットに関連付けられたそれぞれの既存のクラスタセンタとの間における距離が決定される。次いで、ラージハッシュ値からいずれかの既存のクラスタセンタまでの距離が、しきい値の距離よりも短いか否かの決定が行われる。短くない場合、新たなイメージは、既存のクラスタセンタに関連付けられたイメージとは異なると判断される。次いで、新たなイメージに関する新たなクラスタセンタが作成されることが可能であり、新たなイメージが、その新たなクラスタセンタに関連付けられる。
【0134】
しかしながら、ラージハッシュ値から少なくとも1つの既存のクラスタセンタまでの距離が、しきい値の距離よりも短い場合、新たなイメージのラージハッシュ値までの最短距離を有する既存のクラスタセンタが識別される。ラージハッシュ値までのしきい値の距離よりも短い距離を有する別の既存のクラスタセンタが選択されることも可能である。いずれの場合においても、新たなイメージは、識別された既存のクラスタセンタに関連付けられる。新たなイメージは、識別された既存のクラスタセンタに関連付けられたイメージに類似すると判断される。
【0135】
管理アクション
イメージをクラスタセンタに関連付けることは、類似するイメージに関してソーシャルネットワーキングシステム130によって取られる管理アクションを容易にする。
図2における管理アクションモジュール270は、類似するイメージに関する取り下げおよびブロック機能を実行するようにプログラムされる。取り下げまたはブロック機能は、たとえば、あるイメージが、特定の状況において好ましくないと判断され、またはその他の形で不適切であると判断され、すべての類似するイメージが、ソーシャルネットワーキングシステム130から取り下げまたはブロックされるべきである場合に実行される。これらの機能は、クラスタセンタと、それらの対応する類似するイメージとの間における関連付けの経路をたどること、または「クローリング」によって実行される。
【0136】
図10A〜
図10Bにおいて、クラスタセンタ1010は、イメージp10 1014、p11 1016と相互に(すなわち、二方向に)関連付けられている。クラスタセンタ1012は、イメージp12 1018と相互に(すなわち、二方向に)関連付けられ
ている。
図10Aは、本発明の一実施形態による管理アクションモジュール270によって実行される取り下げ機能を示す。たとえば、イメージp10 1014が不適切であると判断されている場合、イメージp10 1014に関連付けられたクラスタセンタ1010が、それらの関連付けの経路をイメージp10 1014からクラスタセンタ1010へたどることによって識別される。次いで、クラスタセンタ1010に関連付けられたイメージp11 1016は、それらの関連付けの経路をクラスタセンタ1010からイメージp11 1016へたどることによって識別される。類似した様式で、イメージp11 1016のように、イメージp10 1014に類似していて、かつクラスタセンタ1010に関連付けられているすべてのイメージが識別される。したがって、クラスタセンタ1010が識別されると、管理アクションは、すべての関連付けの経路をクラスタセンタ1010からすべての関連付けられたイメージ(たとえば、イメージp10 1014、p11 1016)へたどって、それらのイメージをソーシャルネットワーキングシステム130から取り下げる。
【0137】
図10Bは、本発明の一実施形態による管理アクションモジュール270によって実行されるブロック機能を示す。たとえば、イメージp12 1018が不適切であると判断されている場合、イメージp12 1018に関連付けられたクラスタセンタ1012が、それらの関連付けの経路をイメージp12 1018からクラスタセンタ1012へたどることによって識別される。イメージp12 1018に類似したすべてのイメージが、クラスタセンタ1012に関連付けられる。したがって、クラスタセンタ1012が識別されると、クラスタセンタ1012は、管理アクションによって制御されることが可能であり、それにより、管理アクションによって制御されなければクラスタセンタ1012に関連付けられるであろうその後のすべての類似するイメージがソーシャルネットワーキングシステム130に投稿されることが不可能となる。
【0138】
本発明の一実施形態において、管理アクションモジュール270は、その他の機能を実行する。たとえば、ソーシャルネットワーキングシステム130が、類似するイメージの投稿を許可する場合、類似するイメージを投稿したまたは投稿するユーザに対して、メッセージが配信されることが可能であり、またはアクションが取られる。対象のイメージに対応するクラスタセンタが、それらの関連付けの経路を、対象のイメージから、関連付けられたクラスタセンタへたどることによって識別される。次いで、対象のイメージに類似したすべてのイメージが、それらの関連付けの経路をそのクラスタセンタからたどることによって識別される。次いで、類似するイメージに関連付けられているソーシャルネットワーキングシステム130のユーザが、それらの関連付けの経路を、類似するイメージのうちのそれぞれから、それらの関連付けられたユーザへたどることによって識別される。ユーザが識別されると、それらのユーザへメッセージが配信されることが可能であり、またはそれらのユーザに関してアクションが取られる。
【0139】
図11は、本発明の一実施形態による、イメージの使用を制限するためのプロセス1100を示す。はじめに、ブロック1112において、第1のイメージに関するラージハッシュ値が決定される。ブロック1114において、そのラージハッシュ値に基づいて、第1のイメージに関するスモールハッシュ値が決定される。ブロック1116において、第1のイメージに関連付けられた第1の値(たとえば、スモールハッシュ値)と、少なくとも1つのイメージに関連付けられた第1のクラスタセンタとの間における距離が決定される。ブロック1118において、決定された距離がしきい値の距離よりも長い場合、第1のイメージおよび少なくとも1つのイメージは類似しないと決定される。ブロック1120において、決定された距離がしきい値の距離よりも長い場合、第2のクラスタセンタが作成される。ブロック1122において、決定された距離がしきい値の距離よりも長い場合、第1のイメージが、第2のクラスタセンタに関連付けられる。ブロック1124において、決定された距離がしきい値の距離よりも短い場合、第1のイメージおよび少なくと
も1つのイメージは類似すると決定される。ブロック1126において、決定された距離がしきい値の距離よりも短い場合、第1のイメージが、第1のクラスタセンタに関連付けられる。ブロック1128において、第1のクラスタセンタの識別に基づいて、第1のイメージおよび少なくとも1つのイメージの使用が制限される。
【0140】
本発明の一実施形態において、プロセス1100は、全体的にまたは部分的にイメージの類似性解析モジュール132によって実行される。本発明の一実施形態において、プロセス1100は、少なくとも部分的にソーシャルネットワーキングシステム130によって実行される。
【0141】
まとめ
前述のプロセスおよび特徴は、さまざまなマシンおよびコンピュータシステムアーキテクチャによって、およびさまざまなネットワークおよびコンピューティング環境において実装される。
図12は、上で識別されたコンピューティングデバイスのうちの1つまたは複数を実装するために使用されるコンピュータシステム1200の一例を示す。コンピュータシステム1200は、本明細書において論じられているプロセスおよび特徴をコンピュータシステム1200に実行させるための命令のセットを含む。コンピュータシステム1200は、その他のマシンに接続される(たとえば、ネットワーク接続される)。ネットワーク接続された展開において、コンピュータシステム1200は、クライアント−サーバネットワーク環境におけるサーバマシンもしくはクライアントマシンの許容能力内で、またはピアツーピア(もしくは分散)ネットワーク環境におけるピアマシンとして機能する。本発明の一実施形態において、コンピュータシステム1200は、ソーシャルネットワーキングシステム130、ユーザデバイス110、および外部システム120、またはそれらの構成要素である。本発明の一実施形態において、コンピュータシステム1200は、ソーシャルネットワーキングシステム130のすべてまたは一部を構成する多くのサーバのうちの1つのサーバである。
【0142】
コンピュータシステム1200は、本明細書において記述されているプロセスおよび特徴を対象とする、プロセッサ1202、キャッシュメモリ1204、ならびに、コンピュータ可読媒体上に記憶されている1つまたは複数の実行可能なモジュールおよびドライバを含む。加えて、コンピュータシステム1200は、ハイパフォーマンス入出力(I/O)バス1206および標準I/Oバス1208を含む。ホストブリッジ1210は、プロセッサ1202をハイパフォーマンスI/Oバス1206に結合しており、その一方で、I/Oバスブリッジ1212は、2つのバス1206および1208を互いに結合している。システムメモリ1214および1つまたは複数のネットワーク/通信インタフェース1216は、バス1206に結合している。コンピュータシステム1200はさらに、ビデオメモリと、そのビデオメモリに結合されているディスプレイデバイス(図示せず)とを含む。マスストレージ1218、およびI/Oポート1220は、バス1208に結合している。コンピュータシステム1200は、バス1208に結合されているキーボードおよびポインティングデバイス、ディスプレイデバイス、またはその他のI/Oデバイス(図示せず)を任意選択で含む。集合的に、これらの要素は、広いカテゴリのコンピュータハードウェアシステムを表すことを意図されており、それらのコンピュータハードウェアシステムは、インテルコーポレーション(Intel Corporation)[米国カリフォルニア州サンタクララ(Santa Clara)所在]によって製造されたx86互換プロセッサ、およびアドバンストマイクロデバイセズインコーポレイティッド(Advanced Micro Devices(AMD),Inc.)[米国カリフォルニア州サニーベール(Sunnyvale)所在]によって製造されたx86互換プロセッサ、ならびにその他の任意の適切なプロセッサに基づくコンピュータシステムを含むが、それらには限定されない。
【0143】
オペレーティングシステムは、ソフトウェアアプリケーション(図示せず)との間におけるデータの入力および出力を含む、コンピュータシステム1200のオペレーションを管理および制御する。オペレーティングシステムは、システム上で実行されるソフトウェアアプリケーションと、システムのハードウェア構成要素との間におけるインタフェースを提供する。任意の適切なオペレーティングシステム、たとえば、LINUXオペレーティングシステム、アップルコンピュータインコーポレイティッド(Apple Computer Inc.)[米国カリフォルニア州クパチーノ(Cupertino)所在]から利用可能なApple Macintoshオペレーティングシステム、UNIX(登録商標)オペレーティングシステム、Microsoft(登録商標)Windows(登録商標)オペレーティングシステム、BSDオペレーティングシステムなどが使用される。その他の実装態様も可能である。
【0144】
コンピュータシステム1200の要素について、以下にさらに詳細に記載する。とりわけ、ネットワークインタフェース1216は、コンピュータシステム1200と、イーサネット(たとえば、IEEE802.3)ネットワーク、バックプレーン等などの広範囲のネットワークのうちのいずれかとの間における通信を提供する。マスストレージ1218は、上で識別されたそれぞれのコンピューティングシステムによって実装される上述のプロセスおよび特徴を実行するためのデータおよびプログラミング命令のための永続的なストレージを提供し、その一方で、システムメモリ1214(たとえば、DRAM)は、プロセッサ1202によって実行される場合のデータおよびプログラミング命令のための一時的なストレージを提供する。I/Oポート1220は、コンピュータシステム1200に結合されるさらなる周辺デバイス同士の間における通信を提供する1つまたは複数のシリアルおよび/またはパラレル通信ポートである。
【0145】
コンピュータシステム1200は、さまざまなシステムアーキテクチャを含むことができ、コンピュータシステム1200のさまざまな構成要素は、再構成され得る。たとえば、キャッシュ1204は、プロセッサ1202とともにオンチップである。あるいは、キャッシュ1204およびプロセッサ1202がともに「プロセッサモジュール」としてパッケージ化されて、プロセッサ1202が「プロセッサコア」と呼ばれることも可能である。さらに、本発明の特定の実施形態は、上述の構成要素のうちのすべてを必要とするとも、または含むとも限らない場合がある。たとえば、標準I/Oバス1208に結合される周辺デバイスが、ハイパフォーマンスI/Oバス1206に結合することも可能である。加えて、いくつかの実施形態において、単一のバスのみが存在して、コンピュータシステム1200の構成要素が、その単一のバスに結合されることも可能である。さらに、コンピュータシステム1200は、さらなるプロセッサ、ストレージデバイス、またはメモリなどのさらなる構成要素を含む。
【0146】
一般には、本明細書において記述されているプロセスおよび特徴は、オペレーティングシステムもしくは特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール、または、「プログラム等」と呼ばれる一連の命令の一部として実装される。たとえば、本明細書において記述されている特定のプロセスを実行するために、1つまたは複数のプログラムが使用される。これらのプログラムは、典型的には、コンピュータシステム1200内のさまざまなメモリおよびストレージデバイス内に1つまたは複数の命令を含み、それらの命令は、1つまたは複数のプロセッサによって読み取られて実行されたときに、本明細書において記述されているプロセスおよび特徴を実行するためのオペレーションをコンピュータシステム1200に実行させる。本明細書において記述されているプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア(たとえば、特定用途向け集積回路)、またはそれらの任意の組合せにおいて実装される。
【0147】
一実装態様において、本明細書において記述されているプロセスおよび特徴は、コンピ
ュータシステム1200によって分散コンピューティング環境において個別にまたは集合的に実行される一連の実行可能なモジュールとして実装される。前述のモジュールは、ハードウェア、コンピュータ可読媒体(もしくはマシン可読媒体)上に記憶されている実行可能なモジュール、または両方の組合せによって実現される。たとえば、それらのモジュールは、プロセッサ1202など、ハードウェアシステム内のプロセッサによって実行される複数のまたは一連の命令を含む。はじめに、それらの一連の命令は、マスストレージ1218などのストレージデバイス上に記憶される。しかしながら、それらの一連の命令は、任意の適切なコンピュータ可読記憶媒体上に記憶される。さらに、それらの一連の命令は、ローカルに記憶される必要はなく、ネットワーク/通信インタフェース1216を通じてネットワーク上のサーバなどの遠隔のストレージデバイスから受け取られる。それらの命令は、マスストレージ1218などのストレージデバイスからメモリ1214へとコピーされ、次いでプロセッサ1202によってアクセスされ実行される。
【0148】
コンピュータ可読媒体の例として、記録可能なタイプの媒体、たとえば、揮発性メモリデバイスおよび不揮発性メモリデバイス、ソリッドステートメモリ、フロッピー(登録商標)およびその他の取り外し可能なディスク、ハードディスクドライブ、磁気媒体、光ディスク(たとえば、コンパクトディスク読み取り専用メモリ(CD ROM)、デジタル多用途ディスク(DVD))、その他の類似した非一時的な(もしくは一時的な)、有形の(もしくは無形の)記憶媒体、または、本明細書において記述されているプロセスおよび特徴のうちの任意の1つもしくは複数を実行するためにコンピュータシステム1200によって実行するための一連の命令を記憶、エンコード、もしくは搬送するのに適した任意のタイプの媒体が含まれるが、それらには限定されない。
【0149】
説明の目的から、この記述の徹底的な理解を提供するために、多くの特定の詳細が示される。しかしながら、これらの特定の詳細を伴わずに本開示の実施形態が実施されることは、当業者にとって明らかであろう。いくつかの例において、この記述をわかりにくくすることを回避するために、モジュール、構造、プロセス、特徴、およびデバイスが、ブロック図の形式で示される。その他の例において、データおよび論理フローを表すために、機能ブロック図およびフローチャートが示される。ブロック図およびフローチャートの構成要素(たとえば、モジュール、ブロック、構造、デバイス、特徴など)は、本明細書において明示的に記述され示される以外の様式で、さまざまに結合されること、切り離されること、取り外されること、並べ替えられること、および置き換えられる。
【0150】
本明細書における、「一実施形態」、「一実施形態」、「その他の実施形態」などへの言及は、その実施形態に関連して記述されている特定の機能、設計、構造、または特徴が、本開示の少なくとも一実施形態に含まれていることを意味する。たとえば、「一実施形態において(における)」または「一実施形態において(における)」という語句が、本明細書におけるさまざまな個所に登場しても、それらは、必ずしもすべて同じ実施形態を示しているとは限らず、また、その他の実施形態に対して相互に排他的な別々のまたは代替の実施形態であるとも限らない。その上、「実施形態」などへの明示的な言及があるか否かを問わず、いくつかの実施形態においてさまざまに結合されることおよび含まれること、さらにまた、その他の実施形態においてさまざまに省略されるさまざまな特徴が記述されている。同様に、いくつかの実施形態にとっては好ましいことまたは必要なことかもしれないが、その他の実施形態にとってはそうではないかもしれないさまざまな特徴が記述されている。
【0151】
本明細書において使用されている言葉は、主として読みやすさおよび教示上の目的で選択されており、本発明の主題に関する線引きまたは画定を行うために選択されてはいない場合がある。したがって、本発明の範囲は、この詳細な記述によってではなく、本明細書に基づく出願上で生じるあらゆる請求項によって限定されることが意図されている。した
がって、本発明の実施形態の開示は、本発明の範囲を例示するものであり、本発明の範囲を限定するものではないことが意図されており、本発明の範囲は、添付の特許請求の範囲において示される。
イメージの類似性を決定するための技術である。一実施形態において、あるイメージに関連付けられているスモールハッシュ値が、バケット内に収まると決定される。そのバケットに既存のクラスタセンタが関連付けられている場合、スモールハッシュ値と、そのクラスタセンタとの間における距離が決定される。スモールハッシュ値からそのクラスタセンタまでの距離が、しきい値の距離よりも長い場合、そのイメージは、そのクラスタセンタに関連付けられたその他のイメージとは異なると判断される。次いで、新たなクラスタセンタが作成されて、そのバケットに関連付けられ、そのイメージは、その新たなクラスタセンタに関連付けられる。そのバケット内に収まるスモールハッシュ値を有するイメージが類似すると判断されない場合、そのバケットに複数のクラスタセンタが関連付けられる。別の実施形態において、バケットが識別されると、イメージの類似性を評価するために、スモールハッシュ値の代わりに、ラージハッシュ値と、クラスタセンタとの間における距離が決定される。