JP2019532445A - 多義コードを使用した類似度検索 - Google Patents

多義コードを使用した類似度検索 Download PDF

Info

Publication number
JP2019532445A
JP2019532445A JP2019533301A JP2019533301A JP2019532445A JP 2019532445 A JP2019532445 A JP 2019532445A JP 2019533301 A JP2019533301 A JP 2019533301A JP 2019533301 A JP2019533301 A JP 2019533301A JP 2019532445 A JP2019532445 A JP 2019532445A
Authority
JP
Japan
Prior art keywords
query
representing
user
vector representing
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019533301A
Other languages
English (en)
Inventor
ドーズ、マシス
ジェグ、エルベ
パーロンニン、フローレント
Original Assignee
フェイスブック,インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by フェイスブック,インク. filed Critical フェイスブック,インク.
Publication of JP2019532445A publication Critical patent/JP2019532445A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking

Abstract

一実施形態では、方法は、n次元のベクトル空間のn次元のベクトルによって表されるクエリを受け取る工程と、クエリを表すベクトルを量子化器を使用して量子化する工程であって、量子化されたベクトルは多義コードに対応し、量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために機械学習により訓練されている、工程と、複数のコンテンツ・オブジェクトのそれぞれについて、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、計算したハミング距離が閾値量未満であるとの決定に基づいて、複数のコンテンツ・オブジェクトのうちの1つのコンテンツ・オブジェクトがクエリの近似最近傍であると決定する工程とを含む。

Description

本開示は、一般に、ソーシャル・グラフと、ソーシャル・ネットワーキング環境内でオブジェクトの検索を行うこととに関する。
ソーシャル・ネットワーキング・システム(ソーシャルネットワーキング・ウェブサイトを含むことができる)は、そのソーシャル・ネットワーキング・システムのユーザ(人または組織など)がそのソーシャル・ネットワーキング・システムと、およびそのソーシャル・ネットワーキング・システムを通じて互いに対話することを可能にすることができる。ソーシャル・ネットワーキング・システムは、ユーザからの入力を用いて、そのユーザに関連付けられているユーザ・プロフィールを作成して、ソーシャル・ネットワーキング・システム内に記憶することができる。ユーザ・プロフィールは、人口統計学的情報、通信チャネル情報、およびユーザの個人的な関心に関する情報を含むことができる。ソーシャル・ネットワーキング・システムは、ユーザからの入力を用いて、そのユーザと、ソーシャル・ネットワーキング・システムのその他のユーザとの関係のレコードを作成および記憶すること、ならびにサービス(たとえば、ウォール投稿、写真共有、イベント編成、メッセージング、ゲーム、または広告)を提供して、ユーザ同士の間における社会的な交流を容易にすることも可能である。
ソーシャル・ネットワーキング・システムは、そのサービスに関連したコンテンツまたはメッセージを、1つまたは複数のネットワークを通じて、ユーザのモバイルまたはその他のコンピューティング・デバイスへ送信することができる。ユーザは、自分のユーザ・プロフィールおよびソーシャル・ネットワーキング・システム内のその他のデータにアクセスするためにソフトウェア・アプリケーションを自分のモバイルまたはその他のコンピューティング・デバイス上にインストールすることもできる。ソーシャル・ネットワーキング・システムは、ユーザにつながっているその他のユーザの集約されたストーリのニュース・フィードなど、ユーザに表示するためのコンテンツ・オブジェクトのパーソナライズされたセットを生成することができる。
ソーシャル・グラフ分析は、ソーシャルな関係を、ノードとエッジとから構成されているネットワーク理論の点から見る。ノードは、ネットワーク内の個々の行為主体を表し、エッジは、行為主体同士の間における関係を表す。結果として生じるグラフ・ベースの構造は、しばしば非常に複雑である。多くのタイプのノード、およびノード同士をつなげるための多くのタイプのエッジが存在することが可能である。ソーシャル・グラフは、その最もシンプルな形態においては、調査されるすべてのノードの間における、関連があるすべてのエッジのマップである。
ソーシャル・ネットワーキング・システムに関連付けられている例示的ネットワーク環境を示す図。 例示的ソーシャル・グラフを示す図。 類似の重心間の距離がハミング空間で小さくなる、重心の計算法の再配列を示す図。 バイナリ・ベクトルとして使用されるコードの最適化の前後の比較を示す図。 双対(dual)戦略に対するハミング閾値の影響を示す図。 距離ベースの目的関数の反復に従う多義コードのパフォーマンスを示す図。 FYCNN90Mベンチマークに多義コードを適用するさまざまな方法のパフォーマンスを示す図。 グラフ内の画像モードとその近傍の例を示す図。 多義コードを使用して類似度検索を行うための例示的な方法900を示す図。 例示的なコンピュータ・システムを示す図。
特定の実施形態において、ソーシャル・ネットワーキング・システムは、たとえば、クエリ画像に類似した画像のデータベースを検索するために、圧縮ドメインで近似最近傍(ANN:approximate nearest neighbor)探索を行うことができる。方法は、直積量子化とバイナリ・コードのハミング距離との両方を使用して比較を行うために使える多義コード(polysemous code)を使用する。これを達成するために、方法は、データベースのベクトル空間の量子化から始めることができる。次いで、バイナリ・コードへのベクトル・インデックスの割り当てを、ハミング距離が重心間距離を近似化するように最適化することができる。次いで、ベクトル・インデックスを反復処理し、選ばれた閾値未満のハミング距離をもつベクトルをフィルタリングし、ハミング距離が十分に近いベクトルの直積量子化距離を計算することによって、クエリ・ベクトルを2段階でデータベースと比較することができる。この手法は、画像検索、動画検索、およびソーシャル・ネットワークの社会的近接性分析を含むが、これだけに限定されない、ANNのあらゆる適用に役立つ。
方法を詳しく述べると、第1工程は、ベクトルをサブベクトルに分割し、そうして特徴空間を積空間として分解することによって、ベクトル空間を量子化することである。各サブベクトルは、部分空間の一部であり、異なる量子化器を使用して量子化することができる。そして、ベクトル間の距離は、対応するサブベクトル間の距離の和として推定することができる。直積量子化を使用して、サブベクトル間の距離は、ルックアップ・テーブルから効率的に読み取ることができる。直積量子化は、ディクショナリを使用して第2粗量子化器を作成することによって、距離の推定と従来のインデックスとを組み合わせることによっても最適化することができる。この第2粗量子化器は、量子化されたベクトルの部分集合への検索を制限することによって、非網羅的な検索に使用することもできる。
量子化された空間が作成されたら、次いでベクトル・コードを多義コードに翻訳することによって最適化することができ、ハミング距離は、重心間距離を近似化する。このことは、バイナリ比較が重心距離を反映するようにビットの置換を学習することによって行うことができ、各サブ量子化器について行われる。
最後に、前述の手法を使用してクエリ・ベクトルを量子化し、コードをバイナリ・コードとして解釈してハミング距離を計算することによって、クエリ・ベクトルを検索することができる。クエリ・ベクトルまでのベクトルのバイナリ距離が閾値距離(システム・パラメータとして選ばれる)未満である場合、直積量子化(これは、より正確な推定を出す)を使用してベクトルを比較する。このように、方法は、バイナリ検索の効率を直積量子化の確度でほぼ達成することができる。
ここで開示する実施形態は単なる例であり、本開示の範囲はこれに限定されるものではない。特定の実施形態は、上記開示した実施形態のコンポーネント、要素、特徴、機能、動作、または工程の全部もしくは一部を含んでもよく、または含まなくてもよい。本発明による実施形態は、方法、記憶媒体、システムおよびコンピュータ・プログラム製品に向けられた添付の請求項で特に開示され、ある請求項のカテゴリ、たとえば方法、で述べられた任意の特徴は、別の請求項のカテゴリ、たとえばシステム、でも同様に請求されることができる。添付の請求項の従属性または後方参照は、形式上の理由でのみ選択されている。しかし、任意の先行請求項への意図的な後方参照から生じる任意の主題(特に多項従属)は同様に請求されることができるので、添付の請求項で選ばれた従属性に関係なく、請求項およびその特徴の任意の組合せが開示され、請求されることができる。請求することのできる主題は、添付の請求項に記載される特徴の組合せだけでなく、請求項の特徴の任意の他の組合せも含み、請求項で述べられる各特徴は請求項の任意の他の特徴または他の特徴の組合せと組み合わせることができる。さらに、本明細書で記述または示される実施形態および特徴のいずれも、個別の請求項で、および/または、本明細書で記述もしくは示される任意の実施形態もしくは特徴または添付の請求項の特徴のいずれかとの任意の組合せで請求することができる。
本発明による一実施形態では、方法は、コンピューティング・デバイスが、
n次元のベクトル空間のn次元のベクトルによって表されるクエリ、特にデータベース内の1以上の類似の画像および動画または画像もしくは動画のクエリを受け取る工程と、
クエリを表すベクトルを量子化器を使用して量子化する工程であって、量子化されたベクトルは多義コードに対応し、量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表すベクトルに対応する多義コードとの間の計算されたハミング距離が閾値量未満であるとの決定に基づいて、複数のコンテンツ・オブジェクトのうちの1つのコンテンツ・オブジェクトがクエリの近似最近傍であると決定する工程と、
を含むことができる。
本発明による一実施形態では、方法は、クエリを表すベクトルをクエリを表す複数のサブベクトルに分割することを含むことができ、
クエリを表すベクトルを量子化する工程は、クエリを表す複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化する工程を含み、量子化された各サブベクトルは多義コードに対応し、
各サブ量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離は、クエリを表す各それぞれのサブベクトルに対応する各多義コードと、コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算される。
サブ量子化器のそれぞれは、複数のサブ量子化器のうちの他のサブ量子化器のそれぞれとは別個にすることができる。
コンテンツ・オブジェクトを表す量子化された複数のサブベクトルのそれぞれを、対応するサブ量子化器を使用して量子化することができる。
第1多義コードと第2多義との間のハミング距離は、第1多義コードと第2多義コードとの間で異なるビット数として計算することができる。
第1多義コードと第2多義コードとの間のハミング距離は、予め生成されたルックアップ・テーブルに基づいて計算することができる。
量子化器は、k平均法を使用することができる。
本発明による一実施形態では、目的関数がargmaxπΣi∈J,j∈J[h(π(i),π(j))−f(d(c,c))]である方法において、
Jは、重心インデックスの集合とすることができ、
は、重心iに関連付けられている再現値とすることができ、
関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングすることができ、
h(π(i),π(j))は、π(i)とπ(j)との間のハミング距離とすることができ、
d(c,c)は、cとcとの間の距離とすることができ、
関数fは、d(c,c)を、匹敵するハミング距離の範囲にマッピングする単調増加関数とすることができる。
本発明による一実施形態では、関数fが
である方法において、
μは、経験的に測定したdの平均とすることができ、
σは、経験的に測定したdの標準偏差とすることができる。
本発明による一実施形態では、目的関数がargmaxπΣi∈J,j∈Jw(f(d(c,c)))[h(π(i),π(j))−f(d(c,c))]である方法において、
Jは、重心インデックスの集合とすることができ、
は、重心iに関連付けられている再現値とすることができ、
関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングすることができ、
h(π(i),π(j))は、π(i)とπ(j)との間のハミング距離とすることができ、
d(c,c)は、cとcとの間の距離とすることができ、
関数fは、d(c,c)を、匹敵するハミング距離の範囲にマッピングする単調増加関数とすることができ、
関数wは、α<1で、関数w(u)=αとすることができる。
本発明による一実施形態では、方法は、クエリに応答して、クエリの近似最近傍であると決定された1以上のコンテンツ・オブジェクトを、第1ユーザに送信することを含むことができる。
コンテンツ・オブジェクトのそれぞれは画像を含むことができる。
受け取られたクエリはクエリ画像を含むことができ、方法は、クエリ画像を表すn次元のベクトルを生成することを含むことができる。
クエリは、クエリ画像に類似した画像の要求に対応することができる。
コンテンツ・オブジェクトのそれぞれは動画を含むことができる。
受け取られたクエリはクエリ動画を含むことができ、方法は、クエリ動画を表すn次元のベクトルを生成することを含むことができる。
本発明による一実施形態では、方法は、複数のノードと、ノード同士をつなげる複数のエッジとを含むソーシャル・グラフにアクセスすることを含むことができ、2つのノード間のエッジのそれぞれは、それらの間の単一分離度を表し、ノードは、
第1ユーザに対応する第1ノードと、
複数のコンテンツ・オブジェクトにそれぞれ対応する複数の第2ノードとを含むことができる。
本発明による一実施形態では、ソフトウェアを具現化する1以上のコンピュータ可読非一時的記憶媒体は、ソフトウェアが実行されたときに、
n次元のベクトル空間のn次元のベクトルによって表されるクエリを受け取る工程と、
クエリを表すベクトルを量子化器を使用して量子化する工程であって、量子化されたベクトルは多義コードに対応し、量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表すベクトルに対応する多義コードとの間の計算されたハミング距離が閾値量未満であるとの決定に基づいて、複数のコンテンツ・オブジェクトのうちの1つのコンテンツ・オブジェクトがクエリの近似最近傍であると決定する工程と、
が行われるように構成される。
ソフトウェアが実行されたときに、クエリを表すベクトルをクエリを表す複数のサブベクトルに分割する工程が行われるようにされる構成され、
クエリを表すベクトルを量子化することは、クエリを表す複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化することを含み、量子化された各サブベクトルは多義コードに対応し、
各サブ量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離は、クエリを表す各それぞれのサブベクトルに対応する各多義コードと、コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算される。
本発明による一実施形態では、システムは、1以上のプロセッサと、プロセッサに結合されプロセッサによって実行可能な命令を含む非一時的メモリとを備えることができ、該プロセッサは、命令を実行するときに、
n次元のベクトル空間のn次元のベクトルによって表されるクエリを受け取る工程と、
クエリを表すベクトルを量子化器を使用して量子化する工程であって、量子化されたベクトルは多義コードに対応し、量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
複数のコンテンツ・オブジェクトのそれぞれについて、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表すベクトルに対応する多義コードとの間の計算されたハミング距離が閾値量未満であるとの決定に基づいて、複数のコンテンツ・オブジェクトのうちの1つのコンテンツ・オブジェクトがクエリの近似最近傍であると決定する工程と、
を行うように作動可能である。
本発明による一実施形態では、1以上のコンピュータ可読非一時的記憶媒体は、実行されたときに、本発明による方法または前述の実施形態のいずれかを行うように作動可能であるソフトウェアを具現化することができる。
本発明による一実施形態では、システムは、1以上のプロセッサと、プロセッサに結合されプロセッサによって実行可能な命令を含む少なくとも1つのメモリとを備えることができ、該プロセッサは、命令を実行するときに、本発明による方法または前述の実施形態のいずれかを行うように作動可能である。
本発明による一実施形態では、好ましくはコンピュータ可読非一時的記憶媒体を備えるコンピュータ・プログラム製品は、データ処理システムで上で実行されるときに、本発明による方法または前述の実施形態のいずれかを行うように作動可能にすることができる。
システムの概観
図1は、ソーシャル・ネットワーキング・システムに関連付けられている例示的なネットワーク環境100を示している。ネットワーク環境100は、ネットワーク110によって互いにつながっているクライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサードパーティ・システム170を含む。図1は、クライアント・システム130、ソーシャル・ネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の特定の構成を示しているが、本開示は、クライアント・システム130、ソーシャル・ネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の任意の適切な構成を想定している。限定ではなく、例として、クライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサードパーティ・システム170のうちの複数は、ネットワーク110を迂回して、互いに直接つながることが可能である。別の例として、クライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサードパーティ・システム170のうちの複数は、物理的にまたは論理的に、全体としてまたは部分的に互いに同一場所に配置されることが可能である。その上、図1は、特定の数のクライアント・システム130、ソーシャル・ネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を示しているが、本開示は、任意の適切な数のクライアント・システム130、ソーシャル・ネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を想定している。限定ではなく、例として、ネットワーク環境100は、複数のクライアント・システム130、ソーシャル・ネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を含むことができる。
本開示は、任意の適切なネットワーク110を想定している。限定ではなく、例として、ネットワーク110の1つまたは複数の部分は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、無線LAN(WLAN)、ワイド・エリア・ネットワーク(WAN)、無線WAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN)の一部分、セルラー電話ネットワーク、またはこれらのうちの複数の組合せを含むことができる。ネットワーク110は、1つまたは複数のネットワーク110を含むことができる。
リンク150は、クライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサードパーティ・システム170を通信ネットワーク110に、または互いに接続することができる。本開示は、任意の適切なリンク150を想定している。特定の実施形態においては、1つまたは複数のリンク150は、1つもしくは複数の有線リンク(たとえば、デジタル・サブスクライバ・ライン(DSL)もしくはデータ・オーバ・ケーブル・サービス・インタフェース仕様(DOCSIS)など)、無線リンク(たとえば、Wi−Fiもしくはワールドワイド・インターオペラビリティー・フォー・マイクロウェーブ・アクセス(WiMAX)など)、または光リンク(たとえば、同期光ネットワーク(SONET)もしくは同期デジタル階層(SDH)など)を含む。特定の実施形態においては、1つまたは複数のリンク150はそれぞれ、アド・ホック・ネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部分、PSTNの一部分、セルラー・テクノロジーベースのネットワーク、衛星通信テクノロジーベースのネットワーク、別のリンク150、または複数のそのようなリンク150の組合せを含む。リンク150は、ネットワーク環境100の全体を通じて必ずしも同じである必要はない。1つまたは複数の第1のリンク150は、1つまたは複数の点において1つまたは複数の第2のリンク150とは異なることが可能である。
特定の実施形態においては、クライアント・システム130は、クライアント・システム130によって実装またはサポートされる適切な機能を実行することができる、ハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含む電子デバイスであることが可能である。限定ではなく、例として、クライアント・システム130は、デスクトップ・コンピュータ、ノートブック・コンピュータもしくはラップトップ・コンピュータ、ネットブック、タブレット・コンピュータなどのコンピュータ・システム、eブック・リーダ、GPSデバイス、カメラ、携帯情報端末(PDA)、ハンドヘルド電子デバイス、セルラー電話、スマートフォン、その他の適切な電子デバイス、またはそれらの任意の適切な組合せを含むことができる。本開示は、任意の適切なクライアント・システム130を想定している。クライアント・システム130は、クライアント・システム130のネットワーク・ユーザがネットワーク110にアクセスすることを可能にすることができる。クライアント・システム130は、自分のユーザがその他のクライアント・システム130のその他のユーザと通信することを可能にすることができる。
特定の実施形態においては、クライアント130は、MICROSOFT INTERNET EXPLORER、GOOGLE CHROME、またはMOZILLA FIREFOXなどのウェブ・ブラウザ132を含むことができ、1つまたは複数のアドオン、プラグイン、またはTOOLBARもしくはYAHOO TOOLBARなどのその他の拡張を有することができる。クライアント・システム130のユーザは、ウェブ・ブラウザ132を特定のサーバ(サーバ162、またはサードパーティ・システム170に関連付けられているサーバなど)へ導くユニフォーム・リソース・ロケータ(URL)またはその他のアドレスを入力することができ、ウェブ・ブラウザ132は、ハイパー・テキスト転送プロトコル(HTTP)要求を生成して、そのHTTP要求をサーバに通信することができる。サーバは、そのHTTP要求を受け入れて、そのHTTP要求に応答して1つまたは複数のハイパー・テキスト・マークアップ言語(HTML)ファイルをクライアント・システム130に通信することができる。クライアント・システム130は、ユーザに提示するためにサーバからのHTMLファイルに基づいてウェブインタフェース(たとえば、ウェブページ)をレンダリングすることができる。本開示は、任意の適切なソース・ファイルを想定している。限定ではなく、例として、ウェブ・インタフェースは、特定のニーズに従って、HTMLファイル、拡張可能ハイパー・テキスト・マークアップ言語(XHTML)ファイル、または拡張可能マークアップ言語(XML)ファイルからレンダリングされる。そのようなインタフェースは、限定ではなく、例として、JAVA(登録商標)SCRIPT(登録商標)、JAVA(登録商標)、MICROSOFT SILVERLIGHTで書かれたスクリプトなどのスクリプト、AJAX(Asynchronous JAVASCRIPT(登録商標)and XML)などのマークアップ言語とスクリプトの組合せなどを実行することもできる。本明細書においては、ウェブ・インタフェースへの参照は、適切な場合には、(そのウェブ・インタフェースをレンダリングするためにブラウザが使用することができる)1つまたは複数の対応するソース・ファイルを含み、その逆もまた同様である。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークをホストすることができるネットワークアドレス可能なコンピューティング・システムであることが可能である。ソーシャル・ネットワーキング・システム160は、たとえば、ユーザプロフィール・データ、コンセプトプロフィール・データ、ソーシャル・グラフ情報、またはオンライン・ソーシャル・ネットワークに関連したその他の適切なデータなどのソーシャルネットワーキング・データを生成すること、記憶すること、受け取ること、および送信することが可能である。ソーシャル・ネットワーキング・システム160は、ネットワーク環境100のその他のコンポーネントによって直接、またはネットワーク110を通じてアクセスされることが可能である。限定するものではないが例として、クライアント・システム130は、直接的またはネットワーク110を通じて、ウェブ・ブラウザ132またはソーシャル・ネットワーキング・システム160に関連付けられているネイティブ・アプリケーション(たとえば、モバイル・ソーシャル・ネットワーキング・アプリケーション、メッセージング・アプリケーション、別の適切なアプリケーション、またはこれらの組み合わせ)を使用してソーシャル・ネットワーキング・システム160にアクセスしてもよい。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のサーバ162を含むことができる。それぞれのサーバ162は、単一のサーバ、または複数のコンピュータもしくは複数のデータセンターにわたる分散サーバであることが可能である。サーバ162は、限定ではなく、例として、ウェブ・サーバ、ニュース・サーバ、メール・サーバ、メッセージ・サーバ、広告サーバ、ファイル・サーバ、アプリケーション・サーバ、Exchangeサーバ、データベース・サーバ、プロキシ・サーバ、本明細書において記述されている機能もしくはプロセスを実行するのに適している別のサーバ、またはそれらの任意の組合せなど、さまざまなタイプのものであることが可能である。特定の実施形態においては、それぞれのサーバ162は、サーバ162によって実装またはサポートされる適切な機能を実行するためのハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含むことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のデータ・ストア164を含むことができる。データ・ストア164は、さまざまなタイプの情報を記憶するために使用されることが可能である。特定の実施形態においては、データ・ストア164内に記憶されている情報は、特定のデータ構造に従って編成されることが可能である。特定の実施形態においては、それぞれのデータ・ストア164は、リレーショナル・データベースであることが可能である。特定の実施形態は、クライアント・システム130、ソーシャル・ネットワーキング・システム160、またはサードパーティ・システム170が、データ・ストア164内に記憶されている情報を管理すること、取り出すこと、修正すること、追加すること、または削除することを可能にするインタフェースを提供することができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のソーシャル・グラフを1つまたは複数のデータ・ストア164内に記憶することができる。特定の実施形態においては、ソーシャル・グラフは、複数のノード(複数のユーザ・ノード(それぞれが、特定のユーザに対応している)、または複数のコンセプト・ノード(それぞれが、特定のコンセプトに対応している)を含むことができる)と、ノード同士をつなげる複数のエッジとを含むことができる。ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザに、その他のユーザと通信および対話する能力を提供することができる。特定の実施形態においては、ユーザたちは、ソーシャル・ネットワーキング・システム160を通じてオンライン・ソーシャル・ネットワークに参加し、次いで、自分たちがつながりたいと望むソーシャル・ネットワーキング・システム160のその他の複数のユーザにつながり(すなわち、関係)を付加することができる。本明細書においては、「友達」という用語は、ユーザがソーシャル・ネットワーキング・システム160を通じて、つながり、関連付け、または関係を形成しているソーシャル・ネットワーキング・システム160のその他の任意のユーザを示すことができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ソーシャル・ネットワーキング・システム160によってサポートされるさまざまなタイプのアイテムまたはオブジェクトに関してアクションを取る能力をユーザに提供することができる。限定ではなく、例として、それらのアイテムおよびオブジェクトは、ソーシャル・ネットワーキング・システム160のユーザが属することが可能であるグループもしくはソーシャル・ネットワーク、ユーザが関心を抱く可能性があるイベントもしくはカレンダー・エントリー、ユーザが使用することができるコンピュータベースのアプリケーション、ユーザがサービスを通じてアイテムを購入もしくは販売することを可能にするトランザクション、ユーザが実行することができる広告との対話、またはその他の適切なアイテムもしくはオブジェクトを含むことができる。ユーザは、ソーシャル・ネットワーキング・システム160において、またはサードパーティ・システム170の外部システム(ソーシャル・ネットワーキング・システム160とは別個のものであって、ネットワーク110を通じてソーシャル・ネットワーキング・システム160に結合されている)によって表されることが可能である任意のものと対話することができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、さまざまなエンティティ同士をリンクできることが可能である。限定ではなく、例として、ソーシャル・ネットワーキング・システム160は、ユーザたちが互いに対話すること、ならびにサードパーティ・システム170もしくはその他のエンティティからのコンテンツを受け取ることを可能にすることができ、またはユーザたちがアプリケーション・プログラミング・インタフェース(API)もしくはその他の通信チャネルを通じてこれらのエンティティと対話することを可能にすることができる。
特定の実施形態においては、サードパーティ・システム170は、1つもしくは複数のタイプのサーバ、1つもしくは複数のデータ・ストア、1つもしくは複数のインタフェース(APIを含むが、それには限定されない)、1つもしくは複数のウェブ・サービス、1つもしくは複数のコンテンツ・ソース、1つもしくは複数のネットワーク、またはサーバがそれと通信するその他の任意の適切なコンポーネントを含むことができる。サードパーティ・システム170は、ソーシャル・ネットワーキング・システム160を運営しているエンティティとは異なるエンティティによって運営されることが可能である。しかしながら、特定の実施形態においては、ソーシャル・ネットワーキング・システム160およびサードパーティ・システム170は、ソーシャル・ネットワーキング・システム160またはサードパーティ・システム170のユーザにソーシャル・ネットワーキング・サービスを提供するために互いに連携して機能することができる。この意味において、ソーシャル・ネットワーキング・システム160は、サードパーティ・システム170などのその他のシステムがインターネットを通じてソーシャル・ネットワーキング・サービスおよび機能をユーザに提供するために使用することができるプラットフォーム、またはバックボーンを提供することができる。
特定の実施形態においては、サードパーティ・システム170は、サードパーティ・コンテンツ・オブジェクト・プロバイダを含むことができる。サードパーティ・コンテンツ・オブジェクト・プロバイダは、コンテンツ・オブジェクトの1つまたは複数のソースを含むことができ、それらのソースは、クライアント・システム130に通信されることが可能である。限定ではなく、例として、コンテンツ・オブジェクトは、ユーザにとって関心がある物またはアクティビティに関する情報、たとえば、映画の開始時刻、映画のレビュー、レストランのレビュー、レストランのメニュー、製品の情報およびレビュー、またはその他の適切な情報などを含むことができる。限定ではなく、別の例として、コンテンツ・オブジェクトは、インセンティブ・コンテンツ・オブジェクト、たとえば、クーポン、ディスカウント・チケット、ギフト券、またはその他の適切なインセンティブ・オブジェクトを含むことができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160はまた、ユーザによって生成されたコンテンツ・オブジェクトを含み、それらのコンテンツ・オブジェクトは、ソーシャル・ネットワーキング・システム160とのユーザの対話を高めることができる。ユーザによって生成されたコンテンツは、ユーザがソーシャル・ネットワーキング・システム160に付加、アップロード、送信、または「投稿」することができる任意のものを含むことができる。限定ではなく、例として、ユーザは、クライアント・システム130からソーシャル・ネットワーキング・システム160へ投稿を通信する。投稿は、ステータス更新もしくはその他のテキスト・データ、ロケーション情報、写真、映像、リンク、音楽、またはその他の類似したデータもしくはメディアなどのデータを含むことができる。コンテンツは、ニュース・フィードまたはストリームなどの「通信チャネル」を通じてサードパーティによってソーシャル・ネットワーキング・システム160に付加されることも可能である。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、さまざまなサーバ、サブシステム、プログラム、モジュール、ログ、およびデータ・ストアを含むことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ウェブ・サーバ、アクション・ロガー、API要求サーバ、関連性およびランキング・エンジン、コンテンツ・オブジェクト分類子、通知コントローラ、アクション・ログ、サードパーティ・コンテンツ・オブジェクト露出ログ、推測モジュール、認可/プライバシ・サーバ、検索モジュール、広告ターゲティング・モジュール、ユーザインタフェース・モジュール、ユーザプロフィール・ストア、つながりストア、サードパーティ・コンテンツ・ストア、またはロケーション・ストアのうちの1つまたは複数を含むことができる。ソーシャル・ネットワーキング・システム160は、適切なコンポーネント、たとえば、ネットワーク・インタフェース、セキュリティー・メカニズム、ロード・バランサ、フェイルオーバ・サーバ、管理およびネットワークオペレーション・コンソール、その他の適切なコンポーネント、またはそれらの任意の適切な組合せを含むこともできる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ユーザ・プロフィールを記憶するための1つまたは複数のユーザプロフィール・ストアを含むことができる。ユーザ・プロフィールは、たとえば、経歴情報、人口統計学的情報、挙動情報、ソーシャルな情報、またはその他のタイプの記述的情報、たとえば、職業経験、学歴、趣味もしくは好み、関心、親近感、またはロケーションを含むことができる。関心情報は、1つまたは複数のカテゴリに関連した関心を含むことができる。カテゴリは、一般的または具体的であることが可能である。限定ではなく、例として、ユーザが、あるブランドの靴に関する記事に対して「いいね!」の表明をした場合には、カテゴリは、そのブランド、または「靴」もしくは「衣類」という一般的なカテゴリであることが可能である。ユーザに関するつながり情報を記憶するために、つながりストアが使用されることが可能である。つながり情報は、類似のもしくは共通の職業経験、グループ・メンバーシップ、趣味、学歴を有しているか、または何らかの形で関連しているか、もしくは共通の属性を共有しているユーザ同士を示すことができる。つながり情報は、さまざまなユーザおよびコンテンツ(内部および外部の両方)の間におけるユーザ定義のつながりを含むこともできる。ネットワーク110を通じてソーシャル・ネットワーキング・システム160を1つもしくは複数のクライアント・システム130または1つもしくは複数のサードパーティ・システム170にリンクさせるために、ウェブ・サーバが使用されることが可能である。ウェブ・サーバは、ソーシャル・ネットワーキング・システム160と、1つまたは複数のクライアント・システム130との間においてメッセージを受け取って回送するためにメール・サーバまたはその他のメッセージング機能を含むことができる。API要求サーバは、サードパーティ・システム170が、1つまたは複数のAPIを呼び出すことによってソーシャル・ネットワーキング・システム160からの情報にアクセスすることを可能にすることができる。ソーシャル・ネットワーキング・システム160の上のまたは外のユーザのアクションに関してウェブ・サーバから通信を受け取るために、アクション・ロガーが使用されることが可能である。アクション・ログとともに、サードパーティコンテンツ・オブジェクトへのユーザの露出についてのサードパーティコンテンツオブジェクト・ログが保持されることが可能である。通知コントローラは、コンテンツ・オブジェクトに関する情報をクライアント・システム130に提供することができる。情報は、通知としてクライアント・システム130へプッシュされることが可能であり、または情報は、クライアント・システム130から受け取られた要求に応答してクライアント・システム130からプルされることが可能である。ソーシャル・ネットワーキング・システム160のユーザの1つまたは複数のプライバシー設定を実装するために、認可サーバが使用されることが可能である。ユーザのプライバシー設定は、ユーザに関連付けられている特定の情報がどのように共有されることが可能であるかを特定する。認可サーバは、ユーザが、たとえば、適切なプライバシー設定を設定することなどによって、自分のアクションをソーシャル・ネットワーキング・システム160によって記録されること、またはその他のシステム(たとえば、サードパーティ・システム170)と共有されることのオプト・インまたはオプト・アウトを行うことを可能にすることができる。サードパーティ・システム170などのサードパーティから受け取られたコンテンツ・オブジェクトを記憶するために、サードパーティコンテンツオブジェクト・ストアが使用されることが可能である。ユーザに関連付けられているクライアント・システム130から受け取られたロケーション情報を記憶するために、ロケーション・ストアが使用されることが可能である。広告価格設定モジュールが、ソーシャルな情報、現在時刻、ロケーション情報、またはその他の適切な情報を組み合わせて、関連がある広告を、通知の形式でユーザに提供することができる。
ソーシャル・グラフ
図2は、例示的なソーシャル・グラフ200を示している。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のソーシャル・グラフ200を1つまたは複数のデータ・ストア内に記憶することができる。特定の実施形態においては、ソーシャル・グラフ200は、複数のノード(複数のユーザ・ノード202、または複数のコンセプト・ノード204を含むことができる)と、ノード同士をつなげる複数のエッジ206とを含むことができる。図2において示されている例示的なソーシャル・グラフ200は、教示上の目的から、二次元の視覚的マップ表示で示されている。特定の実施形態においては、ソーシャル・ネットワーキング・システム160、クライアント・システム130、またはサードパーティ・システム170は、適切なアプリケーションに関してソーシャル・グラフ200および関連したソーシャル・グラフ情報にアクセスすることができる。ソーシャル・グラフ200のノードおよびエッジは、データ・オブジェクトとして、たとえば(ソーシャル・グラフ・データベースなどの)データ・ストア内に記憶されることが可能である。そのようなデータ・ストアは、ソーシャル・グラフ200のノードまたはエッジの1つまたは複数の検索可能なまたはクエリ可能なインデックスを含むことができる。
特定の実施形態においては、ユーザ・ノード202は、ソーシャル・ネットワーキング・システム160のユーザに対応することができる。限定ではなく、例として、ユーザは、ソーシャル・ネットワーキング・システム160と、またはソーシャル・ネットワーキング・システム160を通じて対話または通信する個人(人間のユーザ)、エンティティ(たとえば、企業、ビジネス、もしくはサードパーティ・アプリケーション)、または(たとえば、個人もしくはエンティティの)グループであることが可能である。特定の実施形態においては、あるユーザがソーシャル・ネットワーキング・システム160とのアカウントに登録した場合には、ソーシャル・ネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202を作成し、そのユーザ・ノード202を1つまたは複数のデータ・ストア内に記憶することができる。本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、登録されているユーザ、および登録されているユーザに関連付けられているユーザ・ノード202を示すことができる。追加として、または代替として、本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、ソーシャル・ネットワーキング・システム160に登録されていないユーザを示すことができる。特定の実施形態においては、ユーザ・ノード202は、ユーザによって提供された情報、またはソーシャル・ネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、ユーザは、自分の名前、プロフィール画像、連絡先情報、生年月日、性別、婚姻状況、家族状況、勤務先、学歴、好み、関心、またはその他の人口統計学的情報を提供することができる。特定の実施形態においては、ユーザ・ノード202は、ユーザに関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、ユーザ・ノード202は、1つまたは複数のウェブ・インタフェースに対応することができる。
特定の実施形態においては、コンセプト・ノード204は、コンセプトに対応することができる。限定ではなく、例として、コンセプトは、場所(たとえば、映画館、レストラン、ランドマーク、もしくは都市など)、ウェブサイト(たとえば、ソーシャル・ネットワーキング・システム160に関連付けられているウェブサイト、もしくはウェブアプリケーション・サーバに関連付けられているサードパーティ・ウェブサイトなど)、エンティティ(たとえば、人、企業、グループ、スポーツ・チーム、もしくは有名人など)、ソーシャル・ネットワーキング・システム160内に、もしくはウェブアプリケーション・サーバなどの外部サーバ上に配置されることが可能であるリソース(たとえば、オーディオ・ファイル、営業ファイル、デジタル写真、テキスト・ファイル、構造化文書、もしくはアプリケーションなど)、物的もしくは知的財産(たとえば、彫塑、絵画、映画、ゲーム、曲、着想、写真、もしくは執筆作品など)、ゲーム、アクティビティ、着想もしくは理論、別の適切なコンセプト、または複数のそのようなコンセプトに対応することができる。コンセプト・ノード204は、ユーザによって提供されたコンセプトの情報、またはソーシャル・ネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、コンセプトの情報は、名前もしくはタイトル、1つもしくは複数のイメージ(たとえば、本の表紙のイメージ)、ロケーション(たとえば、住所もしくは地理的ロケーション)、(URLに関連付けられることが可能である)ウェブサイト、連絡先情報(たとえば、電話番号もしくはEメール・アドレス)、その他の適切なコンセプト情報、またはそのような情報の任意の適切な組合せを含むことができる。特定の実施形態においては、コンセプト・ノード204は、コンセプト・ノード204に関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、コンセプト・ノード204は、1つまたは複数のウェブ・インタフェースに対応することができる。
特定の実施形態においては、ソーシャル・グラフ200内のノードは、ウェブ・インタフェース(「プロフィール・インタフェース」と呼ばれる場合もある)を表すこと、またはウェブ・インタフェースによって表されることが可能である。プロフィール・インタフェースは、ソーシャル・ネットワーキング・システム160によってホストされること、またはソーシャル・ネットワーキング・システム160にとってアクセス可能であることが可能である。プロフィール・インタフェースは、サードパーティ・システム170に関連付けられているサードパーティ・ウェブサイト上にホストされることも可能である。限定ではなく、例として、特定の外部ウェブ・インタフェースに対応するプロフィール・インタフェースは、その特定の外部ウェブ・インタフェースであることが可能であり、そのプロフィール・インタフェースは、特定のコンセプト・ノード204に対応することができる。プロフィール・インタフェースは、その他のユーザのうちのすべてまたは選択されたサブセットによって閲覧できることが可能である。限定ではなく、例として、ユーザ・ノード202は、対応するユーザ・プロフィール・インタフェースを有することができ、そのユーザ・プロフィール・インタフェースにおいては、対応するユーザが、コンテンツを付加すること、言明を行うこと、またはその他の形で自分自身を表現することが可能である。限定ではなく、別の例として、コンセプト・ノード204は、対応するコンセプトプロフィール・インタフェースを有することができ、そのコンセプトプロフィール・インタフェースにおいては、1人または複数のユーザが、特にコンセプト・ノード204に対応するコンセプトに関連して、コンテンツを付加すること、言明を行うこと、または自分自身を表現することが可能である。
特定の実施形態においては、コンセプト・ノード204は、サードパーティ・システム170によってホストされているサードパーティ・ウェブインタフェースまたはリソースを表すことができる。サードパーティ・ウェブインタフェースまたはリソースは、数ある要素の中でも、コンテンツ、選択可能なもしくはその他のアイコン、または、アクションもしくはアクティビティを表す(たとえば、JAVASCRIPT(登録商標)、AJAX、もしくはPHPコードで実装されることが可能である)その他の対話可能なオブジェクトを含むことができる。限定ではなく、例として、サードパーティ・ウェブインタフェースは、「いいね!」、「チェックイン」、「食べる」、「推奨する」、または別の適切なアクションもしくはアクティビティなどの選択可能なアイコンを含むことができる。サードパーティ・ウェブインタフェースを閲覧しているユーザは、それらのアイコンのうちの1つ(たとえば、「チェックイン」)を選択することによってアクションを実行して、クライアント・システム130に、そのユーザのアクションを示すメッセージをソーシャル・ネットワーキング・システム160へ送信させることができる。そのメッセージに応答して、ソーシャル・ネットワーキング・システム160は、ユーザに対応するユーザ・ノード202と、サードパーティ・ウェブインタフェースまたはリソースに対応するコンセプト・ノード204との間においてエッジ(たとえば、「チェックイン」のタイプのエッジ)を作成して、エッジ206を1つまたは複数のデータ・ストア内に記憶することができる。
特定の実施形態においては、ソーシャル・グラフ200内の1対のノードが、1つまたは複数のエッジ206によって互いにつながることが可能である。1対のノードをつなげるエッジ206は、それらの1対のノードの間における関係を表すことができる。特定の実施形態においては、エッジ206は、1対のノードの間における関係に対応する1つまたは複数のデータ・オブジェクトまたは属性を含むことまたは表すことが可能である。限定ではなく、例として、第1のユーザは、第2のユーザが第1のユーザの「友達」であるということを示すことができる。この表示に応答して、ソーシャル・ネットワーキング・システム160は、「友達要求」を第2のユーザに送信することができる。第2のユーザがその「友達要求」を承認した場合には、ソーシャル・ネットワーキング・システム160は、ソーシャル・グラフ200内で第1のユーザのユーザ・ノード202を第2のユーザのユーザ・ノード202につなげるエッジ206を作成して、エッジ206をソーシャル・グラフ情報としてデータ・ストア164のうちの1つまたは複数の中に記憶することができる。図2の例においては、ソーシャル・グラフ200は、ユーザ「A」のユーザ・ノード202と、ユーザ「B」のユーザ・ノード202との間における友達関係を示すエッジ206と、ユーザ「C」のユーザ・ノード202と、ユーザ「B」のユーザ・ノード202との間における友達関係を示すエッジとを含む。本開示は、特定のユーザ・ノード202同士をつなげる特定の属性を伴う特定のエッジ206を記述している、または示しているが、本開示は、ユーザ・ノード202同士をつなげる任意の適切な属性を伴う任意の適切なエッジ206を想定している。限定ではなく、例として、エッジ206は、友達関係、家族関係、ビジネスもしくは雇用関係、ファン関係(たとえば、「いいね」と表明することなどを含む)、フォロワー関係、ビジター関係(たとえば、アクセスすること、閲覧すること、チェックインをすること、共有することなどを含む)、サブスクライバ関係、上下関係、互恵的関係、非互恵的関係、別の適切なタイプの関係、または複数のそのような関係を表すことができる。その上、本開示は一般に、ノード同士をつながっているものとして記述しているが、本開示はまた、ユーザ同士またはコンセプト同士をつながっているものとして記述している。本明細書においては、つながっているユーザ同士またはコンセプト同士への言及は、適切な場合には、1つまたは複数のエッジ206によってソーシャル・グラフ200内でつながっているそれらのユーザ同士またはコンセプト同士に対応するノード同士を示すことができる。
特定の実施形態においては、ユーザ・ノード202とコンセプト・ノード204との間におけるエッジ206は、ユーザ・ノード202に関連付けられているユーザによって、コンセプト・ノード204に関連付けられているコンセプトに対して実行された特定のアクションまたはアクティビティを表すことができる。限定ではなく、例として、図2において示されているように、ユーザは、コンセプトに対して「いいね!を表明すること」、「通うこと」、「プレイすること」、「聴くこと」、「料理すること」、「勤務すること」、または「観ること」を行った可能性があり、それらの各々は、エッジ・タイプまたはサブタイプに対応することができる。コンセプト・ノード204に対応するコンセプトプロフィール・インタフェースは、たとえば、選択可能な「チェックイン」アイコン(たとえば、クリック可能な「チェックイン」アイコンなど)、または選択可能な「お気に入りに追加」アイコンを含むことができる。同様に、ユーザがこれらのアイコンをクリックした後に、ソーシャル・ネットワーキング・システム160は、それぞれのアクションに対応するユーザのアクションに応答して「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではなく、別の例として、あるユーザ(ユーザ「C」)が、特定のアプリケーション(オンライン音楽アプリケーションであるSPOTIFY)を使用して特定の曲(「イマジン」)を聴く場合がある。このケースにおいては、ソーシャル・ネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202と、その曲およびアプリケーションに対応するコンセプト・ノード204との間において、(図2に示されているような)「聴いた」エッジ206および「使用した」エッジを作成して、そのユーザがその曲を聴いてそのアプリケーションを使用したということを示すことができる。その上、ソーシャル・ネットワーキング・システム160は、その曲に対応するコンセプト・ノード204と、そのアプリケーションに対応するコンセプト・ノード204との間において、(図2に示されているような)「再生した」エッジ206を作成して、その特定の曲がその特定のアプリケーションによって再生されたということを示すことができる。このケースにおいては、「再生した」エッジ206は、外部アプリケーション(SPOTIFY)によって外部オーディオ・ファイル(「イマジン」という曲)に関して実行されたアクションに対応する。本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなげる特定の属性を伴う特定のエッジ206について記述しているが、本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなげる任意の適切な属性を伴う任意の適切なエッジ206を想定している。その上、本開示は、単一の関係を表すユーザ・ノード202とコンセプト・ノード204との間におけるエッジについて記述しているが、本開示は、1つまたは複数の関係を表すユーザ・ノード202とコンセプト・ノード204との間におけるエッジを想定している。限定ではなく、例として、エッジ206は、ユーザが特定のコンセプトに対して「いいね!」の表明をしているということ、およびその特定のコンセプトを使用したということの両方を表すことができる。あるいは、別のエッジ206は、(図2において、ユーザ「E」を表すユーザ・ノード202と、「SPOTIFY」を表すコンセプト・ノード204との間において示されているような)ユーザ・ノード202とコンセプト・ノード204との間におけるそれぞれのタイプの関係(または、単一の関係が複数集まったもの)を表すことができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ソーシャル・グラフ200内でユーザ・ノード202とコンセプト・ノード204との間においてエッジ206を作成することができる。限定ではなく、例として、(たとえば、ユーザのクライアント・システム130によってホストされているウェブ・ブラウザまたは専用のアプリケーションを使用することなどによって)コンセプトプロフィール・インタフェースを閲覧しているユーザは、「いいね!」アイコンをクリックまたは選択することにより、コンセプト・ノード204によって表されているコンセプトを自分が気に入っているということを示すことができ、その「いいね!」アイコンをクリックまたは選択することは、ユーザのクライアント・システム130に、そのコンセプトプロフィール・インタフェースに関連付けられているそのコンセプトをそのユーザが気に入っているということを示すメッセージをソーシャル・ネットワーキング・システム160へ送信させることができる。そのメッセージに応答して、ソーシャル・ネットワーキング・システム160は、そのユーザとコンセプト・ノード204との間における「いいね!」エッジ206によって示されているように、そのユーザに関連付けられているユーザ・ノード202とコンセプト・ノード204との間においてエッジ206を作成することができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、エッジ206を1つまたは複数のデータ・ストア内に記憶することができる。特定の実施形態においては、エッジ206は、特定のユーザ・アクションに応答してソーシャル・ネットワーキング・システム160によって自動的に形成されることが可能である。限定ではなく、例として、第1のユーザが、画像をアップロードすること、映画を観ること、または曲を聴くことを行った場合には、エッジ206は、第1のユーザに対応するユーザ・ノード202と、それらのコンセプトに対応するコンセプト・ノード204との間において形成されることが可能である。本開示は、特定の様式で特定のエッジ206を形成することについて記述しているが、本開示は、任意の適切な様式で任意の適切なエッジ206を形成することを想定している。
オンライン・ソーシャル・ネットワークでのクエリの検索
特定の実施形態において、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザのクライアント・システムから、ユーザによって入力されたクエリを受け取ることができる。ユーザは、たとえば、クエリ入力を選択するか、またはクエリ・フィールドにテキストを入力することによって、ソーシャル・ネットワーキング・システム160にクエリを提出することができる。オンライン・ソーシャル・ネットワークのユーザは、特定の主題(たとえば、ユーザ、コンセプト、外部コンテンツまたはリソース)に関する情報を、「検索クエリ」と称されることが多い、その主題を説明する短い語句を検索エンジンに提出することによって検索することができる。クエリは、非構造化テキスト・クエリであることがあり、1つまたは複数のテキスト文字列(これは、1つまたは複数のn−gramを含み得る)を含むことができる。一般に、ユーザは、クエリ・フィールド内に任意の文字列を入力して、ソーシャル・ネットワーキング・システム160上でテキスト・クエリに一致するコンテンツを検索する。次いで、ソーシャル・ネットワーキング・システム160は、データ・ストア164(または、特に、ソーシャル・グラフ・データベース)を検索して、クエリに一致するコンテンツを識別することができる。検索エンジンは、さまざまな検索アルゴリズムを使用してクエリ語句に基づいて検索を実施し、検索クエリに最も関係がありそうなリソースまたはコンテンツ(たとえば、ユーザ・プロフィール・インタフェース、コンテンツ・プロフィール・インタフェース、または外部リソース)を識別する検索結果を生成することができる。検索を実施するために、ユーザは、検索クエリを検索エンジンに入力または送信することができる。応答して、検索エンジンは、検索クエリに関係がありそうな1つまたは複数のリソースを識別し、それらの各々は、検索クエリに対応する「検索結果(search result)」と個々に称されても、または「検索結果(search results)」とまとめて称されてもよい。識別されたコンテンツは、たとえば、ソーシャル・グラフ要素(すなわち、ユーザ・ノード202、コンセプト・ノード204、エッジ206)、プロフィール・インタフェース、外部ウェブ・インタフェース、またはこれらの任意の組み合わせを含むことができる。次いで、ソーシャル・ネットワーキング・システム160は、識別されたコンテンツに対応する検索結果を有する検索結果インタフェースを生成し、この検索結果インタフェースをユーザへ送信することができる。検索結果は、多くの場合、リンクのリストの形態で検索結果インタフェース上でユーザに提示されてもよく、各リンクは、識別されたリソースまたはコンテンツのうちのいくつかを含む異なるインタフェースに関連付けられている。特定の実施形態において、検索結果における各リンクは、対応するインタフェースがどこに位置するか、および該インタフェースを取り出すためのメカニズムを特定する、ユニフォーム・リソース・ロケータ(URL)の形式とすることができる。次いで、ソーシャル・ネットワーキング・システム160は、検索結果インタフェースを、ユーザのクライアント・システム130上のウェブ・ブラウザ132に送信することができる。次いで、ユーザは、適宜、URLリンクをクリックして、または検索結果インタフェースからコンテンツを他の形で選択して、ソーシャル・ネットワーキング・システム160または外部システム(たとえば、サードパーティ・システム170など)からのコンテンツにアクセスすることができる。リソースは、検索クエリに対するそれらの相対的な関連性の度合いに従って、順位付けされてユーザに提示されることが可能である。検索結果は、ユーザに対するそれらの相対的な関連性の度合いに従って、順位付けされてユーザに提示されることが可能である。換言すれば、検索結果は、たとえば、ソーシャル・グラフ情報、ユーザ情報、ユーザの検索履歴もしくはブラウズ履歴、またはユーザに関係する他の適切な情報に基づいて、クエリを行うユーザのためにパーソナライズすることができる。特定の実施形態において、リソースの順位付けは、検索エンジンによって実施される順位付けアルゴリズムによって決定することができる。限定ではなく例として、検索クエリまたはユーザに対する関連性がより高いリソースは、検索クエリまたはユーザに対する関連性がより低いリソースよりも高く順位付けされることが可能である。特定の実施形態において、検索エンジンは、その検索をオンライン・ソーシャル・ネットワーク上のリソースとコンテンツとに限定することができる。しかし、特定の実施形態においては、検索エンジンは、サードパーティ・システム170、インターネットもしくはワールド・ワイド・ウェブ、または他の適切なソースなど、他のソース上のリソースまたはコンテンツも検索することができる。本開示は、ソーシャル・ネットワーキング・システム160に特定の方法でクエリを行うことについて記述しているが、本開示は、ソーシャル・ネットワーキング・システム160に任意の適切な方法でクエリを行うことを想定している。
タイプアヘッド・プロセスおよびクエリ
特定の実施形態において、1つまたは複数のクライアント側および/またはバックエンド(サーバ側)・プロセスは、ソーシャル・グラフ要素(たとえば、ユーザ・ノード202、コンセプト・ノード204またはエッジ206)と、ソーシャル・ネットワーキング・システム160によってホストされ、またはソーシャル・ネットワーキング・システム160においてアクセス可能であり得る(たとえば、ユーザ・プロフィール・インタフェース、コンセプト・プロフィール・インタフェース、検索結果インタフェース、オンライン・ソーシャル・ネットワークに関連付けられているネイティブ・アプリケーションのユーザ・インタフェース/ビュー・ステート、またはオンライン・ソーシャル・ネットワークの別の適切なインタフェースなどの)要求されるインタフェースとともにレンダリングされる入力フォームにおいてユーザによって現在入力されている情報とのマッチングを行うように自動的に試行することのできる「タイプアヘッド」機能を実装および利用することができる。特定の実施形態において、ユーザが表明を行うためにテキストを入力する際に、タイプアヘッド機能は、表明において入力されているテキスト文字の文字列と、ユーザ、コンセプトまたはエッジに対応する文字の文字列(たとえば、氏名、説明)およびソーシャル・グラフ200におけるそれぞれに対応する要素とのマッチングを試行することができる。特定の実施形態において、一致が見つかると、タイプアヘッド機能は、既存のソーシャル・グラフ要素の(たとえば、ノード名/タイプ、ノードID、エッジ名/タイプ、エッジID、または別の適切な参照もしくは識別子などの)ソーシャル・グラフ要素への参照をフォームに自動的に追加することができる。特定の実施形態において、ユーザが文字をフォーム・ボックス内に入力している間に、タイプアヘッド・プロセスは、入力されたテキスト文字の文字列を読み取ることができる。各キーストロークが行われる際に、フロンドエンド・タイプアヘッド・プロセスは、入力された文字列を要求(または呼び出し)としてソーシャル・ネットワーキング・システム160内で実行されるバックエンド・タイプアヘッド・プロセスへ送信することができる。特定の実施形態において、タイプアヘッド・プロセスは、1つまたは複数のマッチング・アルゴリズムを使用して、一致するソーシャル・グラフ要素を識別しようと試行することができる。特定の実施形態において、1つまたは複数の一致が見つかると、タイプアヘッド・プロセスは、たとえば、一致するソーシャル・グラフ要素の名前(名前の文字列)または説明と、潜在的には、一致するソーシャル・グラフ要素に関連付けられている他のメタデータとを含み得る応答をユーザのクライアント・システム130へ送信することができる。限定ではなく例として、ユーザがクエリ・フィールドに文字「pok」を入力すると、タイプアヘッド・プロセスは、「ポーカー(poker)」または「ポケモン(pokemon)」と名付けられるかまたはそれをテーマにしているプロフィール・インタフェースなどの、一致する既存のプロフィール・インタフェースおよび各ユーザ・ノード202またはコンセプト・ノード204の名前を表示するドロップ・ダウン・メニューを表示することができ、次いで、それをユーザがクリックまたはその他の形で選択することによって、選択されたノードに対応する一致するユーザまたはコンセプトの名前を表明したいという要望を確認することができる。
タイプアヘッド・プロセスに関するさらなる情報は、2010年4月19日に出願された米国特許出願第12/763162号、および2012年7月23日に出願された米国特許出願第13/556072号において見出され、これらの出願は、本願明細書に援用される。
特定の実施形態において、本願明細書で記述されているタイプアヘッド・プロセスは、ユーザが入力する検索クエリに適用することができる。限定ではなく例として、ユーザがクエリ・フィールドにテキスト文字を入力すると、タイプアヘッド・プロセスは、ユーザが文字を入力している間に、クエリ・フィールドに入力される文字の文字列に一致する1つまたは複数のユーザ・ノード202、コンセプト・ノード204またはエッジ206を識別しようと試行することができる。タイプアヘッド・プロセスがテキスト・クエリから文字列またはn−gramを含む要求または呼び出しを受け取ると、タイプアヘッド・プロセスは、入力されたテキストに一致する各名前、タイプ、カテゴリまたは他の識別子を有する既存のソーシャル・グラフ要素(すなわち、ユーザ・ノード202、コンセプト・ノード204、エッジ206)を識別するための検索を行うか、または行わせることができる。タイプアヘッド・プロセスは、1つまたは複数のマッチング・アルゴリズムを使用して、一致するノードまたはエッジの識別を試行することができる。1つまたは複数の一致が見つかると、タイプアヘッド・プロセスは、たとえば、一致するノードの名前(名前の文字列)と、潜在的には、一致するノードに関連付けられている他のメタデータとを含み得る応答をユーザのクライアント・システム130に送信することができる。次いで、タイプアヘッド・プロセスは、一致する既存のプロフィール・インタフェースおよび各ユーザ・ノード202またはコンセプト・ノード204の名前を表示するとともに、一致するユーザ・ノード202またはコンセプト・ノード204につながり得る一致するエッジ206の名前を表示するドロップ・ダウン・メニューを表示し、次いで、これをユーザがクリックまたはその他の形で選択することによって、選択されたノードに対応する一致したユーザもしくはコンセプト名を検索したいという要望、または一致するエッジによって一致したユーザもしくはコンセプトにつなげられているユーザもしくはコンセプトを検索したいという要望を確認することができる。あるいは、タイプアヘッド・プロセスは、ドロップ・ダウン・メニューに表示するよりもむしろ、1位に順位付けされた一致の名前または他の識別子をフォームに自動的に追加するだけでもよい。ユーザは、次いで、キーボードの「enter」を押すか、または自動追加された表明をクリックするだけで、自動追加された表明を確認することができる。一致するノードおよびエッジをユーザが確認すると、タイプアヘッド・プロセスは、一致するソーシャル・グラフ要素を含むクエリをユーザが確認したことを、ソーシャル・ネットワーキング・システム160に通知する要求を送信することができる。送信された要求に応答して、ソーシャル・ネットワーキング・システム160は自動的に(あるいは、要求内の命令に基づいて)、適宜、一致するソーシャル・グラフ要素の、または一致するソーシャル・グラフ要素につなげられているソーシャル・グラフ要素のソーシャル・グラフ・データベースを呼び出すか、またはその他の形で検索することができる。本開示は、特定の方法でのタイプアヘッド・プロセスの検索クエリへの適用を記述しているが、本開示は、任意の適切な方法でのタイプアヘッド・プロセスの検索クエリへの適用を想定している。
検索クエリおよび検索結果に関連して、特定の実施形態は、2006年8月11日に出願された米国特許出願第11/503093号、2010年12月22日に出願された米国特許出願第12/977027号、および2010年12月23日に出願された米国特許出願第12/978265号に開示されている1つまたは複数のシステム、コンポーネント、要素、機能、方法、動作または工程を利用することができ、これらの出願は、本願明細書に援用される。
構造化検索クエリ
特定の実施形態において、第1ユーザ(すなわち、クエリを行うユーザ)から受け取られるテキスト・クエリに応答して、ソーシャル・ネットワーキング・システム160は、テキスト・クエリを構文解析し、特定のソーシャル・グラフ要素に対応するテキスト・クエリの部分を識別することができる。しかし、場合によっては、クエリが1つまたは複数の曖昧な用語を含むことがある。ここで、曖昧な用語とは、複数のソーシャル・グラフ要素におそらく対応し得る用語である。曖昧な用語を構文解析するために、ソーシャル・ネットワーキング・システム160は、ソーシャル・グラフ200にアクセスし、次いで、テキスト・クエリを構文解析して、テキスト・クエリから、曖昧なn−gramに対応するソーシャル・グラフ要素を識別することができる。ソーシャル・ネットワーキング・システム160は、次いで、構造化クエリのセットを生成することができ、ここで、各構造化クエリは、一致する可能性があるソーシャル・グラフ要素のうちの1つに対応する。これらの構造化クエリは、それらが関連性のあるソーシャル・グラフ要素を参照して自然言語構文においてレンダリングされるように、文法モデルによって生成される文字列に基づくことができる。限定ではなく例として、テキスト・クエリ「私のガールフレンドの友達を見せて(show me friends of my girlfriend)」に応答して、ソーシャル・ネットワーキング・システム160は、構造化クエリ「ステファニーの友達(Friends of Stephanie)」を生成することができ、ここで、構造化クエリの「友達」および「ステファニー」は、特定のソーシャル・グラフ要素に対応する参照である。「ステファニー」への参照は、特定のユーザ・ノード202に対応する(ソーシャル・ネットワーキング・システム160がn−gram「私のガールフレンド」を構文解析して、ユーザ「ステファニー」のユーザ・ノード202に対応させた)のに対し、「友達」への参照は、そのユーザ・ノード202を他のユーザ・ノード202につなげる、友達タイプのエッジ206(すなわち、「ステファニーの」一次の友達につながるエッジ206)に対応するであろう。この構造化クエリを実行すると、ソーシャル・ネットワーキング・システム160は、友達タイプのエッジ206によって「ステファニー」に対応するユーザ・ノード202につなげられている1つまたは複数のユーザ・ノード202を識別することができる。限定ではなく別の例として、テキスト・クエリ「フェイスブックに勤務する友達(friends who work at facebook(登録商標))」に応答して、ソーシャル・ネットワーキング・システム160は、構造化クエリ「フェイスブックに勤務する私の友達(My friends who work at Facebook)」を生成することができ、ここで、構造化クエリにおける「私の友達」、「に勤務する」および「フェイスブック」は、前述した特定のソーシャル・グラフ要素(すなわち、友達タイプのエッジ206、勤務先タイプのエッジ206、および会社「フェイスブック」に対応するコンセプト・ノード204)に対応する参照である。提案される構造化クエリをユーザのテキスト・クエリに応答して提供することによって、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザに、ソーシャル・グラフ200において表される要素を、それらのソーシャル・グラフ属性およびさまざまなソーシャル・グラフ要素に対するそれらの関係性に基づいて検索するための強力な手法を提供することができる。構造化クエリは、クエリを行うユーザが、特定のエッジ・タイプによってソーシャル・グラフ200において特定のユーザまたはコンセプトにつながっているコンテンツを検索することを可能にすることができる。構造化クエリは、第1のユーザに送信され、(たとえば、クライアント側タイプアヘッド・プロセスを通じて)ドロップ・ダウン・メニューにおいて表示されることが可能である。ここで、第1のユーザは、次いで、適切なクエリを選択して、所望のコンテンツを検索することができる。本願明細書において記述されている、構造化クエリを使用する利点のうちのいくつかは、限られた情報に基づいてオンライン・ソーシャル・ネットワークのユーザを見つけること、さまざまなソーシャル・グラフ要素に対するコンテンツの関係性に基づいて、オンライン・ソーシャル・ネットワークからコンテンツの仮想インデックスをまとめること、または、自分および/もしくは自分の友達に関係するコンテンツを見つけることを含む。本開示は、特定の構造化クエリを特定の方法で生成することを記述しているが、本開示は、任意の適切な構造化クエリを任意の適切な方法で生成することを想定している。
要素の検出およびクエリの構文解析に関するさらなる情報は、2012年7月23日に出願された米国特許出願第13/556072号、2012年12月31日に出願された米国特許出願第13/731866号、および2012年12月31日に出願された米国特許出願第13/732101号において見出されることができ、これらの出願の各々が、本願明細書に援用される。構造化検索クエリおよび文法モデルに関するさらなる情報は、2012年7月23日に出願された米国特許出願第13/556072号、2012年11月12日に出願された米国特許出願第13/674695号、および2012年12月31日に出願された米国特許出願第13/731866号において見出されることができ、これらの出願の各々が、本願明細書に援用される。
キーワードおよびキーワード・クエリの生成
特定の実施形態において、ソーシャル・ネットワーキング・システム160は、ユーザがテキスト文字列をクエリ・フィールドに入力している間に、カスタマイズされたキーワード補完提案を、クエリを行うユーザに提供することができる。キーワード補完提案は、非構造化フォーマットでユーザに提供することができる。キーワード補完提案を生成するために、ソーシャル・ネットワーキング・システム160は、ソーシャル・ネットワーキング・システム160内の複数のソースにアクセスして、キーワード補完提案を生成し、複数のソースからのキーワード補完提案にスコアを付け、さらにキーワード補完提案をユーザに返すことができる。限定ではなく例として、ユーザがクエリ「友達 スタン(friends stan)」とタイプすると、ソーシャル・ネットワーキング・システム160は、たとえば、「友達 スタンフォード(friends stanford)」、「友達 スタンフォード大学(friends stanford university)」、「友達 スタンリー(friends stanley)」、「友達 スタンリー クーパー(friends stanley cooper)」、「友達 スタンリー キューブリック(friends stanley kubrick)」、「友達 スタンリー カップ(friends stanley cup)」、および「友達 スタンロンスキー(friends stanlonski)」を提案することができる。この例では、ソーシャル・ネットワーキング・システム160は、曖昧なn−gram「スタン(stan)」の変形であるキーワードを提案しており、ここで提案は、多様なキーワード生成器から生成されることができる。ソーシャル・ネットワーキング・システム160は、ユーザが何らかの形で提案につながっていることを理由にキーワード補完提案を選択していてもよい。限定ではなく例として、クエリを行うユーザは、ソーシャル・グラフ200においてスタンフォード大学に対応するコンセプト・ノード204に、たとえば、「いいね!」タイプまたは「通っていた」タイプのエッジ206でつながっている可能性がある。また、クエリを行うユーザには、「スタンリー クーパー(Stanley Cooper)」という名前の友達がいる可能性がある。本開示は、特定の方法でのキーワード補完提案の生成を記述しているが、本開示は、任意の適切な方法でのキーワード補完提案の生成を想定している。
キーワード・クエリに関するさらなる情報は、2014年4月3日に出願された米国特許出願第14/244748号、2014年8月27日に出願された米国特許出願第14/470607号、および2014年12月5日に出願された米国特許出願第14/561418号において見出されることができ、これらの出願の各々が、本願明細書に援用される。
多義コードを使用した類似度検索
特定の実施形態において、ソーシャル・ネットワーキング・システム160は、圧縮ドメインで近似最近傍探索を行うことができる。検索は、多義コードを使用することができ、これは、直積量子化の距離推定品質、および、バイナリ・コードのハミング距離との効率的な比較、の両方を提供する。検索時、チャネル最適化ベクトル量子化器を使用したこの双対解釈が検索を加速させることができる。インデックス付きベクトルのほとんどをハミング距離で排除することができ、ベクトルの一部のみが、非対称距離推定法で順位付けされる。
この方法は、転置マルチインデックスなどの特徴空間の粗分割の補足とすることができる。これは、10億個のベクトルを含むBIGANNデータセットなどのいくつかの公開ベンチマークで行われた実験で証明されており、クエリ時間について、コアあたり0.3ミリ秒を下回る従来技術の結果を報告している。このアプローチは、CNN画像記述子によって記述されるYahoo Flickr Creative Commons 100Mに関連付けられているk最近傍(k‐NN:k‐nearest neighbor)グラフの近似計算を、単一マシンで8時間未満で行えるようにすることができる。
最近傍探索、またはより一般的には類似度検索は、この数十年でさまざまな研究コミュニティから注目を集めている。コンピュータ・ビジョンのコミュニティは、非常に大量の視覚的コレクションを扱うときに非常に重要なこのテーマに対して、特に活動的である。
初期の近似最近傍(ANN)法は主に速度と確度とのトレードオフを最適化していたが、最近の多くの研究は、いくつかの理由から、メモリ要件を中心的な基準に置いている。たとえば、メモリ階層に起因して、より少ないメモリ手段を使用することは、より高速のメモリを使用することを意味し、ディスクはメイン・メモリよりも遅く、メイン・メモリはCPUキャッシュよりも遅い、等である。メモリへのアクセスが、検索のボトルネックとなり得る。そのため、コンパクト符号を使用するアルゴリズムの方が、フル・ベクトルに依存するものよりも高い効率を提供する可能性が高い。このため、実施形態は、コンパクト符号を用いたANNを中心に扱い、これは、単一マシン上で、10億個ものベクトルを含むベクトル集合における検索を行うことができる。
コンパクト符号によるANNでの検索には2通りある。第1の種類の方法は、オリジナルのベクトルをハミング超立方体にマッピングするよう提案する。得られるビット・ベクトルは、CPUおよびGPUの両方で利用できるxorおよびpopcntなどの最適化された低レベルのプロセッサ命令により、ハミング距離と効率的に比較される。別のアプローチは、所与のコード・サイズに対してより優れた距離の推定を実現するために、量子化の観点を採用することである。これら2種類のアプローチはしばしば対立するものと見られるが、どちらにもそれぞれ長所と短所がある。バイナリ・コードは、より高速で単純な距離計算を行うことができ、コードが生成されたら外部のメタデータは必要ない。対して、量子化ベースのアプローチは、より優れたメモリ/確度の操作点を達成する。
特定の実施形態において、本願明細書で説明する多義コードは、両方の良いところを持っている。これらは、特にフィルタリング工程で有用なバイナリ・コード、または直積量子化アプローチの非対称距離推定量のいずれかと比較することができる。この双対解釈を成し遂げるための重要な側面は、学習手順である。このアプローチは、チャネル最適化ベクトル量子化に関わる。
特定の実施形態において、ソーシャル・ネットワーキング・システム160は、第1ユーザのクライアント・システムから、クエリを受け取ることができ、クエリは、n次元のベクトル空間のn次元のベクトルによって表される。特定の実施形態において、ソーシャル・ネットワーキング・システム160は、ベクトルを複数のサブベクトルに分割することができ、複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化し、量子化された各サブベクトルは、ベクトル・コードによって表される。このように、このアプローチは、直積量子化器を訓練することになる。特定の実施形態において、ソーシャル・ネットワーキング・システム160は、量子化されたサブベクトルを表すベクトル・コードを、クエリを表す多義コードに翻訳することができ、各多義コードは、量子化されたサブベクトルのうちの1つを表す。このように、バイナリ・コードの重心へのいわゆる「インデックス割り当て」を最適化する。他の点では、方法は、図3に図示するように、類似の重心間の距離がハミング空間において小さくなるように、重心の計算法を再配列することができる。
特定の実施形態において、ベクトル・コードを多義コードに翻訳することは、量子化されたサブベクトルの重心間距離を多義コードのバイナリ比較が反映するように、ビットの置換を学習することを含む。図3は、特定の実施形態による、類似の重心間の距離がハミング空間において小さくなるような、重心の計算法の再配列を示す。多義コードは、直積量子化(8バイトのコードについて、コードあたり毎秒222Mの距離評価)と、またはバイナリ・コード(毎秒1.19G距離)として、比較できるベクトルのコンパクト表現である。この特性を得るために、ビットへの量子化インデックスの割り当ては、最も近い重心が小さいハミング距離をもつように最適化することができる。図は、k平均重心([0,1]×[0,1]で均一に描かれる点で学習される)とそれに対応するバイナリ表現とを示す。観察できるように、1ビットずつ異なるコード(図では赤色のセグメントで接続されている)は、一般に、最適化後の最も近い重心に対応し(図3、右)、これは、標準PQコードには当てはまらない(図3、左)。
結果として、本方法は、確度の点では量子化ベースの方法に、検索効率に関してはバイナリ方法に、いずれにもほぼ匹敵する。このアプローチを転置マルチインデックスなどの相補的アプローチと組み合わせると、本方法は、いくつかの大規模な公開ベンチマークに関して実施された実験で証明されるように、従来技術を大差でしのぐことができる。興味深いことに、本アプローチの高い効率は、4,096次元のベクトルで描写される大きな画像コレクションFlickr100Mについて、全近傍問題に対し、すなわち、k‐NNグラフを計算することに対して、スケーラブルな解決策を提供する。
コンパクト符号を用いた近位最近傍
コンパクトなバイナリ・コード。局所性鋭敏型ハッシングは、先駆的なバイナリ符号化手法である。いくつかの仮定の下、ハミング距離は、統計的にコサイン類似度(同等に、正規化ベクトルのユークリッド距離)に関係する。バイナリ・ハッシュの総当たり比較は、メモリの制約がある中での効率的な画像検索の現実的な選択肢と考えられてきたが、これは、100万規模の画像コレクションへのこのアプローチのスケーラビリティを証明するその後の研究によって普及した。スペクトラル・ハッシングまたは反復量子化(ITQ:iterative quantization)など、このハミング空間での検索を迅速化するために多くのアプローチが提案されてきた。たとえば、k平均ハッシング法は、まず、ベクトル量子化器を生成し、生成したコードをハミング距離と比較する。
量子化ベースのコード。いくつかの研究は主に、メモリと距離推定とのトレードオフの最適化を中心に扱ってきた。特に、ロイド条件を満たすベクトル量子化器は、二乗ユークリッド距離推定法で統計的な保証を提供することが証明されており、これは、予想では量子化器の二乗損失によって制限される。これらの量子化ベースの方法は、直積量子化(PQ:product quantization)とその最適化バージョンの「最適化直積量子化」および「デカルトk平均(Cartesian k‐means)」とを含む。
これらのアプローチは、視覚的記述子の大規模なコレクション内での近似検索にとって効果的である。その後の研究は、より一般的な観点(「加法的量子化(Additive quantization)」など)を採用することによって、優れた近似化および検索パフォーマンスを提供する可能なメモリ/効率のトレードオフを推し進めてきたが、これを得るにははるかに高い計算符号化コストがかかる。PQとこの一般式との間で、残差量子化器によって良好なトレードオフが達成され、これは、オリジナルのベクトルの代わりに残差誤差ベクトルを符号化することによって量子化損を低減するために非網羅的なPQ変量で日常的に使用されるだけでなく、コーディング戦略として単独でも使用される。
ハイブリッド法。ANN探索の前述の方法は、インデックス付きベクトルあたりのメモリ使用量を制限し、正確な距離よりも計算速度を高速化した距離推定量を提供する。しかし、クエリがすべてのデータベース要素と比較されるという意味において、検索はまだ網羅的である。10億規模のコレクションの場合、メモリ内でのコードの読み取りは、通例、1秒オーダーの検索時間になる厳しい制約である。このメモリのボトルネックが課す制限から2段階のアプローチが導かれており、ハッシングまたはクラスタリングによりまず特徴空間が分割される。実際的には、各領域について、識別子を記憶する転置リストと対応するコンパクト符号とが記憶される。クエリ時に、領域の部分集合に関連付けられているコードについてのみ、距離が推定される。共通転置インデキシング(joint inverted indexing)で行われるように、初期のLSH論文にあるように複数の分割を使用することも可能である。しかし、これらの解決策にはいくつかのインデキシング構造が必要で、そのためメモリと確度とのトレードオフに関して競争力がない。粗いレベルについてさまざまな分割方法が提案されてきた。特に、転置マルチインデックスが直積量子化を使用して、粗いレベルを画定することも、残差ベクトルをコーディングすることも行う。この戦略は、コードに基づく再順位付け戦略とさらに組み合わせると、従来技術のパフォーマンスを提供する。
バイナリ・コード対量子化ベースのアプローチ。ハミング距離は、量子化法に関わるテーブル・ルックアップに基づく距離推定法よりも評価が著しく高速である。たとえば、加速倍率は、コードの長さにより、4.6倍〜6.6倍になり得る。しかし、バイナリ法は、ハミング空間によって課される制約を受ける。まず、可能な距離の数は、高々d+1であり、dはバイナリ・ベクトルの長さである。この問題は、LSHの非対称変量によって部分的には解決され、その推定は、データベース・ベクトルのコンパクト符号を使用するが、クエリ側ではない。しかも、こうした非対称尺度は、直積量子化から派生する方法のようにルックアップを必要とし、そのためハミング距離よりも評価に費用がかさむ。他方で、量子化ベースの方法は、より優れたメモリ/確度の妥協を提供し、これは、2値化が量子化の特殊な例であることから予想される。
バイナリ・コードおよび量子化ベースのコードには、それぞれ長所と短所がある。文献は通常、バイナリ・コードと量子化ベースのコードとを並行法として提示するが、次のセクションでは、両方の種類の方法の長所を享受する方法を紹介する。
多義コードを用いた近似最近傍
特定の実施形態において、方法は、量子化ベースの方法の推定の確度を提供しながら、ハミング距離の高速計算を利用することができる。特定の実施形態において、方法は、通常の直積量子化器を学習し、次いでハミング距離が重心間距離を近似化するように、バイナリ・コードへの重心インデックスの割り当てを最適化する。このセクションでは、まず、この性質を達成するために最適化された目的関数を説明し、次に最適化アルゴリズムを説明する。
特定の実施形態において、ソーシャル・ネットワーキング・システム160は、ベクトルを複数のサブベクトルに分割することができ、n次元のベクトル空間を複数の直積部分空間に分割することを含み、ベクトル間の距離は、直積部分空間内の対応するサブベクトル間の距離の和と同等である。特定の実施形態において、直積量子化器について、構成要素のサブ量子化器のそれぞれを個々に最適化する。特定の実施形態において、サブ量子化器のそれぞれは、複数のサブ量子化器の各他のサブ量子化器とは別個である。そのため、以下では、サブ量子化器ごとに1つの目的関数(および最適化プロセス)をもつ。
目的関数
2つの目的関数を考えてみる。距離推定量に基づいて損失を最小化するものと、順位付け損失を最小化するものである。
表記法。量子化器は通常、その重心の集合によって記述される。Jを、重心インデックスの集合とする:J={0,1,…,2−1}で、各(サブ)量子化器が標準慣行のように1バイトのオリジナルのベクトルを符号化する場合、d=8である。cを、重心iに関連付けられている再現値とする。d:
を、重心間の距離、たとえば、ユークリッド距離とする。π:J→{0,1}を、各重心インデックスを単位超立方体の異なる頂点にマッピングする全単射関数を表すものとする。最後にh:
を、2つのd次元バイナリ表現間の距離とする。
距離推定法損失。1つの考えられる目的は、2つの重心間の距離d(c,c)が2つの対応するバイナリ・コード間のハミング距離h(π(i),π(j))によって近似化されるような、全単射マップπを見つけることである。
上記式において、f:
は、コードワード間の距離d(c,c)をハミング距離に匹敵する範囲にマッピングする単調増加関数である。実際上、fについては単純な線形マッピングを選ぶ。この選択は、次の観察が理由となっている。{0,1}から無作為に抜き出した2つのバイナリ・ベクトル間のハミング距離は、平均d/2で分散d/4の2項分布に従う。距離d(c,c)の分布を2項式の優れた近似化であるガウス分布で平均μで標準偏差σで近似化できると仮定すると、これら2つの分布を、その平均と分散とをマッピングすることによってマッピングすることができる。それにより、次式が得られる。
上記式において、μおよびσは経験的に測定される。
k‐NNの状況において、大きいものよりも小さい距離を近似化する方が重要であるため、実際上、目的関数において距離に重みを付けることが有益であることがわかった。このことから、次の重み付き目的が導かれる。
α<1で形式w(u)=αの関数w:
を選ぶ。我々の実験では、α=1/2としたが、範囲[0.2,0.6]のαの値は、同様な結果になることが分かった。
順位付け損失。k‐NN探索の状況において、我々は、コードワードの順位付けを維持する全単射マップπを探すことに関心がある。この目的のために、情報検索の考え方を採用する。(i,j)を1ペアのコードワードとし、iは「クエリ」と想定され、jはiに「関連がある」と想定される。(クエリ,関連性)ペアの選択は後で述べる。クエリiについて、d(c,c)<d(c,c)になるような負のコードワードkをとる。ペア(i,j)の損失は、次式のように定義することができる。
上記式において、uが真なら
であり、そうでなければ0である。重心間の距離によるとiはkよりもjに近いが、ハミング距離によるとどれくらい多くのコードワードkがjよりもiに近いかを測定する。前の損失は、ケンドールのタウ係数に密接に関係して正しく順位付けられたペアの数を測定していたことに注目する。
損失rπ(i,j)のある問題は、リストの最上位に最下位と同じ重みを与えることである。しかし、順位付け問題では、上位順位で発生した誤差に、より大きい重みを与えるのが望ましい。そのため、ペア(i,j)については損失rπ(i,j)を直接使用するのではなく、代わりに、rπ(i,j)と劣線形に増加する損失を採用する。より具体的には、単調減少数列α、およびjに劣線形に増加する数列
を導入する。ペア(i,j)の重み付き損失を
として定義する。
その後の問題は、ペア(i,j)をいかに選択するかである。1つ考えられることは、iのk‐NNの中からjを選ぶことであろう。その場合、次式を最適化することになるであろう。
このアプローチの問題は、NNリストについて任意の長さkを選ぶ必要があることである。代替は、すべてのj≠iを潜在的にiに「関連性がある」と考えるが、iから遠く離れているjの寄与の重みを下げることである。このような場合、次式を最適化する。
上記式において、αは減少数列であり、r(i,j)はiの近傍の順序付きリストでjの順位であることを思い出していただきたい。
我々のすべての順位付け実験において、次式を使用し、
α=1/iを選ぶ。
最適化
前述の目的関数は、全単射マップπ、または同等にPQ重心の集合の別の計算法を見つけることを目的とし、近傍の重心に類似のバイナリ・コードを割り当てるであろう。
この問題は、チャネル最適化ベクトル量子化の問題(チャネルによるビットの破壊が再構成にできるだけ影響を与えないように研究者らが量子化器を設計してきた)と似ている。これは、緩和できない個別の最適化の問題であり、そのため可能な全単射マップの集合が巨大になると、極小値をターゲットにすることしかできない。コーディングの文献では、このようなインデックス割り当ての問題はまず、貪欲に、たとえば、バイナリ・スイッチング・アルゴリズムを使用して最適化された。初期インデックスの割り当てから始めて、各反復で、このアルゴリズムは、あらゆる可能なビット入れ替え(すなわち、d)をテストし、目的関数の最善の更新を提供するものを維持する。しかし、この戦略は、好ましくない極小値に急速に捕らわれることがある。我々が知る限り、インデックス割り当て問題に対する最善のアプローチは、最適化を実行するためにシミュレーテッド・アニーリングを採用することである。
アルゴリズムは、サイズ2のテーブルとして定義される全単射マッピングπに依存する損失L(π)の最適化を目的とする。これは次のように進める。
1.初期化
2.現在の解π:=[0,…,2−1]
3.温度t:=t
4.Niter回反復する:
5.無作為にi、j∈J、i≠jを抜き出す
6.π’:=π、項iとjを入れ替える
7.コスト更新ΔC:=L(π’)−L(π)を計算する
8.ΔC<0または確率tで無作為の場合:
9.新たな解π:=π’を受け入れる
10.t:=t×tdecay
アルゴリズムは、反復回数Niter=500,000、初期「温度」t=0.7、およびtdecay=0.91/500に依存する、すなわち、500回反復するごとに0.9倍減少する。距離推定損失(各順位付け損失)の評価は、O(22d)(各O(23d))に複雑さをもつ。しかし、入れ替えによって発生するコスト更新の計算は、O(22d)(各O(22d))で実施することができる。
図4は、最適化前後のバイナリ・ベクトルとして使用されるコードの比較を示す。図4に示すように、ハミング距離は、最適化前より後の方が真の距離との相関が大きい。図4の左側には、真の距離対PQコードを用いた距離推定を示す。図4の中央には、真の距離対多義最適化前のハミング距離を示す。図4の右側には、真の距離対多義最適化後のハミング距離を示す。多義とのバイナリ比較はかなり区別がはっきりしているが、PQコードとして解釈されるときには同じ推定を提供する。
考察
最適化アルゴリズムは、以前にチャネル最適化ベクトル量子化で採用されたものと似ているが、我々の目的関数は、適用シナリオを反映するためにかなり異なっている。通信において、多くのビット誤りが同時に発生することは考えにくく、特にメモリレス・チャネルでは考えにくい。そのため、通信で採用される目的関数は小さなハミング距離に注目する。対して、ANNでは、近傍の典型的なハミング距離は比較的大きい。
特定の実施形態において、ソーシャル・ネットワーキング・システム160は、翻訳された多義コードに基づいて、量子化されたサブベクトルと、複数のコンテンツ・オブジェクトを表すベクトルの複数の対応するサブベクトルのそれぞれとの間のハミング距離を計算することができる。提案される2値化したPQコードは競争力のあるパフォーマンスを提供するが、その確度はPQのものよりも著しく低い。これは、大規模な検索に2段階の戦略を提案する。あるクエリがあるとすると、まず、2値化したPQコードの高速ハミング距離を使用して、データベース項目の大半を排除する。次いで、ハミング距離が所与の閾値τ未満であった項目について、よりコスト高の非対称距離を評価する。特定の実施形態において、ソーシャル・ネットワーキング・システム160は、計算されたハミング距離が閾値距離未満の複数のサブベクトルによって表されるコンテンツ・オブジェクトの部分集合の中から、近似最近ベクトルを有するコンテンツ・オブジェクトを決定することができ、その決定は、1つまたは複数のルックアップと、クエリを表す翻訳された多義コードと、コンテンツ・オブジェクトを表す対応する多義コードとの加法演算とに基づく。たとえば、近似最近ベクトルを有するコンテンツ・オブジェクトを決定することは、量子化されたサブベクトルとコンテンツ・オブジェクトの部分集合を表すサブベクトルとの間の最短重心間距離を計算することを含むことができる。
特定の実施形態において、量子化されたサブベクトルとコンテンツ・オブジェクトの部分集合を表すサブベクトルとの間の最短重心間距離を計算することは、加法的量子化を使用して行われる。たとえば、ソーシャル・ネットワーキング・システム160は、コンテンツ・オブジェクトの部分集合内の各コンテンツ・オブジェクトについて、量子化されたサブベクトルとコンテンツ・オブジェクトを表すサブベクトルとの間の中心間距離を、予め生成されたルックアップ・テーブルから引き出すことができる。ソーシャル・ネットワーキング・システム160は、コンテンツ・オブジェクトの部分集合内の各コンテンツ・オブジェクトについて、クエリを表すベクトルとコンテンツ・オブジェクトを表すベクトルとの間の近似距離を、量子化されたサブベクトルとコンテンツ・オブジェクトを表す対応するサブベクトルとの間の重心間距離を追加することによって計算し、計算された近似距離のうちの最短のものを決定することができる。
フィルタリング段階について、他の戦略も考えられるであろう。このような1つの戦略は、直積量子化器についてどれくらいの量子化インデックスが異なるかを測定することである。正式には、この量をハミング距離ともいうが、インデックスのベクトル間で測定されるのであって、バイナリ・ベクトル間ではない。言い換えると、所与の数を超えるサブ量子化器が、クエリのものとは同一ではないインデックスを生成する場合、ベクトルを排除することができる。実験のセクションで示すように、この方法は、このセクションで提案される戦略ほど効率的でも正確でもない。
このような別の戦略は、フィルタリング段階について、PQとは無関係のバイナリ符号化手法、すなわちITQを使用することであろう。問題は、ITQコードおよびPQコードの記憶を伴うため、この方法のメモリ要件が増大することであろう。対して、我々は、提案されるアプローチではデータベース項目につき1つの多義コードしか記憶しない(ストレージ要件に重きが置かれる場合には必須である)。特定の実施形態において、各コンテンツ・オブジェクトは、n次元のベクトル空間でn次元のベクトルで表され、コンテンツ・オブジェクトを表すベクトルは、複数のサブベクトルに分割される。たとえば、コンテンツ・オブジェクトを表す複数のサブベクトルは、対応する直積部分空間について複数のサブ量子化器を使用して量子化される。
実験
このセクションは、分析を行い、我々の多義コードを評価する。評価プロトコルを紹介した後で、我々の中心的なアプローチを多面的に分析する。次いで、我々のアプローチが転置マルチインデックス(IMI:inverted multi‐index)に匹敵することを証明し、従来技術に対する比較を行う。
評価プロトコル
我々のアプローチを、ANNの標準ベンチマークと、我々が検索品質を評価するために導入する新たなベンチマークとを用いて分析し、評価する。
SIFT1Mは、128次元のSIFT記述子のベンチマークである。データベースには100万個のベクトルがあり、加えて訓練用に100,000個のベクトルおよび10,000個のクエリ・ベクトルがある。これは比較的小さい集合で、我々は、主にパラメータの分析に使用する。
BIGANNは、ANN探索で広く使用されている大規模ベンチマークで、これもSIFT記述子から作られる。10億個のデータベース・ベクトル、1億個の訓練用ベクトルおよび10,000個のクエリを含む。
FYCNN1MおよびFYCNN90Mは、より難しい特徴をもつ検索の品質を評価するために導入される。我々は、Yahoo Flickr Creative Commons 100Mの画像コレクションを次のように活用する。FYCNN90Mでは、データセットを3つの集合に分割した。9千個のベクトルにはインデックスを付け、1万個のベクトルはクエリとして機能し、500万個のベクトルを訓練用に使用する。FYCNN1Mは同じ訓練用の集合およびクエリを使用するが、インデックス付きの集合は、我々の方法の分析のために最初の100万個の画像に制限する。これらのガイドラインに従って、畳み込みニューラル・ネットワークの特徴を抽出する。我々は、AlexNetの7番目のレイヤの活性化を計算する。これから、4096次元の画像記述子が得られる。インデックスを付ける前に、これらの記述子をPCAで256Dまで減少させ、その後、ランダム回転を適用する。
すべてのデータセットについて、recall@Rによって確度を評価する。このメトリックは、真の最近傍が上位Rの結果の中に返されるクエリの一部を測定する。報告されるすべての時間は、2.8GHzマシンのシングル・コアに関するものである。
多義コードのパフォーマンスの分析
我々は、まず多義コードのパフォーマンスを分析する。表記法を紹介しよう。まず、直積量子化器を構築する3通りの方法を検討する。
PQは、ベースラインである。直積量子化器で生成されたコードを、インデックス割り当ての最適化をせずにそのまま使用する。
Polydは、距離推定量損失を最小化することによって、インデックス割り当てが最適化される直積量子化器をいう。
Polyrは、同様に、提案される順位付け損失で最適化されるPQをいう。
コードブックおよびインデックス割り当てが学習されたら、多義コードに基づいて距離を推定するための次の方法を検討する。
ADCは、非対称距離推定量に基づく通常の比較である。
バイナリは、コードが、バイナリ・コードの場合と同様にビット・ベクトルと見なされるときの、ハミング距離とのビット単位の比較をいう(たとえば、ITQ)。
disidxは、どれくらいのサブ量子化器が異なるコードを出すかをカウントする。
双対は、多義コードの両方の解釈を採用する戦略をいう。ハミングコードは、クエリまでの距離が閾値τより大きいデータベースのベクトルを排除するために使用する。このテストを満たすインデックス付きベクトルを非対称距離推定量と比較する。
注記:多義コードは、主にPQコードである。そのため、多義コードおよび通常のPQのパフォーマンスは、比較がインデックス割り当てから独立している場合には同一で、これは、ADCおよびdisidxに当てはまる。たとえば、Polyd/ADC、Polyr/ADCおよびPQ/ADCの組み合わせは、効率の点でも確度の点でも同等である。
特定の実施形態において、多義コードは16バイト/ベクトルとすることができる。disidxのパフォーマンスは、インデックス割り当てに依存しないことが可能である。バイナリで比較するときに、我々の最適化の前(PQ/バイナリ)と後(Polyd/バイナリおよびPolyr/バイナリ)にコードのパフォーマンスを示す。次いで、提案される多義双対戦略の結果を提示するが、これは、バイナリ法の速度に近づきながらPQとほぼ同じ確度である。訓練用集合では、ハミング比較は、点の少なくとも95%を排除するようにハミング閾値を調整する。結果は5回平均で出し、無作為性のソースは、PQ訓練とシミュレーテッド・アニーリングのk平均(クラスタリング)法である。最後の3行、すなわちLSH、ITQおよびPQは、参照のために記載されたベースラインである。LSHは、パフォーマンス向上のためにランダム射影の代わりにランダム回転を使用する。
表1は、前述のPQ構成のパフォーマンスを詳述する。まず、disidxの確度が低いこと、また専用マシンの命令がないために比較的遅いことにも留意する。次いで、これらの結果は、我々のインデックス割り当ての最適化がバイナリ比較の品質改善に非常に効果的であることを示している。この最適化がなければ、バイナリ比較は、結果を順位付けするのにも(PQ/バイナリ、フィルタリングするのにも(PQ/双対)効果がない。順位付け損失PolyrはPolydにやや劣るため、我々は、以下において後者を採用する。
図5は、特定の実施形態における、双対戦略に対するハミング閾値の影響を示す。たとえば、図5は、128ビット(16サブ量子化器)を用いたSIFT1MデータセットのRecall@1対検索速度を示す。多義の操作点はハミング閾値によってパラメータ化され(括弧内)、これは、PQ距離推定のために維持される点の比率に影響する。多義最適化(PQ双対なしで得られるトレードオフと2つのベースライン(ITQおよびPQ)を参照のために記載する。
図5は、Polyd/双対の関連性を示す。これにより、多様なハミング閾値τについてこの方法によって達成されるパフォーマンスが求められ、速度と確度とのトレードオフをパラメータ化する。多義コードによって妥協をほぼなくすことができ、PQ/ADCの品質を達成するために要するのは、バイナリ・コードと比較して、検索時間の軽微な犠牲のみである。閾値τ=54のとき、点の90〜95%が排除される。τ=42の場合、これは、99.5%超まで上昇する。
図6は、距離ベースの目的関数について、反復に従う多義コードのパフォーマンスを示す(双対、τ=52、128ビット)(順位付け損失のある結果は類似)。初期状態(0回の反復)は、まだ我々の方法で最適化されていない直積量子化器に対応することに留意する。
図6は、反復回数の関数としてのバイナリ・フィルタリングのパフォーマンスを示す。このアルゴリズムは、通例、数10万回の反復に収束する(1回の反復=可能なインデックス入れ替えの1テスト)。それぞれ256個の重心のあるPQサブ量子化器の集合の場合、これは、距離再構成損失PolyRが数秒であり、順位付け損失PolyRについては最大1時間であることを意味する。
従来技術との比較
大規模なデータセットでは、クラスタリングにより通例実施される予備空間分割を残差ベクトルで学習されるコンパクト符号と組み合わせるハイブリッド法によって、確度、検索時間およびメモリ間の最善のトレードオフが得られる。我々が、我々の多義コードをIMIと組み合わせるのはこれが理由である。この方法は、空間を直積量子化器で分割し(「粗い」分割レベル)、PQを使用して残差誤差ベクトルを符号化する。検索は、粗レベルで少数の転置リストを選択することによって進み、次いで、残差PQコードを使用して、選択されたリストに関連付けられているベクトルの距離を推定する。特定の実施形態において、量子化されたサブベクトルとコンテンツ・オブジェクトの部分集合を表すサブベクトルとの重心間距離は、予め生成されたルックアップ・テーブルから引き出される。我々は、複数のリストを調べるとき、PQに関わるルックアップ・テーブルの計算をさらに最適化する。
表2は、BIGANN(10億個のベクトル)に関する従来技術との比較を示す。訪問されるリストの最大数と距離の評価数(「調査/上限」列)のどちらにも上限を設ける。タイミングについては、我々が改良した実施態様()を使用し、最初の数は、バッチ・モードで行われるクエリに関するものであるのに対し、2番目は、1度に1つのクエリに対応する。我々の多義法は、コードの80%を排除するように設定される。
この方法を基に構築すると、残差PQの多義コードを学習し、それによりリスト項目のほとんどを排除するための中間段階を導入できるため、PQでの距離推定のほとんどが回避される。表2は、BIGANNデータセットに関する従来技術アルゴリズムとの比較を記載する。並行法と、我々が改良したIMIの再実施態様とについて報告されるタイミングの両方を報告する。我々のシステムがオリジナルのIMIと比較して非常に競争力のある結果を得ることはすでに述べた。バッチ・モードに対し、1度に1つのクエリ・ベクトルを検索する場合、粗量子化は50〜60%より高価になる。そのため、以下では、粗量子化器の固定費を削減することによってより積極的な操作点をターゲットにするためにK=4096を使用する。この場合、Polyd/双対の結果は、IMIおよび従来技術と比較して明らかな改善を示す。特に、16バイトの場合、1つのコアで、1ms未満でrecall@1=0.217を達成することができる(単一クエリ・モードでは0.38ms、バッチ・モードでは0.64ms)。バイナリ・フィルタは、Recall@1スコアのわずかな減少のみを引き起こし、ほぼ2で検索時間を割る。
図7は、特定の実施形態による、FYCNN90Mベンチマークに関するさまざまな方法のパフォーマンスを示す。我々は、ベクトルあたり、すなわちインデックス付き画像あたり20バイト(コードについて128ビットで、識別子あたり4バイト)を使用する。上:参照のために、すべてのベクトル・インデックスとそのコードとに基づいてクエリを網羅的に比較する方法によって得られた結果を示す。予想される通り、非網羅的な方法(下)は、大量の転置リストを調べるときには(「調査256」を参照)特に、はるかに優れたパフォーマンスを達成する。我々の提案IMI+PolyD/双対は、メモリ、検索時間および確度間の最善のトレードオフをかなりの差で提供する。
FYCNN90Mベンチマークでは、単一のクエリは、9千万の画像を含むコレクション内の画像を検索することに相当する。図7は、異なる方法によって達成されるパフォーマンスを示す。まず、非網羅的な方法(下)は、ITQのようにコードを網羅的に比較する方法(上)よりも少なくとも2桁速いことが観察される。前者は、数秒で類似の画像を見つけることができる。ここでも、我々の多義戦略IMI+PolyD/双対は、その競合法IMIを上回る、競争力のある利点を提供する。我々の方法は、無視できる確度の損失で、約1.5倍高速になる。
例示的なアプリケーション:大規模k‐NN画像グラフ
特定の実施形態において、コンテンツ・オブジェクトは画像または動画であり、本願明細書で説明する方法は、データベースにおいてクエリ画像またはクエリ動画に最も類似したk個の画像を見つけるために使用することができる。
たとえば、この高速インデキシング・スキームの適用は、非常に大きな画像コレクションの近似k‐NNグラフを構築するという問題になり得る。この実験の場合、Flickr 100Mデータセットで利用できる95,063,295の画像を利用する。我々は、PCAで256Dまで減少させた4,096DのAlexNet特徴を使用する。グラフ構築のために、各画像について順にk=100でk‐NNを単に計算する。これには、CPUサーバの20スレッドを使用して7時間44分かかる。我々が検討するコレクションは、k‐NNグラフに関する以前の研究で検討されたものよりも著しく大きいことに留意する。
図8は、特定の実施形態における、画像モードと、グラフにおけるその近傍との例を示す。各参照画像(左)について、その右側にk‐NNグラフでの対応する画像近傍を示す。視覚化のために、ランダム・ウォーク手法に従うモードを求める。まず、ウォークの定常分布(すなわち、ランダム・ウォーク中に訪問される各ノードの確率)を反復計算し、次いでモードとして、グラフ内の定常確率の各極大値を検討する。約3,000のこのような最大値を見つける。図8は、これらの最大値のサンプルと、それらの最も近い近傍とを示す。これらの結果は、発見された近傍の典型的な品質を代表するものと考えているが、ただし、プライバシーのために、顔に対応する多数のモードは示しておらず、そのうち「人のペア」、「2人より多くのクラスタ」または「赤ちゃんの顔」の特殊モードを含む多くを見つけた。
特定の実施形態において、ソーシャル・ネットワーキング・システム160は量子化演算子
を学習することができ、ここで、
はn次元のベクトルであり、
は量子化インデックスであり、各量子化インデックスkは、n次元の量子化重心mに関連付けられている。特定の実施形態において、ソーシャル・ネットワーキング・システム160は、クラスタリング・アルゴリズム(たとえば、k平均法)で1組の量子化重心を学習することによって演算子cを学習し、量子化インデックス間の第1距離(たとえば、ハミング距離)が、対応する重心間の第2距離(たとえば、重心間距離)に近似するように、量子化重心のインデックスを割り当てる。特定の実施形態において、量子化は、直積量子化(PQ)を含むことができる。限定ではなく例として、ソーシャル・ネットワーキング・システム160は、
の複数のサブベクトル
を決定することによって
を計算し、各サブベクトルを複数のサブ量子化器cで量子化することができる。各サブ量子化器は、独立して各サブベクトルを量子化する。各サブ量子化器は、独立して訓練されていてもよい。特定の実施形態において、ソーシャル・ネットワーキング・システム160は、
を計算することによって、各オブジェクトdに対応する各ベクトル
を量子化することができる。特定の実施形態において、ソーシャル・ネットワーキング・システム160は、
を計算することによって、クエリqを表すベクトル
を量子化することができる。特定の実施形態において、ソーシャル・ネットワーキング・システム160は、各オブジェクトdについて、
との間の第1距離を計算することができる。限定ではなく例として、ソーシャル・ネットワーキング・システム160は、各オブジェクトdについて、
との間のハミング距離を計算することができる。特定の実施形態において、ソーシャル・ネットワーキング・システム160は、1つまたは複数のオブジェクトdについて、1つまたは量子化された複数のオブジェクトと量子化されたベクトルとの間の第1距離に基づいて、条件が満たされていると決定することができる。条件が満たされているとの決定に基づいて、ソーシャル・ネットワーキング・システム160は、1つまたは複数のオブジェクトに対応するベクトルとクエリを表すベクトルとの間の第2距離を、それぞれの対応する量子化重心に基づいて計算することができる。限定ではなく例として、ソーシャル・ネットワーキング・システム160は、1つまたは複数のオブジェクトに対応するベクトルとクエリを表すベクトルとの間の重心間距離を、それぞれの対応する量子化重心に基づいて計算することができる。本開示は、特定のベクトル、量子化器および距離を記述しているが、本開示は、任意の適切なベクトル、量子化器または距離を想定している。
図9は、多義コードを使用して類似度検索を行うための例示的な方法900を示す。この方法は、工程910で始めることができ、ソーシャル・ネットワーキング・システム160は、n次元のベクトル空間のn次元のベクトルによって表されるクエリを受け取ることができる。工程920で、ソーシャル・ネットワーキング・システム160は、クエリを表すベクトルを量子化器を使用して量子化することができ、量子化されたベクトルは多義コードに対応し、量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている。工程930で、ソーシャル・ネットワーキング・システム160は、複数のコンテンツ・オブジェクトのそれぞれについて、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算することができる。工程940で、ソーシャル・ネットワーキング・システム160は、クエリを表すベクトルに対応する多義コードと、コンテンツ・オブジェクトを表すベクトルに対応する多義コードとの間の計算されたハミング距離が閾値量未満であるとの決定に基づいて、複数のコンテンツ・オブジェクトのうちの1つのコンテンツ・オブジェクトがクエリの近似最近傍であると決定することができる。特定の実施形態は、適切な場合、図9の方法の1つまたは複数の工程を繰返すことができる。本開示は、図9の方法の特定の工程を特定の順序で発生したものとして記述し、図示しているが、本開示は、図9の方法の任意の適切な工程が任意の適切な順序で発生することを想定している。また、本開示は、図9の方法の特定の工程を含む多義コードを使用した類似度検索を行うための例示的な方法を記述し、図示しているが、本開示は、任意の適切な工程を含む多義コードを使用して類似度検索を行うための任意の適切な方法を想定しており、これらは、適切な場合、図9の方法の工程の全部、一部を含んでもよく、または図9の方法の工程を全く含まなくてもよい。さらに、本開示は、図9の方法の特定の工程を行う特定のコンポーネント、デバイス、またはシステムを記述し、図示しているが、本開示は、図9の方法の任意の適切な工程を行う任意の適切なコンポーネント、デバイス、またはシステムの任意の適切な組み合わせを想定している。
ソーシャル・グラフ親和性および係数
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、様々なソーシャル・グラフ・エンティティの互いに対するソーシャル・グラフ・アフィニティ(本明細書では「アフィニティ」ということもある)を決定することができる。アフィニティは、オンライン・ソーシャル・ネットワークに関連付けられているユーザ、コンセプト、コンテンツ、アクション、広告、他のオブジェクト、またはその任意の適切な組合せなど、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクト間の関係の強度または関心レベルを表すことができる。アフィニティは、サードパーティ・システム170または他の適切なシステムに関連付けられているオブジェクトに関しても決定されることができる。各ユーザ、主題またはコンテンツのタイプについて、ソーシャル・グラフ・エンティティの総合アフィニティが確立されることができる。総合アフィニティは、ソーシャル・グラフ・エンティティに関連付けられているアクションまたは関係の継続的な監視に基づいて変わることがある。本開示は、特定の様式で特定のアフィニティを決定することを説明しているが、本開示は、任意の適切な様式で任意の適切なアフィニティを決定することを企図する。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、アフィニティ係数(本明細書では「係数」ということもある)を使用して、ソーシャル・グラフ・アフィニティを測定または定量化することができる。係数は、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクト間の関係の強度を表すか、または定量化することができる。係数は、また、ユーザの特定のアクションへの関心に基づいて、ユーザがそのアクションを実行する確率を表すか、または予測される確率を測定する関数を表すことができる。このように、ユーザの将来のアクションはユーザの過去のアクションに基づいて予測されることができ、その係数は少なくとも部分的にユーザのアクションの履歴で計算されることができる。係数を使用して、オンライン・ソーシャル・ネットワーク内または外の任意の数のアクションを予測することができる。限定ではなく、例として、これらのアクションは、メッセージの送信、コンテンツの投稿もしくはコンテンツに対するコメントなどの様々なタイプの通信、プロフィール・インタフェース、メディアもしくは他の適切なコンテンツへのアクセスもしくはそれらの視聴などの様々なタイプの観察アクション、同じグループであること、同じ写真にタグ付けされること、同じロケーションにチェックインすること、もしくは同じイベントに出席することなど、2つ以上のソーシャル・グラフ・エンティティに関する様々なタイプの同時発生情報、または他の適切なアクションを含むことができる。本開示は、特定の様式でアフィニティを測定することを説明しているが、本開示は、任意の適切な様式でアフィニティを測定することを企図する。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、係数を計算するために多様な因子を使用することができる。これらの因子には、たとえば、ユーザ・アクション、オブジェクト間の関係のタイプ、ロケーション情報、他の適切な因子、またはその任意の組合せを含むことができる。特定の実施形態においては、係数を計算するときに、異なる因子に異なる重みを付けることができる。各因子の重みは静的であってもよく、または、たとえば、ユーザ、関係のタイプ、アクションのタイプ、ユーザのロケーションなどに応じて、重みを変えてもよい。ユーザの総合的な係数を決定するために、因子のレーティングをその重みに応じて組み合わせることができる。限定ではなく、例として、特定のユーザ・アクションには、レーティングおよび重みの両方を割り当てることができるが、特定のユーザ・アクションに関連付けられている関係には、レーティングおよび相関する重み(たとえば、そのため、重みの合計は100%)が割り当てられる。特定のオブジェクトに対するユーザの係数を計算するには、ユーザのアクションに割り当てられるレーティングが、たとえば、総合的な係数の60%を占めることができ、ユーザとオブジェクトとの関係が、総合的な係数の40%を占めることができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、係数を計算するために使用される様々な因子の重みを決定するとき、たとえば、情報にアクセスされてからの時間、減衰因子、アクセスの頻度、情報との関係もしくは情報がアクセスされたオブジェクトとの関係、オブジェクトとつながりのあるソーシャル・グラフ・エンティティとの関係、ユーザ・アクションの短期的もしくは長期的な平均、ユーザ・フィードバック、他の適切な変数、またはその任意の組合せなど、多様な変数を考慮することができる。限定ではなく、例として、係数は、特定のアクションが提供する信号の強度を時間の経過とともに減衰させる減衰因子を含むことができ、係数を計算するときに、より最近のアクションをより関連性があるようにする。レーティングおよび重みは、係数が根拠とするアクションの継続的な追跡に基づいて、継続的に更新することができる。各因子のレーティングと因子に割り当てられる重みとの割当て、組合せ、平均化などを行うために、任意のタイプのプロセスまたはアルゴリズムを採用することができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、履歴アクションおよび過去のユーザの応答に基づいて訓練された機械学習アルゴリズム、またはユーザに様々なオプションを提示して応答を測定することによってユーザから集められたデータを使用して、係数を決定することができる。本開示は、特定の様式で係数を計算することを説明しているが、本開示は、任意の適切な様式で係数を計算することを企図する。
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、ユーザのアクションに基づいて係数を計算することができる。ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワーク、サードパーティ・システム170、他の適切なシステム、またはその任意の組合せ上で、該アクションを監視することができる。任意の適切なタイプのユーザ・アクションを追跡または監視することができる。典型的なユーザ・アクションは、プロフィール・インタフェースを閲覧すること、コンテンツを作成もしくは投稿すること、コンテンツと対話すること、画像をタグ付けするもしくは画像にタグ付けされること、グループに参加すること、イベントへの参加をリスト化し確認すること、ロケーションでチェックインすること、特定のインタフェースに「いいね!」を表明すること、インタフェースを作成すること、および社会的活動を促す他のタスクを行うことを含む。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、特定のタイプのコンテンツを伴うユーザのアクションに基づいて係数を計算することができる。コンテンツは、オンライン・ソーシャル・ネットワーク、サードパーティ・システム170、または別の適切なシステムに関連付けられてもよい。コンテンツは、ユーザ、プロフィール・インタフェース、投稿、ニュース・ストーリ、ヘッドライン、インスタント・メッセージ、チャットルームの会話、Eメール、広告、写真、動画、音楽、他の適切なオブジェクト、またはその任意の組合せを含むことができる。ソーシャル・ネットワーキング・システム160はユーザのアクションを分析して、アクションのうちの1つまたは複数が、主題、コンテンツ、他のユーザなどに関するアフィニティを示すかどうかを決定することができる。限定ではなく、例として、ユーザが「コーヒー」またはその変異形に関係するコンテンツを頻繁に投稿する場合、ソーシャル・ネットワーキング・システム160は、ユーザが「コーヒー」コンセプトに対して高い係数を有すると決定することができる。特定のアクションまたは特定のタイプのアクションに、他のアクションよりも高い重みおよび/またはレーティングを割り当てることができ、それで総合的な係数の算出値に影響を与えることができる。限定ではなく、例として、第1のユーザが第2のユーザにEメールを送信する場合、そのアクションに関する重みまたはレーティングは、第1のユーザが第2のユーザのユーザ・プロフィール・インタフェースを単に閲覧するだけの場合よりも高くすることができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、特定のオブジェクト間の関係のタイプに基づいて、係数を計算することができる。ソーシャル・グラフ200を参照して、ソーシャル・ネットワーキング・システム160は、係数を計算するときに、特定のユーザ・ノード202とコンセプト・ノード204とをつなげるエッジ206の数および/またはタイプを分析することができる。限定ではなく、例として、配偶者タイプのエッジ(2名のユーザが結婚していることを表す)によってつながっているユーザ・ノード202には、友達タイプのエッジによってつながっているユーザ・ノード202よりも高い係数を割り当てることができる。言い換えれば、特定のユーザのアクションと関係とに割り当てられる重みに応じて、総合アフィニティは、ユーザの友達に関するコンテンツよりもユーザの配偶者に関するコンテンツに対して高いと決定されることができる。特定の実施形態においては、ユーザが他のオブジェクトに対して有する関係が、そのオブジェクトの係数を計算することに関して、ユーザのアクションの重みおよび/またはレーティングに影響することができる。限定ではなく、例として、ユーザが第1の写真でタグ付けされるが、第2の写真には「いいね!」を表明しただけの場合、コンテンツに対してタグ付けタイプの関係を有することは、コンテンツに対して「いいね!」表明タイプの関係をもつよりも、高い重みおよび/またはレーティングを割り当てられることができるので、ソーシャル・ネットワーキング・システム160は、ユーザが第2の写真よりも第1の写真に関して高い係数を有すると決定することができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1人または複数の第2のユーザが特定のオブジェクトに対して有する関係に基づいて、第1のユーザの係数を計算することができる。言い換えれば、他のユーザがオブジェクトに対して有するつながりおよび係数が、そのオブジェクトに関する第1のユーザの係数に影響することができる。限定ではなく、例として、第1のユーザが1人または複数の第2のユーザとつながりがあるかまたはそれに関する係数が高く、その第2のユーザが特定のオブジェクトとつながりがあるかまたはそれに関する係数が高い場合、ソーシャル・ネットワーキング・システム160は、第1のユーザもその特定のオブジェクトに関して比較的高い係数を有するはずだと決定することができる。特定の実施形態においては、係数は、特定のオブジェクト間の分離度に基づくことができる。係数が低いほど、ソーシャル・グラフ200において第1のユーザと間接的につながりのあるユーザのコンテンツ・オブジェクトに対して、第1のユーザが関心を共有する見込みが低いことを表すことができる。限定ではなく、例として、ソーシャル・グラフ200においてより近くにある(すなわち、分離度が小さい)ソーシャル・グラフ・エンティティ同士は、ソーシャル・グラフ200でより離れたエンティティ同士よりも、高い係数を有することができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ロケーション情報に基づいて係数を計算することができる。互いに地理的により近くにあるオブジェクトは、より遠くにあるオブジェクトよりも、互いにより関係があるかまたはより関心があると考えることができる。特定の実施形態において、特定のオブジェクトに対するユーザの係数は、ユーザに関連付けられている現在のロケーション(またはユーザのクライアント・システム130のロケーション)とオブジェクトのロケーションとの近さに基づくことができる。第1のユーザは、第1のユーザのより近くにある他のユーザまたはコンセプトに、より関心を抱くかもしれない。限定ではなく、例として、ユーザが空港から1.61km(1マイル)、給油所から3.22km(2マイル)のところにいる場合、ソーシャル・ネットワーキング・システム160は、ユーザに対する空港の近さに基づいて、ユーザは給油所よりも空港に関する係数が高いと決定することができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、係数情報に基づいてユーザに関して特定のアクションを実行することができる。係数を使用して、ユーザが特定のアクションを行うかどうかを、ユーザのそのアクションへの関心に基づいて予測することができる。広告、検索結果、ニュース・ストーリ、メディア、メッセージ、通知、または他の適切なオブジェクトなど、任意のタイプのオブジェクトを生成するかまたはユーザに提示するときに、係数を使用することができる。係数はまた、該オブジェクトを、適切な場合、ランク付けまたは順位付けするために利用することができる。このように、ソーシャル・ネットワーキング・システム160は、ユーザの関心および現在の状況に関連する情報を提供することができるので、ユーザがそのように関心をもつ情報を見つける見込みが高まる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、係数情報に基づいてコンテンツを生成することができる。コンテンツ・オブジェクトは、ユーザに固有の係数に基づいて提供または選択されることができる。限定ではなく、例として、ユーザのためのメディアを生成するために係数を使用することができ、その場合、メディア・オブジェクトに関してユーザが高い総合的な係数を有するメディアをユーザに提示することができる。限定ではなく、別の例として、ユーザのための広告を生成するために係数を使用することができ、その場合、広告されるオブジェクトに関してユーザが高い総合的な係数を有する広告をユーザに提示することができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、係数情報に基づいて検索結果を生成することができる。特定のユーザのための検索結果は、クエリ・ユーザに関する検索結果に関連付けられている係数に基づいて、スコアまたはランク付けすることができる。限定ではなく、例として、より高い係数を有するオブジェクトに対応する検索結果は、より低い係数を有するオブジェクトに対応する結果よりも、検索結果のインタフェース上で高いランク付けをすることができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、特定のシステムまたはプロセスからの係数の要求に応答して、係数を計算することができる。ある所与の状況でユーザが取り得る(または対象になり得る)可能性の高いアクションを予測するために、任意のプロセスが、ユーザについての算出係数を要求することができる。要求は、係数を計算するために使用される様々な因子について使用する、1セットの重みも含むことができる。この要求は、オンライン・ソーシャル・ネットワーク上で実行しているプロセスから、サードパーティ・システム170(たとえば、APIもしくは他の通信チャネルを経由して)から、または別の適切なシステムから来ることができる。要求に応答して、ソーシャル・ネットワーキング・システム160は係数を計算する(または、以前に計算されて記憶されている場合には、係数情報にアクセスする)ことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、特定のプロセスに関するアフィニティを測定することができる。異なるプロセス(オンライン・ソーシャル・ネットワーク内および外の両方)が、特定のオブジェクトまたはオブジェクトのセットに関する係数を要求することができる。ソーシャル・ネットワーキング・システム160は、アフィニティの尺度を要求したその特定のプロセスに関連するアフィニティの尺度を提供することができる。このように、各プロセスは、プロセスがアフィニティの尺度を使用する異なる状況に合わせられたアフィニティの尺度を受け取る。
ソーシャル・グラフ・アフィニティおよびアフィニティ係数に関連して、特定の実施形態では、それぞれを本願明細書に援用する2006年8月11日に出願された米国特許出願第11/503093号明細書、2010年12月22日に出願された米国特許出願第12/977027号明細書、2010年12月23日に出願された米国特許出願第12/978265号明細書、および2012年10月1日に出願された米国特許出願第13/632869号明細書に開示された1つまたは複数のシステム、コンポーネント、要素、機能、方法、動作、または工程を利用することができる。
広告
特定の実施形態において、広告は、1つもしくは複数のウェブ・インタフェース上に提示されるか、1つもしくは複数のEメールに提示されるか、またはユーザが要求する検索結果に関係して提示される、テキスト(HTMLリンク付けすることができる)、1つもしくは複数の画像(HTMLリンク付けすることができる)、1つもしくは複数の動画、音声、1つもしくは複数のADOBE FLASHファイル、これらの適切な組み合わせ、または任意の適切なデジタル・フォーマットの任意の他の適切な広告とすることができる。追加としてまたは代替として、広告は、1つまたは複数のスポンサー記事(たとえば、ソーシャル・ネットワーキング・システム160上のニュース・フィードまたはティッカ・アイテム)とすることができる。スポンサー記事は、たとえば、ソーシャル・アクションをユーザのプロフィール・インタフェースもしくは他のインタフェースの所定のエリア内に提示させるか、広告主に関連付けられている追加情報とともに提示させるか、他のユーザのニュース・フィードもしくはティッカ内で上方に移動もしくはその他の形で強調表示させるか、またはその他の形で促進させることによって、広告主が促進する、ユーザによるソーシャル・アクションとすることができる(あるインタフェースに「いいね!」を表明すること、あるインタフェース上の投稿に「いいね!」を表明するかもしくはコメントすること、あるインタフェースに関連付けられているイベントに出欠の返事をすること、あるインタフェースに投稿されている質問に投票すること、ある場所にチェックインすること、アプリケーションを使用するかもしくはゲームをプレイすること、または、あるウェブサイトに「いいね!」を表明するかもしくはあるウェブサイトを共有すること)。広告主は、代金を払ってソーシャル・アクションを促進してもらうことができる。限定ではなく例として、広告は、検索結果インタフェースの検索結果の中に含むことができ、スポンサー付きコンテンツは、スポンサーのついていないコンテンツよりも促進される。
特定の実施形態において、広告は、ソーシャル・ネットワーキング・システムのウェブ・インタフェース、サードパーティのウェブ・インタフェース、または他のインタフェース内への表示を要求することができる。広告は、インタフェースの最上部のバナー・エリア、インタフェースのサイドの欄、インタフェース内のGUI、ポップアップ・ウィンドウ、ドロップ・ダウン・メニュー、インタフェースの入力フィールド、インタフェースのコンテンツの上に重ねて、またはインタフェースに関する他の場所など、インタフェースの専用部分に表示することができる。追加としてまたは代替として、広告は、アプリケーション内に表示することができる。広告は、専用インタフェース内に表示することができ、ユーザがインタフェースにアクセスするかまたはアプリケーションを利用する前に、ユーザに、広告と対話するかまたは広告を見ることを要求する。ユーザは、たとえば、ウェブ・ブラウザを通じて広告を閲覧することができる。
ユーザは、任意の適切な様式で広告と対話することができる。ユーザは、広告をクリックするかまたはその他の形で選択することができる。広告を選択することによって、ユーザ(またはユーザが使用しているブラウザもしくは他のアプリケーション)を、広告に関連付けられているインタフェースに導くことができる。広告に関連付けられているインタフェースで、ユーザは、広告に関連付けられている製品もしくはサービスを購入するか、広告に関連付けられている情報を受け取るか、または広告に関連付けられているニュースレターを購読するなど、追加のアクションを取ることができる。音声または動画付きの広告は、広告の構成要素(「再生ボタン」など)を選択することによって再生することができる。あるいは、広告を選択することによって、ソーシャル・ネットワーキング・システム160は、ユーザの特定のアクションを実行または修正することもできる。
広告は、ユーザが対話できるソーシャル・ネットワーキング・システム機能も含むことができる。限定ではなく例として、広告は、推薦に関連付けられているアイコンまたはリンクを選択することによって、ユーザが広告に「いいね!」を表明するか、またはその他の形で広告を推薦できるようにすることができる。限定ではなく別の例として、広告は、広告主に関係するコンテンツを(たとえば、クエリを実行することによって)ユーザが検索できるようにすることができる。同様に、ユーザは、別のユーザと(たとえば、ソーシャル・ネットワーキング・システム160を通じて)広告を共有するか、または広告に関連付けられているイベントに(たとえば、ソーシャル・ネットワーキング・システム160を通じて)出欠の返事をすることができる。追加として、または代替として、広告は、ユーザに向けられるソーシャル・ネットワーキング・システムのコンテンツを含むことができる。限定ではなく例として、広告は、ユーザの、広告の主題に関連付けられているアクションをとったことのあるソーシャル・ネットワーキング・システム160内の友達に関する情報を表示することができる。
プライバシー
特定の実施形態では、オンライン・ソーシャル・ネットワークのコンテンツ・オブジェクトのうちの1つまたは複数が、プライバシー設定に関連付けられ得る。オブジェクトに対するプライバシー設定(または「アクセス設定」)は、任意の適切な様式で、たとえば、オブジェクトに関連付けて、認可サーバ上のインデックスで、別の適切な様式で、または任意のそれらの組合せなどで、記憶され得る。オブジェクトのプライバシー設定は、オブジェクトまたはオブジェクトに関連付けられている特定の情報がオンライン・ソーシャル・ネットワークを使用してどのようにアクセス(たとえば、閲覧、または共有)され得るかを指定することができる。オブジェクトに対するプライバシー設定により、そのオブジェクトについて特定のユーザがアクセス、閲覧、または共有することが可能になる場合、オブジェクトは、そのユーザに対して「可視」であると説明され得る。一例として、限定としてではなく、オンライン・ソーシャル・ネットワークのユーザは、ユーザ・プロフィール・インタフェース上の職務経験情報にアクセスすることができるユーザのセットを識別する、ユーザ・プロフィール・インタフェースに対するプライバシー設定を指定することができ、したがって、他のユーザがその情報にアクセスすることを排除することができる。特定の実施形態では、プライバシー設定は、オブジェクトに関連付けられている特定の情報についてアクセスを許可されるべきでないユーザの「ブロック・リスト(blocked list)」を指定することができる。言い換えれば、ブロック・リストは、オブジェクトが可視にされない1つまたは複数のユーザまたはエンティティを指定することができる。一例として、限定としてではなく、ユーザは、ユーザに関連付けられているフォト・アルバムにアクセスできないユーザのセットを指定することができ、したがって、それらのユーザがフォト・アルバムにアクセスすることを排除する(それとともに、場合によっては、そのユーザのセットの範囲外の特定のユーザがフォト・アルバムにアクセスすることを可能にする)。特定の実施形態では、プライバシー設定が特定のソーシャル・グラフ要素に関連付けられてよい。ノードまたはエッジのようなソーシャル・グラフ要素のプライバシー設定は、ソーシャル・グラフ要素、ソーシャル・グラフ要素に関連付けられている情報、またはソーシャル・グラフ要素に関連付けられているコンテンツ・オブジェクトが、オンライン・ソーシャル・ネットワークを使用してどのようにアクセス可能とされ得るかを指定することができる。一例として、限定としてではなく、特定の写真に対応する特定のコンセプト・ノード204は、写真においてタグ付けされたユーザおよびその友達によってのみ写真がアクセスされてよいことを指定する、プライバシー設定を有することができる。特定の実施形態では、プライバシー設定は、ユーザのアクションをソーシャル・ネットワーキング・システム160によってログを記録させること、または他のシステム(たとえばサードパーティ・システム170)によって共有させることに関して、ユーザがオプト・インまたはオプト・アウトすることを可能にすることができる。特定の実施形態では、オブジェクトに関連付けられているプライバシー設定は、許可されるアクセスまたはアクセスの拒否の任意の適切な粒度を指定することができる。一例として、限定としてではなく、アクセス、またはアクセスの拒否は、特定のユーザ(たとえば、私のみ(only me)、私のルームメイト、および私の上司)、特定の分離度の範囲内のユーザ(たとえば、友達(friends)、友達の友達(friends_of_friends))、ユーザ・グループ(たとえば、ゲーム・クラブ、私の家族)、ユーザ・ネットワーク(たとえば、特定の雇用主の従業員、特定の大学の学生もしくは卒業生)、すべてのユーザ(「パブリック(public)」)、ユーザ無し(「プライベート(private)」)、サードパーティ・システム170のユーザ、特定のアプリケーション(たとえば、サードパーティ・アプリケーション、外部ウェブサイト)、他の適切なユーザもしくはエンティティ、またはこれらの組合せに対して指定されてよい。本開示では特定のプライバシー設定を特定の様式で使用して説明しているが、本開示は任意の適切なプライバシー設定を任意の適切な様式で使用することを企図する。
特定の実施形態では、1つまたは複数の認可/プライバシ・サーバが、オンライン・ソーシャル・ネットワークに関連付けられているオブジェクトに対する1つまたは複数のプライバシー設定を実装するために使用されてよい。認可サーバは、ソーシャル・ネットワーキング・システム160の1つまたは複数のサーバ162であってよい。データ・ストア164に記憶された特定のオブジェクトを求めるユーザから(または他のエンティティ)の要求に応答して、ソーシャル・ネットワーキング・システム160は、データ・ストア164にオブジェクトを求める要求を送ることができる。要求は、要求に関連付けられているユーザを識別することができ、認可サーバが、オブジェクトに関連付けられているプライバシー設定に基づいて、ユーザがオブジェクトにアクセスすることを認可されることを決定した場合、そのユーザ(またはユーザのクライアント・システム130)にのみ送られることが可能である。要求しているユーザがオブジェクトにアクセスすることを認可されない場合、認可サーバは、要求されたオブジェクトがデータ・ストア164から取り出されるのを防止することができ、または要求されたオブジェクトがユーザに送られるのを防止することができる。検索クエリのコンテキストにおいて、クエリ・ユーザがオブジェクトを閲覧またはアクセスすることを認可されない場合、オブジェクトは単に検索結果として生成されることが可能である。言い換えれば、オブジェクトは、クエリ・ユーザに可視である可視性を有しなければならない。オブジェクトがユーザに可視でない可視性を有する場合、オブジェクトは検索結果から除外されることが可能である。特定の実施形態では、ソーシャル・グラフ要素に対するプライバシー設定は、いくつかのノードおよびエッジを有するプライバシ・グラフとして表され得るデータ構造で記憶されてよい。プライバシ・グラフは、特定のソーシャル・グラフ要素の互いに対する可視性を、互いに対するそれらのつながりに基づいて表すことができる。データ・ストア164に記憶された特定の情報をユーザが要求したとき、プライバシ・グラフに関して動的に(たとえばリアルタイムで)フィルタリングを行うことにより、ソーシャル・グラフ要素のアクセス・コントロールが、要求しているユーザまたはエンティティに対して検証され認証され得る。本開示ではプライバシー設定を特定の様式で実装することを説明しているが、本開示はプライバシー設定を任意の適切な様式で実装することを企図する。 システムおよび方法
図10は、例示的なコンピュータ・システム1000を示している。特定の実施形態においては、1つまたは複数のコンピュータ・システム1000が、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を実行する。特定の実施形態においては、1つまたは複数のコンピュータ・システム1000が、本明細書において記述されているまたは示されている機能を提供する。特定の実施形態においては、1つまたは複数のコンピュータ・システム1000上で稼働するソフトウェアが、本明細書において記述されているもしくは示されている1つもしくは複数の方法の1つもしくは複数の工程を実行し、または本明細書において記述されているもしくは示されている機能を提供する。特定の実施形態は、1つまたは複数のコンピュータ・システム500の1つまたは複数の部分を含む。本明細書においては、コンピュータ・システムへの言及は、適切な場合には、コンピューティング・デバイスを包含することができる。その上、コンピュータ・システムへの言及は、適切な場合には、1つまたは複数のコンピュータ・システムを包含することができる。
本開示は、任意の適切な数のコンピュータ・システム1000を想定している。本開示は、任意の適切な物理的な形態を取るコンピュータ・システム1000を想定している。限定ではなく、例として、コンピュータ・システム1000は、組み込みコンピュータ・システム、システムオンチップ(SOC)、シングルボード・コンピュータ・システム(SBC)(たとえば、コンピュータオンモジュール(COM)もしくはシステムオンモジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、対話キオスク、メインフレーム、コンピュータ・システムのメッシュ、モバイル電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらのうちの複数の組合せであることが可能である。適切な場合には、コンピュータ・システム1000は、1つもしくは複数のコンピュータ・システム1000を含むこと、単一型もしくは分散型であること、複数のロケーションにわたること、複数のマシンにわたること、複数のデータセンターにわたること、または、クラウド(1つもしくは複数のネットワーク内の1つもしくは複数のクラウド・コンポーネントを含むことができる)内に常駐することが可能である。適切な場合には、1つまたは複数のコンピュータ・システム1000は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を、実質的な空間上のまたは時間上の制限を伴わずに実行することができる。限定ではなく、例として、1つまたは複数のコンピュータ・システム1000は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程をリアルタイムで、またはバッチ・モードで実行することができる。1つまたは複数のコンピュータ・システム1000は、適切な場合には、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を別々の時点で、または別々のロケーションで実行することができる。
特定の実施形態においては、コンピュータ・システム1000は、プロセッサ1002、メモリ1004、ストレージ1006、入力/出力(I/O)インタフェース1008、通信インタフェース1010、およびバス1012を含む。本開示は、特定の数の特定のコンポーネントを特定の構成で有する特定のコンピュータ・システムについて記述し、示しているが、本開示は、任意の適切な数の任意の適切なコンポーネントを任意の適切な構成で有する任意の適切なコンピュータ・システムを想定している。
特定の実施形態においては、プロセッサ1002は、コンピュータ・プログラムを構成している命令などの命令を実行するためのハードウェアを含む。限定ではなく、例として、命令を実行するために、プロセッサ1002は、内部レジスタ、内部キャッシュ、メモリ1004、またはストレージ1006から命令を取り出し(またはフェッチし)、それらの命令をデコードして実行し、次いで、1つまたは複数の結果を内部レジスタ、内部キャッシュ、メモリ1004、またはストレージ1006に書き込むことができる。特定の実施形態においては、プロセッサ1002は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ1002を想定している。限定ではなく、例として、プロセッサ1002は、1つまたは複数の命令キャッシュ、1つまたは複数のデータ・キャッシュ、および1つまたは複数の変換ルックアサイド・バッファ(TLB)を含むことができる。命令キャッシュ内の命令は、メモリ1004またはストレージ1006内の命令のコピーであることが可能であり、命令キャッシュは、プロセッサ1002によるそれらの命令の取り出しをスピードアップすることができる。データ・キャッシュ内のデータは、プロセッサ1002において実行される命令が機能する際に基づくメモリ1004もしくはストレージ1006内のデータのコピー、プロセッサ1002において実行される後続の命令によるアクセスのための、もしくはメモリ1004もしくはストレージ1006への書き込みのためのプロセッサ1002において実行された以前の命令の結果、またはその他の適切なデータであることが可能である。データ・キャッシュは、プロセッサ1002による読み取りオペレーションまたは書き込みオペレーションをスピードアップすることができる。TLBは、プロセッサ1002のための仮想アドレス変換をスピードアップすることができる。特定の実施形態においては、プロセッサ1002は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ1002を想定している。適切な場合には、プロセッサ1002は、1つまたは複数の演算ロジック・ユニット(ALU)を含むこと、マルチコア・プロセッサであること、または1つもしくは複数のプロセッサ1002を含むことが可能である。本開示は、特定のプロセッサについて記述し、示しているが、本開示は、任意の適切なプロセッサを想定している。
特定の実施形態においては、メモリ1004は、プロセッサ1002が実行するための命令、またはプロセッサ1002が機能する際に基づくデータを記憶するためのメイン・メモリを含む。限定ではなく、例として、コンピュータ・システム1000は、命令をストレージ1006または別のソース(たとえば、別のコンピュータ・システム1000など)からメモリ1004にロードすることができる。次いでプロセッサ1002は、命令をメモリ1004から内部レジスタまたは内部キャッシュにロードすることができる。命令を実行するために、プロセッサ1002は、命令を内部レジスタまたは内部キャッシュから取り出し、それらの命令をデコードすることができる。命令の実行中または実行後に、プロセッサ1002は、1つまたは複数の結果(それらは、中間の結果または最終的な結果である場合がある)を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ1002は、それらの結果のうちの1つまたは複数をメモリ1004に書き込むことができる。特定の実施形態においては、プロセッサ1002は、(ストレージ1006またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ1004内の命令のみを実行し、(ストレージ1006またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ1004内のデータ上でのみ機能する。1つまたは複数のメモリ・バス(それらは各々、アドレス・バスおよびデータ・バスを含むことができる)は、プロセッサ1002をメモリ1004に結合することができる。バス1012は、以降で記述されているような1つまたは複数のメモリ・バスを含むことができる。特定の実施形態においては、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ1002とメモリ1004との間に常駐し、プロセッサ1002によって要求されるメモリ1004へのアクセスを容易にする。特定の実施形態においては、メモリ1004は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、適切な場合には、揮発性メモリであることが可能である。適切な場合には、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であることが可能である。その上、適切な場合には、このRAMは、シングルポートRAMまたはマルチポートRAMであることが可能である。本開示は、任意の適切なRAMを想定している。メモリ1004は、適切な場合には、1つまたは複数のメモリ1004を含むことができる。本開示は、特定のメモリについて記述し、示しているが、本開示は、任意の適切なメモリを想定している。
特定の実施形態においては、ストレージ1006は、データまたは命令のためのマス・ストレージを含む。限定ではなく、例として、ストレージ1006は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス(USB)ドライブ、またはこれらのうちの複数の組合せを含むことができる。ストレージ1006は、適切な場合には、取り外し可能なまたは取り外し不能な(すなわち、固定された)媒体を含むことができる。ストレージ1006は、適切な場合には、コンピュータ・システム1000の内部または外部に存在することが可能である。特定の実施形態においては、ストレージ1006は、不揮発性のソリッドステート・メモリである。特定の実施形態においては、ストレージ1006は、読み取り専用メモリ(ROM)を含む。適切な場合には、このROMは、マスクプログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書替え可能ROM(EAROM)、またはフラッシュ・メモリ、またはこれらのうちの複数の組合せであることが可能である。本開示は、任意の適切な物理的な形態を取るマス・ストレージ1006を想定している。ストレージ1006は、適切な場合には、プロセッサ1002とストレージ1006との間における通信を容易にする1つまたは複数のストレージ・コントロール・ユニットを含むことができる。適切な場合には、ストレージ1006は、1つまたは複数のストレージ1006を含むことができる。本開示は、特定のストレージについて記述し、示しているが、本開示は、任意の適切なストレージを想定している。
特定の実施形態においては、I/Oインタフェース1008は、コンピュータ・システム1000と1つまたは複数のI/Oデバイスとの間における通信のための1つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム1000は、適切な場合には、これらのI/Oデバイスのうちの1つまたは複数を含むことができる。これらのI/Oデバイスのうちの1つまたは複数は、人とコンピュータ・システム1000との間における通信を可能にすることができる。限定ではなく、例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、映像カメラ、別の適切なI/Oデバイス、またはこれらのうちの複数の組合せを含むことができる。I/Oデバイスは、1つまたは複数のセンサを含むことができる。本開示は、任意の適切なI/Oデバイス、およびそれらのI/Oデバイスのための任意の適切なI/Oインタフェース1008を想定している。適切な場合には、I/Oインタフェース1008は、プロセッサ1002がこれらのI/Oデバイスのうちの1つまたは複数を駆動することを可能にする1つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。I/Oインタフェース1008は、適切な場合には、1つまたは複数のI/Oインタフェース1008を含むことができる。本開示は、特定のI/Oインタフェースについて記述し、示しているが、本開示は、任意の適切なI/Oインタフェースを想定している。
特定の実施形態においては、通信インタフェース1010は、コンピュータ・システム1000と、1つもしくは複数のその他のコンピュータ・システム1000または1つもしくは複数のネットワークとの間における通信(たとえば、パケットベースの通信など)のための1つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、通信インタフェース1010は、イーサネット(登録商標)もしくはその他の有線ベースのネットワークと通信するためのネットワーク・インタフェース・コントローラ(NIC)もしくはネットワーク・アダプタ、またはWI−FIネットワークなどの無線ネットワークと通信するための無線NIC(WNIC)もしくは無線アダプタを含むことができる。本開示は、任意の適切なネットワーク、およびそのネットワークのための任意の適切な通信インタフェース1010を想定している。限定ではなく、例として、コンピュータ・システム1000は、アド・ホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、またはインターネットの1つまたは複数の部分、またはこれらのうちの複数の組合せと通信することができる。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、有線または無線であることが可能である。例として、コンピュータ・システム1000は、無線PAN(WPAN)(たとえば、ブルートゥース(登録商標)WPANなど)、WI−FIネットワーク、WI−MAXネットワーク、セルラー電話ネットワーク(たとえば、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM(登録商標))ネットワークなど)、またはその他の適切な無線ネットワーク、またはこれらのうちの複数の組合せと通信することができる。コンピュータ・システム1000は、適切な場合には、これらのネットワークのうちの任意のネットワークのための任意の適切な通信インタフェース1010を含むことができる。通信インタフェース1010は、適切な場合には、1つまたは複数の通信インタフェース1010を含むことができる。本開示は、特定の通信インタフェースについて記述し、示しているが、本開示は、任意の適切な通信インタフェースを想定している。
特定の実施形態においては、バス1012は、コンピュータ・システム1000のコンポーネント同士を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、バス1012は、アクセラレイティッド・グラフィックス・ポート(AGP)もしくはその他のグラフィックス・バス、エンハンスト・インダストリー・スタンダード・アーキテクチャ(EISA)バス、フロントサイド・バス(FSB)、ハイパートランスポート(HT)インターコネクト、インダストリー・スタンダード・アーキテクチャ(ISA)バス、インフィニバンド・インターコネクト、ローピンカウント(LPC)バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、PCIエクスプレス(PCIe)バス、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション・ローカル(VLB)バス、または別の適切なバス、またはこれらのうちの複数の組合せを含むことができる。バス1012は、適切な場合には、1つまたは複数のバス1012を含むことができる。本開示は、特定のバスについて記述し、示しているが、本開示は、任意の適切なバスまたはインターコネクトを想定している。
本明細書においては、1つまたは複数の非一時的なコンピュータ可読記憶媒体は、適切な場合には、1つもしくは複数の半導体ベースのもしくはその他の集積回路(IC)(たとえば、フィールドプログラマブル・ゲート・アレイ(FPGA)もしくは特定用途向け集積回路(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはドライブ、その他の任意の適切な非一時的なコンピュータ可読記憶媒体、またはこれらのうちの複数の組合せを含むことができる。非一時的なコンピュータ可読記憶媒体は、適切な場合には、揮発性、不揮発性、または揮発性と不揮発性の組合せであることが可能である。
その他
本明細書においては、「または(もしくは)」は、包含的であり、排他的ではない(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AまたはB」は、「A、B、またはその両方」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。その上、「および(ならびに)」は、包括的および個別的の両方である(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AおよびB」は、「まとめて、または個別に、AおよびB」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。
本開示の範囲は、当技術分野における標準的な技術者が理解するであろう、本明細書において記述されているまたは示されている例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書において記述されているまたは示されている例示的な実施形態に限定されない。その上、本開示は、本明細書における各々の実施形態を、特定のコンポーネント、要素、特徴、機能、オペレーション、または工程を含むものとして記述し、示しているが、これらの実施形態のいずれも、当技術分野における標準的な技術者が理解するであろう、本明細書の任意の箇所において記述されているまたは示されているコンポーネント、要素、特徴、機能、オペレーション、または工程のうちの任意のものの任意の組合せまたは順列を含むことができる。さらに、特定の機能を実行するように適合されている、実行するようにアレンジされている、実行することができる、実行するように構成されている、実行することを可能にされている、実行するように機能できる、または実行するように機能する装置もしくはシステム、または装置もしくはシステムのコンポーネントへの添付の特許請求の範囲における言及は、その装置、システム、コンポーネント、またはその特定の機能が、アクティブ化されているか否か、オンにされているか否か、またはロック解除されているか否かを問わず、その装置、システム、またはコンポーネントが、そうするように適合されている、そうするようにアレンジされている、そうすることができる、そうするように構成されている、そうすることを可能にされている、そうするように機能できる、またはそうするように機能する限り、その装置、システム、コンポーネントを包含する。さらに、本開示では、特定の実施形態について特定の有利性が提供するものとして記述または図示しているが、特定の実施形態ではこのような有利性が提供されなくてもよく、または、そのいくつかまたはすべての有利性が提供されてもよい。

Claims (35)

  1. コンピューティング・デバイスが、
    n次元のベクトル空間のn次元のベクトルによって表されるクエリを受け取る工程と、
    前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
    複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
    前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの1つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
    を含む、方法。
  2. 前記クエリを表す前記ベクトルを前記クエリを表す複数のサブベクトルに分割する工程をさらに含み、
    前記クエリを表す前記ベクトルを量子化する工程は、前記クエリを表す前記複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化する工程を含み、量子化された各サブベクトルは多義コードに対応し、
    各サブ量子化器は、前記ハミング距離が目的関数を使用して前記重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
    前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化された前記ベクトルに対応する前記多義コードとの間の前記ハミング距離は、前記クエリを表す各それぞれのサブベクトルに対応する各多義コードと、前記コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算される、
    請求項1に記載の方法。
  3. 前記サブ量子化器のそれぞれは、前記複数のサブ量子化器のうちの他のサブ量子化器のそれぞれとは別個である、請求項2に記載の方法。
  4. 前記コンテンツ・オブジェクトを表す量子化された前記複数のサブベクトルのそれぞれは、前記対応するサブ量子化器を使用して量子化される、請求項2に記載の方法。
  5. 第1多義コードと第2多義との間のハミング距離は、前記第1多義コードと前記第2多義コードとの間で異なるビット数として計算される、請求項1に記載の方法。
  6. 第1多義コードと第2多義コードとの間のハミング距離は、予め生成されたルックアップ・テーブルに基づいて計算される、請求項1に記載の方法。
  7. 前記量子化器は、k平均法を使用する、請求項1に記載の方法。
  8. 前記目的関数は、argmaxπΣi∈J,j∈J[h(π(i),π(j))−f(d(c,c))]であり、
    jは、重心インデックスの集合であり、
    は、重心iに関連付けられている再現値であり、
    前記関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングし、
    h(π(i),π(j))は、π(i)とπ(j)との間のハミング距離であり、
    d(c,c)は、cとcとの間の距離であり、
    前記関数fは、d(c,c)を、匹敵するハミング距離の範囲にマッピングする単調増加関数である、
    請求項1に記載の方法。
  9. 前記関数fは、
    であり、
    μは、経験的に測定したdの平均であり、
    σは、経験的に測定したdの標準偏差である、
    請求項8に記載の方法。
  10. 前記目的関数は、argmaxπΣi∈J,j∈Jw(f(d(c,c)))[h(π(i),π(j))−f(d(c,c))]であり、
    jは、重心インデックスの集合であり、
    は、重心iに関連付けられている再現値であり、
    前記関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングし、
    h(π(i),π(j))は、π(i)とπ(j)との間のハミング距離であり、
    d(c,c)は、cとcとの間の距離であり、
    前記関数fは、d(c,c)を、匹敵するハミング距離の範囲にマッピングする単調増加関数であり、
    前記関数wは、α<1で関数w(u)=αである、
    請求項1に記載の方法。
  11. 前記クエリに応答して、前記クエリの近似最近傍であると決定された1以上のコンテンツ・オブジェクトを前記第1ユーザに送信する工程をさらに含む、請求項1に記載の方法。
  12. 前記コンテンツ・オブジェクトのそれぞれは画像を含む、請求項1に記載の方法。
  13. 受け取られた前記クエリはクエリ画像を含み、前記方法は、
    前記クエリ画像を表す前記n次元のベクトルを生成する工程をさらに含む、請求項1に記載の方法。
  14. 前記クエリは、前記クエリ画像に類似した画像の要求に対応する、請求項13に記載の方法。
  15. 前記コンテンツ・オブジェクトのそれぞれは動画を含む、請求項1に記載の方法。
  16. 受け取られた前記クエリはクエリ動画を含み、前記方法は、
    前記クエリ動画を表す前記n次元のベクトルを生成する工程をさらに含む、請求項1に記載の方法。
  17. 複数のノードと前記ノード同士をつなげる複数のエッジとを含むソーシャル・グラフにアクセスする工程をさらに含み、2つの前記ノード間の前記エッジのそれぞれがそれらの間の単一分離度を表し、前記ノードは、
    前記第1ユーザに対応する第1ノードと、
    前記複数のコンテンツ・オブジェクトにそれぞれ対応する複数の第2ノードと、を含む、
    請求項1に記載の方法。
  18. ソフトウェアを具現化する1以上のコンピュータ可読非一時的記憶媒体であって、前記ソフトウェアが実行されたときに、
    n次元のベクトル空間のn次元のベクトルによって表されるクエリを受け取る工程と、
    前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
    複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
    前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの1つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
    が行われるように構成される、媒体。
  19. 前記ソフトウェアが実行されたときに、
    前記クエリを表す前記ベクトルを前記クエリを表す複数のサブベクトルに分割する工程が行われるようにさらに構成され、
    前記クエリを表す前記ベクトルを量子化する工程は、前記クエリを表す前記複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化する工程を含み、量子化された各サブベクトルは多義コードに対応し、
    各サブ量子化器は、前記ハミング距離が目的関数を使用して前記重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
    前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化された前記ベクトルに対応する前記多義コードとの間の前記ハミング距離は、前記クエリを表す各それぞれのサブベクトルに対応する各多義コードと、前記コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算される、
    請求項18に記載の媒体。
  20. 1以上のプロセッサと、前記プロセッサに結合され前記プロセッサによって実行可能な命令を含む非一時的メモリとを備えるシステムであって、前記プロセッサは、前記命令を実行するときに、
    n次元のベクトル空間のn次元のベクトルによって表されるクエリを受け取る工程と、
    前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
    複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
    前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの1つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
    が行われるように構成される、システム。
  21. コンピューティング・デバイスが、
    n次元のベクトル空間のn次元のベクトルによって表されるクエリ、特にデータベース内の1以上の類似の画像および動画のうちの1以上を受け取る工程と、
    前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
    複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
    前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの1つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
    を含む、方法。
  22. 前記クエリを表す前記ベクトルを前記クエリを表す複数のサブベクトルに分割する工程をさらに含み、
    前記クエリを表す前記ベクトルを量子化する工程は、前記クエリを表す前記複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化する工程を含み、量子化された各サブベクトルは多義コードに対応し、
    各サブ量子化器は、前記ハミング距離が目的関数を使用して前記重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
    前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化された前記ベクトルに対応する前記多義コードとの間の前記ハミング距離は、前記クエリを表す各それぞれのサブベクトルに対応する各多義コードと、前記コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算され、
    任意選択で、前記サブ量子化器のそれぞれは、前記複数のサブ量子化器のうちの他のサブ量子化器のそれぞれとは別個であり、および/または、
    任意選択で、前記コンテンツ・オブジェクトを表す量子化された前記複数のサブベクトルのそれぞれは、前記対応するサブ量子化器を使用して量子化される、
    請求項21に記載の方法。
  23. 第1多義コードと第2多義との間のハミング距離は、前記第1多義コードと前記第2多義コードとの間で異なるビット数として計算され、および/または、
    第1多義コードと第2多義コードとの間のハミング距離は、予め生成されたルックアップ・テーブルに基づいて計算される、
    請求項21または22に記載の方法。
  24. 前記量子化器は、k平均法を使用する、請求項21〜23のいずれか一項に記載の方法。
  25. 前記目的関数は、argmaxπΣi∈J,j∈J[h(π(i),π(j))−f(d(c,c))]であり、
    jは、重心インデックスの集合であり、
    は、重心iに関連付けられている再現値であり、
    前記関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングし、
    h(π(i),π(j))は、π(i)とπ(j)との間のハミング距離であり、
    d(c,c)は、cとcとの間の距離であり、
    前記関数fは、d(c,c)を、匹敵するハミング距離の範囲にマッピングする単調増加関数であり、
    任意選択で、前記関数fは、
    であり、
    μは、経験的に測定したdの平均であり、
    σは、経験的に測定したdの標準偏差である、
    請求項21〜24のいずれか一項に記載の方法。
  26. 前記目的関数は、argmaxπΣi∈J,j∈Jw(f(d(c,c)))[h(π(i),π(j))−f(d(c,c))]であり、
    Jは、重心インデックスの集合であり、
    は、重心iに関連付けられている再現値であり、
    前記関数πは、各重心インデックスを単位超立方体の異なる頂点にマッピングし、
    h(π(i),π(j))は、π(i)とπ(j)との間のハミング距離であり、
    d(c,c)は、cとcとの間の距離であり、
    前記関数fは、d(c,c)を、匹敵するハミング距離の範囲にマッピングする単調増加関数であり、
    前記関数wは、α<1で関数w(u)=αである、
    請求項21〜25のいずれか一項に記載の方法。
  27. 前記クエリに応答して、前記クエリの近似最近傍であると決定された1以上のコンテンツ・オブジェクトを前記第1ユーザに送信する工程をさらに含む、請求項21〜26のいずれか一項に記載の方法。
  28. 前記コンテンツ・オブジェクトのそれぞれは画像を含む、請求項21〜27のいずれか一項に記載の方法。
  29. 受け取られた前記クエリはクエリ画像を含み、前記方法は、
    前記クエリ画像を表す前記n次元のベクトルを生成する工程をさらに含み、
    任意選択で、前記クエリは、前記クエリ画像に類似した画像の要求に対応する、
    請求項21〜28のいずれか一項に記載の方法。
  30. 前記コンテンツ・オブジェクトのそれぞれは動画を含む、請求項21〜29のいずれか一項に記載の方法。
  31. 受け取られた前記クエリはクエリ動画を含み、前記方法は、
    前記クエリ動画を表す前記n次元のベクトルを生成する工程をさらに含む、請求項21〜30のいずれか一項に記載の方法。
  32. 複数のノードと前記ノード同士をつなげる複数のエッジとを含むソーシャル・グラフにアクセスする工程をさらに含み、2つの前記ノード間の前記エッジのそれぞれがそれらの間の単一分離度を表し、前記ノードは、
    前記第1ユーザに対応する第1ノードと、
    前記複数のコンテンツ・オブジェクトにそれぞれ対応する複数の第2ノードと、を含む、
    請求項21〜31のいずれか一項に記載の方法。
  33. ソフトウェアを具現化する1以上のコンピュータ可読非一時的記憶媒体であって、前記ソフトウェアが実行されたときに、
    n次元のベクトル空間のn次元のベクトルによって表されるクエリを受け取る工程と、
    前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
    複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
    前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの1つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
    が行われるように構成される、媒体。
  34. 前記ソフトウェアが実行されたときに、
    前記クエリを表す前記ベクトルを前記クエリを表す複数のサブベクトルに分割する工程が行われるようにさらに構成され、
    前記クエリを表す前記ベクトルを量子化する工程は、前記クエリを表す前記複数のサブベクトルのそれぞれを、複数のサブ量子化器を使用して量子化する工程を含み、量子化された各サブベクトルは多義コードに対応し、
    各サブ量子化器は、前記ハミング距離が目的関数を使用して前記重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されており、
    前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化された前記ベクトルに対応する前記多義コードとの間の前記ハミング距離は、前記クエリを表す各それぞれのサブベクトルに対応する各多義コードと、前記コンテンツ・オブジェクトを表す各量子化されたサブベクトルに対応する複数の各多義コードのそれぞれとの間の複数のハミング距離に基づいて計算される、
    請求項1835に記載の媒体。
  35. 1以上のプロセッサと、前記プロセッサに結合され前記プロセッサによって実行可能な命令を含む非一時的メモリとを備えるシステムであって、前記プロセッサは、前記命令を実行するときに、
    n次元のベクトル空間のn次元のベクトルによって表されるクエリを受け取る工程と、
    前記クエリを表す前記ベクトルを量子化器を使用して量子化する工程であって、量子化された前記ベクトルは多義コードに対応し、前記量子化器は、ハミング距離が目的関数を使用して重心間距離を近似化するように多義コードを決定するために、機械学習によって訓練されている、工程と、
    複数のコンテンツ・オブジェクトのそれぞれについて、前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す量子化されたベクトルに対応する多義コードとの間のハミング距離を計算する工程と、
    前記クエリを表す前記ベクトルに対応する前記多義コードと、前記コンテンツ・オブジェクトを表す前記ベクトルに対応する前記多義コードとの間の計算された前記ハミング距離が閾値量未満であるとの決定に基づいて、前記複数のコンテンツ・オブジェクトのうちの1つのコンテンツ・オブジェクトが前記クエリの近似最近傍であると決定する工程と、
    が行われるように構成される、システム。
JP2019533301A 2016-09-07 2017-09-06 多義コードを使用した類似度検索 Pending JP2019532445A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662384421P 2016-09-07 2016-09-07
US62/384,421 2016-09-07
US15/393,926 2016-12-29
US15/393,926 US20180068023A1 (en) 2016-09-07 2016-12-29 Similarity Search Using Polysemous Codes
PCT/US2017/050211 WO2018048853A1 (en) 2016-09-07 2017-09-06 Similarity search using polysemous codes

Publications (1)

Publication Number Publication Date
JP2019532445A true JP2019532445A (ja) 2019-11-07

Family

ID=61280896

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019533301A Pending JP2019532445A (ja) 2016-09-07 2017-09-06 多義コードを使用した類似度検索

Country Status (9)

Country Link
US (1) US20180068023A1 (ja)
JP (1) JP2019532445A (ja)
KR (1) KR20190043604A (ja)
CN (1) CN109906451A (ja)
AU (1) AU2017324850A1 (ja)
BR (1) BR112019004335A2 (ja)
CA (1) CA3034323A1 (ja)
MX (1) MX2019002701A (ja)
WO (1) WO2018048853A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347751B2 (en) * 2016-12-07 2022-05-31 MyFitnessPal, Inc. System and method for associating user-entered text to database entries
US10817774B2 (en) * 2016-12-30 2020-10-27 Facebook, Inc. Systems and methods for providing content
US10489468B2 (en) * 2017-08-22 2019-11-26 Facebook, Inc. Similarity search using progressive inner products and bounds
US10191921B1 (en) * 2018-04-03 2019-01-29 Sas Institute Inc. System for expanding image search using attributes and associations
US10824592B2 (en) * 2018-06-14 2020-11-03 Microsoft Technology Licensing, Llc Database management using hyperloglog sketches
CN109635084B (zh) * 2018-11-30 2020-11-24 宁波深擎信息科技有限公司 一种多源数据文档实时快速去重方法及系统
CN109740660A (zh) * 2018-12-27 2019-05-10 深圳云天励飞技术有限公司 图像处理方法及装置
CN109992716B (zh) * 2019-03-29 2023-01-17 电子科技大学 一种基于itq算法的印尼语相似新闻推荐方法
US10990424B2 (en) * 2019-05-07 2021-04-27 Bank Of America Corporation Computer architecture for emulating a node in conjunction with stimulus conditions in a correlithm object processing system
KR102276728B1 (ko) * 2019-06-18 2021-07-13 빅펄 주식회사 멀티모달 콘텐츠 분석 시스템 및 그 방법
CN112446483B (zh) * 2019-08-30 2024-04-23 阿里巴巴集团控股有限公司 一种基于机器学习的计算方法和计算单元
US11494734B2 (en) * 2019-09-11 2022-11-08 Ila Design Group Llc Automatically determining inventory items that meet selection criteria in a high-dimensionality inventory dataset
KR102448061B1 (ko) 2019-12-11 2022-09-27 네이버 주식회사 딥러닝 기반의 문서 유사도 측정 모델을 이용한 중복 문서 탐지 방법 및 시스템
KR102432600B1 (ko) * 2019-12-17 2022-08-16 네이버 주식회사 벡터 양자화를 이용한 중복 문서 탐지 방법 및 시스템
US11354293B2 (en) 2020-01-28 2022-06-07 Here Global B.V. Method and apparatus for indexing multi-dimensional records based upon similarity of the records
CN111522975B (zh) * 2020-03-10 2022-04-08 浙江工业大学 等价连续变化的二值离散优化的非线性哈希图像检索方法
US20210321165A1 (en) * 2020-04-09 2021-10-14 Rovi Guides, Inc. Methods and systems for generating and presenting content recommendations for new users
CN112487256A (zh) * 2020-12-10 2021-03-12 中国移动通信集团江苏有限公司 对象查询方法、装置、设备及存储介质
KR102491915B1 (ko) * 2021-03-19 2023-01-26 (주)데이터코리아 변호사 스마트 매칭 시스템
CN113032427B (zh) * 2021-04-12 2023-12-08 中国人民大学 一种用于cpu和gpu平台的向量化查询处理方法
US11860876B1 (en) * 2021-05-05 2024-01-02 Change Healthcare Holdings, Llc Systems and methods for integrating datasets
CN113177130B (zh) * 2021-06-09 2022-04-08 山东科技大学 基于二值语义嵌入的图像检索和识别方法和装置
US11886445B2 (en) * 2021-06-29 2024-01-30 United States Of America As Represented By The Secretary Of The Army Classification engineering using regional locality-sensitive hashing (LSH) searches
CN114329006A (zh) * 2021-09-24 2022-04-12 腾讯科技(深圳)有限公司 图像检索方法、装置、设备、计算机可读存储介质
CN113821622B (zh) * 2021-09-29 2023-09-15 平安银行股份有限公司 基于人工智能的答案检索方法、装置、电子设备及介质
CN116051917A (zh) * 2021-10-28 2023-05-02 腾讯科技(深圳)有限公司 一种训练图像量化模型的方法、检索图像的方法及装置
CN115169489B (zh) * 2022-07-25 2023-06-09 北京百度网讯科技有限公司 数据检索方法、装置、设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130262489A1 (en) * 2012-03-28 2013-10-03 Fujitsu Limited Information conversion device and information search device
JP2013246810A (ja) * 2012-05-30 2013-12-09 Denso It Laboratory Inc 情報検索装置、情報検索方法及びプログラム
JP2016119116A (ja) * 2012-12-21 2016-06-30 フェイスブック,インク. 抽出演算子

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429173B1 (en) * 2009-04-20 2013-04-23 Google Inc. Method, system, and computer readable medium for identifying result images based on an image query
US8761512B1 (en) * 2009-12-03 2014-06-24 Google Inc. Query by image
US8239364B2 (en) * 2009-12-08 2012-08-07 Facebook, Inc. Search and retrieval of objects in a social networking system
CN103649905B (zh) * 2011-03-10 2015-08-05 特克斯特怀茨有限责任公司 用于统一信息表示的方法和系统及其应用
US9054876B1 (en) * 2011-11-04 2015-06-09 Google Inc. Fast efficient vocabulary computation with hashed vocabularies applying hash functions to cluster centroids that determines most frequently used cluster centroid IDs
US20150169644A1 (en) * 2013-01-03 2015-06-18 Google Inc. Shape-Gain Sketches for Fast Image Similarity Search
US9336312B2 (en) * 2013-04-08 2016-05-10 Facebook, Inc. Vertical-based query optionalizing
IL226219A (en) * 2013-05-07 2016-10-31 Picscout (Israel) Ltd Efficient comparison of images for large groups of images
PL3066591T3 (pl) * 2014-02-10 2020-04-30 Geenee Gmbh Systemy i sposoby rozpoznawania oparte na obrazie
CN104123375B (zh) * 2014-07-28 2018-01-23 清华大学 数据搜索方法及系统
US9754037B2 (en) * 2014-08-27 2017-09-05 Facebook, Inc. Blending by query classification on online social networks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130262489A1 (en) * 2012-03-28 2013-10-03 Fujitsu Limited Information conversion device and information search device
JP2013206187A (ja) * 2012-03-28 2013-10-07 Fujitsu Ltd 情報変換装置、情報検索装置、情報変換方法、情報検索方法、情報変換プログラム、情報検索プログラム
JP2013246810A (ja) * 2012-05-30 2013-12-09 Denso It Laboratory Inc 情報検索装置、情報検索方法及びプログラム
JP2016119116A (ja) * 2012-12-21 2016-06-30 フェイスブック,インク. 抽出演算子

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
松井 勇佑: "直積量子化を用いた近似最近傍探索", 電子情報通信学会技術研究報告, vol. 第116巻 第209号, JPN6021019609, 13 October 2016 (2016-10-13), JP, pages 147 - 152, ISSN: 0004798357 *

Also Published As

Publication number Publication date
BR112019004335A2 (pt) 2019-05-28
CA3034323A1 (en) 2018-03-15
KR20190043604A (ko) 2019-04-26
US20180068023A1 (en) 2018-03-08
CN109906451A (zh) 2019-06-18
WO2018048853A1 (en) 2018-03-15
AU2017324850A1 (en) 2019-04-18
MX2019002701A (es) 2019-06-06

Similar Documents

Publication Publication Date Title
JP2019532445A (ja) 多義コードを使用した類似度検索
JP6419905B2 (ja) クエリについての逆演算子の使用
AU2017221856B2 (en) Search query interactions
JP6435307B2 (ja) クエリについての検索意図
US10579688B2 (en) Search ranking and recommendations for online social networks based on reconstructed embeddings
JP6377807B2 (ja) オンライン・ソーシャル・ネットワークにおける検索クエリの書き換え
US20180101540A1 (en) Diversifying Media Search Results on Online Social Networks
CN111699482A (zh) 在线社交网络上利用图和紧致回归码的快速索引
US20180121550A1 (en) Ranking Search Results Based on Lookalike Users on Online Social Networks
JP2018022506A (ja) オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け
US20190155916A1 (en) Retrieving Content Objects Through Real-time Query-Post Association Analysis on Online Social Networks
US20190205474A1 (en) Mining Search Logs for Query Metadata on Online Social Networks
US10810214B2 (en) Determining related query terms through query-post associations on online social networks
EP3293696A1 (en) Similarity search using polysemous codes
AU2016200901B2 (en) Using inverse operators for queries on online social networks

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190603

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210802

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211116

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220614