(58)【調査した分野】(Int.Cl.,DB名)
クライアントコンピューティングデバイスおよびサービスプロバイダデバイス間のパケットベースデータ通信の識別子依存オペレーション処理を提供するためのシステムであって、
データ処理システムを備え、前記データ処理システムは、
デバイス識別子を有するクライアントコンピューティングデバイスのセンサーによって検出される入力オーディオ信号を含むデータパケットを、前記データ処理システムのインターフェースを介して受信することと、
前記入力オーディオ信号を解析して要求を識別することと、
前記要求に応答して、前記要求を実行するために前記サービスプロバイダデバイスを選択することと、
前記クライアントコンピューティングデバイスに対する仮想識別子を生成し、前記仮想識別子を前記クライアントコンピューティングデバイスの前記デバイス識別子にリンクすることと、
ペイロードセクションで前記仮想識別子を搬送するデータパケットを前記サービスプロバイダデバイスにルーティングして、前記サービスプロバイダデバイスに、前記仮想識別子に基づいて前記クライアントコンピューティングデバイスに対する前記要求を実行するためのアカウントを確立させることと
を行うために1つまたは複数のプロセッサを備える、システム。
前記サービスプロバイダデバイスに対して確立されたアカウント識別子を記録するデータベースにおいて、前記クライアントコンピューティングデバイスの前記デバイス識別子の探索を実行し、
前記探索に基づき、前記デバイス識別子が存在しないと決定し、
存在しないとの前記決定に応答して前記仮想識別子を生成する
ための前記データ処理システムを備える、請求項1に記載のシステム。
前記サービスプロバイダデバイスに命令を提供し、前記サービスプロバイダデバイスに、ある期間の満了に応答して前記クライアントコンピューティングデバイスに対する前記アカウントを削除させる
ための前記データ処理システムを備える、請求項1に記載のシステム。
前記サービスプロバイダデバイスが前記仮想識別子を用いて前記アカウントを確立し、前記クライアントコンピューティングデバイスによりオペレーションを実行したとの指示を、前記サービスプロバイダデバイスから受信する
ための前記データ処理システムを備える、請求項1に記載のシステム。
クライアントコンピューティングデバイスおよびサービスプロバイダデバイス間のパケットベースデータ通信の識別子依存オペレーション処理を提供するための方法であって、
1つまたは複数のプロセッサによって、デバイス識別子を有するクライアントコンピューティングデバイスのセンサーによって検出される入力オーディオ信号を含むデータパケットを、インターフェースを介して受信するステップと、
前記1つまたは複数のプロセッサによって、前記入力オーディオ信号を解析して要求を識別するステップと、
前記1つまたは複数のプロセッサによって、前記要求に応答して、前記要求を実行するために前記サービスプロバイダデバイスを選択するステップと、
前記1つまたは複数のプロセッサによって、前記クライアントコンピューティングデバイスに対する仮想識別子を生成し、前記仮想識別子を前記クライアントコンピューティングデバイスの前記デバイス識別子にリンクするステップと、
前記1つまたは複数のプロセッサによって、ペイロードセクションで前記仮想識別子を搬送するデータパケットを前記サービスプロバイダデバイスにルーティングして、前記サービスプロバイダデバイスに、前記仮想識別子に基づいて前記クライアントコンピューティングデバイスに対する前記要求を実行するためのアカウントを確立させるステップと
を含む方法。
前記仮想識別子の生成の前に、前記デバイス識別子が前記サービスプロバイダデバイスに対して確立されたいかなるアカウントにも関連付けられていないと決定するステップと、
前記アカウントが確立されていないとの前記決定に応答して前記仮想識別子を生成する
ステップと
を含む、請求項11に記載の方法。
前記サービスプロバイダデバイスに対して確立されたアカウント識別子を記録するデータベースにおいて、前記クライアントコンピューティングデバイスの前記デバイス識別子の探索を実行するステップと、
前記探索に基づき、前記デバイス識別子が存在しないと決定するステップと、
存在しないとの前記決定に応答して前記仮想識別子を生成するステップと
を含む、請求項11に記載の方法。
前記サービスプロバイダデバイスに命令を提供し、前記サービスプロバイダデバイスに、ある期間の満了に応答して前記クライアントコンピューティングデバイスに対する前記アカウントを削除させるステップ
含む、請求項11に記載の方法。
前記サービスプロバイダデバイスが前記仮想識別子を用いて前記アカウントを確立し、前記クライアントコンピューティングデバイスによりオペレーションを実行したとの指示を、前記サービスプロバイダデバイスから受信するステップ
を含む、請求項11に記載の方法。
【発明を実施するための形態】
【0009】
次に以下に、音声作動のコンピュータネットワーク環境内のシーケンス依存オペレーションの処理を最適化するための方法、装置、およびシステムに関係する様々な概念ならびに方法、装置、およびシステムの実装のより詳細な説明を示す。上で導入され、以下でより詳しく説明される様々な概念は、多数の方法のうちのどれかで実装され得る。
【0010】
本開示のシステムおよび方法は、一般的に、音声作動のコンピュータネットワーク環境内のクライアントコンピューティングデバイスとサービスプロバイダデバイスとの間はデータパケット伝送の効率、信頼性、および操作性を改善するデータ処理システムに関係する。たとえば、データ処理システムは、サービスプロバイダデバイスがクライアントコンピューティングデバイスと通信し、要求されたサービスをクライアントコンピューティングデバイスに提供することができるようにサービスプロバイダデバイスのデータベース内にクライアントコンピューティングデバイスに関連付けられているレコードまたはアカウントを作成することを円滑にすることができる。また、クライアントコンピューティングデバイスの代わりにレコードまたはアカウントを作成することで、サービスプロバイダデバイスとクライアントコンピューティングデバイスとの間で通信する必要性をなくして要求されたサービスを提供する前にレコードまたはアカウントを確立することによって効率を改善し、リソース使用を低減する。選択されたオペレーションに対応するデータパケットまた他のプロトコルベースの信号は、複数のコンピューティングデバイス間でコンピュータネットワークを通じてルーティングされ得る。データ処理システムは、ユーザコマンドまたは要求を表すオーディオ信号を受信し、特定の要求およびキーワードを識別することができる。要求またはキーワードに基づき、データ処理システムは、クライアントコンピューティングデバイスに代替サービスオプションを表すコンテンツアイテムを提示することができる。処理システムは、コンピューティングデバイスが代替サービスオプションを選択しているかどうかを決定し、代替サービスオプションに関連付けられているサービスプロバイダデバイスがクライアントコンピューティングデバイスに関連付けられているレコードまたはアカウントを含むかどうかをさらに決定することができる。レコードまたはアカウントが存在しないことで、サービスプロバイダデバイスがクライアントコンピューティングデバイスと通信し、要求されたサービスをクライアントコンピューティングデバイスに提供することを防ぐことができる。
【0011】
音声作動のコンピュータネットワーク環境内のクライアントコンピューティングデバイスとサービスプロバイダデバイスとの間のデータパケット伝送の効率、信頼性、および操作性を改善するために、本明細書で説明されているシステムおよび方法は、サービスプロバイダデバイスによりクライアントコンピューティングデバイスに関連付けられているレコードまたはアカウントが存在しないことを検出した後、クライアントコンピューティングデバイスの代わりにデータパケットベースの通信セッションを確立し、クライアントコンピューティングデバイスからの介入なしでアカウントを作成することをサービスプロバイダデバイスに指令することができるデータ処理システムを含み得る。データ処理システムは、レコードまたはアカウントを生成するためにサービスプロバイダデバイスに送信され得る、クライアントコンピューティングデバイスを表す仮想識別子(または仮想トークン)を生成することができる。クライアントコンピューティングデバイスに対するレコードまたはアカウントが作成された後、サービスプロバイダは、クライアントコンピューティングデバイスとの安全な通信を確立し、要求されたサービスを提供することができる。
【0012】
図1は、音声作動のデータパケット(または他のプロトコル)ベースのコンピュータネットワーク環境におけるシーケンス依存オペレーションの処理を最適化するための例示的なシステム100を示す。システム100は、少なくとも1つのデータ処理システム105を備え得る。データ処理システム105は、少なくとも1つのプロセッサを有する少なくとも1つのサーバを備え得る。たとえば、データ処理システム105は、少なくとも1つのデータセンターまたはサーバファーム内に配置されている複数のサーバを備え得る。データ処理システム105は、オーディオ入力信号から、要求および要求に関連付けられているトリガーキーワードを決定することができる。要求およびトリガーキーワードに基づき、データ処理システム105は、複数のシーケンス依存オペレーションを含むスレッドを決定するか、または選択することができ、コンテンツアイテムを選択する(および本明細書で説明されているような他のアクションを開始する)ことができる。コンテンツアイテムは、レンダリングされたときにオーディオ出力または音波をもたらす1つまたは複数のオーディオファイルを含み得る。コンテンツアイテムは、オーディオコンテンツに加えて他のコンテンツ(たとえば、テキスト、ビデオ、または画像コンテンツ)を含むことができる。
【0013】
データ処理システム105は、複数の論理的にグループ化されたサーバを含むものとしてよく、分散コンピューティング技術を利用しやすくすることができる。サーバの論理グループは、データセンター、サーバファーム、またはマシンファームと称され得る。サーバは、地理的に分散されていてもよい。データセンターまたはマシンファームは、単一のエンティティとして管理され得るか、またはマシンファームは、複数のマシンファームを含むことができる。各マシンファーム内のサーバは、異機種であってもよい―サーバまたはマシンのうちの1つまたは複数が1つまたは複数の種類のオペレーティングシステムプラットフォームに従って動作することができる。データ処理システム105は、たとえばエンタープライズデータセンター内に配置されている、関連するストレージシステムと一緒に、1つまたは複数の高密度ラックシステム内に格納されているデータセンター内のサーバを含むことができる。このようにして統合されたサーバを備えるデータ処理システム105は、サーバおよび高性能ストレージシステムをローカライズされた高性能ネットワーク上に配置することによってシステム管理性、データセキュリティ、システムの物理的セキュリティ、およびシステム性能を改善することができる。サーバおよびストレージシステムを含む、データ処理システム105のコンポーネントの全部または一部を中央集中化し、それらを高度なシステム管理ツールで結合することにより、サーバリソースをより効率的に使用することができ、それにより、必要な電力および処理の低減化をはかり、帯域幅使用を減らす。
【0014】
データ処理システム105は、少なくとも1つの自然言語プロセッサ(NLP)コンポーネント110、少なくとも1つのインターフェース115、少なくとも1つのリンク生成コンポーネント120、少なくとも1つのコンテンツセレクタコンポーネント125、少なくとも1つのオーディオ信号生成器コンポーネント130、少なくとも1つのダイレクトアクション・アプリケーション・プログラミング・インターフェース(API)135、少なくとも1つのセッションハンドラコンポーネント140、および少なくとも1つのデータリポジトリ145を備えることができる。NLPコンポーネント110、インターフェース115、リンク生成コンポーネント120、コンテンツセレクタコンポーネント125、オーディオ信号生成器コンポーネント130、ダイレクトアクションAPI135、およびセッションハンドラコンポーネント140は、各々、少なくとも1つの処理ユニット、サーバ、仮想サーバ、回路、エンジン、エージェント、器具、またはデータリポジトリ145および少なくとも1つのコンピュータネットワーク165を介して他のコンピューティングデバイス(たとえば、クライアントコンピューティングデバイス150、コンテンツプロバイダコンピューティングデバイス155、またはサービスプロバイダデバイス160)と通信するように構成されているプログラマブルロジックアレイなどの他の論理デバイスを含むことができる。ダイレクトアクションAPI135は、データ処理システム105によって決定されるような、クライアントコンピューティングデバイス150でユーザの意図を満足させるために指定されたアクションを実行することができる。その入力で指定されているアクションに応じて、ダイレクトアクションAPI135は、ユーザ要求を履行するために必要なパラメータを識別するコードまたはダイアログスクリプトを実行することができる。そのようなコードは、ホームオートメーションサービスの名称などの、たとえば、データリポジトリ145内にある追加情報を探索し得るか、または要求されたタクシーの意図された目的地などのエンドユーザに質問を尋ねるようにクライアントコンピューティングデバイス150においてレンダリングするためのオーディオ出力を行うことができる。ダイレクトアクションAPI135は、必要なパラメータを
決定することができ、情報をアクションデータ構造体にパッケージ化することができ、次いで、これは、コンテンツセレクタコンポーネント125などの別のコンポーネントに、または履行されるべきサービスプロバイダコンピューティングデバイス160に送信され得る
【0015】
ネットワーク165は、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、メトロエリアネットワーク、他のエリアネットワーク、イントラネット、衛星ネットワーク、音声もしくはデータ携帯電話通信ネットワークなどの他のコンピュータネットワーク、およびこれらの組合せなどのコンピュータネットワークを含み得る。ネットワーク165は、ディスプレイネットワーク、たとえば、コンテンツ配置または検索エンジン結果システムに関連付けられているか、またはコンテンツアイテム配置キャンペーンの一部としてサードパーティ製コンテンツアイテムを含む資格のあるインターネット上で利用可能な情報リソースのサブセットを含むか、またはそれらの構成要素となり得る。ネットワーク165は、クライアントコンピューティングデバイス150によって提示されるか、出力されるか、レンダリングされるか、または表示され得るウェブページ、ウェブサイト、ドメイン名、またはユニフォームリソースロケータなどの情報リソースにアクセスするためにデータ処理システム105によって使用され得る。たとえば、ネットワーク165を介して、クライアントコンピューティングデバイス150のユーザは、コンテンツプロバイダコンピューティングデバイス155またはサービスプロバイダデバイス160によって提供される情報またはデータにアクセスすることができる。
【0016】
ネットワーク165は、たとえば、2地点間ネットワーク、放送網、ワイドエリアネットワーク、ローカルエリアネットワーク、電気通信網、データ通信ネットワーク、コンピュータネットワーク、ATM(非同期転送モード)ネットワーク、SONET(同期光ネットワーク)ネットワーク、SDH(同期デジタルハイアラーキ)ネットワーク、ワイヤレスネットワークもしくは有線ネットワーク、およびこれらの組合せを含み得る。ネットワーク165は、赤外線チャネルまたは衛星帯域などのワイヤレスリンクを含み得る。ネットワーク165のトポロジーは、バス型、スター型、またはリング型ネットワークトポロジーを含み得る。ネットワーク165は、高度携帯電話プロトコル(「AMPS」)、時分割多元接続(「TDMA」)、符号分割多元接続(「CDMA」)、グローバルシステムフォーモバイルコミュニケーションズ(「GSM(登録商標)」)、汎用パケット無線サービス(「GPRS」)、またはユニバーサルモバイル通信システム(「UMTS」)を含む、モバイルデバイス間の通信に使用される1つまたは複数の任意のプロトコルを使用する携帯電話ネットワークを含み得る。異なる種類のデータは、異なるプロトコルを介して伝送され得るか、または同じ種類のデータは、異なるプロトコルを介して伝送され得る。
【0017】
クライアントコンピューティングデバイス150、コンテンツプロバイダコンピューティングデバイス155、およびサービスプロバイダデバイス160は、各々、互いに通信するために、またはネットワーク165を介してデータ処理システム105と通信するためにプロセッサを有するコンピューティングデバイスなどの少なくとも1つの論理デバイスを備えることができる。クライアントコンピューティングデバイス150、コンテンツプロバイダコンピューティングデバイス155、およびサービスプロバイダデバイス160は、各々、少なくとも1つのサーバ、プロセッサ、もしくはメモリ、または少なくとも1つのデータセンター内に配置されている複数の計算リソースもしくはサーバを備えることができる。クライアントコンピューティングデバイス150、コンテンツプロバイダコンピューティングデバイス155、およびサービスプロバイダデバイス160は、各々、デスクトップコンピュータ、ラップトップ、タブレット、携帯情報端末、スマートフォン、ポータブルコンピュータ、シンクライアントコンピュータ、仮想サーバ、または他のコンピューティングデバイスなどの少なくとも1つのコンピューティングデバイスを備えることができる。
【0018】
クライアントコンピューティングデバイス150は、少なくとも1つのセンサー151、少なくとも1つのトランスデューサ152、少なくとも1つのオーディオドライバ153、および少なくとも1つのスピーカー154を備えることができる。センサー151は、マイクロフォンまたはオーディオ入力センサーを備えることができる。トランスデューサ152は、オーディオ入力を電子信号に変換することができる。オーディオドライバ153は、他にもあるがとりわけ、オーディオ入力を処理するか、またはオーディオ出力を行うためのクライアントコンピューティングデバイス150の他のコンポーネントのうちで、センサー151、トランスデューサ152、またはオーディオドライバ153を制御するためにクライアントコンピューティングデバイス150の1つまたは複数のプロセッサによって実行されるスクリプトまたはプログラムを備えることができる。スピーカー154は、オーディオ出力信号を伝送することができる。コンピューティングデバイス150は、ディスプレイを備えていても備えていなくてもよく、たとえば、コンピューティングデバイスは、マイクロフォンおよびスピーカーなどの、限られた種類のユーザインターフェースを備え得る。いくつかの場合において、コンピューティングデバイス150の主たるユーザインターフェースは、マイクロフォンおよびスピーカーであるものとしてよい。
【0019】
クライアントコンピューティングデバイス150は、音声問い合わせをクライアントコンピューティングデバイス150へのオーディオ入力として(センサー151を介して)入力し、データ処理システム105(またはコンテンツプロバイダコンピューティングデバイス155もしくはサービスプロバイダデバイス160)からクライアントコンピューティングデバイス150に送られ、スピーカー154から出力され得るコンピュータ生成音声の形態のオーディオ出力を受け取るエンドユーザに関連付けられ得る。コンピュータ生成音声は、実際の人またはコンピュータによって生成される言語からの読み取りを含むことができる。
【0020】
コンテンツプロバイダコンピューティングデバイス155は、オーディオ出力コンテンツアイテムとしてクライアントコンピューティングデバイス150による表示のためにオーディオベースのコンテンツアイテムを提供することができる。コンテンツアイテムは、「Would you like me to order you a taxi?」と述べる音声ベースのメッセージなどの商品もしくはサービスのオファーを含むことができる。たとえば、コンテンツプロバイダコンピューティングデバイス155は、音声ベースの問い合わせに応答して提供され得る一連のオーディオコンテンツアイテムを記憶するためのメモリを備えることができる。コンテンツプロバイダコンピューティングデバイス155は、オーディオベースのコンテンツアイテム(または他のコンテンツアイテム)を、それらがデータリポジトリ145に記憶されているデータ処理システム105に送ることもできる。データ処理システム105は、オーディオコンテンツアイテムを選択し、オーディオコンテンツアイテムをクライアントコンピューティングデバイス150に提供する(かまたは提供するようにコンテンツプロバイダコンピューティングデバイス155に指令する)ことができる。オーディオベースのコンテンツアイテムはもっぱらオーディオであるか、またはテキスト、画像、またはビデオデータと組み合わせたものとすることができる。
【0021】
サービスプロバイダデバイス160は、少なくとも1つのサービスプロバイダ自然言語プロセッサ(NLP)コンポーネント161および少なくとも1つのサービスプロバイダインターフェース162を備えることができる。サービスプロバイダNLPコンポーネント161(またはサービスプロバイダデバイス160のダイレクトアクションAPIなどの他のコンポーネント)はクライアントコンピューティングデバイス150と(データ処理システム105を介して、またはデータ処理システム105をバイパスして)関わり、クライアントコンピューティングデバイス150とサービスプロバイダデバイス160との間の行ったり来たりのリアルタイムの音声またはオーディオベースの会話(たとえば、セッション)を作成することができる。たとえば、サービスプロバイダインターフェース162は、データメッセージを受信するか、またはデータ処理システム105のダイレクトアクションAPI135に送ることができる。サービスプロバイダデバイス160およびコンテンツプロバイダコンピューティングデバイス155は、同じエンティティに関連付けられ得る。たとえば、コンテンツプロバイダコンピューティングデバイス155は、カーシェアリングサービスに対するコンテンツアイテムを作成するか、記憶するか、または利用可能にすることができ、サービスプロバイダデバイス160は、クライアントコンピューティングデバイス150のエンドユーザをピックアップするようにカーシェアサービスのタクシーまたは自動車の配車を手配するためにクライアントコンピューティングデバイス150とのセッションを確立することができる。データ処理システム105は、たとえば、カーシェアサービスのタクシーまたは自動車の配車を手配するために、ダイレクトアクションAPI135、NLPコンポーネント110、または他のコンポーネントを介して、サービスプロバイダデバイス160を含めるか、またはバイパスする、クライアントコンピューティングデバイス150とのセッションを確立することもできる。
【0022】
データリポジトリ145は、1つまたは複数のローカルデータベースまたは分散型データベースを含むことができ、データベース管理システムを含み得る。データリポジトリ145は、コンピュータデータストレージまたはメモリを備えるものとしてよく、他にもデータはあるがとりわけ、1つまたは複数のパラメータ146、1つまたは複数の識別子147、コンテンツデータ148、またはテンプレート149を記憶することができる。パラメータ146、識別子147、およびテンプレート149は、クライアントコンピューティングデバイス150とデータ処理システム105(またはサービスプロバイダデバイス160)との間の音声ベースのセッションに関する規則などの情報を含むことができる。特に、識別子147は、クライアントコンピューティングデバイス150の識別情報に関連付けられているデータまたはクライアントコンピューティングデバイス150のユーザの識別情報を含み得る。識別子147は、データ処理システム105によって生成され、クライアントコンピューティングデバイス150またはクライアントコンピューティングデバイス150のユーザに関連付けられている1つまたは複数の一意的な識別子(本明細書では仮想識別子または仮想トークンとも称される)も含むことができる。コンテンツデータ148は、オーディオ出力または関連付けられているメタデータ、さらにはクライアントコンピューティングデバイス150との1つまたは複数の通信セッションの一部であってよい入力オーディオメッセージに対するコンテンツアイテムを含み得る。
【0023】
データ処理システム105は、入力オーディオ信号をデータ処理システム105のインターフェース115に伝達し、クライアントコンピューティングデバイス150のコンポーネントを、出力オーディオ信号をレンダリングするように駆動するためのアプリなどのクライアントコンピューティングデバイス150にインストールされているアプリケーション、スクリプト、またはプログラムを含むことができる。データ処理システム105は、データパケットまたはオーディオ入力信号を含むかもしくは識別する他の信号を受信することができる。たとえば、データ処理システム105は、NLPコンポーネント110を実行するか、作動させることでオーディオ入力信号を受信することができる。NLPコンポーネント110は、オーディオ入力信号を記憶されている、代表的な一組のオーディオ波形と比較し、最もよく一致するものを選択することによって受信されたオーディオ入力信号を認識されたテキストに変換することができる。代表的な波形は、大きいユーザ群について生成されており、ユーザの話し声サンプルで強化され得る。受信されたオーディオ入力信号が認識されたテキストに変換された後、NLPコンポーネント110は、テキストと、たとえば、ユーザにまたがる学習を介して、または手動による指定を通じて、データ処理システム105が利用し得るアクションまたはコマンドと関連付けられている単語とのマッチングを行う。オーディオ入力信号は、クライアントコンピューティングデバイス150のセンサー151(たとえば、マイクロフォン)によって検出され得る。トランスデューサ152、オーディオドライバ153、または他のコンポーネントを介して、クライアントコンピューティングデバイス150は、オーディオ入力信号をデータ処理システム105に(たとえば、ネットワーク165を介して)送ることができ、これは(たとえば、インターフェース115によって)受信され、NLPコンポーネント110に送られるか、またはデータリポジトリ145内にコンテンツデータ148として記憶され得る。
【0024】
NLPコンポーネント110は、入力オーディオ信号を取得することができる。NLPコンポーネント110は、入力オーディオ信号から、少なくとも1つの要求または要求に対応する少なくとも1つのトリガーキーワードを識別することができる。要求は、入力オーディオ信号の意図または主題を指示することができる。トリガーキーワードは、行われる可能性の高いアクションの種類を指示することができる。たとえば、NLPコンポーネント110は、入力オーディオ信号を解析して、ディナーおよび映画に出席するため夕方に家を出る少なくとも1つの要求を識別することができる。トリガーキーワードは、少なくとも1つの単語、フレーズ、語幹もしくは部分単語、または行われるべきアクションを指示する派生語を含み得る。たとえば、入力オーディオ信号から識別される「ride」、「cab」または「taxi」などのトリガーキーワードのうちの1つまたは複数は、輸送の必要性を指示するものとしてよい。別の例では、入力オーディオ信号から識別される「go」、または「to go to」などのキーワードは、輸送の必要性も指示し得る。この例では、入力オーディオ信号(または識別された要求)は、輸送の意図を直接表すことはないが、トリガーキーワードは、輸送は要求によって指示される少なくとも1つの他のアクションの補助アクションであることを指示する。
【0025】
データ処理システム105は、要求またはトリガーキーワードに基づき、入力オーディオ信号に関連付けられている少なくとも1つのスレッドを決定することができる。スレッドは、一連のアクションなどの、一組のシーケンス依存オペレーションを指示し得る。スレッドは、第1のアクション、第2のアクション、および第3のアクションなどの任意の2つまたはそれ以上のアクションを含むことができる。たとえば、入力オーディオ信号「OK, I would like to go to go dinner and then a movie tonight」は、食事および映画に出席することに関心があることを指示する少なくとも1つの要求、および少なくとも1つのトリガーキーワード、たとえば、輸送の必要があることを指示する「go」を含むことができる。データ処理システム105は、ディナーアクション(第1のアクション)、映画アクション(第2のアクション)、および帰宅輸送アクション(第3のアクション)などの少なくとも3つのアクションを持つスレッドを識別することができる。この例では、要求またはトリガーキーワードから、データ処理システム105が3つのアクションを予測し、推定し、そうでなければ決定を行う。スレッドは、ディナーアクションへの初期輸送などの、他のアクションを含むことができる。
【0026】
コンテンツセレクタコンポーネント125は、スレッドのアクションのうちのどれかの指示を取得することができる。たとえば、コンテンツセレクタコンポーネント125は、データ処理システムによって識別される第3の(または他の)アクションの指示を受信することができる。コンテンツセレクタコンポーネント125は、データリポジトリ145からこの情報を取得することができ、これはコンテンツデータ148の一部として記憶され得る。第3のアクションの指示は、車で最終目的地に向かうなど、映画館の場所からクライアントコンピューティングデバイス150によって決定または指示されるような場所への輸送の必要性をコンテンツセレクタコンポーネント125に知らせることができる。
【0027】
コンテンツセレクタコンポーネント125によって受信された情報から、コンテンツセレクタコンポーネント125は、少なくとも1つのコンテンツアイテムを識別することができる。コンテンツアイテムは、第3のアクションに応答するか、または関係するものとしてよい。たとえば、コンテンツアイテムは、輸送の必要性を指示する第3のアクションに応答する、カーシェア会社のオーディオメッセージオファーサービスを含むことができる。コンテンツセレクタコンポーネント125は、データリポジトリ145に問い合わせを実行して、たとえば、コンテンツデータ148からコンテンツアイテムを選択するか、そうでなければ識別することができる。コンテンツセレクタコンポーネント125は、コンテンツプロバイダコンピューティングデバイス155からコンテンツアイテムを選択することもできる。たとえば、データ処理システム105から受信された問い合わせに応答して、コンテンツプロバイダコンピューティングデバイス155は、コンテンツアイテムをデータ処理システム105(またはそのコンポーネント)に送り、最終的に、クライアントコンピューティングデバイス150によって出力するようにできる。コンテンツアイテムは、ユーザがすでにサブスクライブしている乗車サービスに関連付けられていてよい。たとえば、コンテンツアイテムは、ユーザの好ましい乗車サービスに関連付けられ得る。
【0028】
コンテンツセレクタコンポーネント125は、第3のアクションに関係する追加のコンテンツアイテムを選択することができる。たとえば、コンテンツアイテムは、好ましい乗車サービス、またはクライアントコンピューティングデバイス150に対して以前選択された乗車サービスの代替として提供され得る乗車サービスのオーディオメッセージオファーサービスを含むことができる。代替乗車サービスは、ユーザによって選択された乗車サービスの1つまたは複数の態様との比較結果に基づきユーザにオファーされ得る。たとえば、代替乗車サービスによってオファーされる料金がユーザによって選択された乗車サービスよりも低い場合、コンテンツセレクタコンポーネント125は、ユーザに対してより安い代替乗車サービスを選択するオプションを提示することができる。移動時間、車両の種類、および運転者格付けなどの他の乗車サービスの態様も、考慮され得る。いくつかの場合において、コンテンツセレクタコンポーネント125は、代替乗車サービスに関連付けられているコンテンツアイテムを選択し、コンテンツアイテムを、2つの乗車サービスの態様を比較することなくクライアントコンピューティングデバイス150のユーザに提示することができる。
【0029】
上で述べられているように、コンテンツセレクタコンポーネント125は、データリポジトリ145に問い合わせを実行することに加えて、コンテンツプロバイダデバイス155と通信して、1つまたは複数のコンテンツアイテムを識別することもできる。たとえば、コンテンツセレクタコンポーネント125は、輸送に関連付けられている第3のアクションの指示を受け取った後に、コンテンツプロバイダデバイス155と通信して、任意の代替乗車サービスが利用可能かどうかを決定することができる。それに応答して、コンテンツセレクタコンポーネント125は、利用可能な代替乗車サービスに関連付けられている1つまたは複数のコンテンツアイテムを受信することができる。コンテンツプロバイダデバイス155と通信する際に、コンテンツセレクタコンポーネント125は、コンテンツプロバイダデバイス155がユーザに提示される乗車サービスの代替として使用され得る適切なコンテンツアイテムを提供することを可能にするようにユーザによって要求された輸送の態様に関する情報も含み得る。たとえば、コンテンツセレクタコンポーネント125は、乗車出発住所、乗車目的地住所、要求時間、乗客数、および乗車の種類(たとえば、エコノミーまたはプレミアム)などの情報をコンテンツプロバイダデバイス155に送信することができる。コンテンツプロバイダデバイス155は、この情報を使用して、1つまたは複数の代替乗車サービスが利用可能かどうかを決定し、もし利用可能であれば、1つまたは複数の関連するコンテンツアイテムをコンテンツセレクタコンポーネント125に送信することができる。
【0030】
オーディオ信号生成器コンポーネント130は、第3のアクションに応答してコンテンツアイテムを含む出力信号を生成するか、そうでなければ取得することができる。たとえば、データ処理システム105は、オーディオ信号生成器コンポーネントを実行して、2つまたはそれ以上のコンテンツアイテムに対応する出力信号を生成するか、または作成することができ、これらのコンテンツアイテムのうちの1つは、たとえば、代替乗車サービスに関連付けられているコンテンツアイテムを含むことができる。データ処理システム105のインターフェース115は、出力オーディオ信号を含む1つまたは複数のデータパケットをコンピュータネットワーク165を介してクライアントコンピューティングデバイス150に伝送することができる。たとえば、データ処理システム105は、出力オーディオ信号をデータリポジトリ145から、またはオーディオ信号生成器コンポーネント130からクライアントコンピューティングデバイス150に送ることができる。データ処理システム105は、また、出力オーディオ信号をクライアントコンピューティングデバイス150に送るよう、データパケット伝送を介して、コンテンツプロバイダコンピューティングデバイス155またはサービスプロバイダデバイス160に指令することもできる。出力オーディオ信号は、データ処理システム105(または他のコンピューティングデバイス)からクライアントコンピューティングデバイス150に1つまたは複数のデータパケット(または他の通信プロトコル)として取得されるか、生成されるか、変換されるか、または伝送され得る。
【0031】
コンテンツセレクタコンポーネント125は、第3のアクションに対するコンテンツアイテムをリアルタイムコンテンツ選択プロセスの一部として選択することができる。たとえば、コンテンツアイテムは、入力オーディオ信号への直接応答として会話方式によりオーディオ出力として伝送するためにクライアントコンピューティングデバイスに送られるものとしてよい。コンテンツアイテムを識別し、コンテンツアイテムをクライアントコンピューティングデバイス150に送るリアルタイムコンテンツ選択プロセスは、入力オーディオ信号の時間から1分以内に行われ、リアルタイムとみなされ得る。
【0032】
たとえば、インターフェース115およびコンピュータネットワーク165を介してクライアントコンピューティングデバイス150に伝送されるオーディオ信号生成器コンポーネント130によって取得されるか、または生成されるコンテンツアイテムに対応する出力オーディオ信号は、クライアントコンピューティングデバイス150に、オーディオドライバ153を実行してスピーカー154を駆動し出力オーディオ信号に対応する音波を発生させることができる。音波は、第3のアクションに対するコンテンツアイテムの単語、または第3のアクションに対するコンテンツアイテムに対応する単語を含むことができる。
【0033】
音波は、クライアントコンピューティングデバイス150から出力され得る。たとえば、音波は、「Would you like to select XYZ ride service?」のオーディオ出力を含むことができ、「XYZ」は好ましい乗車サービスに対する名称または呼称を表すものとしてよい。任意の追加のコンテンツアイテムに関連付けられている音波も、クライアントコンピューティングデバイス150から出力され得る。たとえば、代替乗車サービスに対するコンテンツアイテムに関連付けられている音波は、「Would you like to consider an alternative ride service PQR which is $5 cheaper than the XYZ ride service?」のオーディオ出力を含むことができ、「PQR」は、代替乗車サービスの名称もしくは呼称を表すものとしてよい。
【0034】
データ処理システム105は、クライアントコンピューティングデバイス150から入力オーディオ信号を含む応答を受信することができる。たとえば、「OK, I would like to use PQR」の入力オーディオ信号である。この情報から、NLPコンポーネント110は、少なくとも1つの要求または少なくとも1つのトリガーキーワードを識別する。たとえば、NLPコンポーネント110は、輸送に対する要求、および代替乗車サービスPQRが要求されていることを指示するキーワード「PQR」を識別することができる。
【0035】
データ処理システム105は、ユーザによって選択された代替サービスを提供するサービスプロバイダとクライアントコンピューティングデバイス150との間のリンクを確立するようにリンク生成コンポーネント120に通知することができる。リンク生成コンポーネント120は、クライアントコンピューティングデバイス150とユーザによって選択されたサービスに関連付けられているサービスプロバイダ(サービスプロバイダデバイス160など)との間の通信の確立を管理することができる。上で説明されている例を参照すると、リンク生成コンポーネント120は、クライアントコンピューティングデバイス150とクライアントコンピューティングデバイス150から受信されたオーディオ信号においてNLPコンポーネント110によって識別される乗車サービス「PQR」に関連付けられているサービスプロバイダデバイスとの間の通信リンクの確立を管理することができる。
【0036】
サービスプロバイダデバイス160などの、1つまたは複数のサービスプロバイダデバイスは、クライアントコンピューティングデバイスに関連付けられている識別情報に基づき、クライアントコンピューティングデバイス150などのクライアントコンピューティングデバイスにサービスを提供する。これらの識別情報は、ユーザ名、ID、アカウント番号、またはクライアントコンピューティングデバイス150を一意的に識別することができる他のパラメータの形態をとり得る。サービスプロバイダデバイス160は、たとえば、変換情報、現住所、ユーザ名、パスワード、またはデバイスアドレスなどの追加の情報とともにクライアントデータベース164に様々なクライアントコンピューティングデバイスに関連付けられている識別情報を記憶することができる。サービスプロバイダデバイスは、これらの識別情報および追加情報を、クライアントコンピューティングデバイスとの通信を確立し、維持するために、さらには会計または管理目的に使用することができる。
【0037】
リンク生成コンポーネント120は、サービスプロバイダデバイス160とクライアントコンピューティングデバイス150との間の通信を円滑にすることができる。一例では、リンク生成コンポーネント120は、サービスプロバイダデバイス160へのクライアントコンピューティングデバイス150に関連付けられている識別情報の伝送を管理することができ、それにより、サービスプロバイダデバイス160は、クライアントコンピューティングデバイス150の識別情報を検証し、検証された場合に、クライアントコンピューティングデバイス150との通信を確立することができる。リンク生成コンポーネント120は、選択されたサービスへクライアントコンピューティングデバイス150を識別する任意の識別子が存在しているかどうかを決定するためにデータリポジトリ145を探索するか、または問い合わせを実行することができる。たとえば、リンク生成コンポーネント120は、選択されたサービスに対してクライアントコンピューティングデバイス150に任意のアカウント情報が存在しているかどうかを決定するための識別子147を検索することができる。識別子147は、たとえばクライアントコンピューティングデバイス150および対応するサービスに関連付けられている1つまたは複数のユーザ名もしくはデバイスIDを含むことができる。サービスプロバイダデバイス160によって提供される選択されたサービスに対してクライアントコンピューティングデバイス150を識別する識別子が存在する場合、リンク生成コンポーネント120は、サービスプロバイダデバイス160に識別子を送信することができる。
【0038】
いくつかの場合において、リンク生成コンポーネント120は、データベース内で探索を実行する。いくつかの場合において、リンク生成コンポーネント120は、確立されたまたはアクティブなアカウントの識別子をキャッシュし、存在していないことを識別するために比較を実行することができる。確立されているアカウント識別子をキャッシュすることによって、データ処理システムは、サービスプロバイダのデータベースにおいて探索を実行しなければならないということにはなり得ない。アカウント識別子は、データ処理システム上にプリロードされるものとしてよく、データ処理システムは、デバイスがアクティブアカウントに関連付けられているかどうかを決定するために単一のコールを実行することができる。データ処理システムは、クライアントデバイスの位置に基づきアカウント識別子(またはデバイス識別子)をロードすることができる。アカウント識別子がデータ処理システム上にすでにロードされている状態で、データ処理システムは、クライアントデバイスをプリロードされたアクティブアカウント識別子と比較することによってクライアントデバイスがアカウントを有しているかどうかを決定することができる。データ処理システムは、クライアントデバイスが、プリロードされた一組のアクティブアカウント識別子内にマッチする識別子が見つからないことによって、またはエンドユーザのクライアントデバイスに対応するクライアントデバイス識別子に関連付けられているアカウント識別子が見つからないことによってアカウントを有していないと決定することができる。
【0039】
識別子147は、サービスプロバイダデバイス160によって提供されるサービスに対するクライアントコンピューティングデバイス150に関連付けられている識別子を含み得ない。たとえば、クライアントコンピューティングデバイス150に提示される代替サービスが、ユーザが以前に試みたことのない新規サービスである場合に、そのサービスに対するクライアントコンピューティングデバイス150に関連付けられている識別子は、データリポジトリ145内に存在し得ない。いくつかの例では、サービスプロバイダデバイス160は、クライアントコンピューティングデバイス150に関連付けられている識別子を有し得るが、そのような識別子は、データリポジトリ145内にまだ記憶されていないこともあり得る。そのような場合、リンク生成コンポーネント120は、サービスプロバイダデバイス160と通信して、クライアントコンピューティングデバイス150に関連付けられている識別子のクライアントデータベース164内の存在を決定することができる。サービスプロバイダデバイス160は、クライアント情報を記憶する、クライアントデータベース164と通信して、クライアントコンピューティングデバイス150に関連付けられている識別子または他のデータの存在を決定することができる。代替的に、リンク生成コンポーネント120は、それ自体、探索またはデータベース問い合わせオペレーションによって、クライアントデータベース164と通信し、クライアントコンピューティングデバイス150に関連付けられている任意の識別子の存在を決定することができる。
【0040】
クライアントコンピューティングデバイス150に関連付けられている識別子が配置された後、リンク生成コンポーネント120は、クライアントコンピューティングデバイス150に代わって識別子をサービスプロバイダデバイス160に送信することができる。リンク生成コンポーネント120は、また、クライアントコンピューティングデバイス150との通信を確立するために識別子を使用するよう、サービスプロバイダデバイス160に命令を送信することもできる。
【0041】
たとえば、識別子がデータリポジトリ145およびクライアントデータベース164の両方に存在していない場合、サービスプロバイダデバイス160は、クライアントコンピューティングデバイスとの通信を確立することができないことがある。サービスプロバイダデバイス160が、クライアントコンピューティングデバイス150と通信できる場合、データリポジトリおよびクライアントデータベース164の両方に識別子が存在していないと、サービスプロバイダデバイス160とクライアントコンピューティングデバイス150との間で、問い合わせおよび応答などの追加の通信が必要になることがあり得る。たとえば、サービスプロバイダデバイス160は、サービスが提供できる前にアカウントを確立するようにクライアントコンピューティングデバイス150に要求することができる。アカウントの確立は、ユーザ名、パスワード、変換情報、認証、および他の情報をやり取りするためにクライアントコンピューティングデバイス150とサービスプロバイダデバイス160との間の追加の通信を必要とすることがあり、そのため、帯域幅などの追加の時間およびリソースを使用することになり得る。そのような場合、リンク生成コンポーネント120は、クライアントコンピューティングデバイス150に代わってアカウントを生成することによってこの通信の確立を円滑にすることができる。たとえば、リンク生成コンポーネントは、クライアントコンピューティングデバイス150に関連付けられている一意的な仮想識別子を生成することができる。リンク生成コンポーネント120は、インターフェース115を介して、仮想識別子をサービスプロバイダデバイス160に送信することができる。仮想識別子は、インターフェース115を介して、ネットワーク165上で、(たとえば、データパケットのペイロードセクション内の)データパケットを使用してサービスプロバイダデバイス160に伝達され得る。仮想識別子は、クライアントコンピューティングデバイス150に関連付けられているアカウントまたはレコードを作成し、クライアントコンピューティングデバイス150との通信を確立するためにサービスプロバイダデバイス160によって使用され得る。このようにして、リンク生成コンポーネント120は、サービスプロバイダデバイス160とクライアントコンピューテ
ィングデバイス150との間の通信の確立を円滑にすることによってシステムの信頼性を改善するだけでなく、クライアントコンピューティングデバイス150に代わってアカウントを作成することによってシステムの効率も改善し、それにより、他の方法では要求されたサービスを提供する前にアカウントを確立するためにサービスプロバイダデバイス160とクライアントコンピューティングデバイス150との間の通信で利用される時間とリソースを節減することができる。
【0042】
仮想識別子は、クライアントコンピューティングデバイス150に関連付けられているデータの組合せであってよい。たとえば、仮想識別子は、デバイスID(クライアントコンピューティングデバイス150のMAC IDなど)、クライアントコンピューティングデバイス150のインターネットプロトコル(IP)アドレス、クライアントコンピューティングデバイス150に関連付けられているユーザの名前、ユーザの電話番号、およびクライアントコンピューティングデバイス150を使用する任意のユーザに関連付けられているデータを含むクライアントコンピューティングデバイス150に関連付けられている任意の他のデータのうちの1つまたは複数を含むことができる。仮想識別子は、上述のデータのうちの1つまたは複数を処理することによって決定され得る。たとえば、リンク生成コンポーネント120は、ハッシュ関数を使用して仮想識別子を生成することができ、ハッシュ関数への入力は、クライアントコンピューティングデバイス150に関連付けられている上述のデータのうちの1つまたは複数を与えられ得る。リンク生成コンポーネント120は、また、暗号関数(AES、DES、RSA、およびECCなど)を使用して仮想識別子を生成することができ、暗号関数への入力は、クライアントコンピューティングデバイス150に関連付けられている上述のデータのうちの1つまたは複数を含むことができる。
【0043】
リンク生成コンポーネント120は、仮想識別子としてクライアントコンピューティングデバイス150に関連付けられているデジタル証明書または公開鍵を使用することができる。この場合、仮想識別子は、クライアントコンピューティングデバイス150を認証するだけでなく、公開鍵基盤(PKI)を使用してクライアントコンピューティングデバイス150と安全に通信するためにサービスプロバイダデバイスによって使用され得る。
【0044】
リンク生成コンポーネント120は、仮想識別子をサービスプロバイダデバイス160に送信することができる。仮想識別子は、インターフェース115を介して、ネットワーク165上で、(たとえば、データパケットのペイロードセクション内の)データパケットを使用してサービスプロバイダデバイス160に伝達され得る。サービスプロバイダデバイス160は、仮想識別子を使用して、仮想識別子に関連付けられているデータベースエントリを作成することができる。このデータベースエントリは、サービスプロバイダデバイス160がクライアントコンピューティングデバイス150に関連付けられている少なくとも1つのレコードを作成することを可能にし、サービスプロバイダデバイス160がクライアントコンピューティングデバイス150を識別し、それによってクライアントコンピューティングデバイス150と通信することを可能にする。リンク生成コンポーネント120は、仮想識別子をデータリポジトリ145内に識別子147の1つとして記憶することもできる。リンク生成コンポーネント120は、仮想識別子と関連してコンテンツアイテム、またはサービスプロバイダデバイス160の識別情報を記憶することもできる。たとえば、リンク生成コンポーネント120は、仮想識別子、またはサービスプロバイダデバイス160の一意的識別子と関連して、ユーザによって選択された代替乗車サービスの識別情報「PQR」を記憶することができる。これは、将来クライアントコンピューティングデバイス150が再び同じ乗車サービスを選択する場合に、リンク生成コンポーネント120が「PQR」乗車サービスについてクライアントコンピューティングデバイス150に対する識別子の存在を決定することを可能にする。
【0045】
いくつかの例において、リンク生成コンポーネント120は、仮想識別子をサービスプロバイダデバイス160に送信するときに、クライアントコンピューティングデバイス150に関連付けられている追加のデータを送信することができる。たとえば、リンク生成コンポーネント120は、サービスプロバイダデバイス160とクライアントコンピューティングデバイス150との間の通信の確立を円滑にすることができる追加情報を送信することができる。たとえば、リンク生成コンポーネント120は、自宅住所、ユーザの名前、クライアントコンピューティングデバイス150に関連付けられている変換情報などの情報を送信することができる。追加情報は、また、インターフェース115を介して、ネットワーク165上で、(たとえば、データパケットのペイロードセクション内の)データパケットを使用してサービスプロバイダデバイス160に伝達され得る。この情報は、サービスプロバイダデバイス160が現在要求されているサービスを少なくとも提供するのに十分であり得る情報を含むデータベースエントリを作成することを可能にし得る。もちろん、要求されたサービスを提供するために必要なクライアントコンピューティングデバイス150に関連付けられている情報の最小量は、要求されているサービスの種類に基づき変化し得る。そのような場合、リンク生成コンポーネント120は、1つまたは複数のサービスを提供するためにサービスプロバイダデバイス160によって必要とされる最小のデータをデータリポジトリ145に記憶することができる。
【0046】
リンク生成コンポーネント120は、クライアントコンピューティングデバイス150のネットワークアドレスまたはクライアントコンピューティングデバイスのMACアドレスなどの情報も送信することができ、それにより、サービスプロバイダデバイス160はクライアントコンピューティングデバイス150との接続を確立することができる。リンク生成コンポーネント120は、通信またはサービス要求を開始するためにサービスプロバイダデバイス160の指定に従って仮想識別子および追加情報をデータ構造体内にフォーマットすることができる。
【0047】
たとえば、
図2Aは、データをサービスプロバイダデバイス160に送信するためにリンク生成コンポーネント120によって使用され得る第1のデータ構造体200を示している。特に、第1のデータ構造体200は、サービスプロバイダデバイス160が仮想識別子に関連付けられているアカウントを確立するために使用する、クライアントコンピューティングデバイス150のプロファイル情報などの、追加情報とともにサービスプロバイダデバイス160に仮想識別子を送信するためにリンク生成コンポーネント120によって使用され得る。データ構造体200は、データ処理システム105とサービスプロバイダデバイス160との間のデータ伝送の信頼性および効率を改善することができる。第1のデータ構造体200は、識別子、クライアントコンピューティングデバイス識別子、クライアントコンピューティングデバイスアドレス、変換情報、および新規アカウントなどのフィールドを含む。識別子フィールドは、上で説明されているリンク生成コンポーネント120によって生成される仮想識別子を含むことができる。クライアントコンピューティングデバイス識別子およびクライアントコンピューティングデバイスアドレスは、サービスプロバイダデバイス160がクライアントコンピューティングデバイス150と通信することを可能にすることができるデータを含むものとしてよく、クライアントコンピューティングデバイス150のMACアドレス、ネットワークアドレス、または他の識別子を含み得る。変換情報は、サービスプロバイダデバイス160がレンダリングされるサービスに対してクライアントコンピューティングデバイス150に課金することを可能にすることができる情報を含むものとしてよく、クレジットカード情報、コード、またはオンライン転送サービスへのリンクなどのデータを含み得る。新規アカウントフィールドは、サービスプロバイダデバイス160に対する、識別子フィールドに含まれる仮想識別子に関連付けられているクライアントデータベース164内に新規レコードを作成する命令を含むことができる。いくつかの例では、新規アカウントフィールドは、サービスプロバイダデバイス160が識別子フィールド内の情報に関連付けられている新規レコードを作成するかしないかを意味するように解釈できる2値メッセージ(たとえば、Y/N、また
は0/1)を含むことができる。
【0048】
リンク生成コンポーネント120は、サービスプロバイダデバイス160が接続を確立するか、または要求されたサービスをクライアントコンピューティングデバイス150に提供することを可能にすることができる追加情報をサービスプロバイダデバイス160に送信することができる。
図2Bは、サービス特有の情報などの追加情報をサービスプロバイダデバイス160に送信するためにリンク生成コンポーネント120によって使用され得る第2のデータ構造体202を示している。第2のデータ構造体202は、識別子、コンテンツアイテムまたはサービス、出発住所、目的地住所、要求時刻、および変換情報などのフィールドを含む。識別子フィールドに含まれる情報は、サービスプロバイダデバイス160に知られているクライアントコンピューティングデバイス150の識別子または上で説明されているようなリンク生成コンポーネント120によって生成される仮想識別子を含むことができる。コンテンツアイテムまたはサービスフィールドは、クライアントコンピューティングデバイス150によって要求された特定のサービスを含むことができる。すなわち、コンテンツアイテムまたはサービスフィールドは、クライアントコンピューティングデバイス150がサービスを要求したことに関係しているコンテンツアイテムへの参照を含み得るか、またはサービスそれ自体の名前を含み得る。たとえば、上で説明されているPQR乗車サービスに関連付けられているコンテンツアイテムが含まれるものとしてよく、これは要求されたサービスがクライアントコンピューティングデバイスに提示される代替コンテンツアイテムに関連付けられていることをサービスプロバイダに指示するものとしてよい。出発住所および目的地住所は、自宅住所および要求された乗車サービスの要求された目的地を含むことができる。要求時刻フィールドは、クライアントコンピューティングデバイス150によって要求されたピックアップ時刻を含むことができ、変換情報は、クレジットカード情報、コード、またはオンライン転送サービスへのリンクなどのデータを含み得る。
【0049】
追加情報は、クライアントコンピューティングデバイス150に関連付けられている個人情報以外の情報を含むことができる。たとえば、リンク生成コンポーネント120は、クライアントコンピューティングデバイス150のGPS座標などのデータをクライアントコンピューティングデバイス150に要求することができる。クライアントコンピューティングデバイス150が、スマートフォンなどのモバイルデバイスである場合、クライアントコンピューティングデバイス150の瞬間的なGPS座標は、サービスプロバイダデバイス160がクライアントコンピューティングデバイス150の現在位置に基づき乗車サービスを送ることができるようにサービスプロバイダデバイス160に送信され得る。リンク生成コンポーネント120は、クライアントコンピューティングデバイス150が現在通信しているセルの温度、ノイズレベル、信号強度などの他のデータも要求することができ、またこのデータをサービスプロバイダデバイス160に送信することもできる。
図2Cは、上記の情報をサービスプロバイダデバイス160に送信するために使用され得る第3のデータ構造体204を示している。
【0050】
第1、第2、および第3のデータ構造体200、202、および204は、
図2A〜
図2Cに示されているものよりも少ない、または多いフィールドを含むことができる。データ処理システム105は、情報をサービスプロバイダデバイス160に送信するためのデータ構造体を拡張マークアップ言語(XML)で定義することができる。第1、第2、および第3のデータ構造体200、202、および204に関連付けられているデータは、ネットワーク165上で、たとえばデータパケットのペイロードセクション内のデータパケットを使用して伝達され得る。
【0051】
サービスプロバイダデバイス160は、リンク生成コンポーネント120によって提供される仮想識別子および追加情報(第1のデータ構造体200で提供されるような)を使用することができ、この情報を使用してクライアントコンピューティングデバイス150と通信し、要求されたサービスを適切に提供するために必要になり得る追加情報を取得することができる。たとえば、サービスプロバイダデバイス160は、サービスプロバイダNLPコンポーネント161を使用して、追加情報についてユーザに問い合わせるオーディオ信号を生成することができる。問い合わされた情報は、目的地住所、ピックアップ住所、要求時刻、および変換情報を含むことができる。クライアントコンピューティングデバイス150におけるユーザによる応答を表すオーディオ信号は、サービスプロバイダデバイス160によって受信され、所望の情報を抽出するためにサービスプロバイダNLPコンポーネント161によって処理され得る。サービスプロバイダデバイス160は、クライアントコンピューティングデバイス150の識別子に関連してクライアントデータベース164内に抽出された情報を記憶することができる。
【0052】
サービスプロバイダデバイス160は、データ処理システム105をオーディオ信号を取得するための中間段階として使用することができる。たとえば、サービスプロバイダデバイス160は、テキストベースの問い合わせをオーディオ信号に変換し、オーディオ信号をクライアントコンピューティングデバイス150に伝送する、データ処理システム105に対する要求に加えてテキストベースの問い合わせを含むデータパケットを送信することができる。データ処理システム105のNLPコンポーネント110は、テキストベースの問い合わせをオーディオ信号に変換することができ、これはクライアントコンピューティングデバイス150に伝送され得る。データ処理システム105は、また、問い合わせへの応答を含むオーディオ信号をクライアントコンピューティングデバイス150から受信することもできる。NLPコンポーネント110は、オーディオ信号をテキストに変換し、変換されたテキストをサービスプロバイダデバイス160に伝送することができる。
【0053】
リンク生成コンポーネント120は、仮想識別子に関連付けられている一時的データベースレコードまたはカウントを作成するようサービスプロバイダデバイス160に指令することができる。たとえば、仮想識別子に関連付けられているデータベースレコードは、クライアントコンピューティングデバイス150によって要求されたサービスが完了した後に削除され得る。リンク生成コンポーネント120は、タイムスタンプ、または持続時間に仮想識別子を与えることができる。タイムスタンプまたは持続時間は、タイムスタンプまたは持続時間から導出された時刻の後に仮想識別子が無効であることを指示することができる。サービスプロバイダデバイス160は、仮想識別子が無効である場合に仮想識別子に関連付けられているデータベースレコードを削除することができる。
【0054】
リンク生成コンポーネント120は、クライアントコンピューティングデバイス150、またはプライバシーもしくはセキュリティを損ない得るクライアントコンピューティングデバイス150に関連付けられているユーザに関する情報を送信することを差し控えることができる。たとえば、リンク生成コンポーネント120は、仮想識別子をサービスプロバイダデバイス160に送信することができるが、任意の変換情報を送信することを差し控えることができる。変換情報は、データ処理システム105に記憶されてよく、クライアントコンピューティングデバイス150に代わってサービスプロバイダデバイス160との変換トランザクションを行うためにデータ処理システム105によって使用され得る。
【0055】
リンク生成コンポーネント120は、サービスプロバイダデバイス160またはクライアントデータベース164と通信して、データリポジトリ145に記憶されている情報をクライアントデータベース164に記憶されているデータに同期させることができる。たとえば、クライアントコンピューティングデバイス150に関連付けられているアカウントまたはレコードに関係するデータは、データリポジトリ145またはクライアントデータベース164が最新情報を有するようにやり取りされ得る。
【0056】
図3は、
図1に示されているシステム100の様々なエンティティの間のメッセージフロー300の表現を示している。特に、
図3は、データ処理システム105、クライアントコンピューティングデバイス150、およびサービスプロバイダデバイス160の間の、
図1に関して上で説明されているメッセージフロー300を表している。
図3に示されているメッセージフロー300は、データ処理システム105(および特にリンク生成コンポーネント120)が、クライアントコンピューティングデバイス150とサービスプロバイダデバイス160との間の通信の確立を、クライアントコンピューティングデバイス150に関連付けられている識別子が欠損していてそのような通信の確立ができない場合に円滑にすることができるように実行される。さらに、メッセージフロー300は、仮想識別子を受け渡し、サービスプロバイダデバイス160とクライアントコンピューティングデバイス150との間の複数の問い合わせおよび通信を回避することによってリソース消費(たとえば、帯域幅)も低減しながら、データ処理システム105とサービスプロバイダデバイス160との間のデータ伝送の信頼性および効率を改善するために実行され、それによりサービスプロバイダデバイス160が要求されたサービスを提供することを可能にする。
【0057】
上で説明されているように、データ処理システム105は、クライアントコンピューティングデバイス150から通信C1を受信することができ、通信C1は、クライアントコンピューティングデバイス150に関連付けられているユーザからの音声コマンドを含むオーディオ信号を含み得る。データ処理システム105、および特にNLPコンポーネント110は、オーディオ信号を処理し、要求およびキーワードを識別することができる。たとえば、上で説明されているように、オーディオ信号は、「OK, I would like to go to go dinner and then a movie tonight」などのメッセージを含むことができる。データ処理システムは、オーディオ信号を処理し、ディナーおよび映画に出席することに関心があることを指示する少なくとも1つの要求、ならびに少なくとも1つのトリガーキーワード、たとえば、輸送の必要があることを指示する「go」を検出することができる。キーワードが輸送に関連付けられていることを決定したことに応答して、コンテンツセレクタコンポーネント125は、クライアントコンピューティングデバイス150に関連付けられている既定のまたは好ましい乗車サービスの代替としてオファーされ得る乗車サービスを選択することができる。データ処理システム105は、ユーザにコンテンツアイテムを提示するメッセージを含むオーディオ信号を生成することができる。たとえば、オーディオファイルは、「Would you like to consider an alternative ride service PQR which is $5 cheaper than the XYZ ride service?」などのメッセージを含むことができ、「PQR」は、代替乗車サービスの名称もしくは呼称を表すものとしてよい。データ処理システム105は、
図3に示されているように、コンテンツアイテムに関連付けられているオーディオファイルを含む通信C2を送信する。
【0058】
クライアントコンピューティングデバイス150は、通信C2に応答して通信C3を送信することができ、C3はユーザからの応答を表すオーディオ信号を含む。たとえば、オーディオ信号は、「OK, I would like to use PQR」などの応答を含み得る。この情報から、NLPコンポーネント110(
図1)は、少なくとも1つの要求または少なくとも1つのトリガーキーワードを識別する。たとえば、NLPコンポーネント110は、輸送に対する要求、および代替乗車サービスPQRが要求されていることを指示するキーワード「PQR」を識別することができる。
【0059】
データ処理システム105が、クライアントコンピューティングデバイス150が代替コンテンツアイテムを要求していると識別した後、リンク生成コンポーネント120(
図1)は、要求されたコンテンツアイテムに関連付けられているサービスプロバイダデバイス160を決定する。リンク生成コンポーネントは、データリポジトリ145(
図1)が要求されたコンテンツアイテムおよびクライアントコンピューティングデバイス150に関連付けられている任意の識別子を含むかどうかを決定する。識別子が見つからない場合、リンク生成コンポーネント120は、通信C4をサービスプロバイダデバイス160に送信して、クライアントコンピューティングデバイス150に関連付けられているデータベースレコードの存在を決定する。通信C4は、クライアントコンピューティングデバイス150の識別情報またはクライアントコンピューティングデバイス150に関連付けられているユーザの識別情報を含み得る。リンク生成コンポーネント120は、データリポジトリ145(
図1)に問い合わせを行うことなく通信C4をサービスプロバイダデバイス160に送信することができる。
【0060】
サービスプロバイダデバイス160は、通信C4におけるクライアント識別情報に関連付けられているデータベースレコードに対する問い合わせを受信したことに応答して、通信C5をクライアントデータベース164に送信して、クライアント識別情報に関連付けられているデータベースレコードがクライアントデータベース164内に存在しているかどうかを決定することができる。クライアントデータベース164が通信C5で受信されたクライアント識別情報に関連付けられた任意のレコードを含まない場合、クライアントデータベース164は、そのようなレコードが存在しないことを指示する通信C6を返すことができる。サービスプロバイダデバイス160は、クライアントデータベース164内に通信C4に含まれているクライアント識別情報に関連付けられているデータベースレコードが存在していないことを指示する通信C7をデータ処理システム105に送信することができる。データ処理システム105は、通信C4'(クライアント識別情報)(
図3に点線で示されている)でクライアントデータベース164に直接問い合わせて、クライアント識別情報に関連付けられている任意のレコードがクライアントデータベース164内に存在しているかどうかを決定することができる。レコードが見つからない場合、クライアントデータベース164は、問い合わされたレコードが存在していないことを指示するNull応答とともに通信C6'を返すことができる。いくつかの場合において、データ処理システムは、存在しないことを指示するNull応答または他の指示、応答、文字、シンボル、文字列、英数字、または値に基づき存在していないことを決定することができる。
【0061】
サービスプロバイダデバイス160は、要求されたサービスをクライアントコンピューティングデバイス150に提供することができない場合があるが、それは、クライアントデータベース164内に、クライアントコンピューティングデバイス150に関連付けられているレコードが存在しないからである。しかしながら、データ処理システム105は、データベースレコードがないことによる通信が欠如するリスクを緩和することができる。特に、データ処理システム105は、クライアントコンピューティングデバイス150に関連付けられている仮想識別子を生成し、通信C8をサービスプロバイダデバイス160に送信してクライアントデータベース164内に仮想識別子に関連付けられているデータベースデコードを作成する。上で説明されているように、仮想識別子は、クライアントコンピューティングデバイス150に関連付けられている様々なデータの組合せを含むことができる。たとえば、仮想識別子は、デバイスID(クライアントコンピューティングデバイス150のMAC IDなど)、クライアントコンピューティングデバイス150のインターネットプロトコル(IP)アドレス、クライアントコンピューティングデバイス150に関連付けられているユーザの名前、ユーザの電話番号、およびクライアントコンピューティングデバイス150に関連付けられている任意の他のデータのうちの1つまたは複数のハッシュ関数を含むことができる。仮想識別子は、クライアントコンピューティングデバイス150のデジタル証明書または公開鍵を含むことができる。通信C8は、サービスプロバイダデバイス160とクライアントコンピューティングデバイス150との間の通信の確立を円滑にするか、またはサービスプロバイダデバイス160による要求されたサービスの提供を円滑にすることができるクライアントコンピューティングデバイス150に関連付けられている追加情報も含み得る。データ処理システム105は、仮想識別子、および
図2A〜
図2Cに示されている第1、第2、または第3のデータ構造体200、202、または204などのデータ構造体にフォーマットされている追加情報を送信することができる。仮想識別子および追加情報は、インターフェース115(
図1)を介して、ネットワーク165(
図1)上で、(たとえば、データパケットのペイロードセ
クション内の)データパケットを使用してサービスプロバイダデバイス160(
図1)に伝達され得る。
【0062】
サービスプロバイダデバイス160は、通信C8を受信した後に、通信C9をクライアントデータベース164に送信することによって少なくとも仮想識別子に基づきデータベースレコードを作成することができる。通信C9は、また、通信C8で受信された追加情報を含むこともできる。仮想識別子に関連付けられているデータベースレコードを作成した後に、クライアントデータベース164は、通信C10をサービスプロバイダデバイス160に送信し、データベースレコードが作成されたことを指示することができる。サービスプロバイダデバイス160は、通信C11をデータ処理システム105に送信して、データベースレコードが正常に作成されたことを指示することができる。
【0063】
クライアントコンピューティングデバイス150に関連付けられているレコードがクライアントデータベース164内に作成された後、サービスプロバイダデバイス160は、クライアントコンピューティングデバイス150と通信して、通信C3で要求されたサービスを提供することができる。たとえば、サービスプロバイダデバイス160は、通信C12をクライアントコンピューティングデバイス150に送信して、代替乗車の要求が成功していることを確認するか、または要求されたサービスに関してクライアントコンピューティングデバイス150から追加情報を取得することができる。
【0064】
上で説明されているように、データ処理システム105は、クライアントコンピューティングデバイス150に関連付けられているデータベースレコードがない場合にサービスプロバイダデバイス160とクライアントコンピューティングデバイス150との間の通信を確立するのを円滑にする。これは、クライアントコンピューティングデバイスによって行われる要求がそうしないと行き詰まってしまう状況を回避する。
【0065】
図4は、システム100などの音声作動のデータパケットベースのコンピュータネットワーク環境内のクライアントコンピューティングデバイスとサービスプロバイダデバイスとの間の通信の行き詰まりを緩和するためのアクションを呼び出すための方法400を示している。
図4に示されている方法400は、データ処理システム105が(たとえば、リンク生成コンポーネント120を介して)クライアントコンピューティングデバイス150とサービスプロバイダデバイス160との間の通信の確立を、クライアントコンピューティングデバイス150に関連付けられている識別子が欠損していてそのような通信の確立ができない場合に円滑にすることを可能にする。さらに、方法400は、仮想識別子を受け渡し、サービスプロバイダデバイス160とクライアントコンピューティングデバイス150との間の複数の問い合わせおよび通信を回避することによってリソース消費(たとえば、帯域幅)も低減しながら、データ処理システム105とサービスプロバイダデバイス160との間のデータ伝送の信頼性および効率を改善し、それによりサービスプロバイダデバイス160が要求されたサービスを提供することを可能にする。
【0066】
方法400は、クライアントコンピューティングデバイスからデータパケットを受信することができる(ACT405)。たとえば、データ処理システム105は、NLPコンポーネント110を実行するか、起動するか、または呼び出して、クライアントコンピューティングデバイス150からネットワーク165を介してパケットまたは他のプロトコルベースの伝送を受信することができる。データパケットは、エンドユーザがスマートフォンに「OK, I would like to go to go dinner and then a movie tonight」としゃべるなど、センサー151によって検出される入力オーディオ信号を含むか、または対応することができる。この方法ステップの別の例は、
図3に関して上ですでに説明されており、クライアントコンピューティングデバイス150に関連付けられているユーザからの音声コマンドを含む通信C1は、データ処理システム105によって受信される。
【0067】
方法400は、入力オーディオ信号から少なくとも1つの要求または少なくとも1つのトリガーキーワードを識別することができる(ACT410)。たとえば、NLPコンポーネント110は、入力オーディオ信号を解析して、要求(「dinner」または「movie」)さらには要求に対応するか、または要求に関係するトリガーキーワード「go」「go to」または「to go to」を識別することができる。データ処理システム105は、輸送をユーザに提供することに関係するアクションなどの、キーワードに関連付けられているアクションを決定することができる。
【0068】
方法400は、データ処理システムによって識別されたキーワードに基づきコンテンツアイテムを選択することができる(ACT415)。たとえば、コンテンツセレクタコンポーネント125は、識別された要求およびキーワードに基づき、少なくとも1つのコンテンツアイテムを選択することができる。データ処理システム105は、選択されたコンテンツアイテムに関連付けられている少なくとも1つの出力オーディオ信号を選択することができる。たとえば、コンテンツセレクタコンポーネント125は、代替乗車シェアリングサービスに対応する出力オーディオ信号を選択することができる。コンテンツアイテムを選択する別の例は、
図3に関して上ですでに説明されており、データ処理システム105は、「Would you like to consider an alternative ride service PQR which is $5 cheaper than the XYZ ride service?」という出力オーディオ信号を選択し、「PQR」は、代替乗車サービスの名称もしくは呼称を表すものとしてよい。データ処理システム105は、
図3に示されているように、コンテンツアイテムに関連付けられているこのオーディオファイルを含む通信C2を送信する。
【0069】
方法400は、クライアントコンピューティングデバイス150に関連付けられているデータベースレコードが存在していないことを決定するステップを含む(ACT420)。たとえば、リンク生成コンポーネント120は、サービスプロバイダデバイス160に問い合わせを行って(通信C4、
図3)、クライアントコンピューティングデバイス150に関連付けられているデータベースレコードがサービスプロバイダデバイス160のクライアントデータベース164内に存在しているかどうかを決定することができる。代替的に、
図3に示されているように、データ処理システム105は、クライアントデータベース164に直接問い合わせを行って(通信C4'、
図3)、クライアントコンピューティングデバイス150に関連付けられているレコードの存在を決定することができる。データ処理システム105は、また、データリポジトリ145に問い合わせを行って、識別子147のどれかがクライアントコンピューティングデバイス150および要求されたコンテンツアイテムに関連付けられている識別子を含むかどうかを決定することもできる。クライアントコンピューティングデバイス150に関連付けられている識別子に対するレコードが存在していない場合、クライアントデータベース164は、Null応答(通信C6およびC6'、
図3)を返すことができ、ちょうどそれだけを示す。
【0070】
方法400は、仮想識別子を生成するステップを含む(ACT425)。上で説明されているように、リンク生成コンポーネント120は、クライアントコンピューティングデバイス150に関連付けられている仮想識別子を生成することができる。仮想識別子は、クライアントコンピューティングデバイス150を識別する一意的識別子であってよい。仮想識別子は、ランダムに生成された数であってよい。仮想識別子は、また、クライアントコンピューティングデバイス150に関連付けられているデータ上でハッシュ関数または暗号関数を使用して決定され得る。さらに、仮想識別子は、PKIを使用して安全な通信に使用され得るデジタル証明書または公開鍵を含むことができる。
【0071】
方法400は、仮想識別子をサービスプロバイダデバイスに送信するステップも含む(ACT430)。
図1〜
図3に関して上で説明されているように、リンク生成コンポーネント120は、クライアントコンピューティングデバイスに関連付けられている仮想識別子をサービスプロバイダデバイス160に送信することができる(通信C8、
図3)。仮想識別子は、インターフェース115を介して、ネットワーク165上で、(たとえば、データパケットのペイロードセクション内の)データパケットを使用してサービスプロバイダデバイス160に伝達され得る。サービスプロバイダデバイス160は、クライアントデータベース164内に仮想識別子に関連付けられているデータベースレコードを作成する。クライアントデータベース164内にレコードを作成するステップは、クライアントコンピューティングデバイス150に対するアカウントを作成してサービスプロバイダデバイス160が要求されたサービスをクライアントコンピューティングデバイス150に提供することを可能にするステップを含み得る。リンク生成コンポーネント120は、仮想識別子をデータリポジトリ145内に識別子147の1つとして記憶することもできる。一例では、リンク生成コンポーネント120は、追加情報をサービスプロバイダデバイス160に送信することができる。たとえば、リンク生成コンポーネント120は、クライアントコンピューティングデバイス150に関連付けられている情報を送信することができる。また、リンク生成コンポーネント120は、クライアントコンピューティングデバイス150上の1つまたは複数のセンサーからデータをポーリングし、仮想識別子とともにデータを送信することができる。
【0072】
方法400は、レコードの作成の通信を受信するステップを含む(ACT435)。たとえば、
図3に示されているように、データ処理システム105は、クライアントデータベース164内にレコードが作成されていることを指示する通信C11を受信する。レコード作成通信を受信した後に、データ処理システム105は、クライアントコンピューティングデバイス150からの追加の要求、またはサービスプロバイダデバイス160からの追加データの要求を受信するのを待つことができる。
【0073】
図5は、例示的なコンピュータシステム500のブロック図である。コンピュータシステムまたはコンピューティングデバイス500は、システム100、または処理システム105などのそのコンポーネントを含むか、または実装するために使用され得る。データ処理システム105は、インテリジェントパーソナルアシスタントまたは音声ベースのデジタルアシスタントを含むことができる。コンピューティングシステム500は、情報を伝達するためのバス505または他の通信コンポーネントと、情報を処理するためにバス505に結合されているプロセッサ510または処理回路とを備える。コンピューティングシステム500は、情報を処理するためにバスに結合されている1つまたは複数のプロセッサ510もしくは処理回路も備え得る。コンピューティングシステム500は、情報、およびプロセッサ510によって実行されるべき命令を記憶するためにバス505に結合されるランダムアクセスメモリ(RAM)または他のダイナミックストレージデバイスなどのメインメモリ515も備える。メインメモリ515は、データリポジトリ145であり得るか、または含み得る。メインメモリ515は、プロセッサ510による命令の実行時に位置情報、一時変数、または他の中間情報を記憶するためにも使用できる。コンピューティングシステム500は、静的情報とプロセッサ510に対する命令とを記憶するためにバス505に結合されているリードオンリーメモリ(ROM)520または他のスタティックストレージデバイスをさらに備え得る。ソリッドステートデバイス、磁気ディスク、または光ディスクなどのストレージデバイス525はバス505に結合され、情報および命令を永続的に記憶することができる。ストレージデバイス525は、データリポジトリ145を含み得るか、またはその一部であってよい。
【0074】
コンピューティングシステム500は、情報をユーザに対し表示するために、バス505を介して液晶ディスプレイ、またはアクティブマトリックスディスプレイなどのディスプレイ535に結合され得る。英数字および他のキーを備えるキーボードなどの入力デバイス530はバス505に結合され、情報およびコマンド選択をプロセッサ510に伝達することができる。入力デバイス530は、タッチスクリーンディスプレイ535を含み得る。入力デバイス530は、マウス、トラックボール、またはカーソル方向キーなどのカーソルコントロールも備え、それにより、方向情報およびコマンド選択をプロセッサ510に伝達し、ディスプレイ535上のカーソル移動を制御することができる。ディスプレイ535は、たとえば、データ処理システム105、クライアントコンピューティングデバイス150、または
図1の他のコンポーネントの一部であってもよい。
【0075】
本明細書で説明されているプロセス、システム、および方法は、メインメモリ515に収められている命令の配置構成をプロセッサ510が実行することに応答してコンピューティングシステム500によって実装され得る。このような命令は、ストレージデバイス525などの別のコンピュータ可読媒体からメインメモリ515内に読み込まれ得る。メインメモリ515に収められている命令の配置構成が実行されると、コンピューティングシステム500は本明細書で説明されている例示的なプロセスを実行する。多重処理配置構成の1つまたは複数のプロセッサも、メインメモリ515に収められている命令を実行するために採用され得る。ハード配線された回路は、本明細書で説明されているシステムおよび方法と一緒にソフトウェア命令の代わりに、またはそれと組み合わせて使用され得る。本明細書で説明されているシステムおよび方法は、ハードウェア回路とソフトウェアとの特定の組合せに限定されない。
【0076】
例示的なコンピューティングシステムが
図5において説明されているが、本明細書で説明されているオペレーションを含む発明対象は、他の種類のデジタル電子回路で、または本明細書およびその構造的等価物において開示されている構造を含む、コンピュータソフトウェア、ファームウェア、またはハードウェアで、またはそれらのうちの1つまたは複数の組合せで実装され得る。
【0077】
本明細書で説明されているシステムがユーザに関する個人情報を収集するか、または個人情報を利用し得る状況に関して、ユーザは、プログラムまたは機能により個人情報(たとえば、ユーザのソーシャルネットワーク、社会的行為もしくは活動、ユーザの選好、またはユーザの場所に関する情報)を収集するかどうかを制御する、またはユーザに対してより高い関連性を有する思われるコンテンツをコンテンツサーバまたは他のデータ処理システムから受信するかどうか、またはどのように受信するかを制御する機会を与えられ得る。それに加えて、パラメータを生成するときに、特定データが、それが記憶されるか、または使用される前に1つまたは複数の方法で匿名化されるものとしてよく、したがって個人的に識別可能な情報は取り除かれる。たとえば、ユーザの身元は、ユーザに対して個人的に識別可能な情報が決定され得ないように匿名化され得るか、または位置情報(市名、郵便番号、国家レベルなど)が得られる場合にユーザの地理的位置が一般化されるものとしてよく、したがって、ユーザの詳細な位置が決定され得ない。したがって、ユーザは、コンテンツサーバによってユーザに関する情報がどのように収集され、どのように使用されるかを制御し得る。
【0078】
本明細書で説明されている発明対象およびオペレーションは、デジタル電子回路で、または本明細書およびその構造的等価物において開示されている構造を含む、コンピュータソフトウェア、ファームウェア、またはハードウェアで、またはそれらのうちの1つまたは複数の組合せで実装され得る。本明細書において説明されている発明対象は、1つまたは複数のコンピュータプログラム、たとえば、データ処理装置によって実行できるようにまたはデータ処理装置の動作を制御するために1つまたは複数のコンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数の回路として実装されてよい。代替的に、またはそれに加えて、プログラム命令は、データ処理装置による実行のため好適な受信機装置に送信する情報を符号化するように生成される、人工的に生成された伝搬信号、たとえば、機械で生成された電気、光、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、または含まれ得る。コンピュータ記憶媒体は、伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成される伝搬信号内に符号化されているコンピュータプログラム命令のソースまたはデスティネーションとすることができる。コンピュータ記憶媒体は、また、1つまたは複数の独立したコンポーネントまたは媒体(たとえば、複数のCD、ディスク、または他のストレージデバイス)であり得るか、または含まれ得る。本明細書において説明されているオペレーションは、1つまたは複数のコンピュータ可読ストレージデバイス上に記憶されるか、または他のソースから受信されたデータに対するデータ処理装置によって実行されるオペレーションとして実装され得る。
【0079】
「データ処理システム」、「コンピューティングデバイス」、「コンポーネント」、または「データ処理装置」という用語は、たとえばプログラム可能プロセス、コンピュータ、1つまたは複数のチップ上のシステム、または前述のものの組合せを含む、データを処理するための様々な装置、デバイス、およびマシンを包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)を含んでいてもよい。装置は、また、ハードウェアに加えて、注目しているコンピュータプログラム用の実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォーム実行時環境、仮想マシン、またはこれらのうちの1つまたは複数のものの組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービス、分散型コンピューティング、およびグリッドコンピューティング基盤などの様々な異なるコンピューティングモデル基盤を実現することができる。ダイレクトアクションAPI135、コンテンツセレクタコンポーネント125、リンク生成コンポーネント120、またはNLPコンポーネント110、および他のデータ処理システム105コンポーネントは、1つまたは複数のデータ処理装置、システム、コンピューティングデバイス、またはプロセッサを含むか、または共有することができる。
【0080】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、スクリプト、またはコードとも称される)は、コンパイル言語またはインタプリタ言語、宣言型もしくは手続き型言語を含む、任意の形態のプログラミング言語で書かれ、スタンドアロンプログラム、またはモジュール、コンポーネント、サブルーチン、オブジェクト、またはコンピューティング環境において使用するのに適している他のユニットを含む、任意の形態で配備され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応するものとしてよい。コンピュータプログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語ドキュメントに記憶される1つまたは複数のスクリプト)を収容するファイルの一部に、注目しているプログラム専用の単一ファイルに、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、副プログラム、またはコードの一部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるか、または複数のサイトにまたがって分散され、通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるように配備され得る。
【0081】
本明細書で説明されているプロセスおよび論理の流れは、入力データを操作し、出力を生成することによってアクションを実行するように1つまたは複数のコンピュータプログラム(たとえば、データ処理システム105のコンポーネント)を実行する1つまたは複数のプログラム可能なプロセッサによって実行され得る。これらのプロセスまたは論理の流れは、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)によっても実行され、また装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)としても実装され得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、たとえば、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補助されるか、または専用論理回路に組み込まれ得る。
【0082】
本明細書で説明されている発明対象は、バックエンドコンポーネントを、たとえば、データサーバとして備えるか、またはミドルウェアコンポーネント、たとえば、アプリケーションサーバを備えるか、またはフロントエンドコンポーネント、たとえば、ユーザが本明細書で説明されている発明対象の実装をインタラクティブに操作するために使用することができるグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータを備えるコンピューティングシステムで、または1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの組合せで実装され得る。システムのコンポーネントは、デジタルデータ通信の任意の形態または媒体、たとえば、通信ネットワーク、によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、およびピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0083】
システム100またはシステム500などのコンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、一般に、互いに隔てられており、典型的には、通信ネットワーク(たとえば、ネットワーク165)を通じてインタラクティブな操作を行う。クライアントとサーバとの関係は、コンピュータプログラムが各コンピュータ上で実行され、互いとの間にクライアント-サーバ関係を有することによって発生する。いくつかの実装において、サーバはデータ(たとえば、コンテンツアイテムを表すデータパケット)をクライアントデバイスに(たとえば、クライアントデバイスをインタラクティブに操作するユーザにデータを表示し、ユーザ入力を受け取ることを目的として)伝送する。クライアントデバイスで(たとえば、ユーザインタラクションの結果として)生成されたデータは、サーバにおいてクライアントデバイスから受信され(たとえば、クライアントコンピューティングデバイス150またはコンテンツプロバイダコンピューティングデバイス155またはサービスプロバイダデバイス160からデータ処理システム105によって受信され)得る。
【0084】
オペレーションは特定の順序で図面に示されているが、そのようなオペレーションは、示される特定の順序でもしくは順番に実行される必要がなく、例示されているすべてのオペレーションが実行される必要があるとは限らない。本明細書で説明されているアクションは、異なる順序で実行できる。
【0085】
様々なシステムコンポーネントを分離するといってもすべての実装で分離する必要はなく、説明されているプログラムコンポーネントは単一のハードウェアまたはソフトウェア製品に含まれ得る。たとえば、NLPコンポーネント110、コンテンツセレクタコンポーネント125、またはリンク生成コンポーネント120は、単一のコンポーネント、アプリ、もしくはプログラム、または1つまたは複数の処理回路を有する論理デバイス、またはデータ処理システム105の1つまたは複数のサーバの一部であり得る。
【0086】
いくつかの例示的な実装が説明されているが、前述の内容は例示的であり、制限する意図はなく、例として提示されていることは明らかである。特に、本明細書に提示されている例の多くは、方法動作またはシステム要素の特定の組合せを伴い、それらの動作およびそれらの要素は、同じ目的を遂行するために他の方法で組み合わされてもよい。一実装に関連して説明されている動作、要素、および特徴は、他の実装における類似の役割または実装から除外されることを意図されていない。
【0087】
本明細書で使用されている語法および術語は、説明を目的とするものであり、制限するものとしてみなされるべきでない。「含む、備える(including)」、「からなる、備える、含む(comprising)」、「有する(having)」、「収容する、含む(containing)」、「伴う(involving)」、「特徴とする(characterized by、characterized in that)」、および本明細書におけるそれらの変形は、それ以降に記載される項目、同等の項目、および追加項目、さらにはこれ以降排他的に記載されている項目からなる代替的実装を包含することを意図されている。一実装において、本明細書で説明されているシステムおよび方法は、説明されている要素、動作、またはコンポーネントのうちの1つ、複数の各組合せ、またはすべてからなる。
【0088】
本明細書で単数形で参照されているシステムおよび方法の実装または要素または動作への参照は、また、これらの複数の要素を含む実装も包含するものとしてよく、本明細書における実装または要素または動作への複数の参照は、また、単一の要素のみを含む実装も包含し得る。単数形または複数形による参照は、本開示のシステムまたは方法、そのコンポーネント、動作、または要素を単一または複数の構成に制限することを意図していない。情報、動作、または要素に基づいている動作または要素への参照は、動作または要素が少なくとも一部の情報、動作、または要素に基づく実装を含み得る。
【0089】
本明細書で開示されている実装は、他の実装または実施形態と組み合わされるものとしてよく、「実装」、「いくつかの実装」、「一実装」、または同様の言い回しへの参照は、必ずしも相互排他的でなく、実装に関連して説明されている特定の特徴、構造、または特性が少なくとも1つの実装または実施形態に含まれ得ることを指示することを意図されている。本明細書で使用されているそのような用語は、必ずしもすべて同じ実装を指しているわけではない。任意の実装は、本明細書で開示されている態様および実装に一致する任意の方式で、包含的にまたは排他的に他の実装と組み合わされてもよい。
【0090】
「または」への参照は、「または」を使用して説明されている用語が、説明されている用語の1つ、複数、およびすべてのどれかを指示し得るように包含的に解釈され得る。たとえば、「AおよびBのうちの少なくとも一方」の参照は、Aのみ、Bのみ、さらにはAとBの両方を含み得る。「含む」または他のオープンターミノロジーと併せて使用されるそのような参照は、追加項目を含むことができる。
【0091】
図面、詳細な説明、または請求項における技術的特徴の後に引用符号が続く場合、引用符号は、図面、詳細な説明、および請求項の明瞭さを高めるために含まれている。したがって、引用符号があることもないことも、請求要素の範囲に対する制限的効果を有しない。
【0092】
前述の実装は、説明されているシステムおよび方法を制限するものではなく、例示するものである。したがって、本明細書で説明されているシステムおよび方法の範囲は、前述の説明ではなく、付属の請求項によって指示され、請求項の等価性の意味および範囲に入る変更は、そこに包含される。