(58)【調査した分野】(Int.Cl.,DB名)
送信された構造化クエリの各々について、前記構造化クエリを生成するために使用された前記文法は、前記オンライン・ソーシャル・ネットワークに関連付けられている1以上の識別されたオブジェクトに対応する1以上のトークンを含み、識別された前記オブジェ
クトの各々は、前記テキスト・クエリの少なくとも一部に対応する、請求項1に記載の方法。
各構造化クエリの前記1以上のトークンは、1以上の文法トークンまたは1以上のソーシャル・グラフ・トークンを含み、各ソーシャル・グラフ・トークンは、前記複数のノードのうちの1つのノードまたは前記複数のエッジのうちの1つのエッジに対応する、請求項4に記載の方法。
前記セットをフィルタリングした後に残った構造化クエリの数がしきい値数よりも少ない場合は、前記テキスト・クエリに基づいてウェブ検索クエリを生成する、請求項1に記載の方法。
1以上のプロセッサと、前記プロセッサによって実行可能な命令を備え、前記プロセッサに結合されたメモリと、を備えるシステムであって、前記プロセッサは、前記命令が実行されたとき、
第1のユーザが入力したテキスト・クエリを前記第1のユーザのクライアント・デバイスから受け取る工程と、
前記テキスト・クエリに基づいて構造化クエリのセットを生成する工程であって、前記セットにおける各構造化クエリは文脈自由文法モデルの1つの文法に対応し、各構造化クエリは、前記文脈自由文法モデルの1つの文法によって生成された自然言語ストリングに基づき、かつ、1以上のトークンを含み、各構造化クエリの前記1以上のトークンの各々は、オンライン・ソーシャル・ネットワークに関連付けられている1以上のオブジェクトに対応する、工程と、
前記セットをフィルタリングして、1以上の構造化クエリを前記セットから除去する工程であって、除去された構造化クエリの各々は、しきい値品質スコア未満の品質スコアを有する、工程と、
前記フィルタリング後のセットからの前記構造化クエリのうちの1以上を表示のために前記第1のユーザのクライアント・デバイスに送る工程と、が行われるように構成される、システム。
【発明を実施するための形態】
【0006】
特定の実施形態では、ユーザから受け取られたテキスト・クエリに応答して、ソーシャル・ネットワーキング・システムは、識別されたソーシャル・グラフ要素に対応するクエリ・トークンを含む構造化クエリを生成することができる。構造化クエリの示唆をユーザのテキスト・クエリに応答して提供することによって、ソーシャル・ネットワーキング・システムは、オンライン・ソーシャル・ネットワークのユーザが、ソーシャル・グラフにおいて表される要素を、それらのソーシャル・グラフ属性と、様々なソーシャル・グラフ要素に対するそれらの関係とに基づいて検索するための、強力な方法を提供することができる。
【0007】
特定の実施形態では、ソーシャル・ネットワーキング・システムは、非構造化テキスト・クエリをユーザから受け取ることができる。これに応答して、ソーシャル・ネットワーキング・システムは、テキスト・クエリを解析し、テキスト・クエリに基づいて1つまたは複数の構造化クエリを生成することができる。次いで、これらの構造化クエリは、各構造化クエリの品質に基づいてフィルタリングされ得る。いくつかの非構造化テキスト・クエリを解析するとき、ソーシャル・ネットワーキング・システムは、それに応答して、低品質のまたは関連性のない構造化クエリを生成することがある。これは、文法モデルとうまく合致しない語句をテキスト・クエリが含むときに起こることがあり、したがって、この語句は、文法モデルによって解析されたとき、関連性のないクエリ・トークンに合致されてしまう。これらの低品質の構造化クエリは滑稽であるかまたは当惑させるものであることがあるので、これらのクエリが示唆として照会元ユーザに送り返される前に、これらのクエリをフィルタリングによって除去することが望ましいであろう。フィルタリングは、特定の示唆クエリが低品質であるかまたは関連性がないものであるかもしれないことを伝える様々な要因に基づいて、各構造化を分析しスコアリングすることによって行われ得る。各構造化クエリは、テキスト・クエリ自体および構造化クエリに基づいてスコアリングされ得る。品質スコアの低い構造化クエリはフィルタリングによって除去されてよく、したがって、高品質の構造化クエリのみが照会元ユーザに提示される。次いで、フィルタリング後に残った構造化クエリは、ユーザに対して送信および表示されてよく、次いでユーザは、適切なクエリを選択して所望のコンテンツを検索することができる。
【0008】
システム外観
図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を含むことができる。
【0009】
本開示は、任意の適切なネットワーク110を想定している。限定ではなく、例として、ネットワーク110の1つまたは複数の部分は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、ワイヤレスLAN(WLAN)、ワイド・エリア・ネットワーク(WAN)、ワイヤレスWAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN)の一部分、セルラー電話ネットワーク、またはこれらのうちの複数の組合せを含むことができる。ネットワーク110は、1つまたは複数のネットワーク110を含むことができる。
【0010】
リンク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とは異なることが可能である。
【0011】
特定の実施形態においては、クライアント・システム130は、クライアント・システム130によって実装またはサポートされる適切な機能を実行することができる、ハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含む電子デバイスであることが可能である。限定ではなく、例として、クライアント・システム130は、デスクトップ・コンピュータ、ノートブック・コンピュータもしくはラップトップ・コンピュータ、ネットブック、タブレット・コンピュータなどのコンピュータ・システム、eブック・リーダ、GPSデバイス、カメラ、携帯情報端末(PDA)、ハンドヘルド電子デバイス、セルラー電話、スマートフォン、その他の適切な電子デバイス、またはそれらの任意の適切な組合せを含むことができる。本開示は、任意の適切なクライアント・システム130を想定している。クライアント・システム130は、クライアント・システム130のネットワーク・ユーザがネットワーク110にアクセスすることを可能にすることができる。クライアント・システム130は、自分のユーザがその他のクライアント・システム130のその他のユーザと通信することを可能にすることができる。
【0012】
特定の実施形態においては、クライアント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つまたは複数の対応するウェブページ・ファイルを含み、その逆もまた同様である。
【0013】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークをホストすることができるネットワークアドレス可能なコンピューティング・システムであることが可能である。ソーシャル・ネットワーキング・システム160は、たとえば、ユーザプロフィール・データ、コンセプトプロフィール・データ、ソーシャル・グラフ情報、またはオンライン・ソーシャル・ネットワークに関連したその他の適切なデータなどのソーシャルネットワーキング・データを生成すること、記憶すること、受け取ること、および送信することが可能である。ソーシャル・ネットワーキング・システム160は、ネットワーク環境100のその他のコンポーネントによって直接、またはネットワーク110を通じてアクセスされることが可能である。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のサーバ162を含むことができる。それぞれのサーバ162は、単一のサーバ、または複数のコンピュータもしくは複数のデータセンターにわたる分散サーバであることが可能である。サーバ162は、限定ではなく、例として、ウェブ・サーバ、ニュース・サーバ、メール・サーバ、メッセージ・サーバ、広告サーバ、ファイル・サーバ、アプリケーション・サーバ、Exchangeサーバ、データベース・サーバ、プロキシ・サーバ、本明細書において記述されている機能もしくはプロセスを実行するのに適している別のサーバ、またはそれらの任意の組合せなど、さまざまなタイプのものであることが可能である。特定の実施形態においては、それぞれのサーバ162は、サーバ162によって実装またはサポートされる適切な機能を実行するためのハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含むことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム164は、1つまたは複数のデータ・ストア164を含むことができる。データ・ストア164は、さまざまなタイプの情報を記憶するために使用されることが可能である。特定の実施形態においては、データ・ストア164内に記憶されている情報は、特定のデータ構造に従って編成されることが可能である。特定の実施形態においては、それぞれのデータ・ストア164は、リレーショナル・データベースであることが可能である。特定の実施形態は、クライアント・システム130、ソーシャル・ネットワーキング・システム160、またはサードパーティ・システム170が、データ・ストア164内に記憶
されている情報を管理すること、取り出すこと、修正すること、追加すること、または削除することを可能にするインタフェースを提供することができる。
【0014】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のソーシャル・グラフを1つまたは複数のデータ・ストア164内に記憶することができる。特定の実施形態においては、ソーシャル・グラフは、複数のノード(複数のユーザ・ノード(それぞれが、特定のユーザに対応している)、または複数のコンセプト・ノード(それぞれが、特定のコンセプトに対応している)を含むことができる)と、ノード同士をつなげる複数のエッジとを含むことができる。ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザに、その他のユーザと通信および対話する能力を提供することができる。特定の実施形態においては、ユーザたちは、ソーシャル・ネットワーキング・システム160を通じてオンライン・ソーシャル・ネットワークに参加し、次いで、自分たちがつながりたいと望むソーシャル・ネットワーキング・システム160のその他の複数のユーザにつながり(すなわち、関係)を付加することができる。本明細書においては、「友達」という用語は、ユーザがソーシャル・ネットワーキング・システム160を通じて、つながり、関連付け、または関係を形成しているソーシャル・ネットワーキング・システム160のその他の任意のユーザを示すことができる。
【0015】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ソーシャル・ネットワーキング・システム160によってサポートされるさまざまなタイプのアイテムまたはオブジェクトに関してアクションを取る能力をユーザに提供することができる。限定ではなく、例として、それらのアイテムおよびオブジェクトは、ソーシャル・ネットワーキング・システム160のユーザが属することが可能であるグループもしくはソーシャル・ネットワーク、ユーザが関心を抱く可能性があるイベントもしくはカレンダー・エントリー、ユーザが使用することができるコンピュータベースのアプリケーション、ユーザがサービスを通じてアイテムを購入もしくは販売することを可能にするトランザクション、ユーザが実行することができる広告との対話、またはその他の適切なアイテムもしくはオブジェクトを含むことができる。ユーザは、ソーシャル・ネットワーキング・システム160において、またはサードパーティ・システム170の外部システム(ソーシャル・ネットワーキング・システム160とは別個のものであって、ネットワーク110を通じてソーシャル・ネットワーキング・システム160に結合されている)によって表されることが可能である任意のものと対話することができる。
【0016】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、さまざまなエンティティ同士をリンクできることが可能である。限定ではなく、例として、ソーシャル・ネットワーキング・システム160は、ユーザたちが互いに対話すること、ならびにサードパーティ・システム170もしくはその他のエンティティからのコンテンツを受け取ることを可能にすることができ、またはユーザたちがアプリケーション・プログラミング・インタフェース(API)もしくはその他の通信チャネルを通じてこれらのエンティティと対話することを可能にすることができる。
【0017】
特定の実施形態においては、サードパーティ・システム170は、1つもしくは複数のタイプのサーバ、1つもしくは複数のデータ・ストア、1つもしくは複数のインタフェース(APIを含むが、それには限定されない)、1つもしくは複数のウェブ・サービス、1つもしくは複数のコンテンツ・ソース、1つもしくは複数のネットワーク、または(たとえば、サーバが通信することができる)その他の任意の適切なコンポーネントを含むことができる。サードパーティ・システム170は、ソーシャル・ネットワーキング・システム160を運営しているエンティティとは異なるエンティティによって運営されることが可能である。しかしながら、特定の実施形態においては、ソーシャル・ネットワーキン
グ・システム160およびサードパーティ・システム170は、ソーシャル・ネットワーキング・システム160またはサードパーティ・システム170のユーザにソーシャルネットワーキング・サービスを提供するために互いに連携して機能することができる。この意味において、ソーシャル・ネットワーキング・システム160は、サードパーティ・システム170などのその他のシステムがインターネットを通じてソーシャルネットワーキング・サービスおよび機能をユーザに提供するために使用することができるプラットフォーム、またはバックボーンを提供することができる。
【0018】
特定の実施形態においては、サードパーティ・システム170は、サードパーティ・コンテンツ・オブジェクト・プロバイダを含むことができる。サードパーティ・コンテンツ・オブジェクト・プロバイダは、コンテンツ・オブジェクトの1つまたは複数のソースを含むことができ、それらのソースは、クライアント・システム130に通信されることが可能である。限定ではなく、例として、コンテンツ・オブジェクトは、ユーザにとって関心がある物またはアクティビティに関する情報、たとえば、映画の開始時刻、映画のレビュー、レストランのレビュー、レストランのメニュー、製品の情報およびレビュー、またはその他の適切な情報などを含むことができる。限定ではなく、別の例として、コンテンツ・オブジェクトは、インセンティブ・コンテンツ・オブジェクト、たとえば、クーポン、ディスカウント・チケット、ギフト券、またはその他の適切なインセンティブ・オブジェクトを含むことができる。
【0019】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160はまた、ユーザによって生成されたコンテンツ・オブジェクトを含み、それらのコンテンツ・オブジェクトは、ソーシャル・ネットワーキング・システム160とのユーザの対話を高めることができる。ユーザによって生成されたコンテンツは、ユーザがソーシャル・ネットワーキング・システム160に付加、アップロード、送信、または「投稿」することができる任意のものを含むことができる。限定ではなく、例として、ユーザは、クライアント・システム130からソーシャル・ネットワーキング・システム160へ投稿を通信する。投稿は、ステータス更新もしくはその他のテキスト・データ、ロケーション情報、写真、映像、リンク、音楽、またはその他の類似したデータもしくはメディアなどのデータを含むことができる。コンテンツは、ニュース・フィードまたはストリームなどの「通信チャネル」を通じてサードパーティによってソーシャル・ネットワーキング・システム160に付加されることも可能である。
【0020】
特定の実施形態においては、ソーシャル・ネットワーキング・システム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から受け取られたロケーション情報を記憶するために、ロケーション・ストアが使用されることが可能である。広告価格設定モジュールが、ソーシャルな情報、現在時刻、ロケーション情報、またはその他の適切な情報を組み合わせて、関連がある広告を、通知の形式でユーザに提供することができる。
【0021】
ソーシャル・グラフ
図2は、例示的なソーシャル・グラフ200を示している。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のソーシャル・グラフ200を1つまたは複数のデータ・ストア内に記憶することができる。特定の実施形態においては、ソーシャル・グラフ200は、複数のノード(複数のユーザ・ノード202、または複数のコンセプト・ノード204を含むことができる)と、ノード同士をつなげる複数のエッジ206とを含むことができる。
図2において示されている例示的なソーシャル・グラフ200は、教示上の目的から、二次元の視覚的マップ表示で示されている。特定の実施形態においては、ソーシャル・ネットワーキング・システム160、クライ
アント・システム130、またはサードパーティ・システム170は、適切なアプリケーションに関してソーシャル・グラフ200および関連したソーシャル・グラフ情報にアクセスすることができる。ソーシャル・グラフ200のノードおよびエッジは、データ・オブジェクトとして、たとえば(ソーシャル・グラフ・データベースなどの)データ・ストア内に記憶されることが可能である。そのようなデータ・ストアは、ソーシャル・グラフ200のノードまたはエッジの1つまたは複数の検索可能なまたはクエリ可能なインデックスを含むことができる。
【0022】
特定の実施形態においては、ユーザ・ノード202は、ソーシャル・ネットワーキング・システム160のユーザに対応することができる。限定ではなく、例として、ユーザは、ソーシャル・ネットワーキング・システム160と、またはソーシャル・ネットワーキング・システム160を通じて対話または通信する個人(人間のユーザ)、エンティティ(たとえば、企業、ビジネス、もしくはサードパーティ・アプリケーション)、または(たとえば、個人もしくはエンティティの)グループであることが可能である。特定の実施形態においては、あるユーザがソーシャル・ネットワーキング・システム160とのアカウントに登録した場合には、ソーシャル・ネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202を作成し、そのユーザ・ノード202を1つまたは複数のデータ・ストア内に記憶することができる。本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、登録されているユーザ、および登録されているユーザに関連付けられているユーザ・ノード202を示すことができる。追加として、または代替として、本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、ソーシャル・ネットワーキング・システム160に登録されていないユーザを示すことができる。特定の実施形態においては、ユーザ・ノード202は、ユーザによって提供された情報、またはソーシャル・ネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、ユーザは、自分の名前、プロフィール画像、連絡先情報、生年月日、性別、婚姻状況、家族状況、勤務先、学歴、好み、関心、またはその他の人口統計学的情報を提供することができる。特定の実施形態においては、ユーザ・ノード202は、ユーザに関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、ユーザ・ノード202は、1つまたは複数のウェブページに対応することができる。
【0023】
特定の実施形態においては、コンセプト・ノード204は、コンセプトに対応することができる。限定ではなく、例として、コンセプトは、場所(たとえば、映画館、レストラン、ランドマーク、もしくは都市など)、ウェブサイト(たとえば、ソーシャルネットワーク・システム160に関連付けられているウェブサイト、もしくはウェブアプリケーション・サーバに関連付けられているサードパーティ・ウェブサイトなど)、エンティティ(たとえば、人、企業、グループ、スポーツ・チーム、もしくは有名人など)、ソーシャル・ネットワーキング・システム160内に、もしくはウェブアプリケーション・サーバなどの外部サーバ上に配置されることが可能であるリソース(たとえば、オーディオ・ファイル、営業ファイル、デジタル写真、テキスト・ファイル、構造化文書、もしくはアプリケーションなど)、物的もしくは知的財産(たとえば、彫塑、絵画、映画、ゲーム、曲、着想、写真、もしくは執筆作品など)、ゲーム、アクティビティ、着想もしくは理論、別の適切なコンセプト、または複数のそのようなコンセプトに対応することができる。コンセプト・ノード204は、ユーザによって提供されたコンセプトの情報、またはソーシャル・ネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、コンセプトの情報は、名前もしくはタイトル、1つもしくは複数のイメージ(たとえば、本の表紙のイメージ)、ロケーション(たとえば、住所もしくは地理的ロケーション)、(URLに関連付けられることが可能である)ウェブサイト、連絡先情報(たとえば、電話番号もしくはEメ
ール・アドレス)、その他の適切なコンセプト情報、またはそのような情報の任意の適切な組合せを含むことができる。特定の実施形態においては、コンセプト・ノード204は、コンセプト・ノード204に関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、コンセプト・ノード204は、1つまたは複数のウェブページに対応することができる。
【0024】
特定の実施形態においては、ソーシャル・グラフ200内のノードは、ウェブページ(「プロフィール・ページ」と呼ばれる場合もある)を表すこと、またはウェブページによって表されることが可能である。プロフィール・ページは、ソーシャル・ネットワーキング・システム160によってホストされること、またはソーシャル・ネットワーキング・システム160にとってアクセス可能であることが可能である。プロフィール・ページは、サードパーティ・サーバ170に関連付けられているサードパーティ・ウェブサイト上にホストされることも可能である。限定ではなく、例として、特定の外部ウェブページに対応するプロフィール・ページは、その特定の外部ウェブページであることが可能であり、そのプロフィール・ページは、特定のコンセプト・ノード204に対応することができる。プロフィール・ページは、その他のユーザのうちのすべてまたは選択されたサブセットによって閲覧できることが可能である。限定ではなく、例として、ユーザ・ノード202は、対応するユーザ・プロフィール・ページを有することができ、そのユーザ・プロフィール・ページにおいては、対応するユーザが、コンテンツを付加すること、言明を行うこと、またはその他の形で自分自身を表現することが可能である。限定ではなく、別の例として、コンセプト・ノード204は、対応するコンセプトプロフィール・ページを有することができ、そのコンセプトプロフィール・ページにおいては、1人または複数のユーザが、特にコンセプト・ノード204に対応するコンセプトに関連して、コンテンツを付加すること、言明を行うこと、または自分自身を表現することが可能である。
【0025】
特定の実施形態においては、コンセプト・ノード204は、サードパーティ・システム170によってホストされているサードパーティ・ウェブページまたはリソースを表すことができる。サードパーティ・ウェブページまたはリソースは、数ある要素の中でも、コンテンツ、選択可能なもしくはその他のアイコン、または、アクションもしくはアクティビティを表す(たとえば、JAVASCRIPT(登録商標)、AJAX、もしくはPHPコードで実装されることが可能である)その他の対話可能なオブジェクトを含むことができる。限定ではなく、例として、サードパーティ・ウェブページは、「いいね!」、「チェックイン」、「食べる」、「推奨する」、または別の適切なアクションもしくはアクティビティなどの選択可能なアイコンを含むことができる。サードパーティ・ウェブページを閲覧しているユーザは、それらのアイコンのうちの1つ(たとえば、「食べる」)を選択することによってアクションを実行して、クライアント・システム130に、そのユーザのアクションを示すメッセージをソーシャル・ネットワーキング・システム160へ送信させることができる。そのメッセージに応答して、ソーシャル・ネットワーキング・システム160は、ユーザに対応するユーザ・ノード202と、サードパーティ・ウェブページまたはリソースに対応するコンセプト・ノード204との間においてエッジ(たとえば、「食べる」エッジ)を作成して、エッジ206を1つまたは複数のデータ・ストア内に記憶することができる。
【0026】
特定の実施形態においては、ソーシャル・グラフ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内でつながっているそれらのユーザ同士またはコンセプト同士に対応するノード同士を示すことができる。
【0027】
特定の実施形態においては、ユーザ・ノード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との間におけるそれぞれのタイプの関係(または、単一の関係が複数集まったもの)を表すことができる。
【0028】
特定の実施形態においては、ソーシャル・ネットワーキング・システム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を形成することを想定している。
【0029】
タイプアヘッド・プロセス
特定の実施形態では、1つまたは複数のクライアント側および/またはバックエンド(サーバ側)プロセスが、「タイプアヘッド(typeahead)」フィーチャを実装および利用する。それにより、ソーシャル・ネットワーキング・システム160によってホストされるかまたはソーシャル・ネットワーキング・システム160においてアクセス可能な要求されたウェブ・ページ(ユーザ・プロファイル・ページなど)と共にレンダリングされた入力フォームにおいてユーザによって現在入力されつつある情報に、それぞれの既存のユーザ・ノード202またはコンセプト・ノード204に対応するコンセプトを合致させようと自動的に試みる。特定の実施形態では、ユーザが宣言を行うためにテキストを入力しているとき、タイプアヘッド・フィーチャは、宣言の中で入力されつつあるテキスト文字のストリングを、既存のコンセプト(またはユーザ)、およびソーシャル・グラフ200における対応するコンセプト(またはユーザ)ノード、に対応する文字(例えば名前)のストリングに合致させようと試みる。特定の実施形態では、合致が見つかったとき、タイプアヘッド・フィーチャは、既存のノードの、ノードへの参照(例えば、ノード
名、ノードID、または別の適切な参照もしくは識別子、など)で、フォームを自動的に埋めることができる。
【0030】
特定の実施形態では、ユーザのプロファイル・ページまたは他のページの様々なセクションにおいてコンテンツを追加するかまたは宣言を行うのに使用されるフォームに、ユーザがテキストをタイプ入力するかまたは他の方法で入力するとき、タイプアヘッド・プロセスは、ソーシャル・ネットワーキング・システム160において(またはソーシャル・ネットワーキング・システム160内で)(例えばサーバ162内で)実行される、1つまたは複数のフロントエンド(クライアント側)および/またはバックエンド(サーバ側)タイプアヘッド・プロセス(以下では単に「タイプアヘッド・プロセス」と称される)と共に動作することができる。それにより、ユーザがテキストの文字を入力するのに伴ってユーザによって入力されたテキストの文字に最も関連性があるかまたは最もよく合致すると決定された、既存のソーシャル・グラフ・エンティティの名前に対応する1つもしくは複数の語句、または既存のソーシャル・グラフ・エンティティに関連付けられている語句で、フォームを対話式に、かつほぼ即座に(ユーザから見て)、自動的に埋めることを試みる。ノードおよびエッジに関連付けられている情報を含めた、ソーシャル・グラフ・データベースにおけるソーシャル・グラフ情報、またはソーシャル・グラフ・データベースから抽出されて索引付けされた情報を利用して、タイプアヘッド・プロセスは、ソーシャル・グラフ・データベースからの情報と共に、ならびに、場合によっては、ソーシャル・ネットワーキング・システム160内に位置するかまたはソーシャル・ネットワーキング・システム160内で実行される様々な他のプロセス、アプリケーション、またはデータベースと共に、ユーザの意図する宣言を高確度で予測することができる。しかし、ソーシャル・ネットワーキング・システム160はまた、ユーザの望む任意の宣言を入力する自由をユーザに提供し、ユーザが自分自身を自由に表現できるようにする。
【0031】
特定の実施形態では、ユーザがテキスト文字をフォーム・ボックスまたは他のフィールドに入力するのに伴って、タイプアヘッド・プロセスは、ユーザが文字を入力しているときにユーザの宣言の中で入力された文字のストリングに合致する既存のソーシャル・グラフ要素(例えば、ユーザ・ノード202、コンセプト・ノード204、またはエッジ206)を識別しようと試みることができる。特定の実施形態では、ユーザが文字をフォーム・ボックスに入力するのに伴って、タイプアヘッド・プロセスは、入力されたテキスト文字のストリングを読み取ることができる。各キーストロークが行われるのに伴って、フロントエンド・タイプアヘッド・プロセスは、入力された文字ストリングを、要求(または呼出し)として、ソーシャル・ネットワーキング・システム160内で実行されるバックエンド・タイプアヘッド・プロセスに送信することができる。特定の実施形態では、タイプアヘッド・プロセスは、AJAX(Asynchronous JavaScript
and XML)または他の適切な技法、および特に非同期技法により、通信することができる。特定の一実施形態では、要求は、結果を迅速かつ動的に送信およびフェッチするのを可能にするXMLHTTPRequest(XHR)であるか、またはそれを含む。特定の実施形態では、タイプアヘッド・プロセスはまた、要求の前に、後に、または要求と共に、セクション識別子(セクションID)も送信し、セクションIDは、ユーザが宣言を行っている特定のページの特定のセクションを識別する。特定の実施形態では、ユーザIDパラメータも送られることがあるが、これは実施形態によっては不要な場合もある。ユーザがソーシャル・ネットワーキング・システム160にログインしていることに基づいて、ユーザはすでに「知られている」からである。
【0032】
特定の実施形態では、タイプアヘッド・プロセスは、1つまたは複数のマッチング・アルゴリズムを使用して、合致するソーシャル・グラフ要素を識別しようと試みることができる。特定の実施形態では、1つまたは複数の合致が見つかったとき、タイプアヘッド・プロセスは、応答(AJAXまたは他の適切な技法を使用できる)をユーザのクライアン
ト・システム130に送信することができ、この応答は、例えば、合致するソーシャル・グラフ要素の名前(名前ストリング)、ならびに、場合によっては、合致するソーシャル・グラフ要素に関連付けられている他のメタデータを含むことができる。限定によってではなく例として、ユーザが文字「dat」をクエリ・フィールドに入力している場合、タイプアヘッド・プロセスは、ドロップダウン・メニューを表示することができ、このドロップダウン・メニューは、合致する既存のプロファイル・ページ、およびそれぞれのユーザ・ノード202またはコンセプト・ノード204(例えば、「dating」と名付けられているかまたは「dating」を専ら扱うプロファイル・ページ)の、名前を表示する。次いでユーザは、これらをクリックするかまたは他の方法で選択することができ、それにより、選択したノードに対応する合致ユーザまたはコンセプトの名前を宣言したいことを確定することができる。限定によってではなく別の例として、「dating」をクリックすると、タイプアヘッド・プロセスは、宣言「Dating」でクエリ・フィールドを自動的に埋めるか、またはウェブ・ブラウザ132に自動的に埋めさせることができる。特定の実施形態では、タイプアヘッド・プロセスは、ドロップダウン・メニューを表示するのではなく、単に、最上位にランク付けされる合致の名前または他の識別子でフィールドを自動的に埋めることもできる。次いで、ユーザは、単に、自分のキーボード上で「enter」をキー入力することによって、または自動的に埋められた宣言をクリックすることによって、自動的に埋められた宣言を確定することができる。
【0033】
タイプアヘッド・プロセスに関するより多くの情報は、参照により援用される、2010年4月19日に出願された米国特許出願第12/763162号、および2012年7月23日に出願された米国特許出願第13/556072号で見ることができる。
【0034】
構造化検索クエリ
図3は、オンライン・ソーシャル・ネットワークの例示的なウェブページを示す。特定の実施形態では、ユーザは、テキスト・クエリをクエリ・フィールド350に入力することによって、クエリをソーシャル・ネットワーク・システム160に提出することができる。オンライン・ソーシャル・ネットワークのユーザは、特定の主題(例えば、ユーザ、コンセプト、外部コンテンツ、またはリソース)を記述する短いフレーズ(「検索クエリ」としばしば称される)を検索エンジンに提供することによって、主題に関係する情報を検索することができる。クエリは、非構造化テキスト・クエリであってよく、1つもしくは複数のテキスト・ストリング、または1つもしくは複数のNグラム(n−gram)を含むものとすることができる。一般に、ユーザは、任意の文字ストリングをクエリ・フィールド350に入力して、テキスト・クエリに合致するコンテンツをソーシャル・ネットワーキング・システム160上で検索することができる。次いで、ソーシャル・ネットワーキング・システム160は、データ・ストア164(または、より詳細にはソーシャル・グラフ・データベース)内から検索して、クエリに合致するコンテンツを識別することができる。検索エンジンは、様々な検索アルゴリズムを使用してクエリ・フレーズに基づく検索を行い、検索結果を生成することができる。この検索結果は、検索クエリに関係する可能性が最も高いリソースまたはコンテンツ(例えば、ユーザプロファイル・ページ、コンテンツプロファイル・ページ、または外部リソース)を識別する。検索を行うために、ユーザは、検索クエリを検索エンジンに入力または送信することができる。これに応答して、検索エンジンは、検索クエリに関係する可能性の高い1つまたは複数のリソースを識別することができ、これらのリソースは、検索クエリに対して識別された「検索結果」と総称され得る。識別されたコンテンツは、例えば、ソーシャル・グラフ・エンティティ(すなわち、ユーザ・ノード202、コンセプト・ノード204、エッジ206)、プロファイル・ページ、外部ウェブページ、またはこれらの任意の組合せを含む場合がある。次いで、ソーシャル・ネットワーキング・システム160は、識別されたコンテンツに対応する検索結果を含む検索結果ウェブページを生成することができる。検索結果は、しばしば検索結果ウェブページ上のリンクのリストの形で、ユーザに提示されてよく、各リン
クは、識別されたリソースまたはコンテンツのいくらかを含む異なるウェブページに関連付けられている。特定の実施形態では、検索結果における各リンクは、対応するウェブページがどこに位置するかと、それを取り出すための機構とを指定するユニフォーム・リソース・ロケータ(URL)の形であってよい。次いで、ソーシャル・ネットワーキング・システム160は、検索結果ウェブページを、ユーザのクライアント・システム130上のユーザのウェブ・ブラウザ132に送信することができる。次いで、ユーザは、URLリンクをクリックするか、または他の方法で検索結果ウェブページからコンテンツを選択して、ソーシャル・ネットワーキング・システム160からのまたは外部システムからのコンテンツに適宜アクセスすることができる。リソースは、検索クエリに対するそれらの相対的な関連度に従って、ランク付けされユーザに提示されてよい。検索結果はまた、ユーザに対するそれらの相対的な関連度に従って、ランク付けされユーザに提示されてもよい。言い換えれば、検索結果は、例えば、ソーシャル・グラフ情報、ユーザ情報、ユーザの検索履歴もしくは閲覧履歴、またはユーザに関係する他の適切な情報に基づいて、照会元ユーザに合わせて個人化されてよい。特定の実施形態では、リソースのランク付けは、検索エンジンによって実装されるランク付けアルゴリズムによって決定されてよい。限定によってではなく例として、検索クエリまたはユーザに対してより関連性のあるリソースは、検索クエリまたはユーザに対してより関連性のないリソースよりも、高くランク付けされるものとすることができる。特定の実施形態では、検索エンジンは、その検索を、オンライン・ソーシャル・ネットワーク上のリソースおよびコンテンツに限定することができる。しかし、特定の実施形態では、検索エンジンはまた、サードパーティ・システム170、インターネットもしくはワールド・ワイド・ウェブ、または他の適切なソースなど、他のソース上のリソースまたはコンテンツを検索することもできる。本開示はソーシャル・ネットワーキング・システム160を特定の方式で照会することを記述するが、本開示はソーシャル・ネットワーキング・システム160を任意の適切な方式で照会することを企図する。
【0035】
特定の実施形態では、ユーザによって入力される検索クエリに、本明細書に記載のタイプアヘッド・プロセスが適用され得る。限定ではなく例として、ユーザがテキスト文字を検索フィールドに入力するのに伴って、タイプアヘッド・プロセスは、ユーザが文字を入力しているときに検索フィールドに入力された文字のストリングに合致する1つまたは複数のユーザ・ノード202、コンセプト・ノード204、またはエッジ206を識別しようと試みることができる。タイプアヘッド・プロセスがテキスト・クエリからのストリングまたはNグラムを含む要求または呼出しを受け取ると、タイプアヘッド・プロセスは、入力されたテキストに合致するそれぞれの名前、タイプ、カテゴリ、または他の識別子を有する既存のソーシャル・グラフ要素(すなわち、ユーザ・ノード202、コンセプト・ノード204、エッジ206)を識別するための検索を実施することができ、またはこの検索が実施されるようにする。タイプアヘッド・プロセスは、1つまたは複数のマッチング・アルゴリズムを使用して、合致するノードまたはエッジを識別しようと試みることができる。合致が見つかったとき、タイプアヘッド・プロセスは、応答をユーザのクライアント・システム130に送信することができ、この応答は、例えば、合致するノードの名前(名前ストリング)、ならびに、場合によっては、合致するノードに関連付けられている他のメタデータを含むことができる。次いで、タイプアヘッド・プロセスはドロップダウン・メニュー300を表示することができ、ドロップダウン・メニュー300は、合致する既存のプロファイル・ページ、およびそれぞれのユーザ・ノード202またはコンセプト・ノード204の、名前を表示し、また、合致するユーザ・ノード202またはコンセプト・ノード204につながっている合致するエッジ206の名前を表示する。次いでユーザは、これらをクリックするかまたは他の方法で選択することができ、それにより、選択したノードに対応する合致ユーザもしくはコンセプトの名前を検索したいこと、または、合致するエッジによって合致ユーザもしくはコンセプトにつながっているユーザもしくはコンセプトを検索したいことを確定することができる。別法として、タイプアヘッド
・プロセスは、ドロップダウン・メニュー300を表示するのではなく、単に、最上位にランク付けされる合致の名前または他の識別子でフォームを自動的に埋めることもできる。次いで、ユーザは、単に、キーボード上で「enter」をキー入力することによって、または自動的に埋められた宣言をクリックすることによって、自動的に埋められた宣言を確定することができる。合致するノードおよびエッジをユーザが確定すると、タイプアヘッド・プロセスは、合致するソーシャル・グラフ要素を含むクエリをユーザが確定したことをソーシャル・ネットワーキング・システム160に知らせる要求を送信することができる。送信された要求に応答して、ソーシャル・ネットワーキング・システム160は、自動的に(または別法として、要求における命令に基づいて)、合致するソーシャル・グラフ要素を求めて、または合致するソーシャル・グラフ要素につながっているソーシャル・グラフ要素を求めて、ソーシャル・グラフ・データベースを適宜呼び出すかまたは他の方法で検索することができる。本開示はタイプアヘッド・プロセスを特定の方式で検索クエリに適用することを記述するが、本開示は、タイプアヘッド・プロセスを任意の適切な方式で検索クエリに適用することを企図する。
【0036】
検索クエリおよび検索結果に関して、特定の実施形態は、参照により援用される、2006年8月11日に出願された米国特許出願第11/503093号、2010年12月22に出願された米国特許出願第12/977027号、および2010年12月23日に出願された米国特許出願第12/978265号に開示される、1つまたは複数のシステム、コンポーネント、要素、機能、方法、動作、またはステップを利用することができる。
【0037】
テキスト・クエリの解析、および構造化クエリのレンダリング
図4A〜
図4Bは、オンライン・ソーシャル・ネットワークの例示的なクエリを示す。特定の実施形態では、第1のユーザ(すなわち照会元ユーザ)から受け取られたテキスト・クエリに応答して、ソーシャル・ネットワーキング・システム160は、自然言語構文でレンダリングされた1つまたは複数の構造化クエリを生成することができ、各構造化クエリは、1つまたは複数の識別されたソーシャル・グラフ要素に対応するクエリ・トークンを含む。自然言語の構造化クエリは、文脈自由文法モデルを使用して生成されてよい。これらの構造化クエリは、文法モデルの文法によって生成されたストリングに基づくものであってよく、したがってこれらは、自然言語構文を使用して、適切なソーシャル・グラフ要素への参照を用いてレンダリングされる。構造化クエリは、第1のユーザに送信されてドロップダウン・メニュー300の中に表示されてよく(例えば、クライアント側のタイプアヘッド・プロセスにより)、次いで、第1のユーザは、適切なクエリを選択して所望のコンテンツを検索することができる。
図4A〜
図4Bは、クエリ・フィールド350における様々な例示的なテキスト・クエリと、それに応答してドロップダウン・メニュー300の中に生成された様々な構造化クエリとを示す。構造化クエリの示唆をユーザのテキスト・クエリに応答して提供することによって、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザが、ソーシャル・グラフ200において表される要素を、それらのソーシャル・グラフ属性と、様々なソーシャル・グラフ要素に対するそれらの関係とに基づいて検索するための、強力な方法を提供することができる。構造化クエリにより、照会元ユーザは、特定のエッジ・タイプによってソーシャル・グラフ200における特定のユーザまたはコンセプトにつながっているコンテンツを検索することができる。本開示が記述し
図4A〜
図4Bが示すのは、特定の構造化クエリを特定の方式で生成することだが、本開示は任意の適切な構造化クエリを任意の適切な方式で生成することを企図する。クエリの解析、文法モデル、および構造化クエリの生成に関するより多くの情報は、2012年7月23日に出願された米国特許出願第13/556060号、2012年11月12日に出願された米国特許出願第13/674695号、2012年12月31日に出願された米国特許出願第13/731866号、および2012年12月31に出願された米国特許出願第13/732175号で見ること
ができ、これらの米国特許出願の各々は、参照により本明細書に援用される。
【0038】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、照会元の/第1のユーザ(第1のユーザ・ノード202に対応する)から、非構造化テキスト・クエリを受け取ることができる。限定によってではなく例として、第1のユーザは、(1)第1のユーザの一次友達であって、かつ(2)スタンフォード大学に関連付けられている(すなわち、ユーザ・ノード202が、エッジ206によって、学校「スタンフォード」に対応するコンセプト・ノード204につながっている)、他のユーザを検索したい場合がある。第1のユーザは、この場合、
図4A〜
図4Bに示されるように、テキスト・クエリ「friends stanford(友達 スタンフォード)」をクエリ・フィールド350に入力することができる。第1のユーザがこのテキスト・クエリをクエリ・フィールド350に入力するのに伴って、ソーシャル・ネットワーキング・システム160は、ドロップダウン・メニュー300の中に示されるように、様々な構造化クエリの示唆を提供することができる。本明細書においては、非構造化テキスト・クエリは、ユーザによって入力される単純なテキスト・ストリングに及ぶ。テキスト・クエリは、当然ながら、標準的な言語/文法規則(例えば英語言語文法)については構造化されているであろう。しかし、テキスト・クエリは通常、ソーシャル・グラフ要素については構造化されていないことになる。言い換えれば、単純なテキスト・クエリは通常、特定のソーシャル・グラフ要素への埋込み参照を含むことはない。よって、本明細書においては、構造化クエリは、特定のソーシャル・グラフ要素への参照を含むクエリであって、それにより検索エンジンが、識別された要素に基づいて検索することができるようなクエリに及ぶ。さらに、テキスト・クエリは、正式なクエリ構文について構造化されていない場合がある。言い換えれば、単純なテキスト・クエリは、必ずしも検索エンジンによって直接に実行可能なクエリ・コマンドのフォーマットのものであるとは限らないことになる。本開示は特定のクエリを特定の方式で受け取ることを記述するが、本開示は任意の適切なクエリを任意の適切な方式で受け取ることを企図する。
【0039】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、第1のユーザ(すなわち照会元ユーザ)から受け取った非構造化テキスト・クエリ(単に検索クエリとも称される)を解析して、1つまたは複数のNグラムを識別することができる。一般に、Nグラムは、テキストまたは音声の所与のシーケンスからの、n個のアイテムの連続的なシーケンスである。アイテムは、テキストまたは音声のシーケンスからの、文字、音素、音節、字、単語、塩基対、接頭辞、または他の識別可能なアイテムである場合がある。Nグラムは、照会元ユーザによって入力されたテキストの、1つまたは複数の文字(字、数字、句読点など)を含むことができる。サイズ1のNグラムは「ユニグラム」と称されることがあり、サイズ2のNグラムは「バイグラム」または「ダイグラム」と称されることがあり、サイズ3のNグラムは「トライグラム」と称されることがあり、以下同様である。各Nグラムは、照会元ユーザから受け取られたテキスト・クエリからの、1つまたは複数の部分を含むことができる。特定の実施形態では、各Nグラムは、第1のユーザによって入力された文字ストリング(例えば、テキストの1つまたは複数の文字)を含むことができる。限定によってではなく例として、ソーシャル・ネットワーキング・システム160は、テキスト・クエリ「friends stanford」を解析して、friends、stanford、friends stanford、というNグラムを識別することができる。限定によってではなく別の例として、ソーシャル・ネットワーキング・システム160は、テキスト・クエリ「friends in palo alto(パロアルトにいる友達)」を解析して、friends、in、palo、alto、friends in、in palo、palo alto、friend in palo、in palo also、friends in palo alto、というNグラムを識別することができる。特定の実施形態では、各Nグラムは、テキスト・クエリからのn個のアイテムの連続的なシーケンスを含むことができる。本開示は特定のクエ
リを特定の方式で解析することを記述するが、本開示は任意の適切なクエリを任意の適切な方式で解析することを企図する。
【0040】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、テキスト・クエリにおいて識別された各Nグラムにつき、Nグラムがソーシャル・グラフ要素に対応するスコアを決定または計算することができる。スコアは、例えば、信頼度スコア、確率、品質、ランキング、別の適切なタイプのスコア、またはこれらの任意の組合せとすることができる。限定によってではなく例として、ソーシャル・ネットワーキング・システム160は、Nグラムがソーシャル・グラフ200のユーザ・ノード202、コンセプト・ノード204、またはエッジ206などのソーシャル・グラフ要素に対応する確率スコア(単に「確率」とも称される)を決定することができる。確率スコアは、Nグラムと特定のソーシャル・グラフ要素との間の類似性または関連性のレベルを示すことができる。確率を計算するための多くの異なる方法があり得る。本開示は、検索クエリにおいて識別されたNグラムについて確率スコアを計算するための、任意の適切な方法を企図する。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、Nグラムが特定のソーシャル・グラフ要素に対応する確率pを決定することができる。確率pは、特定の検索クエリXが与えられた場合の、特定のソーシャル・グラフ要素kに対応する確率として計算されてよい。言い換えれば、確率は、p=(k|X)として計算されてよい。限定によってではなく例として、Nグラムがソーシャル・グラフ要素に対応する確率は、p
i,j,kとして表される確率スコアとして計算されてよい。入力は、テキスト・クエリX=(x
1,x
2,...,x
N)、およびクラスのセットとすることができる。各(i:j)およびクラスkにつき、ソーシャル・ネットワーキング・システム160は、p
i,j,k=p(クラス(x
i;j)=k|X)を算出することができる。特定の実施形態では、識別されたソーシャル・グラフ要素を使用して、検索エンジンによって実行可能なクエリ・コマンドを生成することができる。このクエリ・コマンドは、特定の引数を受け入れる定義された関数を含む、構造化セマンティック・クエリとすることができる。限定によってではなく例として、テキスト・クエリ「friend me mark(友達 私 マーク)」が解析されて、クエリ・コマンドintersect(friend(me),friend(Mark))が形成される場合がある。言い換えれば、このクエリは、ソーシャル・グラフにおいて、照会元ユーザ(「私」)およびユーザ「マーク」と交差するノード(すなわち、友達タイプ・エッジ206によって照会元ユーザのユーザ・ノード202につながっていると共に、友達タイプ・エッジ206によってユーザ「マーク」のユーザ・ノード202につながっている、ユーザ・ノード202)を探している。本開示はNグラムがソーシャル・グラフ要素に対応するか否かを特定の方式で決定することを記述するが、本開示はNグラムがソーシャルグラム要素に対応するか否かを任意の適切な方式で決定することを企図する。さらに、本開示はNグラムがソーシャル・グラフ要素に対応するか否かを特定のタイプのスコアを使用して決定することを記述するが、本開示はNグラムがソーシャル・グラフ要素に対応するか否かを任意の適切なタイプのスコアを使用して決定することを企図する。
【0041】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、エッジしきい値確率よりも高い確率を有する1つまたは複数のエッジ206を識別することができる。識別されたエッジ206の各々は、Nグラムの少なくとも1つに対応するものとすることができる。限定によってではなく例として、Nグラムは、p
i,j,k>p
edge−thresholdである場合にのみ、エッジkに対応するものとして識別されてよい。さらに、識別されたエッジ206の各々は、識別されたノードの少なくとも1つにつながっているものとすることができる。言い換えれば、ソーシャル・ネットワーキング・システム160は、特定のNグラムに対応するものとして前に識別されたユーザ・ノード202またはコンセプト・ノード204につながっている、エッジ206またはエッジ・タイプのみを識別することができる。前に識別されたいずれのノードにもつながっていないエ
ッジ206またはエッジ・タイプは、通常、検索クエリにおける特定のNグラムに対応する可能性が低い。これらのエッジ206およびエッジ・タイプをフィルタリングによって除去するかまたは無視することによって、ソーシャル・ネットワーキング・システム160は、ソーシャル・グラフ200において関連性のあるソーシャル・グラフ要素をより効率的に検索することができる。本開示はNグラムに対応するエッジ206を特定の方式で識別することを記述するが、本開示はNグラムに対応するエッジ206を任意の適切な方式で識別することを企図する。
【0042】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、ノードしきい値確率よりも高い確率を有する1つまたは複数のユーザ・ノード202またはコンセプト・ノード204を識別することができる。識別されたノードの各々は、Nグラムの少なくとも1つに対応し得る。限定によってではなく例として、Nグラムは、p
i,j,k>p
node−thresholdである場合にのみ、ノードkに対応するものとして識別されてよい。さらに、識別されたユーザ・ノード202またはコンセプト・ノード204の各々は、識別されたエッジ206の少なくとも1つにつながっているものとすることができる。言い換えれば、ソーシャル・ネットワーキング・システム160は、特定のNグラムに対応するものとして前に識別されたエッジ206につながっている、ノードまたはノードタイプのみを識別することができる。前に識別されたいずれのエッジ206にもつながっていないノードまたはノードタイプは、通常、検索クエリにおける特定のNグラムに対応する可能性が低い。これらのノードおよびノードタイプをフィルタリングによって除去するかまたは無視することによって、ソーシャル・ネットワーキング・システム160は、ソーシャル・グラフ200において関連性のあるソーシャル・グラフ要素をより効率的に検索することができる。本開示はNグラムに対応するノードを特定の方式で識別することを記述するが、本開示はNグラムに対応するノードを任意の適切な方式で識別することを企図する。
【0043】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、複数の文法を含む文脈自由文法モデルにアクセスすることができる。文法モデルの各文法は、1つまたは複数の非終端トークン(または「非終端記号」)と、1つまたは複数の終端トークン(または「終端記号」/「クエリ・トークン」)とを含むことができ、特定の非終端トークンは、終端トークンで置き換えられ得る。文法モデルは、正式な言語のストリングに対する形成規則のセットである。特定の実施形態では、複数の文法は、順序木として編成された文法フォレストとして視覚化されることが可能であり、内部ノードは非終端トークンに対応し、葉ノードは終端トークンに対応する。各文法は、文法フォレスト内のサブツリーとして表されてよく、これらの文法は、非終端トークンによって相互に合成される。よって、2つ以上の文法は、文法フォレスト内のサブフォレストとすることができる。本開示は特定の文法にアクセスすることを記述するが、本開示は任意の適切な文法を企図する。
【0044】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、1つまたは複数の文法を使用して1つまたは複数のストリングを生成することができる。言語でストリングを生成するには、単一の開始記号のみからなるストリングで開始する。次いで、開始記号も、指定された非終端記号も含まないストリングが作成されるまで、生成規則が任意の順序で適用される。文脈自由文法では、文法の各非終端記号の作成は、文法の他の非終端記号によって作成されるものとは独立している。非終端記号は、終端記号(すなわち、終端トークンまたはクエリ・トークン)で置き換えられ得る。クエリ・トークンのいくつかはソーシャル・グラフ・トークンであることがあり、ソーシャル・グラフ・トークンは、前述のように、識別されたノードまたは識別されたエッジに対応するものとすることができる。次いで、文法によって生成されたストリングは、識別されたノードまたは識別されたエッジへの参照を含む構造化クエリの基礎として使用されてよい。文法によって生
成されたストリングは、自然言語構文でレンダリングされてよく、したがって、ストリングに基づく構造化クエリもまた自然言語でレンダリングされる。文脈自由文法は、各生成規則の左側が単一の非終端記号のみからなる文法である。確率的な文脈自由文法の1つは、タプル〈Σ,N,S,P〉であり、ここで、互いに素な集合ΣおよびNは、終端記号および非終端記号をそれぞれ指定し、S∈Nは開始記号である。Pは、作成の集合であり、これらの作成は、E→ξ(p)の形をとり、E∈N、ξ∈(Σ∪N)
+、および、p=Pr(E→ξ)であり、これはEがストリングξに展開される確率である。所与の非終端Eの全ての展開にわたる確率pの合計は、1でなければならない。本開示はストリングを特定の方式で生成することを記述するが、本開示はストリングを任意の適切な方式で生成することを企図する。
【0045】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、前に識別されたノードおよびエッジに対応する、1つまたは複数のクエリ・トークンを識別することができる。言い換えれば、識別されたノードまたは識別されたエッジが、特定の文法によってクエリ・トークンとして使用され得る場合、このクエリ・トークンは、ソーシャル・ネットワーキング・システム160によって識別されてよい。クエリ・トークンは、文法トークンまたはソーシャル・グラフ・トークンを含むことができる。文法トークンは、自然言語構文でレンダリングするために挿入されるテキストに対応するクエリ・トークンである。ソーシャル・グラフ・トークンは、ソーシャル・グラフ200の特定のノードまたはエッジに対応するクエリ・トークンである。限定によってではなく例として、例示的な文法が、[user][user−filter][school]である場合がある。非終端記号[user]、[user−filter]、および[school]は、この場合、受け取られたテキスト・クエリにおけるNグラムに基づいて決定され得る。テキスト・クエリ「friends stanford」の場合、このクエリは、この文法を使用して、例えば、「[friends][who][go to][Stanford
University](スタンフォード大学に通う友達)」、または「[friends][who][work at][Stanford University](スタンフォード大学に勤務する友達)」として解析され得る。この例では、クエリ・トークン[friends]、[go to]、[work at]、および[Stanford University]は全て、ソーシャル・グラフ200の特定のノードおよびエッジに対応するソーシャル・グラフ・トークンとすることができる。同様に、クエリ・トークン[who]は、構造化クエリを自然言語構文でレンダリングするために文法によって挿入された文法トークンとすることができる。上記の両方の例示的なケースで、受け取られたテキスト・クエリのNグラムがクエリ・トークンとして使用され得る場合は、これらのクエリ・トークンは、ソーシャル・ネットワーキング・システム160によって識別されてよい。本開示は特定のクエリ・トークンを特定の方式で識別することを記述するが、本開示は任意の適切なクエリ・トークンを任意の適切な方式で識別することを企図する。
【0046】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、前に識別されたノードまたはエッジの各々に対応する少なくとも1つのクエリ・トークンを有する1つまたは複数の文法を選択することができる。テキスト・クエリにおいて識別されたNグラムに応じて、特定の文法のみが使用され得る。したがって、全ての利用可能な文法の終端トークンが調べられて、テキスト・クエリからの識別されたNグラムに合致する文法が見つけられるべきである。言い換えれば、特定の文法が、識別されたノードおよびエッジの全てをクエリ・トークンとして使用できる場合、この文法は、構造化クエリの生成に使用するための可能な文法として、ソーシャル・ネットワーキング・システム160によって選択されてよい。これは事実上、ボトムアップ解析の一種であり、可能なクエリ・トークンを使用して、クエリに適用するための適用可能な文法を決定する。限定によってではなく例として、テキスト・クエリ「friends stanford」に対して、ソー
シャル・ネットワーキング・システムは、クエリ・トークン[friends]および[Stanford University]を識別する場合がある。文法モデルからの文法の終端トークンが、前に論じられたように識別されてよい。次いで、[friends]と[Stanford University]の両方のトークンを使用できる任意の文法が選択されてよい。例えば、文法[user][user−filter][school]が選択されてよい。この文法は、ストリング「friends who go to Stanford University(スタンフォード大学に通う友達)」または「friends who work at Stanford University(スタンフォード大学に勤務する友達)」を形成するなどによって、[friends]および[Stanford University]トークンをクエリ・トークンとして使用することができるからである。よって、受け取られたテキスト・クエリのNグラムが文法によってクエリ・トークンとして使用され得る場合は、これらの文法がソーシャル・ネットワーキング・システム160によって選択されるものとすることができる。同様に、受け取られたテキスト・クエリが、文法によってクエリ・トークンとして使用され得ないNグラムを含む場合は、この文法は選択されないものとすることができる。本開示は特定の文法を特定の方式で選択することを記述するが、本開示は、任意の適切な文法を任意の適切な方式で選択することを企図する。
【0047】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、複数の文法によって形成される文法フォレストを分析することによって、1つまたは複数の文法を選択することができる。文法フォレストは、複数の非終端トークンと複数の終端トークンとを含む順序木として編成されてよい。各文法は、文法フォレスト内のサブツリーとして表されてよく、各サブツリーは、1つまたは複数の追加の非終端トークンによって他のサブツリーに合成される。限定によってではなく例として、ソーシャル・ネットワーキング・システム160は、テキスト・クエリの一部に対応する識別されたノードおよびエッジに対応する、文法フォレストにおける全ての終端トークン(すなわちクエリ・トークン)を識別することによって、開始することができる。文法フォレストにおけるこれらのクエリ・トークンが識別されると、次いでソーシャル・ネットワーキング・システム160は、これらのクエリ・トークンの各々から文法フォレストを上に辿って、1つまたは複数の交差非終端トークンを識別することができる。全てのクエリ・トークンからの経路が交差する非終端トークンが識別されると、この交差非終端トークンが選択されてよく、次いで、文法フォレストによってこの交差非終端トークンに合成される1つまたは複数の文法が選択されてよい。本開示は文法を特定の方式で選択することを記述するが、本開示は文法を任意の適切な方式で選択することを企図する。
【0048】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、照会元ユーザからのテキスト・クエリに対応するセマンティック・ツリーを生成することができる。セマンティック・ツリーは、前に識別されたノードまたはエッジに対応する識別された各クエリ・トークンを含むことができ、インタセクト・トークンを含むこともできる。セマンティック・ツリーはまた、クエリ・トークンをインタセクト・トークンにつなげている非終端トークンを、適宜含むことができる。限定によってではなく例として、テキスト・クエリ「friends stanford」が、クエリ・コマンド(intersect(school:<Stanford University>,friends_of:<me>))に解析される場合がある。言い換えれば、このクエリは、照会元ユーザ(「me」)の友達(すなわち、友達タイプ・エッジ206によって照会元ユーザのユーザ・ノード202につながっているユーザ・ノード202)と、スタンフォード大学のコンセプト・ノード204との両方と交差する、ソーシャル・グラフにおけるノードを探している。本開示は特定のセマンティック・ツリーを特定の方式で生成することを記述するが、本開示は、任意の適切なセマンティック・ツリーを任意の適切な方式で生成することを企図する。
【0049】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、複数の文法を含む文法フォレストを分析して、クエリに対応するセマンティック・ツリーにほぼ合致する非終端トークンおよびクエリ・トークンの1つまたは複数のセットを識別することができる。各セットは、セマンティック・ツリーのインタセクト・トークンに対応する非終端トークンを有する。次いで、ソーシャル・ネットワーキング・システム160は、インタセクト・トークンに対応する非終端トークンに合成される文法の1つまたは複数を、文法フォレストにおいて選択することができる。このアルゴリズムは、インタセクト・トークンに至る最低コストのマルチパスを文法フォレストにおいて見つけようと試みることになり、この最低コストのマルチパスに対応するインタセクト・トークンは、他のインタセクト・トークン(もしあれば)よりも優先的に選択されてよい。本開示は特定の文法フォレストを特定の方式で分析することを記述するが、本開示は任意の適切な文法フォレストを任意の適切な方式で分析することを企図する。
【0050】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、選択された各文法につき、スコアを決定することができる。スコアは、例えば、信頼度スコア、確率、品質、ランキング、別の適切なタイプのスコア、またはこれらの任意の組合せとすることができる。スコアは、選択された文法によって使用されるクエリ・トークンに関連付けられている個別のスコアまたは確率に基づくものとすることができる。相対的により高い個別スコアを有するクエリ・トークンを文法が使用する場合、文法はより高い相対的スコアを有することができる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、ソーシャル・グラフ・アフィニティ(affinity)に基づいて、選択された文法のスコアを決定することができる。アフィニティは、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクト(ユーザ、コンセプト、コンテンツ、アクション、広告、オンライン・ソーシャル・ネットワークに関連付けられている他のオブジェクト、またはこれらの任意の適切な組合せ、など)間の、関係の強さ、または関心のレベルを表すことができる。照会元ユーザに対するより高いアフィニティを有するソーシャル・グラフ要素に対応するクエリ・トークンを含む文法は、照会元ユーザに対するより低いアフィニティを有するソーシャル・グラフ要素に対応するクエリ・トークンを含む文法よりも、高くスコアリングされるものとすることができる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、選択された文法に対応するインタセクト・トークンを識別するために辿られた経路の長さに基づいて、選択された文法のスコアを決定することができる。よりコストの低いマルチパス(すなわちより短い経路)を含む文法は、よりコストの高いマルチパス(すなわちより長い経路)を含む文法よりも、高くスコアリングされるものとすることができる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、広告スポンサシップに基づいて、選択された文法のスコアを決定することができる。広告主(例えば、特定のノードに対応する特定のプロファイル・ページのユーザまたは管理者など)が、特定のノードのスポンサとなる場合があり、したがって、このスポンサ付きノードを参照するクエリ・トークンを含む文法は、より高くスコアリングされてよい。本開示は特定の文法について特定のスコアを特定の方式で決定することを記述するが、本開示は、任意の適切な文法について任意の適切なスコアを任意の適切な方式で決定することを企図する。ソーシャル・グラフ・アフィニティおよびアフィニティ係数に関して、特定の実施形態は、2006年8月11日に出願された米国特許出願第11/503093号、2010年12月22日に出願された米国特許出願第12/977027号、2010年12月23日に出願された米国特許出願第12/978265号、および2012年10月1日に出願された米国特許出願第13/632869号に開示される1つまたは複数のシステム、コンポーネント、要素、機能、方法、動作、またはステップを利用することができ、これらの米国特許出願の各々は参照により援用される。
【0051】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、文法しきい値スコアよりも高いスコアを有する1つまたは複数の文法を選択することができる。選択された文法の各々は、識別されたノードまたは識別されたエッジ(受け取られたテキスト・クエリのNグラムに対応する)の各々に対応するクエリ・トークンを含むことができる。特定の実施形態では、文法は、それらの決定されたスコアに基づいてランク付けされてよく、しきい値ランク内の文法のみが選択されてよい(例えば上位7個)。本開示は文法を特定の方式で選択することを記述するが、本開示は文法を任意の適切な方式で選択することを企図する。
【0052】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、選択された文法(例えば、文法しきい値スコアよりも高いスコアを有する文法)に対応する1つまたは複数の構造化クエリを生成することができる。各構造化クエリは、対応する選択された文法によって生成されたストリングに基づくものとすることができる。限定によってではなく例として、テキスト・クエリ「friends stanford」に応答して、文法[user][user−filter][school]は、ストリング「friends who go to Stanford University」を生成することができ、この場合、文法の非終端トークン[user]、[user−filter]、[school]が、終端トークン[friends]、[who go to]、および[Stanford University]にそれぞれ置き換えられて、ストリングが生成されている。特定の実施形態では、自然言語構文を使用する文法によって生成されるストリングは、自然言語の構造化クエリとしてレンダリングされるものとすることができる。限定によってではなく例として、前の例からの構造化クエリは、終端トークン[who go to]を使用するが、この終端トークンは自然言語構文を使用し、したがって、文法によってレンダリングされるストリングは自然言語である。次いで、文法によって生成された自然言語ストリングは、ソーシャル・グラフ要素に対応するクエリ・トークンを修正してこれらのソーシャル・グラフ要素への参照を含めることによって、レンダリングされて構造化クエリが形成されてよい。限定によってではなく例として、ストリング「friends who go to Stanford University」は、「Stanford University」のクエリ・トークンが、学校「Stanford University」に対応するコンセプト・ノード204への参照として構造化クエリにおいて現れるようにレンダリングされてよく、参照は、強調表示、インライン・リンク、スニペット、別の適切な参照、またはこれらの任意の組合せを含むことができる。各構造化クエリは、対応する選択された文法に対応するクエリ・トークンを含むことができ、これらのクエリ・トークンは、識別されたエッジ206の1つまたは複数、および識別されたノードの1つまたは複数に対応する。構造化クエリの生成について、以下にさらに記述される。
【0053】
構造化検索クエリの生成およびフィルタリング
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、照会元ユーザから受け取ったテキスト・クエリに基づいて、構造化クエリのセットを生成することができる。生成される構造化クエリは、前述のように、1つまたは複数の文脈自由文法によって生成された自然言語ストリングに基づくものとすることができる。各構造化クエリは、対応する文法からのクエリ・トークンを含むことができる。クエリ・トークンは、識別されたユーザ・ノード202の1つもしくは複数、または識別されたエッジ206の1つもしくは複数に対応する、ソーシャル・グラフ・トークンである場合がある。限定によってではなく例として、テキスト・クエリ「show me friends of my
girlfriend(私のガールフレンドの友達を見せてください)」に応答して、ソーシャル・ネットワーキング・システム160は、構造化クエリ「Friends of Stephanie(ステファニーの友達)」を生成する場合があり、構造化クエリにおける「Friends(友達)」および「Stephanie(ステファニー)」は
、特定のソーシャル・グラフ要素に対応する参照である。「Stephanie」への参照は、特定のユーザ・ノード202(すなわち、関係タイプのエッジ206によって照会元ユーザのユーザ・ノード202につながっている、ユーザ「ステファニー」に対応するユーザ・ノード202)に対応することになり、「friends」への参照は、このユーザ・ノード202を他のユーザ・ノード202につなげる「友達」エッジ206(すなわち、「ステファニー」の一次友達につながっているエッジ206)に対応することになる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、テキスト・クエリに応答して生成された構造化クエリのセットを、各構造化クエリの品質に基づいてフィルタリングすることができる。いくつかの非構造化テキスト・クエリを解析するとき、ソーシャル・ネットワーキング・システム160は、それに応答して、低品質のまたは関連性のない構造化クエリを生成することがある。これは、文法モデルとうまく合致しない語句をテキスト・クエリが含むときに起こることがあり、したがって、この語句は、文法モデルによって解析されたとき、関連性のないクエリ・トークンに合致されてしまう。限定によってではなく例として、「背の高い人々」についてのテキスト・クエリが、関連性のあるいずれの構造化クエリも生成しない可能性がある。文法モデルにおいて使用されるいずれのクエリ・トークンにもこれらの語句が合致しない(例えば、これらの語句がいずれのソーシャル・グラフ要素とも合致しない)場合、または、低品質の合致しか有さない(例えば、低品質の合致は、「背の高い人々!」と名付けられたページまたはグループを参照する構造化クエリであることがある)場合は、これらの語句は文法モデルによってうまく解析されないかもしれないからである。これらの低品質の示唆クエリは、滑稽であるかもしくは当惑させるものであることがあり、または誤って合致するかもしくは関連性のないクエリ・トークンを含むことがあり、または単にユーザの照会意図と合致しないことがある。ともかく、これらの構造化クエリが示唆クエリとして照会元ユーザに送り返される前に、これらの構造化クエリをフィルタリングによって除去することが望ましいであろう。このようなクエリを示唆としてユーザに送るのを避けるために、各構造化クエリは、特定の示唆クエリが低品質であるかまたは関連性がないものであるかもしれないことを伝える様々な要因に基づいて、分析されスコアリングされてよい。ソーシャル・ネットワーキング・システム160によって生成されたセットにおける各構造化クエリは、テキスト・クエリ自体および構造化クエリに基づいてスコアリングされてよい。品質スコアの低い構造化クエリはフィルタリングによって除去されてよく、したがって、高品質の構造化クエリのみが照会元ユーザに提示される。本開示は特定の構造化クエリを特定の方式で生成することを記述するが、本開示は任意の適切な構造化クエリを任意の適切な方式で生成することを企図する。
【0054】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザから受け取ったテキスト・クエリに基づいて、構造化クエリのセットを生成することができる。各構造化クエリは、1つまたは複数のクエリ・トークンを含むことができ、これらは、文法トークンであるか、または、識別されたコンセプト・ノード204および1つもしくは複数の識別されたエッジ206に対応するソーシャル・グラフ・トークンである場合がある。これらの構造化クエリにより、ソーシャル・ネットワーキング・システム160は、識別されたコンセプト・ノード204および識別されたエッジ206につながっているかまたは他の方法で関連付けられるコンテンツ・オブジェクトを検索することによって、オンライン・ソーシャル・ネットワークに関係するリソースおよびコンテンツ(例えばプロファイル・ページなど)をより効率的に検索することができる。限定によってではなく例として、テキスト・クエリ「friends
like facebook(登録商標)(友達 いいね フェースブック(登録商標))」に応答して、ソーシャル・ネットワーキング・システム160は、構造化クエリ「My friends who like Facebook(フェースブックに「いいね」の表明を示した私の友達)」を生成する場合がある。この例では、構造化クエリにおける、「friends」、「like」、および「Facebook」への参照は、前
述のように、特定のソーシャル・グラフ要素に対応するソーシャル・グラフ・トークンである(すなわち、「友達」エッジ206、「いいね」エッジ206、および「フェースブック」コンセプト・ノード204)。同様に、「my」および「who」への参照は、文法トークンであり、これらは、構造化クエリが自然言語構文でレンダリングされるように、構造化クエリに含められる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、複数の構造化クエリを生成することができ、これらの構造化クエリは、異なる複数の識別されたコンセプト・ノード204、または異なる複数の識別されたエッジ206への参照を含むことができる。限定によってではなく例として、前の例を続けると、構造化クエリ「My friends who like Facebook」に加えて、ソーシャル・ネットワーキング・システム160はまた、構造化クエリ「My Friends who like Facebook Culinary Team(フェースブック料理チームに「いいね」の表明を示した私の友達)」も生成する場合があり、構造化クエリにおける「Facebook Culinary Team」は、さらに別のソーシャル・グラフ要素に対応するクエリ・トークンである。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、生成された構造化クエリをランク付けすることができる。構造化クエリは、様々な要因に基づいてランク付けされ得る。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、広告スポンサシップに基づいて構造化クエリをランク付けすることができる。広告主(例えば、特定のノードに対応する特定のプロファイル・ページのユーザまたは管理者など)が、特定のノードのスポンサとなる場合があり、したがって、このノードを参照する構造化クエリは、より高くランク付けされてよい。本開示は特定の構造化クエリを特定の方式で生成することを記述するが、本開示は任意の適切な構造化クエリを任意の適切な方式で生成することを企図する。
【0055】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、テキスト・クエリおよび構造化クエリに基づいて、構造化クエリの品質スコアを計算することができる。品質スコアは、例えば、信頼度スコア、確率、品質、ランキング、別の適切なタイプのスコア、またはこれらの任意の組合せとすることができる。限定によってではなく例として、構造化クエリの品質スコアsを決定するとき、ソーシャル・ネットワーキング・システム160は、照会元ユーザから受け取られたテキスト・クエリと、テキスト・クエリに応答して生成された構造化クエリとを考慮に入れることができる。よって、特定の検索クエリXおよび特定の構造化クエリQが与えられた場合の、特定の構造化クエリに対応する品質スコアsは、s=(X,Q)として計算されてよい。品質スコアは、様々な方法で、様々な要因を使用して計算され得る。限定によってではなく例として、構造化クエリの品質スコアは、生成コスト、正規化済みコスト、文法挿入コスト、エンティティ多数性コスト、言語モデル・スコア、エンティティ挿入コスト、他の適切な要因、またはこれらの任意の組合せ、のうちの1つまたは複数に部分的に基づいて計算されてよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構造化クエリの生成コストに基づいて、構造化クエリの品質スコアを計算することができる。コストは、構造化クエリを生成するのに使用された各クエリ・トークンに関連付けられ得る。構造化クエリを構築するのに使用されたクエリ・トークンが多いほど、クエリのコストは増加するものとすることができる。さらに、異なるクエリ・トークンおよびトークン・タイプは、異なるコストを有することができる。テキスト・クエリに応答して構造化クエリのセットを生成するとき、ソーシャル・ネットワーキング・システム160は、可能な最低の生成コストを有する構造化クエリを生成しようと試みることができる。これは、例えば、文法モデルから文法を選択するのと同様に、またはそれに関連して、行われてよい。より低コストのマルチパスを有する文法は、より低い生成コストを有する構造化クエリを生成することができ、最短経路の文法は、最低の生成コストを有する構造化クエリを生成する。本開示は特定の構造化クエリの品質スコアを特定の方式で決定することを記述するが、本開示は任意の適切な構造化クエリの品質スコアを任意の適切な方式で決定することを企図する。
【0056】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構造化クエリの正規化済みコストに基づいて、構造化クエリの品質スコアを計算することができる。照会元ユーザから受け取られたテキスト・クエリにおける語句の数(例えば、テキスト・クエリにおける識別されたNグラムの数)は、通常、このテキスト・クエリに応答して生成された構造化クエリにおけるクエリ・トークンの数に比例する。理想的には、Nグラムのクエリ・トークンに対する比は、1(1:1)に近づくべきである。よって、文法モデルがテキスト・クエリを解析し、予想よりも相当多いクエリ・トークンを有する構造化クエリを生成した場合、構造化クエリは低品質である可能性が高い。言い換えれば、テキスト・クエリに合致する文法を識別するために文法モデルがかなりの数のクエリ・トークンを挿入しなければならない場合は、この文法によって生成された構造化クエリは低品質である可能性が高い。同様に、テキスト・クエリが長いほど、テキスト・クエリに応答して生成される構造化クエリは、多くのクエリ・トークンを含みしたがって生成コストが高いことが予想される。よって、構造化クエリを生成するコストがテキスト・クエリの長さに基づいて正規化されてよく、したがって、コストがテキスト・クエリの長さに対して不釣合いである場合、高コストの構造化クエリは低品質として識別されてよい。高い正規化コストを有する構造化クエリは、それらが低品質であることを示し、したがって、高い正規化コストは、低い品質スコアと相関する。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、照会元ユーザから受け取られたテキスト・クエリにおけるNグラムの数を決定し、構造化クエリにおけるクエリ・トークンの数を決定することができる。次いで、ソーシャル・ネットワーキング・システム160は、テキスト・クエリにおけるNグラムの数の、構造化クエリにおけるクエリ・トークンの数に対する比に基づいて、正規化済みコストを計算することができる。限定によってではなく例として、テキスト・クエリ「friends stanford」に対して、ソーシャル・ネットワーキング・システム160は、
図4Bに示されるように、「Friends who go to Stanford University」などの構造化クエリを生成する場合がある。ソーシャル・ネットワーキング・システム160は、この場合、テキスト・クエリが2つのNグラム「friends」および「stanford」を有すると決定することができる。これらのNグラムが文法モデルによって解析されて、3つのクエリ・トークン[friends]、[who go to]、および[Stanford University]を有する構造化クエリが生成された。よって、文法モデルは、テキスト・クエリをストリングに合致させるために、単一のクエリ・トークン[who go to]を挿入した。クエリ・トークンのテキスト・クエリにおけるNグラムに対する比が相対的に低い(3:2)ので、この構造化クエリは、相対的に低い正規化済みコストを有することができ、このことは、これが相対的に高品質の構造化クエリであることを示す。限定によってではなく別の例として、テキスト・クエリ「friends stanford」に応答して、ソーシャル・ネットワーキング・システム160は、「People who are friends with people who go to Stanford University(スタンフォード大学に通う人々の友達である人々)」などの構造化クエリを生成する場合がある。この場合、構造化クエリは、前の例よりもかなり多くのクエリ・トークンを含む。この構造化クエリを生成するコストがテキスト・クエリにおけるNグラムの数に基づいて正規化されたとき、この構造化クエリは高い正規化済みコストを有することになり、このことは、この構造化クエリが低い品質スコアを有し、したがってフィルタによって除去されるべきであることを示す。本開示は構造化クエリの品質スコアを特定の方式で計算することを記述するが、本開示は構造化クエリの品質スコアを任意の適切な方式で計算することを企図する。
【0057】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構造化クエリの文法挿入コストに基づいて、構造化クエリの品質スコアを計算することができる。文法モデルを使用して構造化クエリを生成するとき、構造化クエリの生成のために挿入され
る文法トークンの数は、理想的には最小限に抑えられるべきである。よって、文法モデルがテキスト・クエリを解析して、予想よりもかなり多い文法トークンを有する構造化クエリを生成した場合、構造化クエリは低品質である可能性が高い。言い換えれば、テキスト・クエリに合致する文法を識別する(したがって構造化クエリを自然言語構文でレンダリングする)ために文法モデルが有意な数の文法トークンを挿入しなければならない場合は、この文法によって生成される構造化クエリは低品質である可能性が高い。高い文法挿入コスト(すなわち、文法トークンを構造化クエリに挿入することに関連付けられているコスト)を有する構造化クエリは、それらが低品質であることを示し、したがって、高い文法挿入コストは、低い品質スコアと相関する。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、照会元ユーザから受け取られたテキスト・クエリにおけるNグラムの数を決定し、構造化クエリにおける文法トークンおよびソーシャル・グラフ・トークンの数を決定することができる。次いで、ソーシャル・ネットワーキング・システム160は、Nグラムの数で正規化された、文法トークンの数のソーシャル・グラフ・トークンの数に対する比に基づいて、文法挿入コストを計算することができる。限定によってではなく例として、テキスト・クエリ「girls i have dated(私がデートしたことのある女の人)」に対して、ソーシャル・ネットワーキング・システム160は、「Female users I have been friends with who like the Dating app(私が友達だったことのある、デート・アプリに「いいね」の表明を示した女性ユーザ)」などの構造化クエリを生成する場合がある。ここで、Nグラム「girls」はクエリ・トークン[Female users]に合致し、Nグラム「dated」は[Dating app]に合致する(ただしこれ自体は低品質の合致であるかもしれない)。しかし、Nグラム「i have」を合致させるために、文法モデルは、文法トークン[I have been]、[friends with]、および[who like]を挿入しなければならない。よって、クエリを生成するために挿入された文法トークンの数が相対的に多いので、この構造化クエリには高い文法挿入コストが関連付けられ、このことは、これが相対的に低品質の構造化クエリであることを示す。本開示は構造化クエリの品質スコアを特定の方式で計算することを記述するが、本開示は構造化クエリの品質スコアを任意の適切な方式で計算することを企図する。
【0058】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構造化クエリのエンティティ多数性コストに基づいて、構造化クエリの品質スコアを計算することができる。文法モデルを使用して構造化クエリを生成するとき、ソーシャル・グラフ・トークンのうちの全てではないがいくつかは、ソーシャル・グラフ200のノードに対応すべきである。通常の非構造化テキスト・クエリを解析するとき、テキスト・クエリに基づいて生成される構造化クエリは、いくつかの文法トークンと、エッジ206またはエッジ・タイプに対するいくつかのソーシャル・グラフ・トークンと、ユーザ・ノード202またはコンセプト・ノード204に対するいくつかのソーシャル・グラフ・トークンとを含めた、様々なクエリ・トークンを含むことが予想される。しかし、解析によってノードに合致された語句が多すぎる場合、さもなければ、ノードに対応するクエリ・トークンを相対的に多数含む構造化クエリが解析によって生成された場合は、これらのノードのいくつかは、照会元ユーザの照会意図に合致しない誤った合致である可能性が高い。言い換えれば、構造化クエリの示唆が、過多なノードへの参照を含む場合、構造化クエリは低品質である可能性が高い。高いエンティティ多数性コスト(すなわち、他のクエリ・トークンに対して相対的な、ノードに対応するソーシャル・グラフ・トークンの挿入に関連付けられているコスト)を有する構造化クエリは、それらが低品質であることを示し、したがって、高いエンティティ多数性コストは、低い品質スコアと相関する。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構造化クエリにおける、ノードに対応するソーシャル・グラフ・トークンの数を決定することができる。次いで、ソーシャル・ネットワーキング・システム160は、構造化クエリにおけるソーシャル・グラフ・トー
クンの数に基づいて、エンティティ多数性コストを計算することができる。限定によってではなく例として、テキスト・クエリ「girls i have dated from stanford(私がデートしたことのある、スタンフォードからの女の人)」に対して、ソーシャル・ネットワーキング・システム160は、「People from
Stanford,California who like the’Girls I Have Dated’page(「私がデートしたことのある女の人」ページに「いいね」の表明を示した、カリフォルニア州スタンフォードからの人々)」などの構造化クエリを生成する場合がある。ここで、構造化クエリは、都市[Stanford,California]およびページ[Girls I Have Dated]のソーシャル・グラフ・トークンを含み、これらの各々は、ソーシャル・グラフ200の特定のコンセプト・ノード204に対応する。よって、Nグラム「from stanford」は、文法モデルによって、クエリ・トークン[People from][Stanford,California]に合致されており、Nグラム「girls i have dated」は、ページ[Girls I Have Dated]に対応するコンセプト・ノード204に対するソーシャル・グラフ・トークンに合致されている(これ自体は低品質の合致であるかもしれないことに留意されたい)。テキスト・クエリの長さに対して、構造化クエリは、ノードに対する多数のソーシャル・グラフ・トークンを含む。さらに、単一のトークン[Girls I Have Dated]が、非構造化テキスト・クエリの大きい部分に合致されている。よって、クエリを生成するために挿入される、ノードに対するソーシャル・グラフ・トークンの数が相対的に多いので、この構造化クエリには高いエンティティ多数性コストが関連し、このことは、これが相対的に低品質の構造化クエリであることを示す。本開示は構造化クエリの品質スコアを特定の方式で計算することを記述するが、本開示は構造化クエリの品質スコアを任意の適切な方式で計算することを企図する。
【0059】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、言語モデル・スコアに基づいて、構造化クエリの品質スコアを計算することができる。言語モデル・スコアは、構造化クエリのクエリ・トークンと比較された、元のテキスト・クエリの識別された語句に関して計算され得る。特定の構造化クエリを生成した後、ソーシャル・ネットワーキング・システム160は、構造化クエリにおける各クエリ・トークンおよびそれに近接するクエリ・トークン(例えば前または後のトークン)を、これらのクエリ・トークンに対応する元のテキスト・クエリからの語句のシーケンスに基づいて、分析することができる。次いで、トークンが元のテキスト・クエリからのシーケンスにおける近接トークンの1つまたは複数と共に現れる確率が分析されてよい。元のテキスト・クエリにおける近接クエリ・トークンと共に現れる可能性の低いクエリ・トークンを文法モデルが挿入した場合は、構造化クエリは低品質である可能性が高い。低い言語モデル・スコアを有する(すなわち、共に現れる確率の低いクエリ・トークンがある)構造化クエリは、それらが低品質であることを示し、したがって、低い言語モデル・スコアは、低い品質スコアと相関する。限定によってではなく例として、ソーシャル・ネットワーキング・システム160は、特定のクエリ・トークンが元のクエリからの特定の近接する語句とペアにされる確率pを決定することができる。この計算は、元のテキスト・クエリにおける語句のシーケンスを考慮に入れることができる。よって、特定の解析が特定のクエリ・トークン・ペアリングに対応する確率は、p=(t
1|t
2,...,t
x)として計算されてよく、ここで、t
1は分析対象のクエリ・トークンであり、t
2,...,t
xは、元のテキスト・クエリにおける近接クエリ・トークン2〜xである。次いで、各クエリ・トークンについての個別の確率を使用して、構造化クエリの全体的な言語モデル・スコアを決定することができる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構造化クエリの各クエリ・トークンにつき、そのクエリ・トークンが元のテキスト・クエリにおける近接クエリ・トークンと共に現れる確率を決定することができる。次いで、ソーシャル・ネットワーキング・システム160は、クエリ・トークンについての確率に
基づいて、言語モデル・スコアを計算することができる。限定によってではなく例として、テキスト・クエリ「girls i have dated」に対して、ソーシャル・ネットワーキング・システム160は、「Female users I have who use the Dating app(デート・アプリを使用する、私が有する女性ユーザ)」などの構造化クエリを生成する場合があり、Dating appは、エンティティタイプ[application]のオンライン・ソーシャル・ネットワークに関連付けられている仮定のアプリケーションである(すなわち、これは非終端トークン[application]に対応する)。クエリ・トークン[Dating app]についての確率を計算するために、次いでソーシャル・ネットワーキング・システム160は、元のテキスト・クエリにおける近接する語句に対応する、構造化クエリからの他のクエリ・トークンを分析することができる。この場合、ソーシャル・ネットワーキング・システム160は、クエリ・トークン[Female]、[I]、および[have](元のテキスト・クエリからの語句「girls」、「i」、および「have」にそれぞれ対応する)を、クエリ・トークン[Dating app]と共に使用する確率(または、非終端トークン[application]を使用する確率)を決定することができる。この確率は、p=([Dating app]|([Female],[I],[have]))として計算されてよく、または、前のクエリ・トークン[Female],[I],および[have]が与えられた場合にクエリ・トークン[Dating app]を挿入する確率として計算されてよい(別法として、確率は、p=([application]|([Female],[I],[have]))として計算されてもよい)。この場合、クエリ・トークン[Female]、[I]、および[have]がソーシャル・グラフ・トークン[Dating app]の前に使用される確率は低い可能性があり、よって、この構造化クエリは、相対的に低い言語モデル・スコアを有することになり、このことは、これが相対的に低品質の構造化クエリであることを示す。本開示は構造化クエリの品質スコアを特定の方式で計算することを記述するが、本開示は構造化クエリの品質スコアを任意の適切な方式で計算することを企図する。
【0060】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構造化クエリのエンティティ挿入コストに基づいて、構造化クエリの品質スコアを計算することができる。特定のテキスト・クエリを解析するとき、テキスト・クエリにおける語句(すなわち、テキスト・クエリにおけるNグラム)は、生成された構造化クエリにおけるクエリ・トークンにできるだけ近く合致すべきである。よって、語句の変更または語句の追加は、その特定のクエリ・トークンを生成するコストを増加させ、したがって、そのような修正されたトークンを含む構造化クエリは、低品質である可能性がある。高いエンティティ挿入コスト(すなわち、テキスト・クエリからの語句に挿入または修正を加えて特定のクエリ・トークンに合致させることに関連付けられているコスト)を有する構造化クエリは、それらが低品質である可能性があることを示し、したがって、高いエンティティ挿入コストは、低い品質スコアと相関する。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構造化クエリにおける各ソーシャル・グラフ・トークンにつき、ソーシャル・グラフ・トークンをそれに対応するNグラムと合致させるために文法によって挿入された語句の数を決定することができる。限定によってではなく例として、テキスト・クエリ「girls who like dating(デートに「いいね」の表明を示した女の人)」に対して、ソーシャル・ネットワーキング・システム160は、構造化クエリ「Female users who like the ’Dating in
Palo Alto’app(「パロアルトでデート」アプリに「いいね」の表明を示した女性ユーザ)」を生成する場合がある。よって、テキスト・クエリからの語句「dating」が文法モデルによって解析されて、[Dating in Palo Alto]のクエリ・トークン(これは、アプリについての特定のコンセプト・ノード204に対応し得る)に合致された。しかし、語句「dating」をこのクエリ・トークンに合致させるために、ソーシャル・ネットワーキング・システム160は、クエリ・トークン
[Dating in Palo Alto]と合致するように追加の語句「in Palo Alto」を挿入しなければならなかった。よって、テキスト・クエリからのNグラムを構造化クエリにおけるクエリ・トークンに合致させるために文法モデルによって挿入された語句の数が相対的に多いので、この構造化クエリには高いエンティティ挿入コストが関連し、このことは、これが相対的に低品質の構造化クエリであることを示す。本開示は構造化クエリの品質スコアを特定の方式で計算することを記述するが、本開示は構造化クエリの品質スコアを任意の適切な方式で計算することを企図する。
【0061】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構造化クエリの1つまたは複数を照会元ユーザに送ることができる。限定によってではなく例として、構造化クエリが生成された後、ソーシャル・ネットワーキング・システム160は、構造化クエリの1つまたは複数を、応答(AJAXまたは他の技法を利用できる)としてユーザのクライアント・システム130に送ることができ、この応答は、例えば、参照されるソーシャル・グラフ要素の名前(名前ストリング)、他のクエリ制限(例えばブール演算子など)、ならびに、場合によっては、参照されるソーシャル・グラフ要素に関連付けられている他のメタデータを含むことができる。照会元ユーザのクライアント・システム130上のウェブ・ブラウザ132は、
図4A〜
図4Bに示されるように、送られた構造化クエリをドロップダウン・メニュー300において表示することができる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、フィルタリング後の第1のセットからの構造化クエリの1つまたは複数を、第1の/照会元ユーザに送ることができる。第1のユーザに送られる各構造化クエリは、しきい値品質スコア以上の品質スコアを有するものとすることができる。このようにすれば、低品質の構造化クエリがフィルタリングによって除去される(すなわち、ユーザに対して生成される構造化クエリのセットから除去される)ことが可能である。次いで、フィルタリング後に残った構造化クエリ(もしあれば)は、ランク付けされてよく、次いでこれらの1つまたは複数が照会元ユーザに送られてよい。特定の実施形態では、フィルタリング後に残った構造化クエリがしきい値数よりも少ない場合は、ソーシャル・ネットワーキング・システム160は、テキスト・クエリに基づいてウェブ検索クエリを生成することができる。このようにすれば、文法モデルが関連性のあるクエリを作成できなかった場合でも、照会元ユーザには、検索を実施するためのオプションがなお残される。限定によってではなく例として、テキスト・クエリ「girls i have dated」に対して、ソーシャル・ネットワーキング・システム160は、示唆クエリとして照会元ユーザに送るのに十分な品質の構造化クエリを、ごく少数しか、さらには1つも生成しない場合がある。前述のように、このテキスト・クエリの解析は様々な低品質の構造化クエリを作成することがあり、これらの各々は、ソーシャル・ネットワーキング・システム160によってフィルタリングによって除去されてよい。したがって、ソーシャル・ネットワーキング・システム160は、代わりに、例えば「’girls i have dated’をウェブで検索する」など、ウェブ検索を実施するための示唆クエリを送ることができる。ユーザがこの示唆クエリを選択した場合、クエリは適切なAPIを通じてウェブ検索エンジン(例えば、BING、GOOGLEなど)に送信されてよく、そこで標準的なストリングマッチング検索が実施されてよい。次いで、結果が、照会元ユーザへの表示に向けてソーシャル・ネットワーキング・システム160に(例えばAPIを通じて)送り返されてよい。別法として、照会元ユーザがウェブ検索オプションを選択したとき、ユーザのウェブ・ブラウザ132が検索エンジンのウェブページにリダイレクトされてもよい。特定の実施形態では、送られたクエリは、例えば前述のように前に決定されたランクなどに基づいて、ランク付けされた順序で照会元ユーザに提示されてよい。よりよいランキングを有する構造化クエリは、より目立つ位置で提示されるものとすることができる。さらに、特定の実施形態では、しきい値ランクよりも上の構造化クエリのみが、照会元ユーザに対して送信または表示されてもよい。限定によってではなく例として、
図4A〜
図4Bに示されるように、構造化クエリは、ドロップダウン・メニュー300において照会元ユーザに提示されてよく、高くラン
ク付けされる構造化クエリほどメニューの上部に提示され、低くランク付けされる構造化クエリほど、ランクの高い順にメニューにおいて下に提示されてよい。
図4A〜
図4Bに示される例では、上位にランク付けされる7つのクエリのみが、ユーザに対して送信および表示される。しかし、これらの例で、ユーザに送るために利用可能な構造化クエリが7つ未満である場合は(例えば、いくつかが低品質によりフィルタリングによって除去されたため)、利用可能な構造化クエリのみが送られてよい。さらに、構造化クエリが7つ未満のとき、ソーシャル・ネットワーキング・システム160は、照会元ユーザに送られる示唆クエリのセットに、ウェブ検索クエリの示唆を含めることができる。特定の実施形態では、構造化クエリにおける1つまたは複数の参照が、特定のソーシャル・グラフ要素に対するその対応を示すために強調表示されてよい(例えば、輪郭付き、下線付き、丸囲み、太字、イタリック体、色付き、点灯、オフセット、大文字)。限定によってではなく例として、
図4A〜
図4Bに示されるように、「Stanford University」および「Stanford,California」への参照が、構造化クエリにおいて強調表示(輪郭付け)されて、それが特定のコンセプト・ノード204に対応することが示される。同様に、ドロップダウン・メニュー300において提示される構造化クエリにおける「Friends」、「like」、「work at」、および「go to」への参照もまた強調表示されて、それらが特定のエッジ206に対応することが示されてよい。本開示は特定の構造化クエリを特定の方式で送ることを記述するが、本開示は任意の適切な構造化クエリを任意の適切な方式で送ることを企図する。
【0062】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構造化クエリのうちの1つの選択を照会元ユーザから受け取ることができる。別法として、ソーシャル・ネットワーキング・システム160は、いくつかのコンテキストで、システムによって自動的に選択されたクエリ(例えばデフォルト選択)として、構造化クエリを受け取ることもできる。受け取られた構造化クエリにおいて参照されるノードおよびエッジは、選択されたノードおよび選択されたエッジとしてそれぞれ参照され得る。限定によってではなく例として、照会元ユーザのクライアント・システム130上のウェブ・ブラウザ132は、
図4A〜
図4Bに示されるように、送信された構造化クエリをドロップダウン・メニュー300において表示することができ、次いでユーザは、クリックするかまたは他の方法で選択して(例えば、単に自分のキーボード上で「enter」をキー入力することによって)、ユーザがソーシャル・ネットワーキング・システム160に実行させたい特定の構造化クエリを示すことができる。特定の構造化クエリが選択されると、ユーザのクライアント・システム130は、選択された特定の構造化クエリを実行するよう、ソーシャル・ネットワーキング・システム160に呼出しを行うかまたは他の方法で命令することができる。限定によってではなく例として、特定の構造化クエリの選択に応答して、ソーシャル・ネットワーキング・システム160は、構造化クエリに基づいてクエリ・コマンドを生成することができ、次いで、このクエリ・コマンドは1つまたは複数のデータ・ストア164に送られて、クエリ・コマンドの制約に合致するコンテンツ・オブジェクトが検索されてよい。本開示は特定の構造化クエリの選択を特定の方式で受け取ることを記述するが、本開示は任意の適切な構造化クエリの選択を任意の適切な方式で受け取ることを企図する。
【0063】
図5は、オンライン・ソーシャル・ネットワーク上の構造化クエリの示唆をフィルタリングするための例示的な方法500を示す。方法はステップ510で開始することができ、ソーシャル・ネットワーキング・システム160は、複数のノードと、ノード同士をつなげる複数のエッジ206とを備える、ソーシャル・グラフ200にアクセスすることができる。ノードは、第1のノード202と、複数の第2のノード(1つまたは複数のユーザ・ノード202、コンセプト・ノード204、またはこれらの任意の組合せ)を含むことができる。ステップ520で、ソーシャル・ネットワーキング・システム160は、非構造化テキスト・クエリを第1のユーザから受け取ることができる。テキスト・クエリは
、1つまたは複数のNグラムを含むことができる。ステップ530で、ソーシャル・ネットワーキング・システム160は、テキスト・クエリに基づいて、構造化クエリの第1のセットを生成することができる。第1のセットにおける各構造化クエリは、文脈自由文法モデルの識別された文法に対応するものとすることができる。各構造化クエリはまた、1つもしくは複数の文法トークン、または1つもしくは複数のソーシャル・グラフ・トークンを含むことができる。各ソーシャル・グラフ・トークンは、複数のノードのうちの1つのノード、または複数のエッジのうちの1つのエッジに対応するものとすることができる。ステップ540で、ソーシャル・ネットワーキング・システム160は、各構造化クエリにつき、テキスト・クエリおよび構造化クエリに基づいて品質スコアを計算することができる。品質スコアは、本明細書に記載の任意の適切な方式で計算されてよい。ステップ550で、ソーシャル・ネットワーキング・システム160は、第1のセットをフィルタリングして、しきい値品質スコア未満の品質スコアを有する各構造化クエリを第1のセットから除去することができる。ステップ560で、ソーシャル・ネットワーキング・システム160は、フィルタリング後の第1のセットからの構造化クエリの1つまたは複数を、第1のユーザに送ることができる。第1のユーザに送られる各構造化クエリは、しきい値品質スコア以上の品質スコアを有するものとすることができる。特定の実施形態は、適切な場合に、
図5の方法の1つまたは複数のステップを繰り返すことができる。本開示は
図5の方法の特定のステップが特定の順序で発生するものとして記述および図示するが、本開示は
図5の方法の任意の適切なステップが任意の適切な順序で発生することを企図する。さらに、本開示は特定のコンポーネント、デバイス、またはシステムが
図5の方法の特定のステップを実施することを記述および図示するが、本開示は任意の適切なコンポーネント、デバイス、またはシステムの任意の適切な組合せが
図5の方法の任意の適切なステップを実施することを企図する。
【0064】
システムおよび方法
図6は、例示的なコンピュータ・システム600を示している。特定の実施形態においては、1つまたは複数のコンピュータ・システム600が、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を実行する。特定の実施形態においては、1つまたは複数のコンピュータ・システム600が、本明細書において記述されているまたは示されている機能を提供する。特定の実施形態においては、1つまたは複数のコンピュータ・システム600上で稼働するソフトウェアが、本明細書において記述されているもしくは示されている1つもしくは複数の方法の1つもしくは複数の工程を実行し、または本明細書において記述されているもしくは示されている機能を提供する。特定の実施形態は、1つまたは複数のコンピュータ・システム600の1つまたは複数の部分を含む。本明細書においては、コンピュータ・システムへの言及は、適切な場合には、コンピューティング・デバイスを包含することができる。その上、コンピュータ・システムへの言及は、適切な場合には、1つまたは複数のコンピュータ・システムを包含することができる。
【0065】
本開示は、任意の適切な数のコンピュータ・システム600を想定している。本開示は、任意の適切な物理的な形態を取るコンピュータ・システム600を想定している。限定ではなく、例として、コンピュータ・システム600は、組み込みコンピュータ・システム、システムオンチップ(SOC)、シングルボード・コンピュータ・システム(SBC)(たとえば、コンピュータオンモジュール(COM)もしくはシステムオンモジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、対話キオスク、メインフレーム、コンピュータ・システムのメッシュ、モバイル電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらのうちの複数の組合せであることが可能である。適切な場合には、コンピュータ・システム600は、1つもしくは複数のコンピュータ・システム600を含むこと、単一型もしくは分散型であること、複数のロケーションにわたる
こと、複数のマシンにわたること、複数のデータセンターにわたること、または、クラウド(1つもしくは複数のネットワーク内の1つもしくは複数のクラウド・コンポーネントを含むことができる)内に常駐することが可能である。適切な場合には、1つまたは複数のコンピュータ・システム600は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を、実質的な空間上のまたは時間上の制限を伴わずに実行することができる。限定ではなく、例として、1つまたは複数のコンピュータ・システム600は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程をリアルタイムで、またはバッチ・モードで実行することができる。1つまたは複数のコンピュータ・システム600は、適切な場合には、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を別々の時点で、または別々のロケーションで実行することができる。
【0066】
特定の実施形態においては、コンピュータ・システム600は、プロセッサ602、メモリ604、ストレージ606、入力/出力(I/O)インタフェース608、通信インタフェース610、およびバス612を含む。本開示は、特定の数の特定のコンポーネントを特定の構成で有する特定のコンピュータ・システムについて記述し、示しているが、本開示は、任意の適切な数の任意の適切なコンポーネントを任意の適切な構成で有する任意の適切なコンピュータ・システムを想定している。
【0067】
特定の実施形態においては、プロセッサ602は、コンピュータ・プログラムを構成している命令などの命令を実行するためのハードウェアを含む。限定ではなく、例として、命令を実行するために、プロセッサ602は、内部レジスタ、内部キャッシュ、メモリ604、またはストレージ606から命令を取り出し(またはフェッチし)、それらの命令をデコードして実行し、次いで、1つまたは複数の結果を内部レジスタ、内部キャッシュ、メモリ604、またはストレージ606に書き込むことができる。特定の実施形態においては、プロセッサ602は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ602を想定している。限定ではなく、例として、プロセッサ602は、1つまたは複数の命令キャッシュ、1つまたは複数のデータ・キャッシュ、および1つまたは複数の変換ルックアサイド・バッファ(TLB)を含むことができる。命令キャッシュ内の命令は、メモリ604またはストレージ606内の命令のコピーであることが可能であり、命令キャッシュは、プロセッサ602によるそれらの命令の取り出しをスピードアップすることができる。データ・キャッシュ内のデータは、プロセッサ602において実行される命令が機能する際に基づくメモリ604もしくはストレージ606内のデータのコピー、プロセッサ602において実行される後続の命令によるアクセスのための、もしくはメモリ604もしくはストレージ606への書き込みのためのプロセッサ602において実行された以前の命令の結果、またはその他の適切なデータであることが可能である。データ・キャッシュは、プロセッサ602による読み取りオペレーションまたは書き込みオペレーションをスピードアップすることができる。TLBは、プロセッサ602のための仮想アドレス変換をスピードアップすることができる。特定の実施形態においては、プロセッサ602は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ602を想定している。適切な場合には、プロセッサ602は、1つまたは複数の演算ロジック・ユニット(ALU)を含むこと、マルチコア・プロセッサであること、または1つもしくは複数のプロセッサ602を含むことが可能である。本開示は、特定のプロセッサについて記述し、示しているが、本開示は、任意の適切なプロセッサを想定している。
【0068】
特定の実施形態においては、メモリ604は、プロセッサ602が実行するための命令、またはプロセッサ602が機能する際に基づくデータを記憶するためのメイン・メモリ
を含む。限定ではなく、例として、コンピュータ・システム600は、命令をストレージ606または別のソース(たとえば、別のコンピュータ・システム600など)からメモリ604にロードすることができる。次いでプロセッサ602は、命令をメモリ604から内部レジスタまたは内部キャッシュにロードすることができる。命令を実行するために、プロセッサ602は、命令を内部レジスタまたは内部キャッシュから取り出し、それらの命令をデコードすることができる。命令の実行中または実行後に、プロセッサ602は、1つまたは複数の結果(それらは、中間の結果または最終的な結果である場合がある)を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ602は、それらの結果のうちの1つまたは複数をメモリ604に書き込むことができる。特定の実施形態においては、プロセッサ602は、(ストレージ606またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ604内の命令のみを実行し、(ストレージ606またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ604内のデータ上でのみ機能する。1つまたは複数のメモリ・バス(それらは各々、アドレス・バスおよびデータ・バスを含むことができる)は、プロセッサ602をメモリ604に結合することができる。バス612は、以降で記述されているような1つまたは複数のメモリ・バスを含むことができる。特定の実施形態においては、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ602とメモリ604との間に常駐し、プロセッサ602によって要求されるメモリ604へのアクセスを容易にする。特定の実施形態においては、メモリ604は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、適切な場合には、揮発性メモリであることが可能である。適切な場合には、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であることが可能である。その上、適切な場合には、このRAMは、シングルポートRAMまたはマルチポートRAMであることが可能である。本開示は、任意の適切なRAMを想定している。メモリ604は、適切な場合には、1つまたは複数のメモリ604を含むことができる。本開示は、特定のメモリについて記述し、示しているが、本開示は、任意の適切なメモリを想定している。
【0069】
特定の実施形態においては、ストレージ606は、データまたは命令のためのマス・ストレージを含む。限定ではなく、例として、ストレージ606は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス(USB)ドライブ、またはこれらのうちの複数の組合せを含むことができる。ストレージ606は、適切な場合には、取り外し可能なまたは取り外し不能な(すなわち、固定された)媒体を含むことができる。ストレージ606は、適切な場合には、コンピュータ・システム600の内部または外部に存在することが可能である。特定の実施形態においては、ストレージ606は、不揮発性のソリッドステート・メモリである。特定の実施形態においては、ストレージ606は、読み取り専用メモリ(ROM)を含む。適切な場合には、このROMは、マスクプログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書替え可能ROM(EAROM)、またはフラッシュ・メモリ、またはこれらのうちの複数の組合せであることが可能である。本開示は、任意の適切な物理的な形態を取るマス・ストレージ606を想定している。ストレージ606は、適切な場合には、プロセッサ602とストレージ606との間における通信を容易にする1つまたは複数のストレージ・コントロール・ユニットを含むことができる。適切な場合には、ストレージ606は、1つまたは複数のストレージ606を含むことができる。本開示は、特定のストレージについて記述し、示しているが、本開示は、任意の適切なストレージを想定している。
【0070】
特定の実施形態においては、I/Oインタフェース608は、コンピュータ・システム600と1つまたは複数のI/Oデバイスとの間における通信のための1つまたは複数の
インタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム600は、適切な場合には、これらのI/Oデバイスのうちの1つまたは複数を含むことができる。これらのI/Oデバイスのうちの1つまたは複数は、人とコンピュータ・システム600との間における通信を可能にすることができる。限定ではなく、例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、映像カメラ、別の適切なI/Oデバイス、またはこれらのうちの複数の組合せを含むことができる。I/Oデバイスは、1つまたは複数のセンサを含むことができる。本開示は、任意の適切なI/Oデバイス、およびそれらのI/Oデバイスのための任意の適切なI/Oインタフェース608を想定している。適切な場合には、I/Oインタフェース608は、プロセッサ602がこれらのI/Oデバイスのうちの1つまたは複数を駆動することを可能にする1つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。I/Oインタフェース608は、適切な場合には、1つまたは複数のI/Oインタフェース608を含むことができる。本開示は、特定のI/Oインタフェースについて記述し、示しているが、本開示は、任意の適切なI/Oインタフェースを想定している。
【0071】
特定の実施形態においては、通信インタフェース610は、コンピュータ・システム600と、1つもしくは複数のその他のコンピュータ・システム600または1つもしくは複数のネットワークとの間における通信(たとえば、パケットベースの通信など)のための1つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、通信インタフェース610は、イーサネット(登録商標)もしくはその他の有線ベースのネットワークと通信するためのネットワーク・インタフェース・コントローラ(NIC)もしくはネットワーク・アダプタ、またはWI−FIネットワークなどのワイヤレス・ネットワークと通信するためのワイヤレスNIC(WNIC)もしくはワイヤレス・アダプタを含むことができる。本開示は、任意の適切なネットワーク、およびそのネットワークのための任意の適切な通信インタフェース610を想定している。限定ではなく、例として、コンピュータ・システム600は、アド・ホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、またはインターネットの1つまたは複数の部分、またはこれらのうちの複数の組合せと通信することができる。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、有線またはワイヤレスであることが可能である。例として、コンピュータ・システム600は、ワイヤレスPAN(WPAN)(たとえば、ブルートゥースWPANなど)、WI−FIネットワーク、WI−MAXネットワーク、セルラー電話ネットワーク(たとえば、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM(登録商標))ネットワークなど)、またはその他の適切なワイヤレス・ネットワーク、またはこれらのうちの複数の組合せと通信することができる。コンピュータ・システム600は、適切な場合には、これらのネットワークのうちの任意のネットワークのための任意の適切な通信インタフェース610を含むことができる。通信インタフェース610は、適切な場合には、1つまたは複数の通信インタフェース610を含むことができる。本開示は、特定の通信インタフェースについて記述し、示しているが、本開示は、任意の適切な通信インタフェースを想定している。
【0072】
特定の実施形態においては、バス612は、コンピュータ・システム600のコンポーネント同士を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、バス612は、アクセラレイティッド・グラフィックス・ポート(AGP)もしくはその他のグラフィックス・バス、エンハンスト・インダストリー・スタンダード・アーキテクチャ(EISA)バス、フロントサイド・バス(FSB)、ハイパートランスポート(HT)インターコネクト、インダストリー・スタンダード・アーキテ
クチャ(ISA)バス、インフィニバンド・インターコネクト、ローピンカウント(LPC)バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、PCIエクスプレス(PCIe)バス、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション・ローカル(VLB)バス、または別の適切なバス、またはこれらのうちの複数の組合せを含むことができる。バス612は、適切な場合には、1つまたは複数のバス612を含むことができる。本開示は、特定のバスについて記述し、示しているが、本開示は、任意の適切なバスまたはインターコネクトを想定している。
【0073】
本明細書においては、1つまたは複数の非一時的コンピュータ可読記憶媒体は、適切な場合には、1つもしくは複数の半導体ベースのもしくはその他の集積回路(IC)(たとえば、フィールドプログラマブル・ゲート・アレイ(FPGA)もしくは特定用途向け集積回路(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはドライブ、その他の任意の適切な非一時的コンピュータ可読記憶媒体、またはこれらのうちの複数の組合せを含むことができる。非一時的コンピュータ可読記憶媒体は、適切な場合には、揮発性、不揮発性、または揮発性と不揮発性の組合せであることが可能である。
【0074】
本明細書においては、「または(もしくは)」は、包含的であり、排他的ではない(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AまたはB」は、「A、B、またはその両方」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。その上、「および(ならびに)」は、包括的および個別的の両方である(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AおよびB」は、「まとめて、または個別に、AおよびB」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。
【0075】
本開示の範囲は、当技術分野における標準的な技術者が理解するであろう、本明細書において記述されているまたは示されている例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書において記述されているまたは示されている例示的な実施形態に限定されない。その上、本開示は、本明細書における各々の実施形態を、特定のコンポーネント、要素、機能、オペレーション、または工程を含むものとして記述し、示しているが、これらの実施形態のいずれも、当技術分野における標準的な技術者が理解するであろう、本明細書の任意の箇所において記述されているまたは示されているコンポーネント、要素、機能、オペレーション、または工程のうちの任意のものの任意の組合せまたは順列を含むことができる。さらに、特定の機能を実行するように適合されている、実行するようにアレンジされている、実行することができる、実行するように構成されている、実行することを可能にされている、実行するように機能できる、または実行するように機能する装置もしくはシステム、または装置もしくはシステムのコンポーネントへの添付の特許請求の範囲における言及は、その装置、システム、コンポーネント、またはその特定の機能が、アクティブ化されているか否か、オンにされているか否か、またはロック解除されているか否かを問わず、その装置、システム、またはコンポーネントが、そうするように適合されている、そうするようにアレンジされている、そうすることができる、そうするように構成されている、そうすることを可能に
されている、そうするように機能できる、またはそうするように機能する限り、その装置、システム、コンポーネントを包含する。