特許第6462088号(P6462088)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ フェイスブック,インク.の特許一覧

特許6462088オンライン・ソーシャル・ネットワーク上での構造化検索クエリの修正
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6462088
(24)【登録日】2019年1月11日
(45)【発行日】2019年1月30日
(54)【発明の名称】オンライン・ソーシャル・ネットワーク上での構造化検索クエリの修正
(51)【国際特許分類】
   G06F 16/00 20190101AFI20190121BHJP
【FI】
   G06F17/30 330A
   G06F17/30 330C
【請求項の数】19
【全頁数】61
(21)【出願番号】特願2017-215573(P2017-215573)
(22)【出願日】2017年11月8日
(62)【分割の表示】特願2016-164767(P2016-164767)の分割
【原出願日】2013年12月20日
(65)【公開番号】特開2018-37097(P2018-37097A)
(43)【公開日】2018年3月8日
【審査請求日】2017年11月13日
(31)【優先権主張番号】13/731,910
(32)【優先日】2012年12月31日
(33)【優先権主張国】US
(31)【優先権主張番号】13197989.0
(32)【優先日】2013年12月18日
(33)【優先権主張国】EP
(73)【特許権者】
【識別番号】508178054
【氏名又は名称】フェイスブック,インク.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】ウィットナ、トーマス エス.
(72)【発明者】
【氏名】チャトット、オリビエ
(72)【発明者】
【氏名】ヴィー、エリク エヌ.
(72)【発明者】
【氏名】マシュマイヤー、ウィリアム アール.
(72)【発明者】
【氏名】ペイリス、キース エル.
(72)【発明者】
【氏名】ランゲンフェルド、アレクサンダー
【審査官】 松尾 真人
(56)【参考文献】
【文献】 特開2012−008610(JP,A)
【文献】 米国特許出願公開第2012/0271831(US,A1)
【文献】 米国特許出願公開第2011/0191364(US,A1)
【文献】 国際公開第2012/128888(WO,A1)
【文献】 幸山 秀雄,依存関係合成による機械翻訳システムPARTs,電子情報通信学会技術研究報告,社団法人電子情報通信学会,1991年 3月18日,第90巻 第482号,p.9−16,NLC90−50
【文献】 伊藤 正雄,フルテキストデータベース検索システム「検蔵君」(1),第41回(平成2年後期)全国大会講演論文集(4),社団法人情報処理学会,1990年 9月 6日,p.4−144〜4−145,1F−8
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
コンピューティング・システムによる方法であって、
1以上のnグラムを含むクエリ入力をオンライン・ソーシャル・ネットワークの第1のユーザのクライアント・システムから受け取る工程と、
前記クエリ入力に対する1以上の提案される修正を提示するための命令を、前記第1のユーザの前記クライアント・システムに送信する工程であって、提案される各修正は、前記オンライン・ソーシャル・ネットワークに関連付けられている1以上のオブジェクトへの参照を備える、工程と、
提案される前記修正のうちの1つの選択を示す標識を前記第1のユーザの前記クライアント・システムから受け取る工程と、
コンテキストフリー文法モデルを使用して、前記クエリ入力と選択された提案される前記修正を解析して実行可能なクエリ・コマンドを生成する工程であって、前記コンテキストフリー文法モデルは、複数の文法を備え、各文法は、1以上の非終端トークンと1以上のクエリ・トークンとを備え、各文法は、1以上の他の文法を非終端トークンを通じて隣接させる順序付きサブツリーであり、前記クエリ・コマンドは、前記複数の文法のうちの特定の文法に対応する、クエリ・コマンド生成工程と、
前記クエリ・コマンドに対応する1以上の検索結果を提示するための命令を、前記第1のユーザの前記クライアント・システムに送信する工程と、を備える方法。
【請求項2】
前記クエリ入力は、コンテキストフリー文法モデルの文法によって生成された自然言語の文字列であり、前記オンライン・ソーシャル・ネットワークに関連付けられている1以上のオブジェクトへの参照する、請求項1に記載の方法。
【請求項3】
提案される各修正は、前記第1のユーザによって選択可能であり、提案される前記修正において参照されている前記オブジェクトの1以上への参照をさらに備えるように前記クエリ入力の前記自然言語の文字列を修正する、請求項2に記載の方法。
【請求項4】
前記クエリ入力は、前記第1のユーザによって入力された1以上の文字を備える非構造化テキスト・クエリである、請求項1に記載の方法。
【請求項5】
提案される各修正は、前記クエリ入力に対する1以上の追加のnグラムを含む、請求項1に記載の方法。
【請求項6】
提案される各修正は、前記クエリ入力に対する1以上の代替のnグラムを含む、請求項1に記載の方法。
【請求項7】
前記クエリ入力の受信に応答して、前記クエリ入力に対する1以上の提案される修正を生成する工程と、
各クエリ修正に関するスコアを計算する工程であって、しきい値よりも高いスコアを有する提案される修正、前記第1のユーザの前記クライアント・システムに送信される、スコア計算工程と、をさらに備える、請求項1に記載の方法。
【請求項8】
前記スコア計算工程は、前記第1のユーザに関連付けられている検索履歴に基づく、請求項7に記載の方法。
【請求項9】
前記スコア計算工程は、前記クエリ入力に対する提案される前記修正のソーシャル関連度に基づく、請求項7に記載の方法。
【請求項10】
前記スコア計算工程は、提案される前記修正に対応する可能な検索結果の数に基づく、請求項7に記載の方法。
【請求項11】
前記クエリ・コマンドに対応する1以上の検索結果を生成する工程をさらに備え、各検索結果は、選択された提案される前記修正において参照されている前記オブジェクトのうちの少なくとも1つにつながっている前記オンライン・ソーシャル・ネットワークに関連付けられているオブジェクトに対応する、請求項1に記載の方法。
【請求項12】
各検索結果は、1以上のスニペットを含み、各スニペットは、前記検索結果に対応する前記オブジェクトに関するコンテキスト情報を含む、請求項11に記載の方法。
【請求項13】
前記クエリ・コマンドに対応する前記1以上の検索結果が、検索結果のしきい値数を下回る数である場合、
前記クエリ入力に対する1以上の追加の提案される修正を生成する工程であって、各追加の提案される修正は、前記オブジェクトへの、選択された提案される前記修正より少ない少なくとも1つの参照を含む、工程と、
前記第1のユーザに表示されるための前記1以上の追加の提案される修正を提示するための命令を前記第1のユーザのクライアント・システムへ送信する工程と、をさらに備える、請求項1に記載の方法。
【請求項14】
前記クエリ入力と、選択された提案される前記修正とに基づいて1以上の追加の提案される修正を生成する工程と、
前記1以上の追加の提案される修正を提示するための命令を前記第1のユーザのクライアント・システムへ送信する工程と、をさらに備える、請求項1に記載の方法。
【請求項15】
前記クエリ・コマンド生成工程は、
前記コンテキストフリー文法モデルにアクセスする工程と、
前記クエリ入力と選択された提案される前記修正とを前記コンテキストフリー文法モデルの1以上の文法に対して比較する工程と、
前記クエリ入力または選択された提案される前記修正に一致する1以上のオブジェクトに対応する1以上のクエリ・トークンを有する前記特定の文法に基づいて、前記クエリ・コマンドを生成する工程と、を備える、請求項1に記載の方法。
【請求項16】
複数のノードと、前記ノード同士をつなげる複数のエッジとを備えるソーシャル・グラフにアクセスする工程であって、前記ノードのうちの2つの間における前記エッジの各々は、それらの間における1つの隔たり度合いを表しており、前記ノードは、
前記第1のユーザに対応する第1のノードと、
前記オンライン・ソーシャル・ネットワークに関連付けられている複数のオブジェクトに各々が対応する複数の第2のノードとを備える、工程をさらに備える、請求項1に記載の方法。
【請求項17】
提案される前記修正において参照されている前記1以上のオブジェクトは、前記複数の第2のノードのうちの1以上のノードまたは前記複数のエッジのうちの1以上のエッジに対応する、請求項16に記載の方法。
【請求項18】
実行されたとき、
1以上のnグラムを含むクエリ入力をオンライン・ソーシャル・ネットワークの第1のユーザのクライアント・システムから受け取る工程と、
前記クエリ入力に対する1以上の提案される修正を提示するための命令を、前記第1のユーザの前記クライアント・システムに送信する工程であって、提案される各修正は、前記オンライン・ソーシャル・ネットワークに関連付けられている1以上のオブジェクトへの参照を備える、工程と、
提案される前記修正のうちの1つの選択を示す標識を前記第1のユーザの前記クライアント・システムから受け取る工程と、
コンテキストフリー文法モデルを使用して、前記クエリ入力と選択された提案される前記修正を解析して実行可能なクエリ・コマンドを生成する工程であって、前記コンテキストフリー文法モデルは、複数の文法を備え、各文法は、1以上の非終端トークンと1以上のクエリ・トークンとを備え、各文法は、1以上の他の文法を非終端トークンを通じて隣接させる順序付きサブツリーであり、前記クエリ・コマンドは、前記複数の文法のうちの特定の文法に対応する、クエリ・コマンド生成工程と、
前記クエリ・コマンドに対応する1以上の検索結果を提示するための命令を、前記第1のユーザの前記クライアント・システムに送信する工程と、を行うように構成されるソフトウェアを具体化している1以上の非一時的コンピュータ可読記憶媒体。
【請求項19】
1以上のプロセッサと、前記プロセッサによって実行可能な命令を備える、前記プロセッサに結合されているメモリとを備えるシステムであって、前記プロセッサは、前記命令を実行したとき、
1以上のnグラムを含むクエリ入力をオンライン・ソーシャル・ネットワークの第1のユーザのクライアント・システムから受け取る工程と、
前記クエリ入力に対する1以上の提案される修正を提示するための命令を、前記第1のユーザの前記クライアント・システムに送信する工程であって、提案される各修正は、前記オンライン・ソーシャル・ネットワークに関連付けられている1以上のオブジェクトへの参照を備える、工程と、
提案される前記修正のうちの1つの選択を示す標識を前記第1のユーザの前記クライアント・システムから受け取る工程と、
コンテキストフリー文法モデルを使用して、前記クエリ入力と選択された提案される前記修正を解析して実行可能なクエリ・コマンドを生成する工程であって、前記コンテキストフリー文法モデルは、複数の文法を備え、各文法は、1以上の非終端トークンと1以上のクエリ・トークンとを備え、各文法は、1以上の他の文法を非終端トークンを通じて隣接させる順序付きサブツリーであり、前記クエリ・コマンドは、前記複数の文法のうちの特定の文法に対応する、クエリ・コマンド生成工程と、
前記クエリ・コマンドに対応する1以上の検索結果を提示するための命令を、前記第1のユーザの前記クライアント・システムに送信する工程と、を行うように構成される、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般に、ソーシャル・グラフ、およびソーシャルネットワーキング環境内でオブジェクトを探して検索を実行することに関する。
【背景技術】
【0002】
ソーシャルネットワーキング・システム(ソーシャルネットワーキング・ウェブサイトを含む)は、そのソーシャルネットワーキング・システムのユーザ(人または組織など)がそのソーシャルネットワーキング・システムと互いに対話すること、およびそのソーシャルネットワーキング・システムを通じて互いに対話することを可能にする。ソーシャルネットワーキング・システムは、ユーザからの入力を用いて、そのユーザに関連付けられているユーザ・プロフィールを作成して、ソーシャルネットワーキング・システム内に記憶する。ユーザ・プロフィールは、人口統計学的情報、通信チャネル情報、およびユーザの個人的な関心に関する情報を含む。ソーシャルネットワーキング・システムは、ユーザからの入力を用いて、そのユーザと、ソーシャルネットワーキング・システムのその他のユーザとの関係のレコードを作成および記憶すること、ならびにサービス(たとえば、ウォール投稿、写真共有、イベント編成、メッセージング、ゲーム、または広告)を提供して、ユーザ同士の間における社会的な交流を容易にすることも可能である。
【0003】
ソーシャルネットワーキング・システムは、そのサービスに関連したコンテンツまたはメッセージを、1つまたは複数のネットワークを通じて、ユーザのモバイルまたはその他のコンピューティング・デバイスへ送信する。ユーザは、自分のユーザ・プロフィールおよびソーシャルネットワーキング・システム内のその他のデータにアクセスするためにソフトウェア・アプリケーションを自分のモバイルまたはその他のコンピューティング・デバイス上にインストールすることもできる。ソーシャルネットワーキング・システムは、ユーザにつながっているその他のユーザの集約されたストーリのニュース・フィードなど、ユーザに表示するためのコンテンツ・オブジェクトのパーソナライズされたセットを生成する。
【0004】
ソーシャル・グラフ分析は、ソーシャルな関係を、ノードおよびエッジから構成されているネットワーク理論の点から見る。ノードは、ネットワーク内の個々の行為主体を表し、エッジは、行為主体同士の間における関係を表す。結果として生じるグラフベースの構造は、しばしば非常に複雑である。多くのタイプのノード、およびノード同士をつなげるための多くのタイプのエッジが存在する。ソーシャル・グラフは、その最も単純な形態においては、調査されているすべてのノードの間における関連があるすべてのエッジのマップである。
【図面の簡単な説明】
【0005】
図1】ソーシャルネットワーキング・システムに関連付けられている例示的なネットワーク環境を示す図。
図2】例示的なソーシャル・グラフを示す図。
図3】オンライン・ソーシャル・ネットワークの例示的なウェブページを示す図。
図4A】ソーシャル・ネットワークの例示的なクエリを示す図。
図4B】ソーシャル・ネットワークの例示的なクエリを示す図。
図5A】例示的なセマンティック・ツリーを示す図。
図5B】例示的な文法フォレストを示す図。
図6】自然言語の構造化検索クエリを生成する目的でコンテキストフリー文法モデルを使用するための例示的な方法を示す図。
図7A】例示的な検索結果ページを示す図。
図7B】例示的な検索結果ページを示す図。
図7C】例示的な検索結果ページを示す図。
図7D】例示的な検索結果ページを示す図。
図7E】例示的な検索結果ページを示す図。
図7F】例示的な検索結果ページを示す図。
図7G】例示的な検索結果ページを示す図。
図8】検索結果およびスニペットを生成するための例示的な方法を示す図。
図9】構造化検索クエリを修正するための例示的な方法を示す図。
図10】例示的なコンピュータ・システムを示す図。
【発明を実施するための形態】
【0006】
特定の実施形態においては、ユーザから受け取られたテキスト・クエリに応答して、ソーシャルネットワーキング・システムは、識別されたソーシャル・グラフ要素に対応するクエリ・トークンを含む構造化クエリを生成する。ユーザのテキスト・クエリに応答して、提案される構造化クエリを提供することによって、ソーシャルネットワーキング・システムは、オンライン・ソーシャル・ネットワークのユーザは、自分のソーシャル・グラフ属性、およびさまざまなソーシャル・グラフ要素に対する自分の関係に基づいて、ソーシャル・グラフ内で表されている要素を検索するための強力な方法を提供する。
【0007】
特定の実施形態においては、ソーシャルネットワーキング・システムは、非構造化テキスト・クエリをユーザから受け取る。それに応答して、ソーシャルネットワーキング・システムは、ソーシャル・グラフにアクセスし、次いでテキスト・クエリを解析して、そのテキスト・クエリからのnグラムに対応したソーシャル・グラフ要素を識別する。次いでソーシャルネットワーキング・システムは、コンテキストフリー文法モデルなどの文法モデルにアクセスする。識別されたソーシャル・グラフ要素は、文法モデルの文法において終端トークン(「クエリ・トークン」)として使用される。識別されたクエリ・トークンのうちのすべてを利用する任意の文法が選択される。これらの文法は、はじめに、テキスト・クエリに対応するセマンティック・ツリーを生成し、次いで、文法フォレストを分析して、そのセマンティック・ツリーにマッチしているサブツリーを見つけ出すことによって、識別される。選択された文法を使用して、識別されたソーシャル・グラフ要素を参照するクエリ・トークンを含む自然言語の構造化クエリを生成する。次いで、それらの構造化クエリは、ユーザへ送信されて表示されることが可能であり、次いでユーザは、所望のコンテンツを検索するための適切なクエリを選択する。
【0008】
特定の実施形態においては、構造化クエリに応答して、ソーシャルネットワーキング・システムは、その構造化クエリに対応する1または複数の検索結果を生成する。これらの検索結果は、検索結果ページの一部として、クエリを行っているユーザへ送信される。各検索結果は、1以上のスニペットを含むことができ、その場合、スニペットは、その検索結果に対応するソーシャル・グラフ・エンティティに関するコンテキスト情報である。たとえば、スニペットは、ノードに関連付けられているプロフィール・ページからの情報である。各検索結果は、その検索結果に関するソーシャル・グラフ情報を提供する少なくとも1つのスニペットを含むこともできる。これらのスニペットは、その検索結果を生成するために使用された構造化クエリからのクエリ・トークンへの参照を含む。
【0009】
特定の実施形態においては、構造化クエリに応答して、ソーシャルネットワーキング・システムは、その構造化クエリに関する1以上のクエリ修正を生成する。各クエリ修正は、ソーシャル・グラフからの修正ノードまたは修正エッジへの参照を含むことができ、それらは、構造化クエリ内のクエリ・トークンに追加または置換を行うために使用される。クエリ修正は、検索結果ページ上に表示されることが可能であり、それによってユーザは
、検索結果を閲覧し、次いで、構造化クエリに対して絞り込みまたはピボッティングを行って新たな検索結果を生成するために1以上のクエリ修正を選択する。特定のクエリ修正を用いて、構造化クエリを修正した後には、そのクエリ修正において使用されたソーシャル・グラフ要素への参照を含む新たな自然言語の構造化クエリを生成するために、適切な文法が使用される。ソーシャルネットワーキング・システムは、検索結果ページ上に表示される代替の構造化クエリを生成することもできる。これらの代替の構造化クエリとしては、提案されるクエリ、広げるクエリ、およびあいまい性解消クエリが含まれる。
【0010】
本発明による実施形態は、方法、記憶媒体、およびシステムを対象とした添付の特許請求の範囲において詳細に開示されており、1つの請求項カテゴリ、たとえば方法において言及されている任意の特徴が、別の請求項カテゴリ、たとえばシステムにおいて特許請求されることも可能である。
【0011】
本発明による一実施形態においては、ある方法は、コンピューティング・デバイスが、複数のノードと、それらのノード同士をつなげる複数のエッジとを備えるソーシャル・グラフにアクセスする工程であって、それらのノードのうちの2つの間におけるエッジの各々は、それらの間における一次隔たり度合いを表しており、それらのノードは、オンライン・ソーシャル・ネットワークに関連付けられている第1のユーザに対応する第1のノードと、オンライン・ソーシャル・ネットワークに関連付けられているコンセプトまたは第2のユーザに各々が対応する複数の第2のノードとを備える、工程と、複数の第2のノードから選択された1以上のノードおよび複数のエッジから選択された1以上のエッジへの参照を含む第1の構造化クエリを第1のユーザから受け取る工程と、第1の構造化クエリに関する1以上のクエリ修正を生成する工程であって、各クエリ修正は、複数の第2のノードからの1以上の修正ノードまたは複数のエッジからの1以上の修正エッジへの参照を含む、工程とを備える。
【0012】
修正ノードおよび修正エッジへの参照は、第1の構造化クエリに関する追加のノードまたは追加のエッジへの参照である。
修正ノードおよび修正エッジへの参照は、第1の構造化クエリに関する代替ノードまたは代替エッジへの参照であり、代替ノードへの各参照は、第1の構造化クエリの選択されたノードへの参照に取って代わり、代替エッジへの各参照は、第1の構造化クエリの選択されたエッジへの参照に取って代わる。
【0013】
さらなる一実施形態においては、この方法は、各クエリ修正に関するスコアを決定する工程と、スコアしきい値よりも高いスコアを有するクエリ修正のうちの1以上を第1のユーザへ送信する工程とを備える。
【0014】
各クエリ修正に関するスコアを決定する工程は、第1のユーザに関連付けられている検索履歴に基づく。
各クエリ修正に関するスコアを決定する工程はまた、第1の構造化クエリに対するクエリ修正のソーシャル関連度に基づく。
【0015】
各クエリ修正に関するスコアを決定する工程はさらに、クエリ修正に対応する可能な検索結果の数に基づく。
さらなる一実施形態においては、この方法は、第1の構造化クエリに対応する1以上の検索結果を生成する工程を備え、各検索結果は、選択されたエッジのうちの少なくとも1つによって、選択されたノードのうちの少なくとも1つにつながっている複数の第2のノードのうちの1つの第2のノードに対応する。
【0016】
各検索結果は、1以上のスニペットを含むことができ、各スニペットは、その検索結果
に対応する第2のノードに関するコンテキスト情報を含む。
各検索結果は、その検索結果に対応する第2のノードへの参照を含む第1の構造化クエリに関するクエリ修正を含む。
【0017】
各検索結果は、その検索結果に対応する第2のノードへの参照を含む第2の構造化クエリを含む。
さらなる一実施形態においては、この方法は、検索結果のうちの1以上を第1のユーザへ送信する工程を備える。
【0018】
さらなる一実施形態は、第1のクエリに対応する1以上の検索結果が、検索結果のしきい値数を下回る数である場合に、第1の構造化クエリから選択された0以上のノードおよび選択された0以上のエッジへの参照を含む1以上の第2の構造化クエリを生成する工程であって、各第2の構造化クエリは、選択されたノードまたは選択されたエッジへの、第1の構造化クエリよりも少ない少なくとも1つの参照を含む、工程と、1以上の第2の構造化クエリを第1のユーザへ送信する工程とを備える。
【0019】
さらなる一実施形態においては、この方法は、第1の構造化クエリに基づいて1以上の第2の構造化クエリを生成する工程と、1以上の第2の構造化クエリを第1のユーザへ送信する工程とを備える。
【0020】
第1の構造化クエリに関する1以上のクエリ修正を生成する工程は、複数の文法を含むコンテキストフリー文法モデルにアクセスする工程であって、各文法は、1以上のクエリ・トークンを含む、工程と、1以上の文法を識別する工程であって、識別された各文法は、第1の構造化クエリにおいて参照されている選択されたノードおよび選択されたエッジの各々に対応するクエリ・トークンならびに少なくとも1つの追加のクエリ・トークンまたは代替クエリ・トークンを有する、工程と、識別された文法からの追加のクエリ・トークンのうちの1以上または代替クエリ・トークンのうちの1以上に対応する1以上のクエリ修正を生成する工程とを備える。
【0021】
さらなる一実施形態においては、この方法は、クエリ修正のうちの1以上を第1のユーザへ送信する工程を備える。
さらなる一実施形態においては、この方法は、クエリ修正のうちの1以上の選択を第1のユーザから受け取る工程と、選択されたノード、選択されたエッジ、および、選択されたクエリ修正内で参照されている各追加のノードまたは追加のエッジへの参照を含む第2の構造化クエリを生成する工程とを備える。
【0022】
特許請求される、本発明のさらなる一実施形態においては、1以上の非一時的コンピュータ可読記憶媒体が、実行されたときに、複数のノードと、それらのノード同士をつなげる複数のエッジとを備えるソーシャル・グラフにアクセスする工程であって、それらのノードのうちの2つの間におけるエッジの各々は、それらの間における一次隔たり度合いを表し、それらのノードが、オンライン・ソーシャル・ネットワークに関連付けられている第1のユーザに対応する第1のノードと、オンライン・ソーシャル・ネットワークに関連付けられているコンセプトまたは第2のユーザに各々が対応する複数の第2のノードとを備える、工程と、複数の第2のノードから選択された1以上のノードおよび複数のエッジから選択された1以上のエッジへの参照を含む第1の構造化クエリを第1のユーザから受け取る工程と、第1の構造化クエリに関する1以上のクエリ修正を生成する工程であって、各クエリ修正は、複数の第2のノードからの1以上の修正ノードまたは複数のエッジからの1以上の修正エッジへの参照を含む、工程と、を行うように構成されるソフトウェアを具体化している。
【0023】
特許請求される、本発明のさらなる一実施形態においては、あるシステムは、1以上のプロセッサと、それらのプロセッサによって実行可能な命令を備える、それらのプロセッサに結合されているメモリとを備え、それらのプロセッサは、それらの命令を実行したときに、複数のノードと、それらのノード同士をつなげる複数のエッジとを備えるソーシャル・グラフにアクセスする工程であって、それらのノードのうちの2つの間におけるエッジの各々は、それらの間における一次隔たり度合いを表し、それらのノードは、オンライン・ソーシャル・ネットワークに関連付けられている第1のユーザに対応する第1のノードと、オンライン・ソーシャル・ネットワークに関連付けられているコンセプトまたは第2のユーザに各々が対応する複数の第2のノードとを備える、工程と、複数の第2のノードから選択された1以上のノードおよび複数のエッジから選択された1以上のエッジへの参照を含む第1の構造化クエリを第1のユーザから受け取る工程と、第1の構造化クエリに関する1以上のクエリ修正を生成する工程であって、各クエリ修正は、複数の第2のノードからの1以上の修正ノードまたは複数のエッジからの1以上の修正エッジへの参照を含む、工程とを行うように構成される。
【0024】
本発明のさらなる一実施形態においては、実行されたときに、本発明または上述の実施形態のうちのいずれかによる方法を実行するように構成されるソフトウェアを1以上の非一時的コンピュータ可読記憶媒体が具体化している。
【0025】
本発明のさらなる一実施形態においては、あるシステムは、1以上のプロセッサと、それらのプロセッサによって実行可能な命令を備える、それらのプロセッサに結合されているメモリとを備え、それらのプロセッサは、それらの命令を実行したときに、本発明または上述の実施形態のうちのいずれかによる方法を実行するように構成される。
【0026】
システムの概観
図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を含む。
【0027】
本開示は、任意の適切なネットワーク110を想定している。限定ではなく、例として、ネットワーク110の1つまたは複数の部分は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、無線LAN(WLAN)、ワイド・エリア・ネットワ
ーク(WAN)、無線WAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN)の一部分、セルラー電話ネットワーク、またはこれらのうちの複数の組合せを含む。ネットワーク110は、1つまたは複数のネットワーク110を含む。
【0028】
リンク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とは異なる。
【0029】
特定の実施形態においては、クライアント・システム130は、クライアント・システム130によって実装またはサポートされる適切な機能を実行する、ハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含む電子デバイスである。限定ではなく、例として、クライアント・システム130は、デスクトップ・コンピュータ、ノートブック・コンピュータもしくはラップトップ・コンピュータ、ネットブック、タブレット・コンピュータなどのコンピュータ・システム、eブック・リーダ、GPSデバイス、カメラ、携帯情報端末(PDA)、ハンドヘルド電子デバイス、セルラー電話、スマートフォン、その他の適切な電子デバイス、またはそれらの任意の適切な組合せを含む。本開示は、任意の適切なクライアント・システム130を想定している。クライアント・システム130は、クライアント・システム130のネットワーク・ユーザがネットワーク110にアクセスすることを可能にする。クライアント・システム130は、自分のユーザがその他のクライアント・システム130のその他のユーザと通信することを可能にする。
【0030】
特定の実施形態においては、クライアント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)ファイルからレンダリングする。そのようなページは、限定ではなく、例として、JAVASCRIPT(登録商標)、JAVA(登録商標)、MICROSOFT SILVERLIGHTで書かれたスクリプトなどのスクリプト、AJAX(Asynchronous JAVASCRIPT(登録商標) and XML)などのマークアップ言語とスクリプトの組合せなどを実行することもできる。本明細書においては、ウェブページへの参照は、適切な場合には、(そのウェブページをレンダリングするためにブラウザが使用する)1つまたは複数の対応するウェブページ・ファイルを含み、その逆もまた同様である。
【0031】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、オンライン・ソーシャル・ネットワークをホストするネットワークアドレス可能なコンピューティング・システムである。ソーシャルネットワーキング・システム160は、たとえば、ユーザプロフィール・データ、コンセプトプロフィール・データ、ソーシャル・グラフ情報、またはオンライン・ソーシャル・ネットワークに関連したその他の適切なデータなどのソーシャルネットワーキング・データを生成すること、記憶すること、受け取ること、および送信する。ソーシャルネットワーキング・システム160は、ネットワーク環境100のその他の構成要素によって直接、またはネットワーク110を通じてアクセスされる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、1つまたは複数のサーバ162を含む。それぞれのサーバ162は、1つのサーバ、または複数のコンピュータもしくは複数のデータセンタにわたる分散サーバである。サーバ162は、限定ではなく、例として、ウェブ・サーバ、ニュース・サーバ、メール・サーバ、メッセージ・サーバ、広告サーバ、ファイル・サーバ、アプリケーション・サーバ、Exchangeサーバ、データベース・サーバ、プロキシ・サーバ、本明細書において記述されている機能もしくはプロセスを実行するのに適している別のサーバ、またはそれらの任意の組合せなど、さまざまなタイプのものである。特定の実施形態においては、それぞれのサーバ162は、サーバ162によって実装またはサポートされる適切な機能を実行するためのハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのような構成要素の組合せを含む。特定の実施形態においては、ソーシャルネットワーキング・システム164は、1つまたは複数のデータ・ストア164を含む。データ・ストア164は、さまざまなタイプの情報を記憶するために使用される。特定の実施形態においては、データ・ストア164内に記憶されている情報は、特定のデータ構造に従って編成される。特定の実施形態においては、それぞれのデータ・ストア164は、リレーショナル・データベースである。特定の実施形態は、クライアント・システム130、ソーシャルネットワーキング・システム160、またはサードパーティ・システム170が、データ・ストア164内に記憶されている情報を管理すること、取り出すこと、修正すること、追加すること、または削除することを可能にするインタフェースを提供する。
【0032】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、1つまたは複数のソーシャル・グラフを1つまたは複数のデータ・ストア164内に記憶する。特定の実施形態においては、ソーシャル・グラフは、複数のノード(複数のユーザ・ノード(それぞれが、特定のユーザに対応している)、または複数のコンセプト・ノード(それぞれが、特定のコンセプトに対応している)を含む)と、ノード同士をつなげる複数のエッジとを含む。ソーシャルネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザに、その他のユーザと通信および対話する能力を提供する。特定の実施形態においては、ユーザたちは、ソーシャルネットワーキング・システム160を通じてオンライン・ソーシャル・ネットワークに参加し、次いで、自分たちがつながりたいと望むソーシャルネットワーキング・システム160のその他の複数のユーザにつながり(すなわち、関係)を付加する。本明細書においては、「友達」という用語は、ユ
ーザがソーシャルネットワーキング・システム160を通じて、つながり、関連付け、または関係を形成しているソーシャルネットワーキング・システム160のその他の任意のユーザに及ぶ。
【0033】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、ソーシャルネットワーキング・システム160によってサポートされるさまざまなタイプのアイテムまたはオブジェクトに関してアクションを取る能力をユーザに提供する。限定ではなく、例として、それらのアイテムおよびオブジェクトは、ソーシャルネットワーキング・システム160のユーザが属するグループもしくはソーシャル・ネットワーク、ユーザが関心を抱く可能性があるイベントもしくはカレンダー・エントリー、ユーザが使用するコンピュータベースのアプリケーション、ユーザがサービスを通じてアイテムを購入もしくは販売することを可能にするトランザクション、ユーザが実行する広告との対話、またはその他の適切なアイテムもしくはオブジェクトを含む。ユーザは、ソーシャルネットワーキング・システム160において、またはサードパーティ・システム170の外部システム(ソーシャルネットワーキング・システム160とは別個のものであって、ネットワーク110を通じてソーシャルネットワーキング・システム160に結合されている)によって表される任意のものと対話する。
【0034】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、さまざまなエンティティ同士をリンクできる。限定ではなく、例として、ソーシャルネットワーキング・システム160は、ユーザたちが互いに対話すること、ならびにサードパーティ・システム170もしくはその他のエンティティからのコンテンツを受け取ることを可能にすることができ、またはユーザたちがアプリケーション・プログラミング・インタフェース(API)もしくはその他の通信チャネルを通じてこれらのエンティティと対話することを可能にする。
【0035】
特定の実施形態においては、サードパーティ・システム170は、1つもしくは複数のタイプのサーバ、1つもしくは複数のデータ・ストア、1つもしくは複数のインタフェース(APIを含むが、それには限定されない)、1つもしくは複数のウェブ・サービス、1つもしくは複数のコンテンツ・ソース、1つもしくは複数のネットワーク、または(たとえば、サーバが通信する)その他の任意の適切な構成要素を含む。サードパーティ・システム170は、ソーシャルネットワーキング・システム160を運営しているエンティティとは異なるエンティティによって運営される。しかしながら、特定の実施形態においては、ソーシャルネットワーキング・システム160およびサードパーティ・システム170は、ソーシャルネットワーキング・システム160またはサードパーティ・システム170のユーザにソーシャルネットワーキング・サービスを提供するために互いに連携して機能する。この意味において、ソーシャルネットワーキング・システム160は、サードパーティ・システム170などのその他のシステムがインターネットを通じてソーシャルネットワーキング・サービスおよび機能をユーザに提供するために使用するプラットフォーム、またはバックボーンを提供する。
【0036】
特定の実施形態においては、サードパーティ・システム170は、サードパーティ・コンテンツ・オブジェクト・プロバイダを含む。サードパーティ・コンテンツ・オブジェクト・プロバイダは、コンテンツ・オブジェクトの1つまたは複数のソースを含むことができ、それらのソースは、クライアント・システム130に通信される。限定ではなく、例として、コンテンツ・オブジェクトは、ユーザにとって関心がある物またはアクティビティに関する情報、たとえば、映画の開始時刻、映画のレビュー、レストランのレビュー、レストランのメニュー、製品の情報およびレビュー、またはその他の適切な情報などを含む。限定ではなく、別の例として、コンテンツ・オブジェクトは、インセンティブ・コンテンツ・オブジェクト、たとえば、クーポン、ディスカウント・チケット、ギフト券、ま
たはその他の適切なインセンティブ・オブジェクトを含む。
【0037】
特定の実施形態においては、ソーシャルネットワーキング・システム160はまた、ユーザによって生成されたコンテンツ・オブジェクトを含み、それらのコンテンツ・オブジェクトは、ソーシャルネットワーキング・システム160とのユーザの対話を高める。ユーザによって生成されたコンテンツは、ユーザがソーシャルネットワーキング・システム160に付加、アップロード、送信、または「投稿」する任意のものを含む。限定ではなく、例として、ユーザは、クライアント・システム130からソーシャルネットワーキング・システム160へ投稿を通信する。投稿は、ステータス更新もしくはその他のテキスト・データ、ロケーション情報、写真、映像、リンク、音楽、またはその他の類似したデータもしくはメディアなどのデータを含む。コンテンツは、ニュース・フィードまたはストリームなどの「通信チャネル」を通じてサードパーティによってソーシャルネットワーキング・システム160に付加されることも可能である。
【0038】
特定の実施形態においては、ソーシャルネットワーキング・システム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から受け取られたロケーション情報を記憶するために、ロケーション・ストアが使用される。広告価格設定モジュールが、ソーシャルな情報、現在時刻、ロケーション情報、またはその他の適切な情報を組み合わせて、関連がある広告を、通知の形式でユーザに提供する。
【0039】
ソーシャル・グラフ
図2は、例示的なソーシャル・グラフ200を示している。特定の実施形態においては、ソーシャルネットワーキング・システム160は、1つまたは複数のソーシャル・グラフ200を1つまたは複数のデータ・ストア内に記憶する。特定の実施形態においては、ソーシャル・グラフ200は、複数のノード(複数のユーザ・ノード202、または複数のコンセプト・ノード204を含む)と、ノード同士をつなげる複数のエッジ206とを含む。図2において示されている例示的なソーシャル・グラフ200は、教示上の目的から、2次元のビジュアル・マップ表示で示されている。特定の実施形態においては、ソーシャルネットワーキング・システム160、クライアント・システム130、またはサードパーティ・システム170は、適切なアプリケーションに関してソーシャル・グラフ200および関連したソーシャル・グラフ情報にアクセスする。ソーシャル・グラフ200のノードおよびエッジは、データ・オブジェクトとして、たとえば(ソーシャル・グラフ・データベースなどの)データ・ストア内に記憶される。そのようなデータ・ストアは、ソーシャル・グラフ200のノードまたはエッジの1つまたは複数の検索可能なまたはクエリ可能なインデックスを含む。
【0040】
特定の実施形態においては、ユーザ・ノード202は、ソーシャルネットワーキング・システム160のユーザに対応する。限定ではなく、例として、ユーザは、ソーシャルネットワーキング・システム160と、またはソーシャルネットワーキング・システム160を通じて対話または通信する個人(人間のユーザ)、エンティティ(たとえば、企業、ビジネス、もしくはサードパーティ・アプリケーション)、または(たとえば、個人もしくはエンティティの)グループである。特定の実施形態においては、あるユーザがソーシャルネットワーキング・システム160とのアカウントに登録した場合には、ソーシャルネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202を作成し、そのユーザ・ノード202を1つまたは複数のデータ・ストア内に記憶する。本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、登録されているユーザ、および登録されているユーザに関連付けられているユーザ・ノード202に及ぶ。追加として、または代替として、本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、ソーシャルネットワーキング・システム160に登録されていないユーザに及ぶ。特定の実施形態においては、ユーザ・ノード202は、ユーザによって提供された情報、またはソーシャルネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられる。限定では
なく、例として、ユーザは、自分の名前、プロフィール画像、連絡先情報、生年月日、性別、婚姻状況、家族状況、勤務先、学歴、好み、関心、またはその他の人口統計学的情報を提供する。特定の実施形態においては、ユーザ・ノード202は、ユーザに関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられる。特定の実施形態においては、ユーザ・ノード202は、1つまたは複数のウェブページに対応する。
【0041】
特定の実施形態においては、コンセプト・ノード204は、コンセプトに対応する。限定ではなく、例として、コンセプトは、場所(たとえば、映画館、レストラン、ランドマーク、もしくは都市など)、ウェブサイト(たとえば、ソーシャルネットワーク・システム160に関連付けられているウェブサイト、もしくはウェブアプリケーション・サーバに関連付けられているサードパーティ・ウェブサイトなど)、エンティティ(たとえば、人、企業、グループ、スポーツ・チーム、もしくは有名人など)、ソーシャルネットワーキング・システム160内に、もしくはウェブアプリケーション・サーバなどの外部サーバ上に配置されるリソース(たとえば、オーディオ・ファイル、映像ファイル、デジタル写真、テキスト・ファイル、構造化ドキュメント、もしくはアプリケーションなど)、物的もしくは知的財産(たとえば、彫塑、絵画、映画、ゲーム、曲、アイディア、写真、もしくは執筆作品など)、ゲーム、アクティビティ、アイディアもしくは理論、別の適切なコンセプト、または複数のそのようなコンセプトに対応する。コンセプト・ノード204は、ユーザによって提供されたコンセプトの情報、またはソーシャルネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられる。限定ではなく、例として、コンセプトの情報は、名前もしくはタイトル、1つもしくは複数のイメージ(たとえば、本の表紙のイメージ)、ロケーション(たとえば、住所もしくは地理的ロケーション)、(URLに関連付けられる)ウェブサイト、連絡先情報(たとえば、電話番号もしくはEメール・アドレス)、その他の適切なコンセプト情報、またはそのような情報の任意の適切な組合せを含む。特定の実施形態においては、コンセプト・ノード204は、コンセプト・ノード204に関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられる。特定の実施形態においては、コンセプト・ノード204は、1つまたは複数のウェブページに対応する。
【0042】
特定の実施形態においては、ソーシャル・グラフ200内のノードは、ウェブページ(「プロフィール・ページ」と呼ばれる場合もある)を表すこと、またはウェブページによって表される。プロフィール・ページは、ソーシャルネットワーキング・システム160によってホストされること、またはソーシャルネットワーキング・システム160にとってアクセス可能である。プロフィール・ページは、サードパーティ・サーバ170に関連付けられているサードパーティ・ウェブサイト上にホストされることも可能である。限定ではなく、例として、特定の外部ウェブページに対応するプロフィール・ページは、その特定の外部ウェブページであることが可能であり、そのプロフィール・ページは、特定のコンセプト・ノード204に対応する。プロフィール・ページは、その他のユーザのうちのすべてまたは選択されたサブセットによって閲覧できる。限定ではなく、例として、ユーザ・ノード202は、対応するユーザプロフィール・ページを有することができ、そのユーザプロフィール・ページにおいては、対応するユーザが、コンテンツを付加すること、言明を行うこと、またはその他の形で自分自身を表現する。限定ではなく、別の例として、コンセプト・ノード204は、対応するコンセプトプロフィール・ページを有することができ、そのコンセプトプロフィール・ページにおいては、1人または複数のユーザが、特にコンセプト・ノード204に対応するコンセプトに関連して、コンテンツを付加すること、言明を行うこと、または自分自身を表現する。
【0043】
特定の実施形態においては、コンセプト・ノード204は、サードパーティ・システム170によってホストされているサードパーティ・ウェブページまたはリソースを表す。
サードパーティ・ウェブページまたはリソースは、数ある要素の中でも、コンテンツ、選択可能なもしくはその他のアイコン、または、アクションもしくはアクティビティを表す(たとえば、JAVASCRIPT(登録商標)、AJAX、もしくはPHPコードで実装される)その他の対話可能なオブジェクトを含む。限定ではなく、例として、サードパーティ・ウェブページは、「いいね!」、「チェックイン」、「食べる」、「推奨する」、または別の適切なアクションもしくはアクティビティなどの選択可能なアイコンを含む。サードパーティ・ウェブページを閲覧しているユーザは、それらのアイコンのうちの1つ(たとえば、「食べる」)を選択することによってアクションを実行して、クライアント・システム130に、そのユーザのアクションを示すメッセージをソーシャルネットワーキング・システム160へ送信させる。そのメッセージに応答して、ソーシャルネットワーキング・システム160は、ユーザに対応するユーザ・ノード202と、サードパーティ・ウェブページまたはリソースに対応するコンセプト・ノード204との間においてエッジ(たとえば、「食べる」エッジ)を作成して、エッジ206を1つまたは複数のデータ・ストア内に記憶する。
【0044】
特定の実施形態においては、ソーシャル・グラフ200内の1対のノードが、1つまたは複数のエッジ206によって互いにつながる。1対のノードをつなげるエッジ206は、それらの1対のノードの間における関係を表す。特定の実施形態においては、エッジ206は、1対のノードの間における関係に対応する1つまたは複数のデータ・オブジェクトまたは属性を含むことまたは表す。限定ではなく、例として、第1のユーザは、第2のユーザが第1のユーザの「友達」であるということを示す。この表示に応答して、ソーシャルネットワーキング・システム160は、「友達要求」を第2のユーザに送信する。第2のユーザがその「友達要求」を承認した場合には、ソーシャルネットワーキング・システム160は、ソーシャル・グラフ200内で第1のユーザのユーザ・ノード202を第2のユーザのユーザ・ノード202につなげるエッジ206を作成して、エッジ206をソーシャル・グラフ情報としてデータ・ストア24のうちの1つまたは複数の中に記憶する。図2の例においては、ソーシャル・グラフ200は、ユーザ「A」のユーザ・ノード202と、ユーザ「B」のユーザ・ノード202との間における友達関係を示すエッジ206と、ユーザ「C」のユーザ・ノード202と、ユーザ「B」のユーザ・ノード202との間における友達関係を示すエッジとを含む。本開示は、特定のユーザ・ノード202同士をつなげる特定の属性を伴う特定のエッジ206を記述している、または示しているが、本開示は、ユーザ・ノード202同士をつなげる任意の適切な属性を伴う任意の適切なエッジ206を想定している。限定ではなく、例として、エッジ206は、友達関係、家族関係、ビジネスもしくは雇用関係、ファン関係、フォロワー関係、ビジター関係、サブスクライバ関係、上下関係、互恵的関係、非互恵的関係、別の適切なタイプの関係、または複数のそのような関係を表す。その上、本開示は一般に、ノード同士をつながっているものとして記述しているが、本開示はまた、ユーザ同士またはコンセプト同士をつながっているものとして記述している。本明細書においては、つながっているユーザ同士またはコンセプト同士への言及は、適切な場合には、1つまたは複数のエッジ206によってソーシャル・グラフ200内でつながっているそれらのユーザ同士またはコンセプト同士に対応するノード同士に及ぶ。
【0045】
特定の実施形態においては、ユーザ・ノード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との間におけるそれぞれのタイプの関係(または、単一の関係が複数集まったもの)を表す。
【0046】
特定の実施形態においては、ソーシャルネットワーキング・システム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を形成することを想定している。
【0047】
広告
特定の実施形態においては、広告は、テキスト(HTMLにリンクされている)、1もしくは複数のイメージ(HTMLにリンクされている)、1もしくは複数の映像、オーディオ、1もしくは複数のADOBEフラッシュ・ファイル、これらの適切な組合せ、または、1もしくは複数のウェブページ上に、1もしくは複数のEメール内に、もしくはユーザによって要求されている検索結果とともに提示される任意の適切なデジタル・フォーマットでのその他の任意の適切な広告である)。追加として、または代替として、広告は、1または複数のスポンサー付きストーリ(たとえば、ソーシャルネットワーキング・システム160上のニュース・フィードまたはティッカー・アイテム)である。スポンサー付きストーリは、ユーザによるソーシャル・アクション(ページに対して「いいね!」を表明すること、ページ上の投稿に対して「いいね!」を表明することまたはコメントすること、ページに関連付けられているイベントへの招待の返事を求めること、ページ上に投稿されている質問に投票すること、場所にチェックインすること、アプリケーションを使用することもしくはゲームをプレイすること、またはウェブサイトに対して「いいね!」を表明することもしくはウェブサイトを共有することなど)であることが可能であり、広告主は、たとえば、そのソーシャル・アクションを、ユーザのプロフィール・ページもしくはその他のページの所定の領域内に提示させること、その広告主に関連付けられているさらなる情報とともに提示させること、その他のユーザのニュース・フィードもしくはティッカー内に飛び出させることもしくはその他の形で強調表示させること、またはその他の形で促進させることによって、そのソーシャル・アクションを促進する。広告主は、ソーシャル・アクションを促進させるために対価を支払う場合がある。
【0048】
特定の実施形態においては、広告が、ソーシャルネットワーキングシステム・ウェブページ、サードパーティ・ウェブページ、またはその他のページ内に表示されることが要求される場合がある。広告は、ページの最上部のバナー領域の中、ページの側部のカラムの中、ページのGUIの中、ポップアップ・ウィンドウの中、ドロップダウン・メニューの中、ページの入力フィールドの中、ページのコンテンツの最上部を覆って、またはページに関するその他の場所など、ページの専用の部分において表示される。追加として、または代替として、広告は、アプリケーション内に表示される。広告は、専用のページ内に表示されて、その広告と対話することまたはその広告を見ることをユーザに要求することができ、その後に、ユーザがページにアクセスすることまたはアプリケーションを利用することが可能になる。ユーザは、たとえば、ウェブ・ブラウザを通じて広告を閲覧する。
【0049】
ユーザは、任意の適切な様式で広告と対話する。ユーザは、広告をクリックすることまたはその他の形で選択する。ユーザは、広告を選択することによって、(または、ブラウザもしくはその他のアプリケーションがユーザによって使用されて、)その広告に関連付けられているページへ導かれる。広告に関連付けられているページにおいては、ユーザは、その広告に関連付けられている製品もしくはサービスを購入すること、その広告に関連付けられている情報を受け取ること、またはその広告に関連付けられているニュースレターをサブスクライブすることなど、さらなるアクションを取ることができる。オーディオまたは映像を伴う広告は、(「再生ボタン」のような)その広告の構成要素を選択することによって再生される。あるいは、広告を選択することによって、ソーシャルネットワーキング・システム160は、ユーザの特定のアクションを実行または修正する。限定ではなく、例として、広告は、検索結果ページの検索結果同士の間に含まれることが可能であり、スポンサー付きコンテンツは、スポンサー付きでないコンテンツに優先して促進され
る。限定ではなく、別の例として、広告は、提案される検索クエリの中に含まれることが可能であり、広告主またはそのコンテンツ/製品を参照する提案されるクエリは、スポンサー付きでないクエリに優先して促進される。
【0050】
広告は、ユーザが対話するソーシャルネットワーキング・システム機能を含む。たとえば、広告は、ユーザが、支持に関連付けられているアイコンまたはリンクを選択することによって、広告に対して「いいね!」を表明することまたはその他の形で支持を行うことを可能にする。別の例として、広告は、ユーザが、広告主に関連したコンテンツを(たとえば、クエリを実行することによって)検索することを可能にする。同様に、ユーザは、(たとえば、ソーシャルネットワーキング・システム160を通じて)広告を別のユーザと共有すること、または(たとえば、ソーシャルネットワーキング・システム160を通じて、)広告に関連付けられているイベントへの招待の返事を求めることが可能である。追加として、または代替として、広告は、ユーザを対象にしたソーシャルネットワーキングシステム・コンテキストを含む。たとえば、広告は、その広告の主題に関連付けられているアクションを取ったソーシャルネットワーキング・システム160内のユーザの友達に関する情報を表示する。
【0051】
タイプ・アヘッド・プロセス
特定の実施形態においては、1または複数のクライアント側および/またはバックエンド(サーバ側)プロセスが、ソーシャル・グラフ要素(たとえば、ユーザ・ノード202、コンセプト・ノード204、またはエッジ206)を、ソーシャルネットワーキング・システム160によってホストされること、またはソーシャルネットワーキング・システム160においてアクセスできる要求されているウェブページ(たとえば、オンライン・ソーシャル・ネットワークのユーザプロフィール・ページ、コンセプトプロフィール・ページ、検索結果ウェブページ、または別の適切なページなど)とともにレンダリングされた入力フォーム内にユーザによって現在入力されている情報にマッチさせることを自動的に試みる「タイプ・アヘッド」機能を実装および利用する。特定の実施形態においては、ユーザが言明を行うためにテキストを入力している際に、タイプ・アヘッド機能は、その言明において入力されているテキスト文字の文字列を、ソーシャル・グラフ200内のユーザ、コンセプト、またはエッジ、およびそれらの対応する要素に対応する文字の文字列(たとえば、名前、記述)にマッチさせることを試みる。特定の実施形態においては、マッチが見つかった場合には、タイプ・アヘッド機能は、既存のソーシャル・グラフ要素のソーシャル・グラフ要素への参照(たとえば、ノードの名前/タイプ、ノードID、エッジの名前/タイプ、エッジID、または別の適切な参照もしくは識別子など)をフォームに自動的に投入する。
【0052】
特定の実施形態においては、ユーザが、そのユーザのプロフィール・ページ、ホーム・ページ、またはその他のページのさまざまなセクションにおいてコンテンツを付加するまたは言明を行うために使用されるフォーム内にテキストをタイプまたはその他の形で入力する際に、タイプ・アヘッド・プロセスは、ソーシャルネットワーキング・システム160において(またはその中で)(たとえば、サーバ162内で)実行される1または複数のフロントエンド(クライアント側)および/またはバックエンド(サーバ側)タイプ・アヘッド・プロセス(以降では、単に「タイプ・アヘッド・プロセス」と呼ばれる)と連携して機能して、そのユーザがテキストの文字を入力する際にそのユーザによって入力されたそれらのテキストの文字に対する最も関連があるまたはベスト・マッチであると決定された、既存のソーシャル・グラフ要素の名前に対応する1もしくは複数の用語、または既存のソーシャル・グラフ要素に関連付けられている用語をフォームに自動投入することを対話式におよび(ユーザにとってそう見えるように)ほぼ瞬時に試みる。ノードおよびエッジに関連付けられている情報を含めて、ソーシャル・グラフ・データベース内のソーシャル・グラフ情報、またはソーシャル・グラフ・データベースからの抽出およびインデ
ックス付けされた情報を利用して、タイプ・アヘッド・プロセスは、ソーシャル・グラフ・データベースからの情報と連携して、ならびに潜在的には、ソーシャルネットワーキング・システム160内において配置または実行されているその他のさまざまなプロセス、アプリケーション、またはデータベースと連携して、ユーザの意図されている言明を高い精度で予測できる。しかしながら、ソーシャルネットワーキング・システム160は、ユーザに、自分が望む基本的に任意の言明を入力するための自由を提供して、ユーザが自分自身を自由に表現することを可能にすることもできる。
【0053】
特定の実施形態においては、ユーザがテキスト文字をフォーム・ボックスまたはその他のフィールド内に入力する際に、タイプ・アヘッド・プロセスは、ユーザが文字を入力している際にユーザの言明において入力された文字の文字列にマッチする既存のソーシャル・グラフ要素(たとえば、ユーザ・ノード202、コンセプト・ノード204、またはエッジ206)を識別することを試みる。特定の実施形態においては、ユーザが文字をフォーム・ボックス内に入力する際に、タイプ・アヘッド・プロセスは、入力されたテキスト文字の文字列を読み取る。それぞれのキーストロークが行われた際に、フロントエンド・タイプ・アヘッド・プロセスは、入力された文字の文字列を、要求(または呼び出し)として、ソーシャルネットワーキング・システム160内で実行されるバックエンド・タイプ・アヘッド・プロセスに送信する。特定の実施形態においては、タイプ・アヘッド・プロセスは、AJAX(Asynchronous JavaScript(登録商標)and XML)またはその他の適切な技術、特に非同期技術を通じて通信を行う。特定の実施形態においては、要求は、結果を迅速かつ動的に送信およびフェッチすることを可能にするXMLHTTPRequest(XHR)であること、またはXHRを含む。特定の実施形態においては、タイプ・アヘッド・プロセスは、要求の前に、要求の後に、または要求とともに、ユーザが言明を行っている特定のページの特定のセクションを識別するセクション識別子(セクションID)を送信することもできる。特定の実施形態においては、ユーザIDパラメータが送信されることも可能であるが、これは、いくつかの実施形態においては不要である。なぜなら、ユーザは、そのユーザがソーシャルネットワーキング・システム160にログインしていること(またはソーシャルネットワーキング・システム160によってその他の形で認証されていること)に基づいて既に「知られている」場合があるためである。
【0054】
特定の実施形態においては、タイプ・アヘッド・プロセスは、マッチしているソーシャル・グラフ要素を識別することを試みるために1または複数のマッチング・アルゴリズムを使用する。特定の実施形態においては、1または複数のマッチが見つかった場合には、タイプ・アヘッド・プロセスは、たとえば、マッチしているソーシャル・グラフ要素の名前(名前文字列)または記述、ならびに潜在的には、マッチしているソーシャル・グラフ要素に関連付けられているその他のメタデータを含む(AJAXまたはその他の適切な技術を利用する)応答をユーザのクライアント・システム130へ送信する。限定ではなく、例として、ユーザが、「pok」という文字をクエリ・フィールド内に入力している場合には、タイプ・アヘッド・プロセスは、ドロップダウン・メニューを表示することができ、そのドロップダウン・メニューは、「poker(ポーカー)」もしくは「pokemon(ポケモン)」という名前の、または「poker(ポーカー)」もしくは「pokemon(ポケモン)」専用のプロフィール・ページなど、マッチしている既存のプロフィール・ページおよびそれぞれのユーザ・ノード202またはコンセプト・ノード204の名前を表示し、次いでユーザは、それをクリックまたはその他の形で選択し、それによって、選択されたノードに対応するマッチしたユーザまたはコンセプトの名前を言明したいという要望を確定する。限定ではなく、別の例として、「poker(ポーカー)」をクリックすると、タイプ・アヘッド・プロセスは、「poker(ポーカー)」という言明をクエリ・フィールドに自動投入することができ、またはその自動投入をウェブ・ブラウザ132に行わせる。特定の実施形態においては、タイプ・アヘッド・プロセスは、
ドロップダウン・メニューを表示するよりもむしろ、上位にランク付けされたマッチの名前またはその他の識別子をフィールドに単に自動投入する。次いでユーザは、単に自分のキーボード上の「enter(入力)」キーを押すことによって、またはその自動投入された言明をクリックすることによって、その自動投入された言明を確定することができる。
【0055】
タイプ・アヘッド・プロセスに関するさらなる情報は、2010年4月19日に出願された米国特許出願第12/763162号、および2012年7月23日に出願された米国特許出願第13/556072号において見つけることができ、それらの米国特許出願は、本願明細書に援用されている。
【0056】
構造化検索クエリ
図3は、オンライン・ソーシャル・ネットワークの例示的なウェブページを示している。特定の実施形態においては、ユーザは、テキストをクエリ・フィールド350内に入力することによって、クエリをソーシャルネットワーク・システム160にサブミットする。オンライン・ソーシャル・ネットワークのユーザは、特定の主題(たとえば、ユーザ、コンセプト、外部コンテンツ、またはリソース)について記述する短いフレーズ(しばしば「検索クエリ」と呼ばれる)を検索エンジンに提供することによって、その主題に関連している情報を検索する。そのクエリは、非構造化テキスト・クエリであることが可能であり、1または複数のテキスト文字列(1または複数のnグラムを含む)を含む。一般には、ユーザは、テキスト・クエリにマッチするソーシャルネットワーキング・システム160上のコンテンツを検索するために、任意の文字の文字列をクエリ・フィールド350内に入力する。次いでソーシャルネットワーキング・システム160は、クエリにマッチするコンテンツを識別するために、データ・ストア164(または、詳細には、ソーシャル・グラフ・データベース)を検索する。検索エンジンは、さまざまな検索アルゴリズムを使用してクエリ・フレーズに基づく検索を行って、検索クエリに関連している可能性が最も高いリソースまたはコンテンツ(たとえば、ユーザプロフィール・ページ、コンテンツプロフィール・ページ、または外部リソース)を識別する検索結果を生成する。検索を行うために、ユーザは、検索クエリを検索エンジンに入力または送信する。それに応答して、検索エンジンは、その検索クエリに関連している可能性が高い1または複数のリソースを識別することができ、それらのリソースのそれぞれは、個別に「検索結果」と呼ばれる場合があり、または、その検索クエリに対応する「検索結果」と総称される場合もある。識別されたコンテンツは、たとえば、ソーシャル・グラフ要素(すなわち、ユーザ・ノード202、コンセプト・ノード204、エッジ206)、プロフィール・ページ、外部ウェブページ、またはそれらの任意の組合せを含む場合がある。次いでソーシャルネットワーキング・システム160は、識別されたコンテンツに対応する検索結果を伴う検索結果ウェブページを生成し、その検索結果ウェブページをユーザに送信する。検索結果は、しばしば検索結果ウェブページ上のリンクのリストという形式で、ユーザに提示されることが可能であり、それぞれのリンクは、識別されたリソースまたはコンテンツのうちのいくつかを含む別のウェブページに関連付けられている。特定の実施形態においては、検索結果内のそれぞれのリンクは、対応するウェブページがどこに配置されているかと、それを取り出すためのメカニズムとを指定するユニフォーム・リソース・ロケータ(URL)の形式である。次いでソーシャルネットワーキング・システム160は、検索結果ウェブページをユーザのクライアント・システム130上のウェブ・ブラウザ132へ送信する。次いでユーザは、URLリンクをクリックして、または検索結果ウェブページからのコンテンツをその他の形で選択して、ソーシャルネットワーキング・システム160からの、または必要に応じて外部システム(たとえば、サードパーティ・システム170など)からのコンテンツにアクセスする。リソース同士が、検索クエリに対するそれらの相対的な関連度に従ってランク付けされてユーザに提示される。検索結果同士が、ユーザに対するそれらの相対的な関連度に従ってランク付けされてユーザに提示されることも可能であ
る。言い換えれば、検索結果は、クエリを行っているユーザのために、たとえば、そのユーザのソーシャル・グラフ情報、ユーザ情報、検索もしくはブラウジング履歴、またはそのユーザに関連したその他の適切な情報に基づいてパーソナライズされる。特定の実施形態においては、リソースのランキングは、検索エンジンによって実施されるランキング・アルゴリズムによって決定される。限定ではなく、例として、検索クエリに対する、またはユーザに対する関連性の高いリソースは、検索クエリまたはユーザに対する関連性の低いリソースよりも高くランク付けされる。特定の実施形態においては、検索エンジンは、自分の検索を、オンライン・ソーシャル・ネットワーク上のリソースおよびコンテンツに限定する。しかしながら、特定の実施形態においては、検索エンジンは、その他のソース、たとえば、サードパーティ・システム170、インターネットもしくはワールド・ワイド・ウェブ、またはその他の適切なソース上のリソースまたはコンテンツを検索することもできる。本開示は、特定の様式でソーシャルネットワーキング・システム160にクエリを行うことについて記述しているが、本開示は、任意の適切な様式でソーシャルネットワーキング・システム160にクエリを行うことを想定している。
【0057】
特定の実施形態においては、本明細書において記述されているタイプ・アヘッド・プロセスは、ユーザによって入力された検索クエリに適用される。限定ではなく、例として、ユーザがテキスト文字を検索フィールド内に入力する際に、タイプ・アヘッド・プロセスは、そのユーザが文字を入力している際に検索フィールド内に入力された文字の文字列にマッチする1または複数のユーザ・ノード202、コンセプト・ノード204、またはエッジ206を識別することを試みる。タイプ・アヘッド・プロセスは、テキスト・クエリからの文字列またはnグラムを含む要求または呼び出しを受け取った際には、入力されたテキストにマッチしているそれぞれの名前、タイプ、カテゴリ、またはその他の識別子を有する既存のソーシャル・グラフ要素(すなわち、ユーザ・ノード202、コンセプト・ノード204、エッジ206)を識別するための検索を実行することができ、またはそうした検索が実行されるようにする。タイプ・アヘッド・プロセスは、マッチしているノードまたはエッジを識別することを試みるために1または複数のマッチング・アルゴリズムを使用する。1または複数のマッチが見つかった場合には、タイプ・アヘッド・プロセスは、たとえば、マッチしているノードの名前(名前文字列)、および潜在的には、マッチしているノードに関連付けられているその他のメタデータを含む応答をユーザのクライアント・システム130へ送信する。次いでタイプ・アヘッド・プロセスは、ドロップダウン・メニュー300を表示することができ、そのドロップダウン・メニュー300は、マッチしている既存のプロフィール・ページおよびそれぞれのユーザ・ノード202またはコンセプト・ノード204の名前を表示し、マッチしているユーザ・ノード202またはコンセプト・ノード204につながるマッチしているエッジ206の名前を表示し、次いでユーザは、それをクリックまたはその他の形で選択し、それによって、選択されたノードに対応するマッチしたユーザもしくはコンセプトの名前を検索したい、またはマッチしているエッジによって、マッチしたユーザもしくはコンセプトにつながっているユーザもしくはコンセプトを検索したいという要望を確定することができる。あるいは、タイプ・アヘッド・プロセスは、ドロップダウン・メニュー300を表示するよりもむしろ、上位にランク付けされたマッチの名前またはその他の識別子をフォームに単に自動投入する。次いでユーザは、単にキーボード上の「enter(入力)」キーを押すことによって、またはその自動投入された言明をクリックすることによって、その自動投入された言明を確定する。マッチしているノードおよびエッジをユーザが確定すると、タイプ・アヘッド・プロセスは、マッチしているソーシャル・グラフ要素を含むクエリをユーザが確定したことをソーシャルネットワーキング・システム160に知らせる要求を送信する。送信された要求に応答して、ソーシャルネットワーキング・システム160は、マッチしているソーシャル・グラフ要素を探して、または必要に応じて、マッチしているソーシャル・グラフ要素につながっているソーシャル・グラフ要素を探して、ソーシャル・グラフ・データベースを自動的に(または代替として、要求内の命令に基づいて)呼び出しまたはその
他の形で検索する。本開示は、特定の様式でタイプ・アヘッド・プロセスを検索クエリに適用することについて記述しているが、本開示は、任意の適切な様式でタイプ・アヘッド・プロセスを検索クエリに適用することを想定している。
【0058】
検索クエリおよび検索結果に関連して、特定の実施形態は、2006年8月11日に出願された米国特許出願第11/503093号、2010年12月22日に出願された米国特許出願第12/977027号、および2010年12月23日に出願された米国特許出願第12/978265号において開示されている1または複数のシステム、構成要素、要素、機能、方法、オペレーション、または工程を利用することができ、それらの米国特許出願は、本願明細書に援用されている。
【0059】
構造化検索クエリの自然言語でのレンダリング
図4A図4Bは、ソーシャル・ネットワークの例示的なクエリを示している。特定の実施形態においては、ソーシャルネットワーキング・システム160は、第1のユーザ(すなわち、クエリを行っているユーザ)から受け取られたテキスト・クエリに応答して、自然言語シンタックスでレンダリングされた1または複数の構造化クエリを生成することができ、それぞれの構造化クエリは、1または複数の識別されたソーシャル・グラフ要素に対応するクエリ・トークンを含む。図4A図4Bは、クエリ・フィールド350内のさまざまな例示的なテキスト・クエリ、および応答してドロップダウン・メニュー300内に生成されたさまざまな構造化クエリを示している。ユーザのテキスト・クエリに応答して、提案される構造化クエリを提供することによって、ソーシャルネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザが、自分のソーシャル・グラフ属性、およびさまざまなソーシャル・グラフ要素に対する自分の関係に基づいて、ソーシャル・グラフ200内で表されている要素を検索するための強力な方法を提供する。構造化クエリは、クエリを行っているユーザが、特定のエッジ・タイプによってソーシャル・グラフ200内の特定のユーザまたはコンセプトにつながっているコンテンツを検索することを可能にする。限定ではなく、例として、ソーシャルネットワーキング・システム160は、非構造化テキスト・クエリを第1のユーザから受け取る。それに応答して、ソーシャルネットワーキング・システム160は(たとえば、サーバ側要素検知プロセスを通じて)、ソーシャル・グラフ200にアクセスし、次いでテキスト・クエリを解析して、そのテキスト・クエリからのnグラムに対応したソーシャル・グラフ要素を識別する。次いでソーシャルネットワーキング・システム160は、コンテキストフリー文法モデルなどの文法モデルにアクセスすることができ、その文法モデルは、複数の文法を含む。これらの文法は、複数の非終端トークンおよび終端トークンを伴う順序付きツリーとして編成されている文法フォレストとして視覚化される。識別されたソーシャル・グラフ要素は、文法において終端トークン(「クエリ・トークン」)として使用される。(たとえば、ユーザからのテキスト・クエリに対応するセマンティック・ツリーを使用することによって)これらの終端トークンが識別されると、ソーシャルネットワーキング・システム160は、文法フォレストを横断して、交わっている非終端ノードを識別する。次いで、これらの交わっている非終端ノードのうちの1つによって表されているそれぞれの文法が選択される。次いで、選択された文法は、識別されたソーシャル・グラフ要素を参照するクエリ・トークンを含む1または複数の構造化クエリを生成するために使用される。これらの構造化クエリは、それらの文法によって生成された文字列に基づくことが可能であり、それによって、それらの構造化クエリは、自然言語シンタックスを使用して、適切なソーシャル・グラフ要素への参照を伴ってレンダリングされる。それらの構造化クエリは、第1のユーザへ送信されて(たとえば、クライアント側タイプ・アヘッド・プロセスを通じて)ドロップダウン・メニュー300内に表示されることが可能であり、次いでそのドロップダウン・メニュー300において、第1のユーザは、所望のコンテンツを検索するための適切なクエリを選択する。本明細書において記述されている構造化クエリを使用することの利点のうちのいくつかとしては、限られた情報に基づいてオンライン・ソー
シャル・ネットワークのユーザを見つけ出すこと、さまざまなソーシャル・グラフ要素に対するそのコンテンツの関係に基づいてオンライン・ソーシャル・ネットワークからのコンテンツの仮想インデックス同士をまとめること、またはユーザおよび/もしくはユーザの友達に関連したコンテンツを見つけ出すことが含まれる。このプロセスを使用することによって、自然言語でのレンダリング・プロセスの出力が、たとえば、修正されたまたは代替の構造化クエリを生成するために、効率よく解析される。さらに、このプロセスによって使用されるルールは、文法モデルから導出されるため、文法モデルのルールに対するいかなる修正も、レンダリング・プロセスにおいてすぐに反映される。特定の様式で特定の構造化クエリを生成することについて本開示は記述しており、図4A図4Bは示しているが、本開示は、任意の適切な様式で任意の適切な構造化クエリを生成することを想定している。
【0060】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、非構造化テキスト・クエリを(第1のユーザ・ノード202に対応する)クエリを行っている/第1のユーザから受け取る。限定ではなく、例として、第1のユーザは、(1)第1のユーザの一次友達であって、かつ(2)スタンフォード大学に関連付けられているその他のユーザ(すなわち、ユーザ・ノード202は、エッジ206によって、「スタンフォード」という学校に対応するコンセプト・ノード204につながっている)を検索したいと望む可能性がある。次いで第1のユーザは、図4A図4Bにおいて示されているように、「friends Stanford(友達 スタンフォード)」というテキスト・クエリをクエリ・フィールド350内に入力する。第1のユーザがこのテキスト・クエリをクエリ・フィールド350内に入力する際に、ソーシャルネットワーキング・システム160は、ドロップダウン・メニュー300において示されているように、さまざまな提案される構造化クエリを提供する。本明細書において使用される際には、非構造化テキスト・クエリとは、ユーザによって入力された単純なテキスト文字列に及ぶ。テキスト・クエリは、もちろん、標準的な言語/文法ルール(たとえば、英語文法)に関して構造化されている場合がある。しかしながら、テキスト・クエリは通常、ソーシャル・グラフ要素に関しては構造化されていないであろう。言い換えれば、単純なテキスト・クエリは通常、特定のソーシャル・グラフ要素への組み込まれた参照を含まないであろう。したがって、本明細書において使用される際には、構造化クエリとは、特定のソーシャル・グラフ要素への参照を含んでいて、識別された要素に基づいて検索エンジンが検索を行うことを可能にするクエリに及ぶ。さらに、テキスト・クエリは、正式なクエリ・シンタックスに関して構造化されていない場合がある。言い換えれば、単純なテキスト・クエリは、検索エンジンによって直接実行可能であるクエリ・コマンドのフォーマットでは必ずしもないであろう。本開示は、特定の様式で特定のクエリを受け取ることについて記述しているが、本開示は、任意の適切な様式で任意の適切なクエリを受け取ることを想定している。
【0061】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、第1のユーザ(すなわち、クエリを行っているユーザ)から受け取られた非構造化テキスト・クエリ(単に検索クエリとも呼ばれる)を解析して、1または複数のnグラムを識別する。一般には、nグラムとは、テキストまたは話語の所与のシーケンスからのn個のアイテムの連続したシーケンスである。それらのアイテムは、テキストまたは話語のシーケンスからの文字、音素、音節、字、言葉、語基ペア、接頭辞、またはその他の識別可能なアイテムである。nグラムは、クエリを行っているユーザによって入力されたテキストの1または複数の文字(字、数字、句読点など)を含む。サイズ1のnグラムは、「ユニグラム」と呼ばれることが可能であり、サイズ2のnグラムは、「バイグラム」または「ダイグラム」と呼ばれることが可能であり、サイズ3のnグラムは、「トライグラム」と呼ばれる、といった具合である。それぞれのnグラムは、クエリを行っているユーザから受け取られたテキスト・クエリからの1または複数の部分を含む。特定の実施形態においては、それぞれのnグラムは、第1のユーザによって入力された文字の文字列(たとえば、テキス
トの1または複数の文字)を含む。限定ではなく、例として、ソーシャルネットワーキング・システム160は、「友達 スタンフォード」というテキスト・クエリを解析して、「友達」、「スタンフォード」、「友達 スタンフォード」というnグラムを識別する。限定ではなく、別の例として、ソーシャルネットワーキング・システム160は、「friends in palo alto(パロアルトの友達)」というテキスト・クエリを解析して、「friends(友達)」、「in(の)」、「palo(パロ)」、「alto(アルト)」、「friends in(の友達)」、「in palo(パロ・・・の)」、「palo alto(パロアルト)」、「friends in palo(パロ・・・の友達)」、「in palo also(パロアルソの)」、「friends in palo alto(パロアルトの友達)」というnグラムを識別する。特定の実施形態においては、それぞれのnグラムは、テキスト・クエリからのn個のアイテムの連続したシーケンスを含む。本開示は、特定の様式で特定のクエリを解析することについて記述しているが、本開示は、任意の適切な様式で任意の適切なクエリを解析することを想定している。
【0062】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、テキスト・クエリ内で識別されたそれぞれのnグラムに関して、そのnグラムがソーシャル・グラフ要素に対応するスコアを決定または計算する。このスコアは、たとえば、信頼スコア、確率、質、ランキング、別の適切なタイプのスコア、またはそれらの任意の組合せである。限定ではなく、例として、ソーシャルネットワーキング・システム160は、nグラムが、ソーシャル・グラフ200のユーザ・ノード202、コンセプト・ノード204、またはエッジ206などのソーシャル・グラフ要素に対応する確率スコア(単に「確率」とも呼ばれる)を決定する。確率スコアは、nグラムと特定のソーシャル・グラフ要素との間における類似度または関連度のレベルを示す。確率を計算するための多くの異なる方法が存在する。本開示は、検索クエリ内で識別されたnグラムに関する確率スコアを計算するための任意の適切な方法を想定している。特定の実施形態においては、ソーシャルネットワーキング・システム160は、nグラムが特定のソーシャル・グラフ要素に対応する確率pを決定する。確率pは、特定の検索クエリXを与えられた場合に特定のソーシャル・グラフ要素kに対応する確率として計算される。言い換えれば、確率は、p=(k|X)として計算される。限定ではなく、例として、nグラムがソーシャル・グラフ要素に対応する確率は、pi,j,kとして示される確率スコアとして計算される。入力は、テキスト・クエリX=(x,x,...,x)、およびクラスのセットである。それぞれの(i:j)およびクラスkに関して、ソーシャルネットワーキング・システム160は、pi,j,k=p(class(xi,j)=k|X)を算出する。限定ではなく、例として、「スタンフォード」というnグラムは、「スタンフォード大学」という学校=0.7、「カリフォルニア州スタンフォード」というロケーション=0.2、「アレン・スタンフォード」というユーザ=0.1のようなソーシャル・グラフ要素に関してスコア付けされる。限定ではなく、別の例として、「友達」というnグラムは、「friends(友達)」であるユーザ=0.9、「Friends(フレンズ)」というテレビ番組=0.1のようなソーシャル・グラフ要素に関してスコア付けされる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、特定のnグラムが特定のソーシャル・グラフ要素に対応する確率を決定するために前後進アルゴリズムを使用する。テキスト・クエリ内の所与のnグラムに関して、ソーシャルネットワーキング・システム160は、どの特定のソーシャル・グラフ要素が所与のnグラムに対応するかを決定するために、先行のnグラムおよび後続のnグラムの両方を使用する。特定の実施形態においては、識別されたソーシャル・グラフ要素は、検索エンジンによって実行可能であるクエリ・コマンドを生成するために使用される。そのクエリ・コマンドは、特定の引数を受け入れる定義された関数を伴う構造化されたセマンティック・クエリである。限定ではなく、例として、「友達 自分 マーク」というテキスト・クエリが解析されて、intersect(友達(自分),友達(マーク))というクエリ・コマンドが形成される。言
い換えれば、そのクエリは、クエリを行っているユーザ(「自分」)および「マーク」というユーザと交わっているソーシャル・グラフ内のノード(すなわち、友達タイプのエッジ206によって、クエリを行っているユーザのユーザ・ノード202、および友達タイプのエッジ206によって、「マーク」というユーザを表すユーザ・ノード202の両方につながっているユーザ・ノード202)を探している。本開示は、nグラムがソーシャル・グラフ要素に対応するか否かを特定の様式で決定することについて記述しているが、本開示は、nグラムがソーシャル・グラフ要素に対応するか否かを任意の適切な様式で決定することを想定している。その上、本開示は、nグラムがソーシャル・グラフ要素に対応するか否かを、特定のタイプのスコアを使用して決定することについて記述しているが、本開示は、nグラムがソーシャル・グラフ要素に対応するか否かを、任意の適切なタイプのスコアを使用して決定することを想定している。
【0063】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、エッジの確率しきい値よりも高い確率を有する1または複数のエッジ206を識別する。識別されたエッジ206のそれぞれは、nグラムのうちの少なくとも1つに対応する。限定ではなく、例として、nグラムは、pi,j,k>pエッジ−しきい値である場合に、エッジkに対応するものとして識別されることのみが可能である。さらに、識別されたエッジ206のそれぞれは、識別されたノードのうちの少なくとも1つにつなげられる。言い換えれば、ソーシャルネットワーキング・システム160は、特定のnグラムに対応するものとして以前に識別されたユーザ・ノード202またはコンセプト・ノード204につながっているエッジ206またはエッジ・タイプを識別することのみが可能である。以前に識別されたいずれのノードにもつながっていないエッジ206またはエッジ・タイプは、典型的には、検索クエリ内の特定のnグラムに対応する可能性は低い。これらのエッジ206およびエッジ・タイプを除外または無視することによって、ソーシャルネットワーキング・システム160は、関連があるソーシャル・グラフ要素を探してソーシャル・グラフ200をさらに効率よく検索する。限定ではなく、例として、図2を参照すると、「went to Stanford(スタンフォードに通った)」を含むテキスト・クエリに関して、識別されたコンセプト・ノード204が「Stanford(スタンフォード)」という学校である場合には、ソーシャルネットワーキング・システム160は、「働いた」に対応するエッジ206、および「通った」に対応するエッジ206を識別することができ、それらは両方とも、「スタンフォード」を表すコンセプト・ノード204につながっている。したがって、「通った」というnグラムは、これらのエッジ206に対応するものとして識別される。しかしながら、同じテキスト・クエリに関して、ソーシャルネットワーキング・システム160は、ソーシャル・グラフ200内の「いいね!を表明する」または「ファンである」に対応するエッジ206を識別することはできない。なぜなら、「スタンフォード」というノードは、そのノードにつながっているそのようないずれのエッジも有していないためである。本開示は、nグラムに対応するエッジ206を特定の様式で識別することについて記述しているが、本開示は、nグラムに対応するエッジ206を任意の適切な様式で識別することを想定している。
【0064】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、ノード−確率しきい値よりも高い確率を有する1または複数のユーザ・ノード202またはコンセプト・ノード204を識別する。識別されたノードのそれぞれは、nグラムのうちの少なくとも1つに対応する。限定ではなく、例として、nグラムは、pi,j,k>pノード−しきい値である場合に、ノードkに対応するものとして識別されることのみが可能である。さらに、識別されたユーザ・ノード202またはコンセプト・ノード204のそれぞれは、識別されたエッジ206のうちの少なくとも1つにつなげられる。言い換えれば、ソーシャルネットワーキング・システム160は、特定のnグラムに対応するものとして以前に識別されたエッジ206につながっているノードまたはノードタイプを識別することのみが可能である。以前に識別されたいずれのエッジ206にもつながっていないノ
ードまたはノードタイプは、典型的には、検索クエリ内の特定のnグラムに対応する可能性は低い。これらのノードおよびノードタイプを除外または無視することによって、ソーシャルネットワーキング・システム160は、関連があるソーシャル・グラフ要素を探してソーシャル・グラフ200をさらに効率よく検索する。限定ではなく、例として、「アップルで働いた」を含むテキスト・クエリに関して、識別されたエッジ206が「働いた」である場合には、ソーシャルネットワーキング・システム160は、アップル・インコーポレイテッドという会社に対応するコンセプト・ノード204を識別することができ、それは、自分につながっている「働いた」という複数のエッジ206を有する。しかしながら、同じテキスト・クエリに関して、ソーシャルネットワーキング・システム160は、「アップル」というフルーツタイプに対応するコンセプト・ノード204を識別することはできず、それは、自分につながっている複数の「いいね!を表明する」または「ファンである」エッジを有するが、「働いた」というエッジつながりを有することはできない。特定の実施形態においては、ノード−確率しきい値は、ユーザ・ノード202およびコンセプト・ノード204ごとに異なることが可能であり、これらのノード同士の間でさえ異なる(たとえば、いくつかのコンセプト・ノード204は、その他のコンセプト・ノード204とは異なるノード−確率しきい値を有する)。限定ではなく、例として、nグラムは、pi,j,k>pユーザ−ノード−しきい値である場合には、ユーザ・ノード302kユーザに対応するものとして識別されることが可能であり、その一方で、nグラムは、pi,j,k>pコンセプト−ノード−しきい値である場合には、コンセプト・ノード304kコンセプトに対応するものとして識別される。特定の実施形態においては、ソーシャルネットワーキング・システム160は、第1のユーザ(すなわち、クエリを行っているユーザ)に対応するユーザ・ノード202の隔たり度合いしきい値内にあるノードを識別することのみが可能である。隔たり度合いしきい値は、たとえば、1、2、3、またはすべてである。本開示は、nグラムに対応するノードを特定の様式で識別することについて記述しているが、本開示は、nグラムに対応するノードを任意の適切な様式で識別することを想定している。
【0065】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、複数の文法を含むコンテキストフリー文法モデルにアクセスする。この文法モデルのそれぞれの文法は、1または複数の非終端トークン(または「非終端シンボル」)、および1または複数の終端トークン(または「終端シンボル」/「クエリ・トークン」)を含むことができ、特定の非終端トークンは、終端トークンによって置換される。文法モデルとは、形式言語における文字列に関する形成ルールのセットである。特定の実施形態においては、それらの複数の文法は、非終端トークンに対応する内部ノードと、終端トークンに対応するリーフ・ノードとを伴う順序付きツリーとして編成されている文法フォレストとして視覚化される。それぞれの文法は、文法フォレスト内のサブツリーとして表されることが可能であり、それらの文法は、非終端トークンを通じて互いに隣接している。したがって、複数の文法は、文法フォレスト内のサブフォレストである。本開示は、特定の文法にアクセスすることについて記述しているが、本開示は、任意の適切な文法を想定している。
【0066】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、1または複数の文法を使用して1または複数の文字列を生成する。その言語における文字列を生成するためには、単一の開始シンボルのみから構成されている文字列から開始する。次いで、開始シンボルも指定の非終端シンボルも含まない文字列が生成されるまで、生成ルールが任意の順序で適用される。コンテキストフリー文法においては、文法のそれぞれの非終端シンボルの生成は、文法のその他の非終端シンボルによって生成されるものから独立している。非終端シンボルは、終端シンボル(すなわち、終端トークンまたはクエリ・トークン)と置換される。クエリ・トークンのうちのいくつかは、前述のように、識別されたノードまたは識別されたエッジに対応する。次いで、文法によって生成された文字列が、識別されたノードまたは識別されたエッジへの参照を含む構造化クエリのための基礎と
して使用される。文法によって生成された文字列は、自然言語シンタックスでレンダリングされることが可能であり、それによって、その文字列に基づく構造化クエリも、自然言語でレンダリングされる。コンテキストフリー文法とは、それぞれの生成ルールの左手側が単一の非終端シンボルのみから構成されている文法である。確率的なコンテキストフリー文法は、タプル〈Σ,N,S,P〉であり、この場合、互いに素な集合ΣおよびNは、それぞれ終端シンボルおよび非終端シンボルを指定し、S∈Nは、開始シンボルである。Pは、生成の集合であり、それらは、E→ξ(p)という形式を取り、E∈N、ξ∈(Σ∪N)であり、p=Pr(E→ξ)は、Eが文字列ξへと展開されるであろう確率である。所与の非終端Eのすべての展開にわたる確率pの合計は、1でなければならない。本開示は、特定の様式で文字列を生成することについて記述しているが、本開示は、任意の適切な様式で文字列を生成することを想定している。
【0067】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、以前に識別されたノードおよびエッジに対応する1または複数のクエリ・トークンを識別する。言い換えれば、識別されたノードまたは識別されたエッジが、特定の文法においてクエリ・トークンとして使用される場合には、そのクエリ・トークンは、ソーシャルネットワーキング・システム160によって識別される。限定ではなく、例として、例示的な文法は、[ユーザ][ユーザフィルタ][学校]である。次いで、受け取られたテキスト・クエリ内のnグラムに基づいて、[ユーザ]、[ユーザフィルタ]、および[学校]という非終端シンボルが決定される。「友達 スタンフォード」というテキスト・クエリに関しては、このクエリは、文法を使用することによって、たとえば、「[スタンフォード大学][に通っている][友達]」、または「[スタンフォード大学][で働いている][友達]」として解析される。限定ではなく、別の例として、例示的な文法は、[ユーザ][ユーザフィルタ][ロケーション]である。「友達 スタンフォード」というテキスト・クエリに関しては、このクエリは、文法を使用することによって、たとえば、「[カリフォルニア州スタンフォード][在住の][友達]」として解析される。上述の例示的なケースの両方において、受け取られたテキスト・クエリのnグラムがクエリ・トークンとして使用される場合には、これらのクエリ・トークンは、ソーシャルネットワーキング・システム160によって識別される。本開示は、特定の様式で特定のクエリ・トークンを識別することについて記述しているが、本開示は、任意の適切な様式で任意の適切なクエリ・トークンを識別することを想定している。
【0068】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、以前に識別されたノードおよびエッジのそれぞれに対応する少なくとも1つのクエリ・トークンを有する1または複数の文法を選択する。テキスト・クエリ内で識別されたnグラムに応じて、特定の文法のみが使用される。したがって、テキスト・クエリからの識別されたnグラムにマッチする文法を見つけ出すために、すべての利用可能な文法の終端トークンを調べるべきである。言い換えれば、特定の文法が、識別されたノードおよびエッジのすべてをクエリ・トークンとして使用する場合には、その文法が、構造化クエリを生成する目的で使用するための可能な文法としてソーシャルネットワーキング・システム160によって選択される。これは事実上、ボトムアップ解析の一種であり、クエリに適用するための適用可能な文法を決定するために、可能なクエリ・トークンが使用される。限定ではなく、例として、「友達 スタンフォード」というテキスト・クエリに関して、ソーシャルネットワーキング・システムは、[友達]および[スタンフォード大学]というクエリ・トークンを識別する。前述のように、文法モデルからの文法の終端トークンが識別される。次いで、[友達]および[スタンフォード大学]というトークンの両方を使用する任意の文法が選択される。たとえば、[ユーザ][ユーザフィルタ][学校]という文法が選択される。なぜなら、この文法は、「スタンフォード大学に通っている友達」または「スタンフォード大学で働いている友達」という文字列を形成することによってなど、[友達]および[スタンフォード大学]というトークンをクエリ・トークンとして使用するため
である。したがって、受け取られたテキスト・クエリのnグラムが文法におけるクエリ・トークンとして使用される場合には、これらの文法がソーシャルネットワーキング・システム160によって選択される。同様に、受け取られたテキスト・クエリが、文法におけるクエリ・トークンとして使用されることが不可能であるnグラムを含んでいる場合には、その文法が選択されることは不可能である。本開示は、特定の様式で特定の文法を選択することについて記述しているが、本開示は、任意の適切な様式で任意の適切な文法を選択することを想定している。
【0069】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、複数の文法によって形成されている文法フォレストを分析することによって、1または複数の文法を選択する。文法フォレストは、複数の非終端トークンおよび複数の終端トークンを含む順序付きツリーとして編成される。それぞれの文法は、文法フォレスト内のサブツリーとして表されることが可能であり、それぞれのサブツリーは、1または複数のさらなる非終端トークンを通じてその他のサブツリーと隣接する。限定ではなく、例として、ソーシャルネットワーキング・システム160は、テキスト・クエリの部分に対応する識別されたノードおよびエッジに対応する文法フォレスト内のすべての終端トークン(すなわち、クエリ・トークン)を識別することによって開始する。文法フォレスト内のこれらのクエリ・トークンが識別されると、次いでソーシャルネットワーキング・システム160は、これらのクエリ・トークンのそれぞれから遡って文法フォレストを横断して、1または複数の交わっている非終端トークンを識別する。すべてのクエリ・トークンからのパス同士が交わっている箇所で非終端トークンが識別されると、その交わっている非終端トークンが選択されることが可能であり、次いで、文法フォレスト内のその交わっている非終端トークンに隣接した1または複数の文法が選択される。本開示は、特定の様式で文法を選択することについて記述しているが、本開示は、任意の適切な様式で文法を選択することを想定している。
【0070】
図5Aは、例示的なセマンティック・ツリーを示している。特定の実施形態においては、ソーシャルネットワーキング・システム160は、クエリを行っているユーザからのテキスト・クエリに対応するセマンティック・ツリーを生成する。セマンティック・ツリーは、以前に識別されたノードまたはエッジに対応するそれぞれの識別されたクエリ・トークンを含むことができ、交わりトークンを含むこともできる。セマンティック・ツリーは、必要に応じてクエリ・トークンを交わりトークンにつなげる非終端トークンを含むこともできる。限定ではなく、例として、「友達 スタンフォード」というテキスト・クエリが解析されて、交わり(学校(スタンフォード大学),友達(自分))というクエリ・コマンドが生じる。言い換えれば、そのクエリは、クエリを行っているユーザ(「自分」)の友達(すなわち、友達タイプのエッジ206によって、クエリを行っているユーザのユーザ・ノード202につながっているユーザ・ノード202)、およびスタンフォード大学を表すコンセプト・ノード204の両方と交わっているソーシャル・グラフ内のノードを探している。これは、図5Aにおいて示されているセマンティック・ツリーとして表されることが可能であり、そのセマンティック・ツリーは、クエリを行っているユーザ[自分]を表す終端トークン、および学校[スタンフォード]、[[ユーザ]の友達]を表す非終端トークン、および交わりトークンを含む。特定の実施形態においては、ツリー内のそれぞれのトークンは、そのトークンが処理されることになる順序でラベル付けされる。たとえば、図5Aにおいて示されているセマンティック・ツリーは、ポストフィックス表記法を使用してラベル付けされているトークンを有しており、[スタンフォード]を表すトークンは、(0,0)とラベル付けされており、[自分]を表すトークンは、(1,1)とラベル付けされており、[[ユーザ]の友達]トークンは、(2)とラベル付けされており、交わりトークンは、(3)とラベル付けされている。本開示は、特定の様式で特定のセマンティック・ツリーを生成することについて記述しているが、本開示は、任意の適切な様式で任意の適切なセマンティック・ツリーを生成することを想定している。
【0071】
図5Bは、例示的な文法フォレストを示している。特定の実施形態においては、ソーシャルネットワーキング・システム160は、複数の文法を含む文法フォレストを分析して、クエリに対応するセマンティック・ツリーに実質的にマッチする非終端トークンおよびクエリ・トークンの1または複数のセットを識別することができ、それぞれのセットは、そのセマンティック・ツリーの交わりトークンに対応する非終端トークンを有する。次いで、ソーシャルネットワーキング・システム160は、交わりトークンに対応する非終端トークンに隣接している文法フォレスト内の文法のうちの1または複数を選択する。次いで、文法フォレストから選択されたそれぞれの交わっている非終端トークンが、文法に関する[開始]トークンとしてラベル付けされる。限定ではなく、例として、文法フォレストを横断して、交わっているトークンを識別するために、下記のアルゴリズムが使用される:
セマンティック・ツリー内のそれぞれの終端トークン(i,i)に関して、文法フォレスト内のそれぞれのマッチしている終端トークンを(i,i)とラベル付けする。
i=0〜サイズ(セマンティック・ツリー−1)に関して:
j=i〜0に関して:
(i,j)とラベル付けされているすべてのトークンを展開する。
(i,j)を展開する:
文法フォレスト内のすべてのトークンに関して:
トークンが、サブツリーを(i’,j’)に成長させる1つの引数を伴うルールを有する場合には、トークンを(i’,j’)とラベル付けする;
トークンが、サブツリーを成長させる複数の引数を伴うルールを有する場合には、トークンを「保留中」とラベル付けする;
トークンが、「保留中」とラベル付けされていて、サブツリーを(i’,j’)に成長させるようになった場合には、トークンを(i’,j’)とラベル付けする。
したがって、たとえば、図5Bにおいて示されている例では、図5Aにおいて示されているセマンティック・ツリーからの終端トークン(0,0)および(1,1)にマッチするすべての終端トークンが、それぞれ(0,0)および(1,1)とラベル付けされることになる。次いで、文法フォレスト内のそれぞれの有効なトークンから、ソーシャルネットワーキング・システム160は、親トークンまで横断して、セマンティック・ツリーにマッチするサブツリーが形成されるか否かを見る。親である非終端トークンが、マッチしているセマンティックを有している場合には、その非終端トークンは、そのセマンティック・ツリーからの対応するトークンと同じラベルを使用してラベル付けされる。図5Bにおいて示されている例では、(1,1)とラベル付けされているトークンのうちの1つから文法フォレストが横断されている際に、[[ユーザ]の友達]というセマンティックにマッチしている非終端トークンが見つかると、そのトークンは、(2)とラベル付けされることが可能であり、したがってそのトークンは、そのセマンティック・ツリーにマッチする。次いで、このトークンの親は、潜在的な交わりトークンであるため、「保留中」とラベル付けされる。しかしながら、その横断によって、セマンティック・ツリーのセマンティックにマッチしている親トークンをまったく見つけ出すことができなかった場合には、その特定の横断を終了する。その横断の1つの分岐が、潜在的な交わりトークンに達すると、そのトークンは、「保留中」とラベル付けされることが可能であり、その間に、このアルゴリズムは、その他の有効な終端トークンからの横断(たとえば、(0,0)とラベル付けされている終端トークンからの横断)を進める。あるいは、横断によって、「保留中」と既にラベル付けされているトークンが見つけ出されると、そのトークンは、交わりトークンとして識別されること、および(3)とラベル付けされる。次いで、(3)とラベル付けされているそれぞれのトークンは、文法として選択されることが可能であり、その文法は、構造化クエリを表す自然言語文字列を生成するために使用される。このアルゴリズムは、交わりトークンにつながる文法フォレスト内の最も低いコストのマルチパスを見つけ出すよう試みることになり、この最も低いコストのマルチパスに対応する交わりト
ークンは、その他の交わりトークン(が存在する場合には、それらの交わりトークン)に優先して選択される。本開示は、特定の様式で特定の文法フォレストを分析することについて記述しているが、本開示は、任意の適切な様式で任意の適切な文法フォレストを分析することを想定している。
【0072】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、それぞれの選択された文法に関するスコアを決定する。このスコアは、たとえば、信頼スコア、確率、質、ランキング、別の適切なタイプのスコア、またはそれらの任意の組合せである。このスコアは、選択された文法において使用されているクエリ・トークンに関連付けられている個々のスコアまたは確率に基づく。文法は、相対的に高い個々のスコアを有するクエリ・トークンを使用している場合には、より高い相対的なスコアを有する。限定ではなく、例として、前述の例を続けると、「スタンフォード」というnグラムは、「スタンフォード大学」という学校=0.7、「カリフォルニア州スタンフォード」というロケーション=0.2、「アレン・スタンフォード」というユーザ=0.1のようなソーシャル・グラフ要素に関してスコア付けされる。「友達」というnグラムは、「友達」であるユーザ=0.9、「友達」というテレビ番組=0.1のようなソーシャル・グラフ要素に関してスコア付けされる。したがって、[ユーザ][ユーザフィルタ][学校]という文法は、相対的に高い個々のスコアを両方が有している「友達」であるユーザおよび「スタンフォード大学」という学校を表すクエリ・トークンを使用(して、たとえば、「スタンフォード大学に通っている友達」という文字列を生成)している場合には、相対的に高いスコアを有する。対照的に、[ユーザ][ユーザフィルタ][ユーザ]という文法は、「友達」であるユーザおよび「アレン・スタンフォード」というユーザを表すクエリ・トークンを使用(して、たとえば、「アレン・スタンフォードの友達」という文字列を生成)している場合には、相対的に低いスコアを有する。なぜなら、後者のクエリ・トークンは、相対的に低い個々のスコアを有しているためである。特定の実施形態においては、ソーシャルネットワーキング・システム160は、選択された文法に対応する交わりトークンを識別するために横断されたパスの長さに基づいて、選択された文法に関するスコアを決定する。より低いコストのマルチパス(すなわち、より短いパス)を伴う文法は、高いコストのマルチパス(すなわち、より長いパス)を伴う文法よりも高くスコア付けされる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、広告スポンサーシップに基づいて、選択された文法に関するスコアを決定する。広告主(たとえば、特定のノードに対応する特定のプロフィール・ページのユーザまたは管理者など)は、特定のノードのスポンサーになることができ、それによって、そのスポンサー付きノードを参照するクエリ・トークンを含む文法は、より高くスコア付けされることが可能になる。本開示は、特定の様式で特定の文法に関する特定のスコアを決定することについて記述しているが、本開示は、任意の適切な様式で任意の適切な文法に関する任意の適切なスコアを決定することを想定している。
【0073】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、クエリを行っているユーザ(すなわち、第1のユーザ・ノード202に対応する第1のユーザ)に対する、文法のクエリ・トークンに対応するソーシャル・グラフ要素の関連度に基づいて、選択された文法に関するスコアを決定する。エッジ206によって直接第1のユーザ・ノード202につながっているユーザ・ノード202およびコンセプト・ノード204は、第1のユーザに関連があるとみなされる。したがって、これらの関連があるノードおよびエッジに対応するクエリ・トークンを含む文法は、クエリを行っているユーザにさらに関連があるとみなされる。限定ではなく、例として、エッジ206によって第1のユーザ・ノード202につながっているコンセプト・ノード204は、第1のユーザ・ノード202に関連があるとみなされる。本明細書において使用される際には、ソーシャル・グラフ200を参照しているときに、「つながっている」という用語は、ソーシャル・グラフ200内で2つのノードの間にパスが存在することを意味し、そのパスは、1または複
数のエッジ206およびゼロ以上の中間ノードを含む。特定の実施形態においては、1または複数の介在ノード(および、したがって複数のエッジ206)を通じて第1のユーザ・ノード202につながっているノードも、第1のユーザに関連があるとみなされる。さらに、特定の実施形態においては、第2のノードが第1のユーザ・ノードに近ければ近いほど、その第2のノードは、第1のユーザ・ノードにさらに関連があるとみなされる。すなわち、第1のユーザ・ノード202を特定のユーザ・ノード202またはコンセプト・ノード204から隔てているエッジ206が少なければ少ないほど(すなわち、隔たり度合いが低ければ低いほど)、そのユーザ・ノード202またはコンセプト・ノード204は、第1のユーザにさらに関連があるとみなされる。限定ではなく、例として、図2において示されているように、「スタンフォード」という学校に対応するコンセプト・ノード204は、ユーザ「C」に対応するユーザ・ノード202につながっており、したがって「スタンフォード」というコンセプトは、ユーザ「C」に関連があるとみなされる。限定ではなく、別の例として、ユーザ「A」に対応するユーザ・ノード202は、1つの中間ノードおよび2つのエッジ206(すなわち、ユーザ「B」に対応する中間ユーザ・ノード202)を通じて、ユーザ「C」に対応するユーザ・ノード202につながっており、したがってユーザ「A」は、ユーザ「C」に関連があるとみなされるが、ユーザ「A」を表すユーザ・ノード202は、ユーザ「C」に関して第二次つながりであるため、その特定のコンセプト・ノード204は、単一のエッジ206によって、ユーザ「C」を表すユーザ・ノードにつながっているユーザ・ノード202、たとえば、ユーザ「B」に対応するユーザ・ノード202などよりも関連性が低いとみなされる。限定ではなく、さらに別の例として、(オンライン・マルチプレーヤ・ゲームに相当する)「オンライン・ポーカー」を表すコンセプト・ノードは、ソーシャル・グラフ200内のいずれの経路によっても、ユーザ「C」を表すユーザ・ノードにつながっておらず、したがって「オンライン・ポーカー」というコンセプトは、ユーザ「C」に関連があるとみなされない。特定の実施形態においては、第2のノードは、第1のユーザ・ノード202の隔たり度合いしきい値内にある場合に、第1のユーザに関連があるとみなされることのみが可能である。限定ではなく、例として、隔たり度合いしきい値が3である場合には、ユーザ「D」に対応するユーザ・ノード202は、「チキン・パルメザン」というレシピに対応するコンセプト・ノード204に関連があるとみなされることが可能であり、それらは、図2において示されているソーシャル・グラフ200上で互いから三次以内にある。しかしながら、この例を続けると、「レシピのすべて」というアプリケーションに対応するコンセプト・ノード204は、ユーザ「D」に対応するユーザ・ノード202に関連があるとみなされない。なぜなら、これらのノードは、ソーシャル・グラフ200内で4度合い離れているためである。本開示は、特定のソーシャル・グラフ要素同士(結果として、それらの対応するクエリ・トークン同士)が互いに関連があるか否かを特定の様式で決定することについて記述しているが、本開示は、任意の適切なソーシャル・グラフ要素同士が互いに関連があるか否かを任意の適切な様式で決定することを想定している。その上、本開示は、ユーザ・ノード202およびコンセプト・ノード204に対応する特定のクエリ・トークンが、クエリを行っているユーザに関連があるか否かを決定することについて記述しているが、本開示は、任意の適切なクエリ・トークン(結果として、任意の適切なノード)がその他の任意の適切なユーザに関連があるか否かも同様に決定することを想定している。
【0074】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、選択された文法に関するスコアを、その文法のクエリ・トークンに対応するソーシャル・グラフ情報に基づいて決定する。限定ではなく、例として、nグラムが特定のソーシャル・グラフ要素に対応する確率pを決定する際には、その確率の計算は、ソーシャル・グラフ情報を考慮に入れることもできる。したがって、特定の検索クエリXおよびソーシャル・グラフ情報Gが与えられると、特定のソーシャル・グラフ要素kに対応する確率が、p=(k|X,G)として計算される。次いで、それらのソーシャル・グラフ要素をクエリ・トークンとして用いて文法に関するスコアを決定するために、識別されたノードおよびエッジ
に関する個々の確率が使用される。特定の実施形態においては、選択された文法に関するスコアは、第1のユーザ・ノード202と、その文法においてクエリ・トークンとして使用される特定のソーシャル・グラフ要素との間における隔たり度合いに基づく。ソーシャル・グラフ200内で、クエリを行っているユーザにさらに近いソーシャル・グラフ要素(すなわち、その要素と、第1のユーザ・ノード202との間における隔たり度合いが低い)に対応するクエリ・トークンを有する文法は、そのユーザからさらに遠い(すなわち、隔たり度合いが高い)ソーシャル・グラフ要素に対応するクエリ・トークンを使用する文法よりも高くスコア付けされる。限定ではなく、例として、図2を参照すると、ユーザ「B」が「チキン」というテキスト・クエリを入力した場合には、エッジ206によってユーザ「B」につながっている「チキン・パルメザン」というレシピを表すコンセプト・ノード204に対応するクエリ・トークンを有する文法は、ソーシャル・グラフ200内でユーザ「B」につながっていないチキンというnグラムに関連付けられているその他のノード(たとえば、「チキン・ナゲット」または「ファンキー・チキン・ダンス」に対応するコンセプト・ノード204)に対応するクエリ・トークンを有する文法よりも相対的に高いスコアを有する。特定の実施形態においては、選択された文法に関するスコアは、その文法のクエリ・トークンに対応する識別されたエッジ206に基づく。ソーシャルネットワーキング・システム160が、受け取られたテキスト・クエリ内のnグラムに対応する1または複数のエッジを既に識別している場合には、それらの識別されたエッジは、文法によるテキスト・クエリの特定の解析に関するスコアを決定する際に考慮される。特定の文法が、識別されたノードおよび識別されたエッジの両方に対応するクエリ・トークンを含む場合に、識別されたノードが、識別されたエッジのうちのいずれにも実際につながっていない場合、その特定の文法は、ゼロまたはヌル・スコアを割り振られる。特定の実施形態においては、選択された文法に関するスコアは、その文法のクエリ・トークンに対応するノードにつながっているエッジ206の数に基づく。より多くのつながっているエッジ206を伴うノードに対応するクエリ・トークンを含む文法は、より人気があり、検索クエリのターゲットである可能性が高い場合がある。限定ではなく、例として、「カリフォルニア州スタンフォード」を表すコンセプト・ノード204が、5個のエッジによってつながっているだけであり、その一方で、「スタンフォード大学」を表すコンセプト・ノード204が、5千個のエッジによってつながっている場合には、これらのノードのいずれかに対応するクエリ・トークンを含む文法に関するスコアを決定する際に、ソーシャルネットワーキング・システム160は、「スタンフォード大学」を表すコンセプト・ノード204に対応するクエリ・トークンを有する文法が、「カリフォルニア州スタンフォード」を表すコンセプト・ノード204を参照する文法よりも相対的に高いスコアを有するということを決定する。なぜなら、前者のコンセプト・ノード204につながっているエッジの数の方が多いためである。特定の実施形態においては、選択された文法に関するスコアは、第1のユーザ(すなわち、クエリを行っているユーザ)に関連付けられている検索履歴に基づく。第1のユーザが以前にアクセスしたノード、または第1のユーザが以前にアクセスしたノードに関連があるノードに対応するクエリ・トークンを有する文法は、第1のユーザの検索クエリのターゲットである可能性がさらに高い場合がある。したがって、これらの文法は、より高いスコアを与えられる。限定ではなく、例として、第1のユーザが、以前に「スタンフォード大学」のプロフィール・ページを訪れたことがあるが、「カリフォルニア州スタンフォード」のプロフィール・ページを訪れたことが一度もない場合には、これらのコンセプトに対応するクエリ・トークンを有する文法に関するスコアを決定する際に、ソーシャルネットワーキング・システム160は、「スタンフォード大学」を表すコンセプト・ノード204が、結果として、対応するクエリ・トークンを使用する文法が、相対的に高いスコアを有するということを決定する。なぜなら、クエリを行っているユーザが、その学校を表すコンセプト・ノード204に以前にアクセスしたことがあるためである。限定ではなく、別の例として、第1のユーザが、以前に「フレンズ」というテレビ番組に関するコンセプトプロフィール・ページを訪れたことがある場合には、そのコンセプトに対応するクエリ・トークンを有する文法に関するスコアを決定す
る際に、ソーシャルネットワーキング・システム160は、「フレンズ」というテレビ番組に対応するコンセプト・ノード204が、結果として、対応するクエリ・トークンを使用する文法が、相対的に高いスコアを有するということを決定する。なぜなら、クエリを行っているユーザが、そのテレビ番組を表すコンセプト・ノード204に以前にアクセスしたことがあるためである。本開示は、特定の様式で特定のソーシャル・グラフ情報に基づいて特定の文法に関するスコアを決定することについて記述しているが、本開示は、任意の適切な様式で任意の適切なソーシャル・グラフ情報に基づいて任意の適切な文法に関するスコアを決定することを想定している。
【0075】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、文法スコアしきい値よりも高いスコアを有する1または複数の文法を選択する。選択された文法のそれぞれは、(受け取られたテキスト・クエリのnグラムに対応する)識別されたノードまたは識別されたエッジのそれぞれに対応するクエリ・トークンを含む。特定の実施形態においては、それらの文法は、それらの決定されたスコアに基づいてランク付けされることが可能であり、ランクしきい値(たとえば、上位7つ)内の文法のみが選択される。本開示は、特定の様式で文法を選択することについて記述しているが、本開示は、任意の適切な様式で文法を選択することを想定している。
【0076】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、選択された文法(たとえば、文法スコアしきい値よりも高いスコアを有する文法)に対応する1または複数の構造化クエリを生成する。それぞれの構造化クエリは、対応する選択された文法によって生成された文字列に基づく。限定ではなく、例として、「友達 スタンフォード」というテキスト・クエリに応答して、[ユーザ][ユーザフィルタ][学校]という文法は、「スタンフォード大学に通っている友達」という文字列を生成することができ、この文法の[ユーザ]、[ユーザフィルタ]、[学校]という非終端トークンは、それぞれ[友達]、[に通っている]、および[スタンフォード大学]という終端トークンによって置換されて、その文字列が生成されている。特定の実施形態においては、自然言語シンタックスを使用する文法によって生成される文字列が、構造化クエリとして自然言語でレンダリングされる。限定ではなく、例として、前の例からの構造化クエリは、[に通っている]という終端トークンを使用しており、その終端トークンは、自然言語シンタックスを使用しており、それにより、文法によってレンダリングされる文字列は、自然言語である。次いで、文法によって生成される自然言語文字列は、ソーシャル・グラフ要素に対応するクエリ・トークンを、それらのソーシャル・グラフ要素への参照を含むように修正することによって、構造化クエリを形成するようにレンダリングされる。限定ではなく、例として、「スタンフォード大学に通っている友達」という文字列がレンダリングされることが可能であり、それによって、「スタンフォード大学」を表すクエリ・トークンが、「スタンフォード大学」という学校に対応するコンセプト・ノード204への参照として、構造化クエリ内に現れ、その参照は、強調表示、インライン・リンク、スニペット、別の適切な参照、またはそれらの任意の組合せを含む。それぞれの構造化クエリは、対応する選択された文法に対応するクエリ・トークンを含むことができ、これらのクエリ・トークンは、識別されたエッジ206のうちの1または複数、および識別されたノードのうちの1または複数に対応する。構造化クエリを生成することについて、以降でさらに記述する。
【0077】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、コンテキストフリー文法モデルを使用して、構造化クエリに関する1または複数のクエリ修正を生成する。クエリ修正について、以降でさらに論じる。クエリ修正は、1もしくは複数の追加のノードまたは1もしくは複数の追加のエッジを参照する。このタイプのクエリ修正は、構造化クエリに対して絞り込みを行う。またはそれを狭めるために使用される。あるいは、クエリ修正は、1もしくは複数の代替ノードまたは1もしくは複数の代替エッジを
参照する。このタイプのクエリ修正は、構造化クエリに対してピボッティングを行う、またはそれを広げるために使用される。まとめて、これらは、修正ノードおよび修正エッジと呼ばれる場合があり、その場合、修正とは、ソーシャル・グラフ要素に対応する特定のクエリ・トークンを追加または置換することである。さらなるまたは代替のノードおよびエッジに対するクエリ修正内の参照は、それぞれ、構造化クエリ内でクエリ・トークンを追加または置換するために使用される。構造化クエリに関する可能なクエリ修正を識別するために、ソーシャルネットワーキング・システム160は、元の構造化クエリからの選択されたノードおよび選択されたエッジに対応するクエリ・トークンを有する1または複数の文法を識別する。言い換えれば、ソーシャルネットワーキング・システム160は、その特定の構造化クエリを生成するために実際に使用される文法、その構造化クエリを生成していた可能性があるその他の文法、およびその構造化クエリを別の構造化クエリの部分として有する文法を識別する。次いで、ソーシャルネットワーキング・システム160は、構造化クエリ内で追加または置換されるそれらの文法におけるクエリ・トークンを識別する。次いで、これらのさらなるまたは代替のクエリ・トークンは、提案されるクエリ修正を生成するために使用されることが可能であり、それらのクエリ修正は、検索結果ページの一部として、クエリを行っているユーザへ送信される。次いで、クエリを行っているユーザは、これらのクエリ修正のうちの1または複数を選択することができ、それに応答して、ソーシャルネットワーキング・システム160は、新たな構造化クエリ(および対応する検索結果)を生成する。この新たな構造化クエリは、必要に応じて修正クエリ・トークン(すなわち、さらなるまたは代替のクエリ・トークン)を含む。本開示は、特定の様式でクエリ修正を生成することについて記述しているが、本開示は、任意の適切な様式でクエリ修正を生成することを想定している。
【0078】
図6は、自然言語の構造化検索クエリを生成する目的でコンテキストフリー文法モデルを使用するための例示的な方法600を示している。この方法は、工程610において開始され、工程610では、ソーシャルネットワーキング・システム160が、複数のノードと、それらのノード同士をつなげる複数のエッジ206とを含むソーシャル・グラフ200にアクセスする。それらのノードは、第1のユーザ・ノード202、および複数の第2のノード(1または複数のユーザ・ノード202、コンセプト・ノード204、またはそれらの任意の組合せ)を含む。工程620において、ソーシャルネットワーキング・システム160は、非構造化テキスト・クエリを第1のユーザから受け取る。そのテキスト・クエリは、1または複数のnグラムを含む。工程630において、ソーシャルネットワーキング・システム160は、非構造化テキスト・クエリの少なくとも一部分に対応するエッジおよび第2のノードを識別する。たとえば、ソーシャルネットワーキング・システム160は、そのクエリからの特定のnグラムに対応するエッジおよびノードを識別する。工程640において、ソーシャルネットワーキング・システム160は、複数の文法を含むコンテキストフリー文法モデルにアクセスする。各文法は、1または複数の非終端トークンおよび1または複数のクエリ・トークン(すなわち、終端トークン)を含む。工程650において、ソーシャルネットワーキング・システム160は、複数の文法における1または複数のクエリ・トークンを識別することができ、識別された各クエリ・トークンは、識別されたノードまたは識別されたエッジのうちの1つに対応する。工程660において、ソーシャルネットワーキング・システム160は、1または複数の文法を選択することができ、選択された文法のそれぞれは、識別されたエッジおよび識別された第2のノードのそれぞれに対応する少なくとも1つのクエリ・トークンを含む。工程670において、ソーシャルネットワーキング・システムは、選択された文法に基づいて1または複数の構造化クエリを生成する。各構造化クエリは、自然言語シンタックスを使用する、選択された文法によって生成された文字列に対応する。各構造化クエリは、識別されたエッジおよび識別された第2のノードのそれぞれへの参照を含む。特定の実施形態は、適切な場合には、図6の方法の1または複数の工程を繰り返す。本開示は、図6の方法の特定の工程同士を、特定の順序で生じるものとして記述し、示しているが、本開示は、任意の適切
な順序で生じる図6の方法の任意の適切な工程同士を想定している。その上、本開示は、図6の方法の特定の工程を実行する特定の構成要素、デバイス、またはシステムについて記述し、示しているが、本開示は、図6の方法の任意の適切な工程を実行する任意の適切な構成要素、デバイス、またはシステムの任意の適切な組合せを想定している。
【0079】
検索クエリとともに文法モデルを使用することに関するさらなる情報は、2012年11月12日に出願された米国特許出願第13/674695号において見つけることができ、その米国特許出願は、本願明細書に援用されている。
【0080】
構造化検索クエリの生成
特定の実施形態においては、ソーシャルネットワーキング・システム160は、対応する文法のクエリ・トークンをそれぞれが含む1または複数の構造化クエリを生成することができ、それらのクエリ・トークンは、識別されたユーザ・ノード202のうちの1もしくは複数、または識別されたエッジ206のうちの1もしくは複数に対応する。生成された構造化クエリは、前述のように、1または複数のコンテキストフリー文法によって生成された自然言語文字列に基づく。このタイプの構造化検索クエリは、ソーシャルネットワーキング・システム160が、識別されたユーザ・ノード202および識別されたエッジ206につながっているまたはその他の形で関連しているコンテンツを検索することによって、オンライン・ソーシャル・ネットワークに関連しているリソースおよびコンテンツ(たとえば、プロフィール・ページなど)をさらに効率よく検索することを可能にする。限定ではなく、例として、「僕のガールフレンドの友達を表示してほしい」というテキスト・クエリに応答して、ソーシャルネットワーキング・システム160は、「ステファニーの友達」という構造化クエリを生成することができ、この構造化クエリ内の「友達」および「ステファニー」は、特定のソーシャル・グラフ要素に対応する参照である。「ステファニー」への参照は、特定のユーザ・ノード202に対応することになり、その一方で「友達」への参照は、そのユーザ・ノード202をその他のユーザ・ノード202につなげる「友達」エッジ206(すなわち、「ステファニーの」一次友達につなげるエッジ206)に対応することになる。この構造化クエリを実行する際に、ソーシャルネットワーキング・システム160は、「ステファニー」に対応するユーザ・ノード202に「友達」エッジ206によってつながっている1または複数のユーザ・ノード202を識別する。特定の実施形態においては、ソーシャルネットワーキング・システム160は、複数の構造化クエリを生成することができ、それらの構造化クエリは、別々の識別されたユーザ・ノード202または別々の識別されたエッジ206への参照を含む。限定ではなく、例として、「photos of cat(ネコの写真)」というテキスト・クエリに応答して、ソーシャルネットワーキング・システム160は、「Photos of Catey(キャティの写真)」という第1の構造化クエリ、および「Photos of Catherine(キャサリンの写真)」という第2の構造化クエリを生成することができ、この構造化クエリ内の「Photos(写真)」は、特定のソーシャル・グラフ要素に対応する参照であり、「Catey(キャティ)」および「Catherine(キャサリン)」は、2つの異なるユーザ・ノード202への参照である。本開示は、特定の様式で特定の構造化クエリを生成することについて記述しているが、本開示は、任意の適切な様式で任意の適切な構造化クエリを生成することを想定している。
【0081】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、識別されたコンセプト・ノード204、および識別されたエッジ206のうちの1または複数に対応するクエリ・トークンをそれぞれが含む1または複数の構造化クエリを生成する。このタイプの構造化検索クエリは、ソーシャルネットワーキング・システム160が、識別されたコンセプト・ノード204および識別されたエッジ206につながっているまたはその他の形で関連しているコンテンツの検索によって、オンライン・ソーシャル・ネットワークに関連しているリソースおよびコンテンツ(たとえば、プロフィール・ページなど
)をさらに効率よく検索することを可能にする。限定ではなく、例として、「フェースブック(登録商標)に対して「いいね!」を表明している友達」というテキスト・クエリに応答して、ソーシャルネットワーキング・システム160は、「フェイスブックに対して「いいね!」を表明している私の友達」という構造化クエリを生成することができ、この構造化クエリ内の「友達」、「に対して「いいね!」を表明している」、および「フェイスブック」は、前述のような特定のソーシャル・グラフ要素(すなわち、「友達」というエッジ206、「いいね!を表明する」というエッジ206、および「フェイスブック」というコンセプト・ノード204)に対応するクエリ・トークンである。特定の実施形態においては、ソーシャルネットワーキング・システム160は、複数の構造化クエリを生成することができ、それらの構造化クエリは、別々の識別されたコンセプト・ノード204または別々の識別されたエッジ206への参照を含む。限定ではなく、例として、前述の例を続けると、「フェイスブックに対して「いいね!」を表明している私の友達」という構造化クエリに加えて、ソーシャルネットワーキング・システム160は、「フェイスブック・カリナリー・チームに対して“いいね!”を表明している私の友達」という構造化クエリを生成することもでき、この構造化クエリ内の「フェイスブック・カリナリー・チーム」は、さらに別のソーシャル・グラフ要素に対応するクエリ・トークンである。特定の実施形態においては、ソーシャルネットワーキング・システム160は、生成された構造化クエリをランク付けする。構造化クエリは、さまざまな要因に基づいてランク付けされる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、広告スポンサーシップに基づいて、構造化クエリをランク付けする。広告主(たとえば、特定のノードに対応する特定のプロフィール・ページのユーザまたは管理者など)は、特定のノードのスポンサーになることができ、それによって、そのノードを参照する構造化クエリは、より高くランク付けされることが可能になる。本開示は、特定の様式で特定の構造化クエリを生成することについて記述しているが、本開示は、任意の適切な様式で任意の適切な構造化クエリを生成することを想定している。
【0082】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、構造化クエリのうちの1または複数を第1のユーザ(すなわち、クエリを行っているユーザ)に送信する。限定ではなく、例として、構造化クエリが生成された後に、ソーシャルネットワーキング・システム160は、構造化クエリのうちの1または複数を、たとえば、参照されるソーシャル・グラフ要素の名前(名前文字列)、その他のクエリ制限(たとえば、ブール演算子など)、ならびに潜在的には、参照されるソーシャル・グラフ要素に関連付けられているその他のメタデータを含む(AJAXまたはその他の適切な技術を利用する)応答としてユーザのクライアント・システム130へ送信する。クエリを行っているユーザのクライアント・システム130上のウェブ・ブラウザ132は、図4A図4Bにおいて示されているように、送信された構造化クエリをドロップダウン・メニュー300内に表示する。特定の実施形態においては、送信されたクエリは、クエリを行っているユーザに、ランク付けされた順序で、たとえば、上述のような以前に決定されたランクなどに基づいて提示される。よりよいランキングを伴う構造化クエリは、より目立つ位置に提示される。さらに、特定の実施形態においては、ランクしきい値を上回る構造化クエリのみが、クエリを行っているユーザに送信または表示される。限定ではなく、例として、図4A図4Bにおいて示されているように、構造化クエリは、クエリを行っているユーザにドロップダウン・メニュー300内で提示されることが可能であり、そのドロップダウン・メニュー300では、より高くランク付けされている構造化クエリが、メニューの上位に提示されることが可能であり、より低くランク付けされている構造化クエリが、メニューを下っていく降順で提示される。図4A図4Bに示されている例においては、上位7にランク付けされているクエリのみが、ユーザに送信されて表示されている。特定の実施形態においては、構造化クエリ内の1または複数の参照が、特定のソーシャル・グラフ要素に対するその対応を示すために強調表示されること(たとえば、外形を囲まれること、下線を付けること、丸を付けられること、太字にされること、イタリック体にされるこ
と、色を付けられること、明るくされること、ずらされること、大文字にされること)が可能である。限定ではなく、例として、図4A図4Bにおいて示されているように、「スタンフォード大学」および「カリフォルニア州スタンフォード」への参照は、それが特定のコンセプト・ノード204に対応しているということを示すために、構造化クエリ内で強調表示されている(外形を囲まれている)。同様に、ドロップダウン・メニュー300において提示されている構造化クエリ内の「の友達」、「に対して「いいね!」を表明している」、「に勤務している」、および「に通った」への参照は、それらが特定のエッジ206に対応しているということを示すために強調表示されることも可能である。本開示は、特定の様式で特定の構造化クエリを送信することについて記述しているが、本開示は、任意の適切な様式で任意の適切な構造化クエリを送信することを想定している。
【0083】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、構造化クエリのうちの1つの選択を第1のユーザ(すなわち、クエリを行っているユーザ)から受け取る。あるいは、ソーシャルネットワーキング・システム160は、特定のコンテキストにおいてシステムによって自動的に選択されたクエリ(たとえば、デフォルト選択)として、構造化クエリを受け取る。受け取られた構造化クエリ内で参照されているノードおよびエッジは、それぞれ、選択されたノードおよび選択されたエッジと呼ばれる場合がある。限定ではなく、例として、クエリを行っているユーザのクライアント・システム130上のウェブ・ブラウザ132は、図4A図4Bにおいて示されているように、送信された構造化クエリをドロップダウン・メニュー300内に表示することができ、次いでユーザは、そのドロップダウン・メニュー300をクリックまたはその他の形で(たとえば、自分のキーボード上で単に「enter(入力)」キーを押すことによって)選択して、ソーシャルネットワーキング・システム160に実行してほしいと自分が望んでいる特定の構造化クエリを示す。特定の構造化クエリを選択すると、ユーザのクライアント・システム130は、選択された構造化クエリを実行するようソーシャルネットワーキング・システム160に呼び出しまたはその他の形で命令する。本開示は、特定の様式で特定の構造化クエリの選択を受け取ることについて記述しているが、本開示は、任意の適切な様式で任意の適切な構造化クエリの選択を受け取ることを想定している。
【0084】
構造化検索クエリに関するさらなる情報は、2012年7月23日に出願された米国特許出願第13/556072号において見つけることができ、その米国特許出願は、本願明細書に援用されている。
【0085】
検索結果およびスニペットの生成
図7A図7Gは、例示的な検索結果ページを示している。クエリを行っているユーザ(「第1のユーザ」とも呼ばれる)から受け取られた構造化クエリに応答して、ソーシャルネットワーキング・システム160は、1または複数の検索結果を生成することができ、その場合、それぞれの検索結果は、構造化クエリの用語にマッチする(または実質的にマッチする)。特定の実施形態においては、ソーシャルネットワーキング・システム160は、クエリを行っているユーザ(第1のユーザ・ノード202に対応する「第1のユーザ」とも呼ばれる)から、構造化クエリを受け取る。その構造化クエリに応答して、ソーシャルネットワーキング・システム160は、その構造化クエリに対応する1または複数の検索結果を生成する。それぞれの検索結果は、プロフィール・ページへのリンク、およびそのプロフィール・ページ(または、そのページに対応するノード)の記述または概要を含む。それらの検索結果は、検索結果ページとして、クエリを行っているユーザに提示および送信される。図7A図7Gは、さまざまな構造化クエリに応答して生成されたさまざまな例示的な検索結果ページを示している。特定の検索結果ページを生成するために使用された構造化クエリが、クエリ・フィールド350において示されており、その構造化クエリに応答して生成されたさまざまな検索結果が、結果フィールド710において示されている。特定の実施形態においては、クエリ・フィールド350は、そのページを表
すタイトル・バーとしての役割を果たすこともできる。言い換えれば、タイトル・バー兼クエリ・フィールド350は、検索結果ページ上では、事実上、統合されたフィールドである。一例として、図7Gは、クエリ・フィールド350における「テネシー州出身の私の友達の写真」という構造化クエリを伴う検索結果ページを示している。この構造化クエリは、事実上、生成されたページを表すタイトルとしての役割も果たし、このページは、クエリを行っているユーザのテネシー州出身の友達の複数の写真を示している。この検索結果ページは、修正フィールド720、提案される検索フィールド730、拡張検索フィールド740、またはあいまい性解消フィールド750を含むこともできる。これらのさらなるフィールドについて、以降でさらに論じる。検索結果を生成する際に、ソーシャルネットワーキング・システム160は、それぞれの検索結果に関する1または複数のスニペットを生成することができ、その場合、それらのスニペットは、検索結果のターゲットに関するコンテキスト情報(すなわち、特定の検索結果に対応するソーシャル・グラフ・エンティティ、プロフィール・ページ、またはその他のコンテンツに関するコンテキスト情報)である。特定の実施形態においては、それぞれの検索結果に関する少なくとも1つのスニペットが、系統スニペットとなり、系統スニペットは、検索結果が、その検索結果を生成するために使用された構造化クエリからの選択されたノードおよび選択されたエッジにどのようにマッチしているかを記述する。これらの系統スニペットは、特定の検索結果が、ソーシャル・グラフ要素に関する構造化クエリの用語をどのように満たしているかに関するコンテキストを提供する。本開示は、特定の検索結果ページについて記述し、示しているが、本開示は、任意の適切な検索結果ページを想定している。本開示は、特定の様式で特定のスニペットを生成することについて記述し、示しているが、本開示は、任意の適切な様式で任意の適切なスニペットを生成することを想定している。
【0086】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、構造化クエリに対応する1または複数の検索結果を生成する。それらの検索結果は、検索クエリにマッチしているまたは関連している可能性が高いリソースまたはコンテンツ(たとえば、ユーザプロフィール・ページ、コンテンツプロフィール・ページ、または外部リソース)を識別する。特定の実施形態においては、それぞれの検索結果は、ソーシャル・グラフ200の特定のユーザ・ノード202またはコンセプト・ノード204に対応する。検索結果は、ノードに関連付けられているプロフィール・ページへのリンク、ならびにノードに関するコンテキスト情報(すなわち、ノードに対応するユーザまたはコンセプトに関するコンテキスト情報)を含む。限定ではなく、例として、図7Bを参照すると、クエリ・フィールド350における「フェイスブックで働いている私の友達」という構造化クエリが、結果フィールド710において示されているさまざまな検索結果を生成した。結果フィールド710におけるそれぞれの検索結果は、ユーザのプロフィール・ページへのリンク(ユーザの名前として示されており、プロフィール・ページへのインライン・リンクを含んでいる)、およびソーシャル・グラフ200のユーザ・ノード202に対応するそのユーザに関するコンテキスト情報を示している。限定ではなく、別の例として、図7Gを参照すると、クエリ・フィールド350における「テネシー州出身の私の友達の写真」という構造化クエリが、結果フィールド710において示されているさまざまな検索結果を生成した。図7Gにおいて示されているそれぞれの検索結果は、ソーシャル・グラフのコンセプト・ノード204に対応する写真のサムネイルを示している。特定の実施形態においては、それぞれの検索結果は、構造化クエリの選択されたエッジのうちの1または複数によって、選択されたノードのうちの1または複数につながっているノードに対応する。限定ではなく、例として、図2を参照すると、ユーザ「C」が、友達タイプのエッジ206、および「オールド・プロ」というロケーションのコンセプト・ノード204を参照する、「オールド・プロに対して「いいね!」を表明している友達」という構造化クエリをサブミットした場合には、ソーシャルネットワーキング・システム160は、ユーザ「B」に対応する検索結果を返す。なぜなら、ユーザ「B」のユーザ・ノード202は、友達タイプのエッジ206によってユーザ「C」のユーザ・ノード202につながっており、
そしてまた、「いいね!」タイプのエッジ206によって「オールド・プロ」というロケーションのコンセプト・ノード204につながっているためである。特定の実施形態においては、ソーシャルネットワーキング・システム160は、構造化クエリに応答して、広告またはその他のスポンサー付きコンテンツをクライアント・システム130へ送信することもできる。それらの広告は、検索結果の一部として、または別途、含まれる。それらの広告は、検索結果において参照されているオブジェクトのうちの1または複数に対応する。特定の実施形態においては、ソーシャルネットワーキング・システム160は、特定のリソースまたはコンテンツを識別する1または複数の検索結果を、それらのリソースまたはコンテンツに関連付けられているユーザに関連付けられているプライバシー設定に基づいて除外する。本開示は、特定の様式で特定の検索結果を生成することについて記述しているが、本開示は、任意の適切な様式で任意の適切な検索結果を生成することを想定している。
【0087】
特定の実施形態においては、検索結果は、1または複数のスニペットを含む。スニペットとは、検索結果のターゲットに関するコンテキスト情報である。言い換えれば、スニペットは、検索結果に対応するそのページまたはコンテンツに関する情報を提供する。限定ではなく、例として、スニペットは、検索結果に対応するプロフィール・ページ(またはノード)からのコンテンツのサンプルである。スニペットは、任意の適切なタイプのコンテンツに関する検索結果とともに含まれる。特定の実施形態においては、検索結果とともに表示されるスニペットは、その検索結果に対応するコンテンツのタイプに基づく。限定ではなく、例として、クエリを行っているユーザが、ユーザを検索している場合には、検索結果とともに含まれるスニペットは、ユーザの年齢、ロケーション、教育、または雇用主のような、検索結果において表示されるユーザに関するコンテキスト情報である。限定ではなく、別の例として、クエリを行っているユーザが、写真を検索している場合には、検索結果とともに含まれるスニペットは、写真内の人々もしくはオブジェクトの名前、写真の「いいね!」/閲覧の数、または写真が撮影されたロケーションのような、検索結果において表示される写真に関するコンテキスト情報である。限定ではなく、さらに別の例として、クエリを行っているユーザが、ロケーションを検索している場合には、検索結果とともに含まれるスニペットは、ロケーションの住所、ロケーションの営業時間、またはロケーションの「いいね!」/チェックインの数のような、検索結果において表示されるロケーションに関するコンテキスト情報である。スニペットにおいて提供される情報は、ターゲット・ページの所有者/管理者によって選択されることが可能であり、またはソーシャルネットワーキング・システム160によって自動的に選択される。スニペットは、イメージ・サムネイル、概要、ドキュメント・タイプ、ページ・ビュー、コメント、日付、著者、評価、価格、またはその他の関連情報など、検索結果に関する鍵となる情報を表示するために使用される。特定の実施形態においては、オンライン・ソーシャル・ネットワーク内のユーザ/コンセプトに対応する検索結果に関するスニペットは、オンライン・ソーシャル・ネットワークのユーザによって提供される、またはその他の形でオンライン・ソーシャル・ネットワーク上で利用可能なコンテキスト情報を含む。限定ではなく、例として、スニペットは、次のタイプの情報、すなわち、グループのプライバシー設定、グループ内のメンバーの数、スポンサー付きメッセージ(たとえば、スニペットとしてレンダリングされるインライン広告ユニット)、ページ・カテゴリ、物理アドレス、経歴の詳細、関心、交際状態、性的指向/好み、性/性別、年齢、生年月日、現住所、学歴、政治的所属、宗教的信仰、職歴、使用したアプリケーション、コメント、タグ、その他の適切なコンテキスト情報、またはそれらの任意の組合せのうちの1または複数を含む。特定の実施形態においては、スニペットは、ソーシャル・グラフ200からのノードまたはエッジへの参照を含む。これらのスニペットは、その参照がソーシャル・グラフ要素に対応するということを示すために強調表示される。限定ではなく、例として、図7Fは、「ソル」というユーザに関する検索結果を示しており、その検索結果に関するスニペットのうちの1つが、「レポサド、ザ・スランテッド・ドア、およびその他12個に対して「いいね
!」を表明している」である。「レポサド」および「ザ・スランテッド・ドア」という用語は両方とも、この例においては強調表示されて(下線付きで)、それらが、「レポサド」および「ザ・スランテッド・ドア」というコンセプトに対応するコンセプト・ノード204への参照であるということを示しており、それらは、「ソル」というユーザによって「いいね!」を表明されているレストランである(すなわち、「ソル」を表すユーザ・ノード202は、「いいね!」タイプのエッジ206によって、「レポサド」および「ザ・スランテッド・ドア」を表すコンセプト・ノード204につながっている)。この例における強調表示された参照はまた、「レポサド」および「ザ・スランテッド・ドア」に対応するコンセプトプロフィール・ページへのインライン・リンクを含んでいる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、検索結果に関する1または複数のスニペットを、その検索結果によって識別されたユーザに関連付けられているプライバシー設定に基づいて除外する。本開示は、特定のタイプのスニペットについて記述しているが、本開示は、任意の適切なタイプのスニペットを想定している。
【0088】
特定の実施形態においては、検索結果は、構造化検索クエリの選択されたノードおよび選択されたエッジへの1または複数の参照を含む少なくとも1つのスニペットを含む。言い換えれば、構造化検索クエリに応答して、ソーシャルネットワーキング・システム160は、検索結果を、その検索結果が検索クエリにどのようにマッチしているかに関連したコンテキスト情報を提供するスニペットとともに生成する。これらは、特定の検索結果が、構造化クエリのソーシャル・グラフ要素にどのように関連しているかをコンテキストに当てはめるソーシャル・グラフ情報(ノード/エッジ関係情報)を提供するので、系統スニペットと呼ばれる場合がある。言い換えれば、系統スニペットは、特定の検索結果が、構造化クエリを満たしているという証明を、クエリを行っているユーザに提供する方法である。限定ではなく、例として、図7Dは、「ソフトウェア・エンジニアとしてフェイスブックで働き、およびAcmeで働く私の友達」という構造化クエリに関する検索結果ページを示している。この構造化クエリ内で参照されているソーシャル・グラフ要素は、「私の友達」(すなわち、友達タイプのエッジ206によって、クエリを行っているユーザのノードにつながっているユーザ・ノード202)、「フェイスブックで働いている(すなわち、「で働いている」タイプのエッジ206によって、「フェイスブック」を表すコンセプト・ノード204につながっているユーザ・ノード202)、および「Acmeに勤務している」(すなわち、「で働いている」タイプのエッジ206によって、「Acme」を表すコンセプト・ノード204につながっているユーザ・ノード202)を含んでいる。「ルーク」に関して図7Dにおいて示されている第1の検索結果は、「フェイスブックのエンジニアリングのディレクター」と記述しているスニペットを含んでおり、これは、構造化クエリからの「フェイスブックで働いている」というトークンに対応している。したがって、このスニペットは、「ルーク」に関する検索結果が、構造化クエリの「フェイスブックで働いている」という要件を満たしているということを示している。なぜなら、「ルーク」は、「フェイスブックのエンジニアリングのディレクター」であるためである。「ルーク」の検索結果におけるその他のスニペットは、その検索結果が、構造化クエリのその他の基準をどのように満たしているかを示すさらなるコンテキストを提供している。言い換えれば、「ルーク」を表すユーザ・ノード202は、「働いた」タイプのエッジ206によって、「フェイスブック」を表すコンセプト・ノード204につながっている。特定の実施形態においては、系統スニペットは、次のタイプのソーシャル・グラフ情報、すなわち、通った学校、勤務した先、「いいね!」を表明したページ、使用したアプリ、サブスクライブしている先、サブスクライブされている相手、家族関係、関係のつながり(結婚した相手、交際中など)、住んでいる場所/その近辺、チェックインした場所、訪問した場所、あるロケーションに住んでいる友達の数、あるロケーションにおいて学んでいる友達の数、あるグループのメンバーである友達、「いいね!」の数、あるページに関して話している人々の数、サブスクライバの数、あるアプリケーションを使用している友達、あるアプリケーションのユーザの数、メディアにおいてタグ付けされている人
々、メディアの上で/中でコメントした人々、メディアを作成した人々、その他の適切なソーシャル・グラフ情報、またはそれらの任意の組合せのうちの1または複数を含む。特定の実施形態においては、系統スニペットにおける選択されたノードまたは選択されたエッジへの参照のうちの1または複数は、その参照が、選択されたノードまたは選択されたエッジに対応しているということを示すために強調表示される。本開示は、特定のタイプの系統スニペットについて記述しているが、本開示は、任意の適切なタイプの系統スニペットを想定している。
【0089】
特定の実施形態においては、検索結果は、1または複数のエッジ206によって、クエリを行っているユーザのユーザ・ノード202につながっている1または複数のノードへの参照を含むスニペットを含む。言い換えれば、検索結果は、その検索結果が、クエリを行っているユーザの友達にどのように関連しているか、またはそのユーザにつながっているコンセプト・ノード204にどのように関連しているかに関するコンテキスト情報とともにスニペットを含む。これらは、特定の検索結果が、クエリを行っているユーザおよび/またはそのユーザの友達/関心にどのようにつながっているかをコンテキストに当てはめるソーシャル・グラフ情報(ノード−エッジ関係情報)を提供するので、ソーシャル・スニペットと呼ばれる場合がある。限定ではなく、例として、図7Dは、「ソフトウェア・エンジニアとしてフェイスブックで働いている、およびAcmeで働いている私の友達」という構造化クエリに関する検索結果ページを示している。「ルーク」に関して図7Dにおいて示されている第1の検索結果は、「2009年4月以来のあなたの友達」と記述しているスニペットを含んでいる。このスニペットは、「ルーク」の検索結果が、クエリを行っているユーザにどのように関連しているかに関するコンテキスト情報を提供する。言い換えれば、「ルーク」を表すユーザ・ノード202は、友達タイプのエッジ206によって、クエリを行っているユーザのノードにつながっている。「ルーク」の検索結果はまた、「ソルおよびスティーブンを含めて、共通の友達197人」と記述しているスニペットを含んでいる。このスニペットは、「ルーク」の検索結果が、クエリを行っているユーザにつながっているその他のノードにどのように関連しているかに関するコンテキスト情報を提供する。言い換えれば、クエリを行っているユーザのユーザ・ノード202、および「ルーク」を表すユーザ・ノード202は両方とも、友達タイプのエッジ206によって同じ197個のユーザ・ノード202につながっている。特定の実施形態においては、検索結果は、マルチレベル系統スニペットを含む。マルチレベル系統スニペットは、そのスニペットにおけるユーザまたはコンセプトの参照が、構造化クエリからのクエリ・トークンにどのように関連しているかに関するコンテキスト情報を提供する。これは、複雑な構造化クエリに応答して使用される。限定ではなく、例として、ユーザ「A」およびユーザ「D」は、(彼らが兄弟であるということを示す)兄弟タイプのエッジ206によってソーシャル・グラフ200においてつながっている。「Acmeの従業員の兄弟である人々を表示してほしい」と表している構造化クエリに応答して、ソーシャルネットワーキング・システム160は、ユーザ「A」に関する検索結果を、「ユーザDの兄弟。ユーザDは、Acmeのソフトウェア・エンジニアである」と記述するスニペットとともに生成する。このスニペットは、ユーザ「A」の検索結果がユーザ「D」にどのように関連しているか(彼らは兄弟であり、兄弟タイプのエッジ206によってつながっている)、およびユーザ「D」が「Acme」にどのように関連しているか(ユーザ「D」は、「働いた」タイプのエッジ206によって「Acme」につながっている)に関するコンテキスト情報を提供する。本開示は、特定のタイプのソーシャル・スニペットについて記述しているが、本開示は、任意の適切なタイプのソーシャル・スニペットを想定している。
【0090】
特定の実施形態においては、検索結果は、カスタマイズされた構造化クエリを含むスニペットを含む。これは、たとえば、スニペット内のインライン・リンクとして提示される。次いで、クエリを行っているユーザは、カスタマイズされた構造化クエリのうちの1回をクリックまたはその他の形で選択して、そのクエリをソーシャルネットワーキング・シ
ステム160へ送信できる。特定の実施形態においては、カスタマイズされた構造化クエリは、関連付けられている検索結果に基づいてカスタマイズされることが可能であり、それによって、カスタマイズされた構造化クエリは、検索結果に対応するノードへの参照(および、その他のソーシャル・グラフ要素への可能な参照を含む。限定ではなく、例として、図7Aを参照すると、「ポール」に関する検索結果は、「彼の写真、友達、関心をブラウズする」と書かれているスニペットを含んでおり、この場合、「写真」、「友達」、および「関心」はそれぞれ、「ポールの写真」(すなわち、「〜においてタグ付けされている」タイプのエッジ206によって「ポール」のユーザ・ノード202につながっている写真のコンセプト・ノード204)、「ポールの友達」、および「ポールの関心」(すなわち、「〜に関心がある」タイプのエッジ206によって「ポール」のユーザ・ノードにつながっているコンセプト・ノード204)をそれぞれ検索するためのカスタマイズされた構造化クエリである。特定の実施形態においては、カスタマイズされた構造化クエリは、関連付けられている検索結果、および元の構造化クエリ(すなわち、その検索結果を生成するために使用された構造化クエリ)からの選択されたノード/エッジに基づいてカスタマイズされる。そして、これらのカスタマイズされた構造化クエリは、検索結果に対応するノードへの参照、および元の構造化クエリからの選択されたノードおよび選択されたエッジへの参照を含むことになる。これらは、系統スニペットのような、元の構造化クエリからのソーシャル・グラフ要素、ならびに検索結果に対応するノードに基づくものであり、したがって、検索結果に基づいてクエリに対してピボッティングを行うので、系統ピボット・スニペットと呼ばれる場合がある。限定ではなく、例として、図7Aを再び参照すると、「現在フェイスブックで働いており、一輪車に乗ることに対して「いいね!」を表明している人々」という構造化クエリが、結果フィールド710において示されている検索結果を生成した。「トム」に関する検索結果は、「一輪車に乗ることに対して「いいね!」を表明しているトムの友達」という構造化クエリとともにスニペットを含むことができ、したがって、検索結果のユーザ・ノード202(すなわち、「トム」のユーザ・ノード202)、ならびに、元の構造化クエリからの選択されたノードおよび選択されたエッジ(すなわち、「いいね!」タイプのエッジ206によってつながっている「一輪車に乗ること」を表すコンセプト・ノード204)の両方を参照している。限定ではなく、別の例として、図7Fを参照すると、「カリフォルニア州パロアルトのメキシコ料理店に対して「いいね!」を表明している人々」という構造化クエリが、結果フィールド710において示されている検索結果を生成した。「ソル」に関する検索結果は、「レポサド、ザ・スランテッド・ドア、およびその他12個に対して「いいね!」を表明している」というスニペットを含んでおり、この場合、「レポサド」および「ザ・スランテッド・ドア」は両方とも、パロアルトにある特定のメキシコ料理店を表すコンセプト・ノード204への参照である。同様に、「その他12個」への参照は、「ソルによって「いいね!」を表明されているカリフォルニア州パロアルトにあるメキシコ料理店」という構造化クエリに関するインライン・リンクであることが可能であり、したがって、検索結果のユーザ・ノード202(すなわち、「ソル」のユーザ・ノード202)、ならびに、元の構造化クエリからの選択されたノードおよび選択されたエッジ(すなわち、「カリフォルニア州パロアルト」を表すコンセプト・ノード204、および「いいね!」タイプのエッジ206)の両方を参照している。本開示は、カスタマイズされた構造化クエリとともに特定のスニペットを生成することについて記述しているが、本開示は、カスタマイズされた構造化クエリとともに任意の適切なスニペットを生成することを想定している。
【0091】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、検索結果に対応する1または複数のスニペット(または、その検索結果のターゲットであるノードもしくはプロフィール・ページに対応するスニペット)をスコア付けする。構造化クエリに応答して、ソーシャルネットワーキング・システム160は、そのクエリに対応するノードを識別することができ、次いで、これらの識別されたノードのそれぞれに対応する1または複数のスニペットにアクセスする。次いで、ソーシャルネットワーキング・シス
テム160は、それぞれの検索結果に関して、その検索結果に対応するスニペットのそれぞれに関するスコアを決定する。検索結果を生成する際には、スニペットスコアしきい値よりも高いスコアを有するスニペットのみが検索結果内に含まれる。そのスコアは、たとえば、信頼スコア、確率、質、ランキング、別の適切なタイプのスコア、またはそれらの任意の組合せである。限定ではなく、例として、ソーシャルネットワーキング・システム160は、それぞれのスニペットに関するランキングを決定することができ、この場合、上位5つにランク付けされたスニペットのみが、特定の検索結果内に含まれる。あるいは、ソーシャルネットワーキング・システム160は、それぞれのスニペットをスコア付けすること、および、スコアによってランク付けされた順序で提示されたすべての利用可能なスニペットを検索結果とともに含むこと(場合によっては、ランキングしきい値を無視して、より多くの数のスニペットを検索結果とともに表示すること)が可能である。さらに、別々の検索結果は、別々の数のスニペットを含む。たとえば、第1の検索結果が、その第1の検索結果に関連付けられている2個のスニペットを有しているだけである場合があり、かつ両方のスニペットは、スコアによってランク付けされた順序で表示される場合があり、その一方で、第2の検索結果が、その第2の検索結果に関連付けられている9個のスニペットを有している場合があり、かつすべての9個のスニペットは、スコアによってランク付けされた順序で表示される場合がある。特定の実施形態においては、ソーシャルネットワーキング・システム160は、スニペットに関するスコアを、構造化クエリに対するそのスニペットのソーシャル関連度に基づいて決定する。クエリを行っているユーザにさらに密接につながっているまたはその他の形で関連しているソーシャル・グラフ要素を参照するスニペットは、クエリを行っているユーザにさほど密接につながっていないまたはその他の形であまり関連していないソーシャル・グラフ要素を参照するスニペットよりも高くスコア付けされる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、スニペットに関するスコアを、構造化クエリに対するそのスニペットのテキストの関連度に基づいて決定する。特定のスニペットのテキストの関連度は、その特定のスニペット内の用語および用語の数が、クエリを行っているユーザから受け取られたテキスト・クエリにどのようにマッチしているかに基づく。特定の実施形態においては、ソーシャルネットワーキング・システム160は、スニペットに関するスコアを、クエリを行っているユーザに関連付けられている検索履歴に基づいて決定する。クエリを行っているユーザが以前にアクセスしたことがあるソーシャル・グラフ要素、またはクエリを行っているユーザが以前にアクセスしたことがあるノード/プロフィール・ページに関連しているソーシャル・グラフ要素を参照するスニペットは、ユーザの構造化クエリに関連している可能性がより高い場合がある。したがって、これらのスニペットには、より高い相対的なスコアが与えられる。限定ではなく、例として、クエリを行っているユーザが、「独身である、僕の女友達」を以前に検索したことがある場合には、ソーシャルネットワーキング・システム160は、クエリを行っているユーザが、彼が検索している人々の交際状態に関心があるということを決定する。これは、クエリ内の「独身である」というクエリ修飾語句に起因しており、このクエリ修飾語句は、「独身」という交際状態を有しているユーザを検索することになる。したがって、その後のクエリ(たとえば、図7Eにおいて示されているような、「スタンフォード大学に通っていたフェイスブックのエンジニア」)に応答して、ソーシャルネットワーキング・システム160は、検索結果の交際状態を示すスニペットを、その他のスニペットよりも高くスコア付けする。これは、そのタイプのコンテキスト情報に対するクエリを行っているユーザの関心の履歴に起因している(したがって、図7Eにおいて示されている検索結果は、たとえば「交際中」または「結婚している」など、それぞれの検索結果に関する関係ステータスを示すスニペットをより高くスコア付けしている場合がある)。特定の実施形態においては、ソーシャルネットワーキング・システム160は、スニペットに関するスコアを、検索のカテゴリに基づいて決定する。検索は、その検索の主題であるコンテンツのタイプに基づいて分類される。検索されているコンテンツのタイプにさらに関連しているスニペットは、あまり関連していないスニペットよりも高くスコア付けされる。限定ではなく、例として、ユーザを検索
している場合には、そのユーザに関する個人情報(たとえば、ロケーション、交際状態など)を含むスニペットは、その他のタイプのスニペットよりも高くスコア付けされる。なぜなら、個人情報は、その他のユーザを検索しているクエリを行っているユーザにさらに関連しているとみなされる場合があるためである。限定ではなく、別の例として、コンセプトを検索している場合には、そのコンセプトに関するソーシャル・グラフ情報(たとえば、サブスクライバ/ファンの数、「いいね!」の数、チェックイン/レビューの数など)を含むスニペットは、その他のタイプのスニペットよりも高くスコア付けされる。なぜなら、ソーシャル・グラフ情報は、コンセプトを検索しているクエリを行っているユーザにさらに関連している場合があるためである。特定の実施形態においては、ソーシャルネットワーキング・システム160は、スニペットに関するスコアを、広告スポンサーシップに基づいて決定する。広告主(たとえば、特定のノードに対応する特定のプロフィール・ページのユーザまたは管理者など)は、特定のノードのスポンサーになることができ、それによって、そのノードを参照するスニペットは、より高くスコア付けされることが可能になる。本開示は、特定の様式でスニペットをスコア付けすることについて記述しているが、本開示は、任意の適切な様式でスニペットをスコア付けすることを想定している。
【0092】
図8は、検索結果およびスニペットを生成するための例示的な方法800を示している。この方法は、工程810において開始され、工程810では、ソーシャルネットワーキング・システム160が、複数のノードと、それらのノード同士をつなげる複数のエッジ206とを含むソーシャル・グラフ200にアクセスする。それらのノードは、第1のユーザ・ノード202、および複数の第2のノード(1または複数のユーザ・ノード202、コンセプト・ノード204、またはそれらの任意の組合せ)を含む。工程820において、ソーシャルネットワーキング・システム160は、複数の第2のノードから選択された1または複数のノードおよび複数のエッジから選択された1または複数のエッジへの参照を含む構造化クエリを第1のユーザから受け取る。工程830において、ソーシャルネットワーキング・システム160は、構造化クエリに対応する検索結果を生成する。それぞれの検索結果は、複数の第2のノードのうちの1つの第2のノードに対応する。さらに、それぞれの検索結果は、その検索結果に対応する第2のノードに関するコンテキスト情報の1または複数のスニペットを含む。それぞれの検索結果の少なくとも1つのスニペットは、構造化クエリの選択されたノードおよび選択されたエッジへの1または複数の参照を含む。特定の実施形態は、適切な場合には、図8の方法の1または複数の工程を繰り返す。本開示は、図8の方法の特定の工程同士を、特定の順序で生じるものとして記述し、示しているが、本開示は、任意の適切な順序で生じる図8の方法の任意の適切な工程同士を想定している。その上、本開示は、図8の方法の特定の工程を実行する特定の構成要素、デバイス、またはシステムについて記述し、示しているが、本開示は、図8の方法の任意の適切な工程を実行する任意の適切な構成要素、デバイス、またはシステムの任意の適切な組合せを想定している。
【0093】
構造化検索クエリの修正
前述したように、図7A図7Gは、例示的な検索結果ページを示している。特定の検索結果ページを生成するために使用された構造化クエリが、クエリ・フィールド350において示されており、その構造化クエリに応答して生成されたさまざまな検索結果が、結果フィールド710において示されている。クエリを行っているユーザから受け取られた構造化クエリに応答して、ソーシャルネットワーキング・システム160は、そのクエリに対して絞り込みまたはピボッティングを行うために使用される1または複数のクエリ修正を生成する。それらのクエリ修正は、特定のソーシャル・グラフ要素を参照して、クエリを行っているユーザが、構造化クエリ内で参照されているソーシャル・グラフ要素に追加または置換を行うことを可能にする。特定の実施形態においては、1または複数のクエリ修正は、検索結果ページ上で、修正フィールド720、提案される検索フィールド730、拡張検索フィールド740、またはあいまい性解消フィールド750内に提示される
。クエリ修正は、構造化クエリにさらなる用語を追加することによって、そのクエリに対して絞り込みを行う、またはそれを狭めるために使用される。一般には、構造化クエリにさらなる用語を追加すると、そのクエリによって生成される検索結果の数は少なくなる。限定ではなく、例として、「スタンフォード大学に通っている私の友達」という構造化クエリに応答して、ソーシャルネットワーキング・システム160は、「私の友達」という用語に対するクエリ修正、たとえば、検索結果を性別によってフィルタリングするための「私の[男性の/女性の]友達」、または検索結果を交際状態によってフィルタリングするための「私の[独身の/結婚している]友達」などを生成する。クエリ修正は、そのクエリの1または複数の用語を変更することによって、構造化クエリに対してピボッティングを行う、またはそれを広げるために使用されることも可能である。限定ではなく、例として、「フェイスブックで働いている私の友達」という構造化クエリに応答して、ソーシャルネットワーキング・システム160は、「Acmeで働いている」というクエリ修正を生成することができ、このクエリ修正は、「フェイスブックで働いている」という用語に取って代わり、それによって、ユーザの1つのセットを検索することから、別のセットを検索することへと、クエリに対してピボッティングを行う。これらの提案されるクエリ修正を、クエリを行っているユーザに提供することによって、ソーシャルネットワーキング・システム160は、ユーザがまさに自分が探しているものを検索するための強力な方法を提供する。クエリを行っているユーザによってクエリ修正が選択されると、適切な文法を使用して新たな構造化クエリが生成されることが可能であり、それによって、その新たな構造化クエリも、自然言語シンタックスを使用してレンダリングされる。ソーシャルネットワーキング・システム160は、検索結果ページ上に表示される代替の構造化クエリを生成することもできる。これらの代替の構造化クエリは、提案されるクエリ、広げるクエリ、およびあいまい性解消クエリを含み、これらについては、以降でさらに記述する。本開示は、特定の様式でクエリ修正を生成することについて記述しているが、本開示は、任意の適切な様式でのクエリ修正を想定している。その上、本開示は、特定の様式でユーザにクエリ修正を提示することについて記述しているが、本開示は、任意の適切な様式でユーザにクエリ修正を提示することを想定している。
【0094】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、1または複数のクエリ修正を生成する。それらのクエリ修正は、第1の構造化クエリを受け取ったことに応答して生成されることが可能であり、それによって、それらのクエリ修正は、第1の構造化クエリを修正するために使用される。クエリ修正は、検索クエリを修正するために使用される任意のタイプの用語である。たとえば、クエリ修正は、テキスト文字列、nグラム、終端/クエリ・トークン、値、プロパティー、クエリ演算子、別の適切なタイプの用語、またはそれらの任意の組合せである。特定の実施形態においては、クエリ修正は、カテゴリ別に編成される。限定ではなく、例として、図7Aにおいて示されている修正フィールド720は、「雇用主」、「学校」、「現住所」、「出身地」、「交際状態」、「関心」、「友達関係」、「性別」、「名前」、および「いいね!」に関するクエリ修正を示している。特定の実施形態においては、クエリ修正は、検索結果ページの一部として、クエリを行っているユーザへ送信される。限定ではなく、例として、図7D図7E、および図7Fにおいて示されている検索結果ページはすべて、修正フィールド720内のドロップダウン・メニューにおいて表示されているクエリ修正のリストを示している。これらのドロップダウン・メニューにおいてリストアップされているクエリ修正は、検索フィールド350において表示されている構造化クエリ内の用語に追加または置換を行うために使用される。特定の実施形態においては、カスタマイズされたクエリ修正が、タイプ・アヘッド・プロセスに関連して生成される。事前に生成されたクエリ修正のリストから選択を行うことよりもむしろ、ユーザは、テキスト文字列を入力することができ、タイプ・アヘッド・プロセスは、入力されたテキスト文字列から、nグラムのうちの1または複数に対応するソーシャル・グラフ要素を識別する。次いで、ソーシャルネットワーキング・システム160は、1または複数の可能なマッチを提示する。限定ではなく、例と
して、図7Eは、クエリを行っているユーザが、修正フィールド720における「学校」カテゴリに関する入力フィールド内に「ハーバード」という文字列を入力しているところを示している。それに応答して、タイプ・アヘッド・プロセスは、数ある中でも、「ハーバード」、「ハーバード・ロー・スクール」、および「ハーバードウェストレイク」を含めて、いくつかの可能なマッチしているクエリ修正を生成している。ドロップダウン・メニューにおいて表示されているこれらのリストアップされている学校は、これらの学校に対応するソーシャル・グラフ200内のコンセプト・ノード204への参照である。本開示は、クエリ修正の特定のカテゴリについて記述し、示しているが、本開示は、クエリ修正の任意の適切なカテゴリを想定している。
【0095】
特定の実施形態においては、クエリ修正は、ソーシャル・グラフ200からの1もしくは複数の修正ノードまたは1もしくは複数の修正エッジへの参照を含む。修正ノードまたは修正エッジは、第1の構造化クエリ内のノードまたはエッジへの参照に追加または置換を行うために使用される。次いで、クエリを行っているユーザは、第1の構造化クエリに修正ノード/エッジを追加するために、または、構造化クエリ内のノード/エッジを、修正ノード/エッジのうちの1もしくは複数と置換することによって、これらのクエリ修正のうちの1または複数を選択する。限定ではなく、例として、図7Dは、「ソフトウェア・エンジニアとしてフェイスブックで働いており、およびAcmeで働いている私の友達」という構造化クエリによって生成された例示的な検索結果ページを示している。クエリを行っているユーザは、この検索クエリによって識別されるユーザたちが通っていた学校を指定することによっても、検索に対して絞り込みを行いたいと望むかもしれない。学校を指定するために、クエリを行っているユーザは、図7Dにおいて示されているように、「学校」というドロップダウン・メニューをクリックすることができ、そのドロップダウン・メニューは、ソーシャルネットワーキング・システム160によって生成されたクエリ修正のリストを表示する。このケースにおいては、図7Dにおけるドロップダウン・メニューは、数ある中でも、「スタンフォード大学」、「メンロー=アザートン・ハイ・スクール」、および「カリフォルニア大学バークレー校」という学校をリストアップしている。ドロップダウン・メニューにおいて表示されているこれらのリストアップされている学校は、これらの学校に対応するソーシャル・グラフ200内のコンセプト・ノード204への参照である。次いで、クエリを行っているユーザは、参照されている学校を、構造化クエリに追加するために、これらのクエリ修正のうちの1または複数を選択することができ、それにより、検索結果を学校によってフィルタリングする。クエリを行っているユーザからの選択に応答して、ソーシャルネットワーキング・システム160は、構造化クエリを、選択された学校への参照を含むように修正する。限定ではなく、別の例として、図7Bは、「フェイスブックで働いている私の友達」という構造化クエリによって生成された例示的な検索結果ページを示している。「私の友達」への参照は、友達タイプのエッジ206によって、クエリを行っているユーザにつながっているユーザ・ノード202に対応しており、その一方で、「フェイスブック」への参照は、「フェイスブック」という会社を表すコンセプト・ノード204に対応している。構造化クエリ内の特定のノードおよびエッジへのこれらの参照は、図7Bにおいて示されている修正フィールド720内に示されており、この場合、「雇用主」に関するカテゴリは、既に「フェイスブック」という用語を選択されており、その一方で、「友達関係」に関するカテゴリは、既に「私の友達」という用語を選択されている。しかしながら、クエリを行っているユーザは、検索に対してピボッティングを行い、代わりに別の会社における友達を検索したいと望むかもしれない。クエリを修正するために、クエリを行っているユーザは、「雇用主」カテゴリを選択して、参照を「フェイスブック」から別の会社、たとえば「Acme」などに変更する。クエリを行っているユーザが、「雇用主」カテゴリを選択すると、ソーシャルネットワーキング・システム160は、そのカテゴリ用に生成されているクエリ修正のリストを表示する。クエリを行っているユーザからの選択に応答して、ソーシャルネットワーキング・システム160は次いで、構造化クエリを修正して、「フェイスブック」への参照を
、「Acme」への参照と置換し(それによって、新たな構造化クエリは、「Acmeで働いている私の友達」となり)、それにより、友達の1つのセットから別のセットへと、検索に対してピボッティングを行う。本開示は、特定の様式で特定のクエリ修正を使用することについて記述しているが、本開示は、任意の適切な様式で任意の適切なクエリ修正を使用することを想定している。
【0096】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、クエリ修正のうちの1または複数の選択に応答して、第2の構造化クエリを生成する。クエリを行っているユーザは、修正フィールド720において示されているメニューからクエリ修正のうちの1または複数を、たとえば、特定のクエリ修正をクリックまたはその他の形で選択することによって、選択する。特定の実施形態においては、クエリ修正は、第1の構造化クエリに関する追加のノードまたは追加のエッジを参照する。このケースにおいては、ソーシャルネットワーキング・システム160は、第1の構造化クエリからの選択されたノードおよび選択されたエッジ、ならびに、選択されたクエリ修正内で参照されているそれぞれの修正ノードまたは修正エッジへの参照を含む第2の構造化クエリを生成する。限定ではなく、例として、「サンノゼ在住の私の友達」という第1の構造化クエリに関して、ソーシャルネットワーキング・システム160は、(「で働いていた」タイプのエッジ206による、「Acme」を表すコンセプト・ノード204へのつながりを参照している)「Acmeで働いている」というクエリ修正を受け取る。次いで、ソーシャルネットワーキング・システム160は、「Acmeで働いているサンノゼ在住の私の友達」という第2の構造化クエリを生成することができ、この第2の構造化クエリは、クエリ修正内で参照されている追加のノードおよび追加のエッジを取り入れている。特定の実施形態においては、クエリ修正は、第1の構造化クエリに関する代替ノードまたは代替エッジを参照する。このケースにおいては、ソーシャルネットワーキング・システム160は、第1の構造化クエリからの選択されたノードおよび選択されたエッジへの参照を含む(ただし、代替ノードへのそれぞれの参照が、第1の構造化クエリの選択されたノードへの参照に取って代わるという点を除く)第2の構造化クエリを生成する。同様に、代替エッジへのそれぞれの参照は、第1の構造化クエリの選択されたエッジへの参照に取って代わる。限定ではなく、例として、「サンノゼ在住の私の友達」という第1の構造化クエリに関して、ソーシャルネットワーキング・システム160は、(「〜在住の」タイプのエッジ206による、「サンフランシスコ」という都市を表すコンセプト・ノード204へのつながりを参照している)「サンフランシスコ在住の」というクエリ修正を受け取る。次いで、ソーシャルネットワーキング・システム160は、「サンフランシスコ在住の私の友達」という第2の構造化クエリを生成することができ、この第2の構造化クエリは、第1の構造化クエリからの「サンノゼ在住の」という選択されたノード/エッジへの参照を、「サンフランシスコ在住の」という代替ノード/エッジと置換している。本開示は、特定の様式で特定の修正された構造化クエリを生成することについて記述しているが、本開示は、任意の適切な様式で任意の適切な修正された構造化クエリを生成することを想定している。
【0097】
特定の実施形態においては、ソーシャルネットワーキング・システム160は、第1の構造化クエリに関する1または複数のクエリ修正をスコア付けする。構造化クエリに応答して、ソーシャルネットワーキング・システム160は、構造化クエリを修正するために使用される1または複数のクエリ修正を識別する。次いで、ソーシャルネットワーキング・システム160は、識別されたクエリ修正のそれぞれに関するスコアを決定する。クエリを行っているユーザへ送信するためのクエリ修正のセットを生成する際には、クエリ修正スコアしきい値よりも高いスコアを有するクエリ修正のみが、実際に送信されるクエリ修正のセット内に含まれる。そのスコアは、たとえば、信頼スコア、確率、質、ランキング、別の適切なタイプのスコア、またはそれらの任意の組合せである。限定ではなく、例として、ソーシャルネットワーキング・システム160は、それぞれのクエリ修正に関す
るランキングを決定することができ、この場合、上位6つにランク付けされたクエリ修正のみが、特定の検索結果内に含まれる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、クエリ修正に関するスコアを、構造化クエリに対するそのクエリ修正のソーシャル関連度に基づいて決定する。クエリを行っているユーザにさらに密接につながっているまたはその他の形で関連しているソーシャル・グラフ要素を参照するクエリ修正は、クエリを行っているユーザにさほど密接につながっていないまたはその他の形であまり関連していないソーシャル・グラフ要素を参照するクエリ修正よりも高くスコア付けされる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、クエリ修正に関するスコアを、そのクエリ修正に対応する可能な検索結果の数に基づいて決定する。より多くの結果を生成する(すなわち、より少ない結果を除外する)ことになるクエリ修正は、より少ない結果を生成するクエリ修正よりも高くスコア付けされる。言い換えれば、第1の構造化クエリを修正するために使用される際に、より多くの結果(または、現在の結果のうちのより多く)にマッチすることになるクエリ修正は、より少ない結果にマッチすることになるクエリ修正よりも高くスコア付けされる。限定ではなく、例として、図7Dは、修正フィールド720における「学校」カテゴリに関する可能なクエリ修正を示している。「スタンフォード大学」を参照するクエリ修正は、多くの検索結果がこの限定にマッチするので、提案されるクエリ修正のこのリストにおいて高くランク付けされる。言い換えれば、結果フィールド710内の検索結果に対応するユーザ・ノード202のうちで、それらのユーザ・ノード202の多くは、エッジ206によって「スタンフォード大学」を表すコンセプト・ノード204につながっている可能性がある。したがって、「スタンフォード大学」を表すコンセプト・ノード204への参照が、クエリ・フィールド350において示されている構造化クエリに追加された場合には、現在の検索結果のうちの多くは、その構造化クエリに依然としてマッチすることになる(すなわち、除外されることになるものは少ない)。同様に、「カーネギー・メロン大学」および「サンタクララ大学」など、ドロップダウン・メニューにおいてさらに低くランク付けされている学校は、現在の結果のうちのさらに少数にマッチする可能性があり(すなわち、より多くの結果を除外することになり)、したがって、より低くランク付けされている。クエリ修正に対するピボッティングも、同様にスコア付けされる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、クエリ修正に関するスコアを、クエリを行っているユーザに関連付けられている検索履歴に基づいて決定する。クエリを行っているユーザが以前にアクセスしたことがあるソーシャル・グラフ要素、またはクエリを行っているユーザが以前にアクセスしたことがあるノード/プロフィール・ページに関連しているソーシャル・グラフ要素を参照するクエリ修正は、ユーザの構造化クエリに関連している可能性がより高い場合がある。したがって、これらのクエリ修正には、より高い相対的なスコアが与えられる。限定ではなく、例として、クエリを行っているユーザが、「スタンフォード大学にいる私の友達」を以前に検索したことがある場合には、ソーシャルネットワーキング・システム160は、クエリを行っているユーザが、「スタンフォード大学」を表すコンセプト・ノード204につながっているユーザ・ノード202に関心があるということを決定する。したがって、その後のクエリに応答して、ソーシャルネットワーキング・システム160は、「スタンフォード大学」を参照するクエリ修正を、その他のクエリ修正よりも高くランク付けする。これは、そのタイプのコンテキスト情報に対するクエリを行っているユーザの関心の履歴に起因している(したがって、図7Dにおいて示されている検索結果は、「スタンフォード大学を表すクエリ修正をより高くランク付けしている場合がある)。特定の実施形態においては、ソーシャルネットワーキング・システム160は、クエリ修正に関するスコアを、広告スポンサーシップに基づいて決定する。広告主(たとえば、特定のノードに対応する特定のプロフィール・ページのユーザまたは管理者など)は、特定のノードのスポンサーになることができ、それによって、そのノードを参照するクエリ修正は、より高くスコア付けされることが可能になる。本開示は、特定の様式でクエリ修正をスコア付けすることについて記述しているが、本開示は、任意の適切な様式でクエリ修正をスコア付けすることを想定している。
【0098】
特定の実施形態においては、第1の構造化クエリに応答して、ソーシャルネットワーキング・システム160は、その構造化クエリに対してピボッティングを行うための1または複数の第2の構造化クエリを生成する。これらの第2の構造化クエリのそれぞれは、第1の構造化クエリに基づく。これらは、提案されるクエリと呼ばれる場合がある。これらの提案されるクエリは、第1の構造化クエリの変形であることが可能であり、提案されるクエリは、第1の構造化クエリと同じクエリ・トークンのうちの少なくともいくつかを使用する。しかしながら、クエリに対してピボッティングを行うために、第1の構造化クエリからのクエリ・トークンのうちの1または複数が、代替クエリ・トークンと置換される。言い換えれば、ソーシャルネットワーキング・システム160は、1または複数の第2の構造化クエリを生成するために、第1の構造化クエリからの選択されたノード/エッジへの1または複数の参照を、代替ノード/エッジへの1または複数の参照と置換する。第1の構造化クエリ内に代入された場合に同様の検索結果を生成することになるクエリ・トークンを識別することによって、代替クエリ・トークンが決定される。限定ではなく、例として、「スタンフォード大学に通っている私の友達」という第1の構造化クエリに関して、ソーシャルネットワーキング・システム160は、第1の構造化クエリ内に代入される1または複数のクエリ・トークンを識別する。たとえば、「スタンフォード大学」を表すクエリ・トークンは、その他の学校によって置換される。別の例として、「に通っている」および「スタンフォード大学」を表すクエリ・トークンは両方とも、「在住の」および「パロアルト」を表すクエリ・トークンによって置換される。この後者の例は、第1の構造化クエリと同じ検索結果のうちの多くを生成する可能性がある。これは、パロアルトという都市に在住のユーザと、スタンフォード大学という学校に通っているユーザとの間における高い重なりに起因している。なぜなら、その学校は、その都市に地理的に近いためである(すなわち、ソーシャル・グラフ200においては、「スタンフォード」を表すコンセプト・ノード204につながっているユーザ・ノード202と、「パロアルト」を表すコンセプト・ノード204につながっているユーザ・ノード202との間に大きな重なりが存在する可能性がある)。代替クエリ・トークンは、元のクエリに基づくテンプレートを使用することによって決定されることも可能である。限定ではなく、例として、第1の構造化クエリが、ユーザを探す検索である場合には、提案されるクエリも、ユーザを探す検索である。同様に、第1の構造化クエリが、写真を探す検索である場合には、提案されるクエリも、写真を探す検索である。特定の実施形態においては、提案されるクエリは、検索結果ページの一部として、クエリを行っているユーザへ送信される。限定ではなく、例として、図7Bにおいて示されている検索結果ページは、提案される検索フィールド730内にいくつかの例示的な提案されるクエリを示している。「フェイスブックで働いている私の友達」という第1の構造化クエリに応答して、ソーシャルネットワーキング・システム160は、数ある中でも、「フェイスブックに「いいね!」を表明している私の友達の友達」および「カリフォルニア州パロアルト在住の私の友達」という提案される構造化クエリを生成しており、それらは、提案される検索フィールド730内に示されている。これらの提案されるクエリは、第1の構造化クエリに基づいて生成されている場合があり、その場合、第1の構造化クエリからのクエリ・トークンのうちの1または複数が置換されている。本開示は、構造化クエリを特定の様式で生成することについて記述しているが、本開示は、構造化クエリを任意の適切な様式で生成することを想定している。
【0099】
特定の実施形態においては、第1の構造化クエリに応答して、ソーシャルネットワーキング・システム160は、その構造化クエリを広げるための1または複数の第2の構造化クエリを生成する。これらは、広げるクエリと呼ばれる場合がある。これらの広げるクエリは、第1の構造化クエリの変形であることが可能であり、広げるクエリは、より多くの検索結果を生成するために、第1の構造化クエリよりも少ないクエリ・トークンを使用するか、または特定のクエリ・トークンに取って代わる。言い換えれば、ソーシャルネットワーキング・システム160は、1または複数の第2の構造化クエリを生成するために、
第1の構造化クエリからの選択されたノード/エッジへの1または複数の参照を削除する。同様に、ソーシャルネットワーキング・システム160は、1または複数の第2の構造化クエリを生成するために、第1の構造化クエリからの選択されたノード/エッジへの1または複数の参照を、代替ノード/エッジへの1または複数の参照と置換する。このケースにおいては、第1の構造化クエリ内に代入された場合に元のクエリ・トークンよりも多くの検索結果を生成することになるクエリ・トークンを識別することによって、代替クエリ・トークンが決定される。特定の実施形態においては、第1の構造化クエリに対応する検索結果が検索結果のしきい値数を下回っている場合に、広げる構造化クエリが生成される。あまりにも多くの限定を伴う構造化クエリ、または、多くのソーシャル・グラフ・エンティティにマッチしないクエリ・トークンを使用する構造化クエリは、ほとんどまたはまったく結果を生成しない場合がある。構造化クエリが、あまりにも少ない結果しか生成しない場合には、そのクエリを、さらなる結果を生成するように修正する方法に関する提案を提供することが有用である。ソーシャルネットワーキング・システム160は、第1の構造化クエリを分析すること、および、そのクエリを、より多くの結果を生成するように修正する方法に関する提案を提供する。検索結果のしきい値数は、結果の任意の適切な数であることが可能であり、ソーシャルネットワーキング・システム160によって決定されること、またはユーザによって定義される。特定の実施形態においては、ソーシャルネットワーキング・システム160は、第1の構造化クエリからのゼロ以上の選択されたノードおよびゼロ以上の選択されたエッジへの参照を含む1または複数の第2の構造化クエリを生成することができ、その場合、それぞれの第2の構造化クエリは、選択されたノードまたは選択されたエッジへの少なくとも1つの、第1の構造化クエリよりも少ない参照を含む。限定ではなく、例として、図7Aを参照すると、「現在フェイスブックに勤務していて、一輪車に乗ることに対して「いいね!」を表明している人々」という第1の構造化クエリに応答して、ソーシャルネットワーキング・システム160は、「一輪車に乗ることに対して「いいね!」を表明している人々」および「現在のフェイスブックの従業員」という広げるクエリを、拡張検索フィールド740内に生成した。これらの広げるクエリは、第1の構造化クエリに基づいて生成されている場合があり、その場合、第1の構造化クエリからのクエリ・トークンのうちの1または複数が除去されている(すなわち、「フェイスブック」および「一輪車に乗ること」への参照が、それぞれ除去されている)。第1の構造化クエリから限定を除去することによって、より多くのユーザが、そのクエリを満たし、結果として、これらのクエリは、より多くの検索結果を生成する。特定の実施形態においては、ソーシャルネットワーキング・システム160は、第1の構造化クエリからのゼロ以上の選択されたノードおよびゼロ以上の選択されたエッジへの参照を含む1または複数の第2の構造化クエリを生成することができ、その場合、それぞれの第2の構造化クエリは、第1の構造化クエリの選択されたノードまたは選択されたエッジへの少なくとも1つの参照を、それぞれ代替ノードまたは代替エッジと置換する。限定ではなく、例として、再び図7Aを参照すると、ソーシャルネットワーキング・システム160は、「フェイスブックが採用していた、一輪車に乗ることに関心がある人々」および「フェイスブックがこれまでに採用した、一輪車に乗ることに関心がある人々」という広げるクエリを生成した。これらの広げるクエリは、第1の構造化クエリに基づいて生成されている場合があり、その場合、「現在〜に勤務している」というクエリ・トークンは、それぞれ「採用していた」および「これまでに採用した」というクエリ・トークンによって置換されており、それによって、異なるタイムフレームを使用して検索結果をフィルタリングしている(これは、このクエリを満たすつながりエッジのタイプを、「〜で働いている」タイプのエッジ206から、「〜で働いた」タイプのエッジ206も含むように拡張する)。特定の実施形態においては、それらの広げるクエリは、検索結果ページの一部として、クエリを行っているユーザへ送信される。限定ではなく、例として、図7Aにおいて示されている検索結果ページは、拡張検索フィールド740内にいくつかの例示的な広げるクエリを示しており、それについては、上で論じてきた。本開示は、特定の広げるクエリを特定の様式で生成することについて記述しているが、本開示は、任意の適切な広げるク
エリを任意の適切な様式で生成することを想定している。
【0100】
特定の実施形態においては、第1の構造化クエリに応答して、ソーシャルネットワーキング・システム160は、その構造化クエリのあいまい性を解消するための1または複数の第2の構造化クエリを生成する。これらは、あいまい性解消クエリと呼ばれる場合がある。これらのあいまい性解消クエリは、第1の構造化クエリの変形であることが可能であり、あいまい性解消クエリは、第1の構造化クエリからのクエリ・トークンのうちのいくつかを使用するが、それらのクエリ・トークンのうちのいくつかを代替クエリ・トークンと置換することもできる。これは、特定のノードが、クエリを行っているユーザからの非構造化テキスト・クエリからの同じnグラムに対応する(たとえば、「スタンフォード」を表すnグラムが、「スタンフォード大学」という学校または「カリフォルニア州スタンフォード」という都市のいずれかを表すコンセプト・ノード204に対応する)場合に、生じる。あいまい性解消は、参照されているエッジ・タイプ、または参照されているノード同士の間における関係が、構造化クエリにおいて不明確である場合に、役立つことも可能である。ソーシャルネットワーキング・システム160は、特定の構造化クエリの自然言語シンタックスが、クエリを行っているユーザによって別々の方法で解釈されるという点で、その構造化クエリがあいまいであると決定する。したがって、特定の構造化クエリを選択する際には、ソーシャルネットワーキング・システム160は、期待されていない、またはクエリを行っているユーザが探していたものではない検索結果を生成する場合がある。これらのケースにおいては、ソーシャルネットワーキング・システム160は、その構造化クエリがどのように解析されたか、およびその構造化クエリが、表示された検索結果をどのように識別したかの説明を提供する。加えて、ソーシャルネットワーキング・システム160は、クエリを行っているユーザが、自分が探しているものを見つけ出すのを手助けするために元のクエリの変形を提供する。特定の実施形態においては、あいまい性解消クエリは、検索結果ページの一部として、クエリを行っているユーザへ送信される。限定ではなく、例として、図7Gにおいて示されている検索結果ページは、あいまい性解消フィールド750内に表示されている例示的なあいまい性解消クエリを示している。「テネシー州出身の私の友達の写真」という第1の構造化クエリに応答して、ソーシャルネットワーキング・システム160は、「私の友達によるテネシー州での写真」というあいまい性解消クエリを生成した。ソーシャルネットワーキング・システム160はまた、自分が第1の構造化クエリをどのように解析したかの説明を提供しており、「これらの結果は、テネシー州出身のあなたの友達に属している写真を示しています」と記述している。言い換えれば、ソーシャルネットワーキング・システム160は、「〜においてタグ付けされている」タイプのエッジ206によってユーザ・ノード202につながっていた写真に対応するコンセプト・ノード204を識別するために第1の構造化クエリを解析しており、この場合、これらのユーザ・ノード202は、「〜に住んでいた」または「〜出身である」タイプのエッジ206によって「テネシー州」を表すコンセプト・ノード204につながっていた。対照的に、提案されるあいまい性解消クエリは、「〜において撮影された」タイプのエッジ206によって「テネシー州」を表すコンセプト・ノード204につながっていた写真に対応するコンセプト・ノード204を識別することになり、この場合、写真を表すコンセプト・ノード204は、クエリを行っているユーザの友達のユーザ・ノード202にもつながっていた。本開示は、特定の様式で特定のあいまい性解消クエリを生成することについて記述しているが、本開示は、任意の適切な様式で任意の適切なあいまい性解消クエリを生成することを想定している。
【0101】
図9は、構造化検索クエリを修正するための例示的な方法900を示している。この方法は、工程910において開始され、工程910では、ソーシャルネットワーキング・システム160が、複数のノードと、それらのノード同士をつなげる複数のエッジ206とを含むソーシャル・グラフ200にアクセスする。それらのノードは、第1のユーザ・ノード202、および複数の第2のノード(1または複数のユーザ・ノード202、コンセ
プト・ノード204、またはそれらの任意の組合せ)を含む。工程920において、ソーシャルネットワーキング・システム160は、複数の第2のノードからの1または複数の選択されたノードおよび複数のエッジからの1または複数の選択されたエッジへの参照を含む構造化クエリを第1のユーザから受け取る。工程930において、ソーシャルネットワーキング・システム160は、第1の構造化クエリに関する1または複数のクエリ修正を生成する。それぞれのクエリ修正は、複数の第2のノードからの1もしくは複数の修正ノードまたは複数のエッジからの1もしくは複数の修正エッジへの参照を含む。特定の実施形態は、適切な場合には、図9の方法の1または複数の工程を繰り返す。本開示は、図9の方法の特定の工程同士を、特定の順序で生じるものとして記述し、示しているが、本開示は、任意の適切な順序で生じる図9の方法の任意の適切な工程同士を想定している。その上、本開示は、図9の方法の特定の工程を実行する特定の構成要素、デバイス、またはシステムについて記述し、示しているが、本開示は、図9の方法の任意の適切な工程を実行する任意の適切な構成要素、デバイス、またはシステムの任意の適切な組合せを想定している。
【0102】
システムおよび方法
図10は、例示的なコンピュータ・システム1000を示している。特定の実施形態においては、1または複数のコンピュータ・システム1000が、本明細書において記述されているまたは示されている1または複数の方法の1または複数の工程を実行する。特定の実施形態においては、1または複数のコンピュータ・システム1000が、本明細書において記述されているまたは示されている機能を提供する。特定の実施形態においては、1または複数のコンピュータ・システム1000上で稼働するソフトウェアが、本明細書において記述されているもしくは示されている1もしくは複数の方法の1もしくは複数の工程を実行し、または本明細書において記述されているもしくは示されている機能を提供する。特定の実施形態は、1または複数のコンピュータ・システム1000の1または複数の部分を含む。本明細書においては、コンピュータ・システムへの言及は、適切な場合には、コンピューティング・デバイスを包含することができ、その逆もまた同様である。その上、コンピュータ・システムへの言及は、適切な場合には、1または複数のコンピュータ・システムを包含する。
【0103】
本開示は、任意の適切な数のコンピュータ・システム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または複数の工程を別々の時点で、または別々のロケーションで実行する。
【0104】
特定の実施形態においては、コンピュータ・システム1000は、プロセッサ1002、メモリ1004、ストレージ1006、入力/出力(I/O)インタフェース1008、通信インタフェース1010、およびバス1012を含む。本開示は、特定の数の特定の構成要素を特定の構成で有する特定のコンピュータ・システムについて記述し、示しているが、本開示は、任意の適切な数の任意の適切な構成要素を任意の適切な構成で有する任意の適切なコンピュータ・システムを想定している。
【0105】
特定の実施形態においては、プロセッサ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を含む。本開示は、特定のプロセッサについて記述し、示しているが、本開示は、任意の適切なプロセッサを想定している。
【0106】
特定の実施形態においては、メモリ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を含む。本開示は、特定のメモリについて記述し、示しているが、本開示は、任意の適切なメモリを想定している。
【0107】
特定の実施形態においては、ストレージ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を含む。本開示は、特定のストレージについて記述し、示しているが、本開示は、任意の適切なストレージを想定している。
【0108】
特定の実施形態においては、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インタフェースを想定している。
【0109】
特定の実施形態においては、通信インタフェース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を含む。本開示は、特定の通信インタフェースについて記述し、示しているが、本開示は、任意の適切な通信インタフェースを想定している。
【0110】
特定の実施形態においては、バス1012は、コンピュータ・システム1000の構成要素同士を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、バス1012は、アクセラレイティッド・グラフィックス・ポート(AGP)もしくはその他のグラフィックス・バス、エンハンスト・インダストリー・スタンダード・アーキテクチャ(EISA)バス、フロントサイド・バス(FSB)、ハイパートランスポート(HT)インターコネクト、インダストリー・スタンダード・アーキテクチャ(ISA)バス、インフィニバンド・インターコネクト、ローピンカウント(LPC)バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、PCIエクスプレス(PCIe)バス、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション・ローカル(VLB)バス、または別の適切なバス、またはこれらのうちの複数の組合せを含む。バス1012は、適切な場合には、1または複数のバス1012を含む。本開示は、特定のバスについて記述し、示しているが、本開示は、任意の適切なバスまたはインターコネクトを想定している。
【0111】
本明細書においては、1または複数の非一時的コンピュータ可読記憶媒体は、適切な場合には、1もしくは複数の半導体ベースのもしくはその他の集積回路(IC)(たとえば、フィールドプログラマブル・ゲート・アレイ(FPGA)もしくは特定用途向け集積回路(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード
・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー・ディスケット、フロッピー・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはドライブ、その他の任意の適切な非一時的コンピュータ可読記憶媒体、またはこれらのうちの複数の組合せを含む。非一時的コンピュータ可読記憶媒体は、適切な場合には、揮発性、不揮発性、または揮発性と不揮発性の組合せである。
【0112】
雑題
本明細書においては、「または(もしくは)」は、包含的であり、排他的ではない(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AまたはB」は、「A、B、またはその両方」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。その上、「および(ならびに)」は、包括的および個別的の両方である(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AおよびB」は、「まとめて、または個別に、AおよびB」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。
【0113】
本開示の範囲は、当業者が理解するであろう、本明細書において記述されているまたは示されている例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書において記述されているまたは示されている例示的な実施形態に限定されない。その上、本開示は、本明細書におけるそれぞれの実施形態を、特定の構成要素、要素、機能、オペレーション、または工程を含むものとして記述し、示しているが、これらの実施形態のいずれも、当業者が理解するであろう、本明細書の任意の箇所において記述されているまたは示されている構成要素、要素、機能、オペレーション、または工程のうちの任意のものの任意の組合せまたは順列を含む。さらに、特定の機能を実行するように適合されている、実行するようにアレンジされている、実行する、実行するように構成されている、実行することを可能にされている、実行するように機能できる、または実行するように機能する装置もしくはシステム、または装置もしくはシステムの構成要素への添付の特許請求の範囲における言及は、その装置、システム、構成要素、またはその特定の機能が、アクティブ化されているか否か、オンにされているか否か、またはロック解除されているか否かを問わず、その装置、システム、または構成要素が、そうするように適合されている、そうするようにアレンジされている、そうする、そうするように構成されている、そうすることを可能にされている、そうするように機能できる、またはそうするように機能する限り、その装置、システム、構成要素を包含する。
図1
図2
図3
図4A
図4B
図5A
図5B
図6
図7A
図7B
図7C
図7D
図7E
図7F
図7G
図8
図9
図10