(58)【調査した分野】(Int.Cl.,DB名)
前記単一のスレッドは第2のアクションの前に発生するようにスケジュールされた第1のアクション、前記第1のアクションデータ構造に対応する前記第1のアクションおよび前記第2のアクションデータ構造に対応する前記第2のアクションを示し、
前記ダイレクト・アクションAPIは前記第1のアクションの完了を検出し、
前記第1のアクションの完了に続いて前記単一のスレッドのデータパケットを前記第2のサービス・プロバイダ・コンピューティング・デバイスに送信する前記データ処理システムのインタフェース
を備える、請求項1に記載のシステム。
前記シーケンス依存性パラメータは、前記第1のアクションデータ構造に対応するアクションは、前記第2のアクションデータ構造に対応するアクションの前に発生するようにスケジュールされることを示す、請求項1に記載のシステム。
前記ダイレクト・アクションAPIは、前記第1のアクションデータ構造に対応する前記アクションに関連付けられた時刻に基づいて、前記第2のアクションデータ構造に対応する前記アクションに関連付けられたデッドロック条件を識別する、請求項3に記載のシステム。
前記デッドロック条件に応答して、前記第2の通信セッションのデータパケットの前記第2のサービス・プロバイダ・コンピューティング・デバイスへの送信を防止する前記データ処理システムのインタフェースを備える、請求項4に記載のシステム。
前記単一のスレッドは逐次的な順序での前記単一のスレッドに対するシーケンス依存アクションを示し、前記逐次的な順序は第1のアクション、前記第1のアクションに続く第2のアクション、および前記第2のアクションに続く第3のアクションを含み、前記ダイレクト・アクションAPIは、
前記逐次的な順序の指示を受信し、逐次的な順序の前記指示の受信に続いて、
修正された逐次的な順序を生成し、
前記修正された逐次的な順序は前記第2のアクションの前の前記第3のアクションを含む、
請求項1に記載のシステム。
前記単一のスレッドは前記単一のスレッドに対する一連のシーケンス依存アクションを含み、前記シーケンス依存アクションは第1のアクション、前記第1のアクションに続く第2のアクション、および前記第2のアクションに続く第3のアクションを含み、
前記ダイレクト・アクションAPIは、前記第1のアクションの完了の時点に基づいてデッドロック条件を決定し、
前記ダイレクト・アクションAPIは、前記第1のアクションの完了に基づいて前記デッドロック条件の解放を決定し、
前記デッドロック条件の解放に応答して、前記第2のアクションに対するコンテンツ・アイテムを識別する前記データ処理システムのコンテンツ・セレクタ・コンポーネントを備える、
請求項1に記載のシステム。
前記ダイレクト・アクションAPIは、前記第1のデータ送信および前記第2のデータ送信の前記単一のスレッドへの合併に続いて、前記第1のデータ送信および前記第2のデータ送信の少なくとも1つを前記第1の通信セッションの一部として送信する、請求項1に記載のシステム。
前記第2のアクションデータ構造に応答してコンテンツ・アイテムを選択するためのオフラインアクションを実施する前記データ処理システムのコンテンツ・セレクタ・コンポーネントを備える、請求項1に記載のシステム。
前記単一のスレッドは、第2のアクションの前に発生するようにスケジュールされた第1のアクション、前記第1のアクションデータ構造に対応する前記第1のアクションおよび前記第2のアクションデータ構造に対応する前記第2のアクションを示し、
前記第1のアクションの完了を検出するステップと、
前記第1のアクションの完了に続いて、前記第2の通信セッションのデータパケットを前記第2のサービス・プロバイダ・コンピューティング・デバイスに提供するステップと、
を含む、請求項17に記載の方法。
前記単一のスレッドは逐次的な順序での前記単一のスレッドに対するシーケンス依存アクションを示し、前記逐次的な順序は第1のアクション、前記第1のアクションに続く第2のアクション、および前記第2のアクションに続く第3のアクションを含み、
前記逐次的な順序の指示を受信するステップと、
修正された逐次的な順序を生成するステップであって、前記修正された逐次的な順序は前記第2のアクションの前の前記第3のアクションを含む、ステップと、
を含む、請求項17に記載の方法。
【発明を実施するための形態】
【0009】
以下は、音声起動されたコンピュータネットワーク環境における複数の音声起動されたオーディオ入力データパケットの処理を最適化するための方法、装置、およびシステムの実装に関連する様々な概念のより詳細な説明である。上で導入し以下でさらに詳細に説明する様々な概念を任意の多数の方法で実装してもよい。
【0010】
本開示のシステムおよび方法は一般に、音声起動されたコンピュータネットワーク環境におけるパケット・ベースの送信を介して複数の音声起動されたパケット(または他のプロトコル)ベースの入力オーディオ信号を最適化または動的に調節するデータ処理システムに関する。データ処理システムは、例えば、情報を入力オーディオ信号から抽出して複数の対応するアクションデータ構造を生成することにより、1つまたは複数のコンピュータネットワーク上のデータパケット送信の効率および有効性を高めることができる。当該アクションデータ構造を、データ処理システムおよび複数の異なるサービス・プロバイダ・コンピューティング・デバイスの間の通信セッション中の送信に対して構築することができる。例えば、異なるアクションデータ構造の当該パケットから、データ処理システムは少なくとも1つのシーケンス依存性パラメータを決定することができる。当該シーケンス依存性パラメータは、当該アクションデータ構造またはそれらの対応するデータ送信により示されるアクションの動作の順序を示すことができる。当該シーケンス依存性パラメータに基づいて、データ処理システムは複数のアクションデータ送信を単一のスレッドにマージまたは結合することができる。
【0011】
当該単一のスレッドは複数のアクションデータ構造のシーケンス依存動作を含むことができる。データ処理システムは当該単一のスレッドまたはその部分(例えば、少なくとも1つのパケット・ベースのデータ構造)を複数のサービス・プロバイダ・コンピューティング・デバイスに提供して、当該単一のスレッドにより示されるアクションを実現することができる。データ処理システムはまた、当該単一のスレッドまたはその部分を少なくとも1つのコンテンツ・プロバイダ・コンピューティング・デバイスに提供して、当該単一のスレッドに関連付けられたコンテンツ・アイテムを取得することができる。当該サービス・プロバイダ・コンピューティング・デバイスおよび当該コンテンツ・プロバイダ・コンピューティング・デバイスは、データ処理システムを介してまたはデータ処理システムをバイパスして、少なくとも1つのクライアントコンピューティングデバイス(例えば、当該オーディオ入力信号のソース)と通信して、オーディオ出力を描画し、当該スレッドにより示される当該アクションを実現するか、またはコンテンツ・アイテムを当該クライアントコンピューティングデバイスで描画することができる。
【0012】
複数のアクションデータ構造を単一のスレッドに単一のスレッドマージまたは統合し、当該単一のスレッドにより示されるシーケンス依存動作を識別することで、データ処理システムの処理電力、およびメモリ利用要件が、かかる統合およびシーケンス依存性識別なしに、複数のアクションデータ構造の独立な処理に対して削減される。例えば、独立なアクションデータ構造の動作の非同期なまたはシーケンス外処理は、データ処理システムおよびサービス・プロバイダまたはコンテンツ・プロバイダ・コンピューティング・デバイスの間の確立された通信セッションを介した、タイムリーでない、未熟な、または不要なデータパケット通信を生じさせうる。これは帯域幅を無駄にし、データ処理システムによりならびに当該サービス・プロバイダまたはコンテンツ・プロバイダ・コンピューティング・デバイスによる不要な処理動作を生じさせ、複数のコンピューティングデバイスのコンピューティングリソースを無駄にする。
【0013】
当該単一のスレッド内の識別されたシーケンス依存動作に基づいて、データ処理システムは1組のシーケンス依存動作の初期動作を一時的にまたは恒久的にスキップでき、代わりに後の時点のまたは最終的な動作に対応する動作に進むことができる。複数のシーケンス依存動作の早期動作に対応するパケットまたは他のプロトコルベースのデータ送信をバイパスすることによって、その代わり、データ処理システムが当該早期段階動作に関連付けられたデータ処理を減らし、遅延させ、または排除できる、動作のシーケンスにおける後の段階動作に対するパケット・ベースのデータ送信に直接に進む。これは、処理電力およびメモリのような他のコンピューティングリソースを節約し、データ処理システムによる電気電力消費および当該コンピュータネットワークを介した当該削減されたデータ送信を減らし、データ処理システムの帯域幅要件および利用を減らす。
【0014】
本明細書で説明するシステムおよび方法は、第1の入力オーディオ信号を受信するデータ処理システムを含むことができる。第1の入力オーディオ信号から、データ処理システムは第1の要求および当該要求に対応する第1のトリガキーワードを識別することができる。第1のトリガキーワードまたは第1の要求に基づいて、データ処理システムは第1のアクションデータ構造を生成でき、第1のアクションデータ構造を含む第1のデータ送信を構築または準備することができる。第1のデータ送信を、データパケットまたは他のプロトコルベースの送信として、当該クライアントコンピューティングデバイスから少なくとも1つの第1のサービス・プロバイダ・コンピューティング・デバイスに第1の通信セッションの一部としてルーティングすることができる。
【0015】
データ処理システムは第2の入力オーディオ信号を受信することができる。第2の入力オーディオ信号から、データ処理システムは第2の要求および当該要求に対応する第2のトリガキーワードを識別することができる。第2のトリガキーワードまたは第2の要求に基づいて、データ処理システムは第2のアクションデータ構造を生成でき、第2のアクションデータ構造を含む第2のデータ送信を構築または準備することができる。第2のデータ送信を、データパケットまたは他のプロトコルベースの送信として、当該クライアントコンピューティングデバイスから少なくとも1つの第2のサービス・プロバイダ・コンピューティング・デバイスに第2の通信セッションの一部としてルーティングすることができる。第1のおよび第2のサービス・プロバイダ・コンピューティング・デバイスは、データ処理システムを介して互いに通信しない異なるエンティティに対応することができる。
【0016】
データ処理システムは、第1のおよび第2の送信のデータパケットを(例えば、第1のおよび第2のデータ構造から)取得でき、少なくとも1つのシーケンス依存性パラメータを決定するための情報を当該データパケットから抽出することができる。当該シーケンス依存性パラメータは、第1のおよび第2のデータ構造のアクションに対する動作のシーケンスを示すことができる。データ処理システムは当該シーケンス依存性パラメータを閾値(例えば、ルール、ポリシ、または値)と比較でき、当該比較に基づいてデータ処理システムは第1のおよび第2のデータ送信(または関連付けられたアクションデータ構造)を単一のスレッドにマージすることができる。当該単一のスレッドは第1のおよび第2の(またはそれ以上)アクションデータ構造のアクションを示すことができ、これらのアクションのシーケンスまたは順序、ならびにシーケンス依存性を示すことができる。この場合、例えば第2のアクションは、第1のアクションが完了した後まで、開始できない(かまたは開始するようにスケジュールされない)。
【0017】
データ処理システムは、例えばシーケンス依存性に基づいてまたは当該クライアントコンピューティングデバイスから受信された入力に基づいて、当該単一のスレッドの幾つかのアクションに関連する動作を再順序付け、スキップ、または少なくとも一時的にバイパスすることができる。これを、当該バイパスされたアクションに基づいて、当該データ処理動作の少なくとも幾つかを実施する前またはそれを実施せずに、行うことができる。第1のアクションに対する当該処理動作をバイパスすることは、第2のアクションに関連するデータを、当該バイパスがない場合よりも少ないデータ処理および少ない電気電力利用で、識別し、送信し、描画することができる。
【0018】
図1は、音声起動されたデータパケット(または他のプロトコル)ベースのコンピュータネットワーク環境におけるシーケンス依存動作を有する複数のアクションデータ構造の処理を最適化するための例示的なシステム100を示す。システム100は、例えば音声起動された通信または計画システムの一部として少なくとも1つのデータ処理システム105を含むことができる。データ処理システム105は、少なくとも1つのプロセッサを有する少なくとも1つのサーバを含むことができる。例えば、データ処理システム105は、少なくとも1つのデータセンタまたはサーバ・ファームに配置された複数のサーバを含むことができる。データ処理システム105は、オーディオ入力信号から要求および当該要求に関連付けられたトリガキーワードを決定することができる。当該要求およびトリガキーワードに基づいてデータ処理システム105はアクションデータ構造を生成することができる。当該アクションデータ構造は、当該入力オーディオ信号に対応する少なくとも1つのアクションを示すことができる。データ処理システム105は複数の別々の入力オーディオ信号を受信でき、入力オーディオ信号ごとにそれぞれのデータ構造を生成することができる。データ処理システム105は、各データ構造が、互いにコンピューティングデバイス(例えば、サービス・プロバイダ・コンピューティング・デバイスまたはコンテンツ・プロバイダ・コンピューティング・デバイス)との各通信セッション中に当該データ構造を送信するために、データ送信を構築または準備することができる。データ処理システム105は、当該アクションデータ構造または対応するデータ送信から、1つまたは複数のシーケンス依存性パラメータを決定することができる。当該シーケンス依存性パラメータに基づいて、データ処理システム105は複数のデータ送信(または対応するアクションデータ構造)を単一のスレッドにマージすることができる。当該単一のスレッドは少なくとも2つのアクションデータ構造からのアクション、ならびに動作の順序または当該アクションのシーケンス依存性を示すことができる。
【0019】
データ処理システム105は、複数の論理的にグループ化されたサーバを含むことができ、分散コンピューティング技術を促進する。サーバの当該論理グループをデータセンタ、サーバ・ファームまたはマシン・ファームと称してもよい。当該サーバは地理的に分散されることができる。データセンタまたはマシン・ファームを単一のエンティティとして管理してもよく、または当該マシン・ファームは複数のマシン・ファームを含むことができる。各マシン・ファーム内の当該サーバは不均一であることができる。当該サーバまたはマシンのうち1つまたは複数が1つまたは複数のタイプのオペレーティング・システムプラットフォームに従って動作することができる。データ処理システム105は、関連付けられた記憶システムとともに1つまたは複数の高密度ラック・システムに格納され、例えばエンタープライズデータセンタに配置された、データセンタ内のサーバを含むことができる。このように統合されたサーバを有するデータ処理システム105は、当該システムのシステム管理可能性、データセキュリティ、当該物理セキュリティ、高性能ネットワーク上にサーバおよび高性能記憶システムを配置することでシステム性能を高めることができる。サーバおよび記憶システムを含むデータ処理システム105コンポーネントの全部または一部の集約と、それらを高度なシステム管理ツールと組み合わせることで、サーバリソースのより効率的な利用が可能となり、電力および処理要件が節約され、帯域幅利用が減る。
【0020】
データ処理システム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つのコンピュータネットワーク165を介してデータ・リポジトリ145および他のコンピューティングデバイス(例えば、クライアントコンピューティングデバイス150、コンテンツ・プロバイダ・コンピューティング・デバイス155、またはサービス・プロバイダ・コンピューティング・デバイス160)と通信するように構成されたプログラム可能論理アレイのような少なくとも1つの処理ユニット、サーバ、仮想サーバ、回路、エンジン、エージェント、機器、または他の論理デバイスを含むことができる。ネットワーク165は、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、メトロポリタン・ネットワーク、または他の領域ネットワーク、イントラネット、衛星ネットワーク、音声またはデータモバイル電話通信ネットワーク、およびその組合せのような他のコンピュータネットワークのようなコンピュータネットワークを含むことができる。
【0021】
ネットワーク165は、コンテンツ配置または検索エンジン結果システムに関連付けられるか、または、サードパーティコンテンツ・アイテムをコンテンツ・アイテム配置キャンペーンの一部として含む権利があるディスプレイネットワーク、例えば、インターネット上で利用可能な情報リソースのサブセットを含むかまたは構成することができる。ネットワーク165を、クライアントコンピューティングデバイス150により提供、出力、描画、または表示できるウェブページ、ウェブサイト、ドメイン名、またはユニフォーム・リソース・ロケータのような情報リソースにアクセスするためにデータ処理システム105により使用することができる。例えば、ネットワーク165を介してクライアントコンピューティングデバイス150のユーザは、コンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160により提供された情報またはデータにアクセスすることができる。
【0022】
ネットワーク165は、例えばポイント・ツー・ポイントネットワーク、ブロードキャストネットワーク、広帯域ネットワーク、ローカル・エリア・ネットワーク、電気通信ネットワーク、データ通信ネットワーク、コンピュータネットワーク、ATM(Asynchronous Transfer Mode))ネットワーク、SONET(Synchronous Optical Network)ネットワーク、SDH(Synchronous Digital Hierarchy)ネットワーク、ワイヤレスネットワークまたは有線ネットワーク、およびその組合せを含むことができる。ネットワーク165は赤外線チャネルまたは衛星帯域のような無線リンクを含むことができる。ネットワーク165のトポロジはバス、星形、またはリング・ネットワークトポロジを含んでもよい。ネットワーク165は高度携帯電話プロトコル(「AMPS」)、時分割多重アクセス(「TDMA」)、符号分割多重アクセス(「CDMA」)、グローバル・システム・フォー・モバイル・コミュニケーション(「GSM(登録商標)」)、汎用パケット無線サービス(「GPRS」)またはユニバーサル・モバイル電気通信システム(「UMTS」)を含む、モバイルデバイスの間で通信するために使用される任意の1つまたは複数のプロトコルを用いた携帯電話ネットワークを含むことができる。様々なタイプのデータが異なるプロトコルを介して送信されてもよい、または同一のタイプのデータが異なるプロトコルを介して送信されてもよい。
【0023】
クライアントコンピューティングデバイス150、コンテンツ・プロバイダ・コンピューティング・デバイス155、およびサービス・プロバイダ・コンピューティング・デバイス160はそれぞれ、ネットワーク165を介して互いにまたはデータ処理システム105と通信するためのプロセッサを有するコンピューティングデバイスのような少なくとも1つの論理デバイスを含むことができる。クライアントコンピューティングデバイス150、コンテンツ・プロバイダ・コンピューティング・デバイス155、およびサービス・プロバイダ・コンピューティング・デバイス160はそれぞれ、少なくとも1つのデータセンタに配置された少なくとも1つのサーバ、プロセッサまたはメモリ、または複数の計算リソースまたはサーバを含むことができる。クライアントコンピューティングデバイス150、コンテンツ・プロバイダ・コンピューティング・デバイス155、およびサービス・プロバイダ・コンピューティング・デバイス160はそれぞれ少なくとも1つのコンピューティングデバイスのようなデスクトップコンピュータ、ラップトップ、タブレット、携帯情報端末、スマートフォン、ポータブルコンピュータ、サーバ、シン・クライアントコンピュータ、仮想サーバ、または他のコンピューティングデバイスを含むことができる。
【0024】
クライアントコンピューティングデバイス150は少なくとも1つのセンサ151、少なくとも1つのトランスデューサ152、少なくとも1つのオーディオ・ドライバ153、および少なくとも1つのスピーカ154を含むことができる。センサ151はマイクロフォンまたはオーディオ入力センサを含むことができる。トランスデューサ152は当該オーディオ入力を電子信号を変換することができる。オーディオ・ドライバ153は、オーディオ入力を処理するかまたはオーディオ出力を提供するようにクライアントコンピューティングデバイス150の他のコンポーネントのうちセンサ151、トランスデューサ152またはオーディオ・ドライバ153を制御するために、クライアントコンピューティングデバイス150の1つまたは複数のプロセッサにより実行されるスクリプトまたはプログラムを含むことができる。スピーカ154は当該オーディオ出力信号を送信することができる。
【0025】
クライアントコンピューティングデバイス150を、音声クエリをオーディオ入力としてクライアントコンピューティングデバイス150(センサ151を介して)に入力し、データ処理システム105(またはコンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160)からクライアントコンピューティングデバイス150に提供できるコンピュータ生成された音声の形でオーディオ出力を受信し、スピーカ154から出力する。当該コンピュータ生成された音声は、実際の人またはコンピュータ生成された言語からの記録を含むことができるエンド・ユーザに関連付けることができる。
【0026】
コンテンツ・プロバイダ・コンピューティング・デバイス155は、クライアントコンピューティングデバイス150によりオーディオ出力コンテンツ・アイテムとして表示するためのオーディオベースのコンテンツ・アイテムを提供することができる。当該コンテンツ・アイテムは「Would you like me to order you a taxi?」と述べる音声ベースのメッセージのような商品またはサービスの申し出を含むことができる。例えば、コンテンツ・プロバイダ・コンピューティング・デバイス155は、音声ベースのクエリに応答して提供できる一連のオーディオコンテンツ・アイテムを格納するためのメモリを含むことができる。コンテンツ・プロバイダ・コンピューティング・デバイス155はまた、オーディオベースのコンテンツ・アイテム(または他のコンテンツ・アイテム)をデータ処理システム105に提供することができる。それらをデータ・リポジトリ145に格納することができる。データ処理システム105は、オーディオコンポーネントを含み、当該コンテンツ・アイテムをクライアントコンピューティングデバイス150に提供する(または提供するようにコンテンツ・プロバイダ・コンピューティング・デバイス155に指示する)コンテンツ・アイテムを選択することができる。当該オーディオベースのコンテンツ・アイテムは、排他的にオーディオであることができ、または、テキスト、画像、またはビデオデータと組み合わせることができる。当該コンテンツ・アイテムは、描画するときにオーディオ出力または音波を提供する1つまたは複数のオーディオファイルを含むことができる。当該コンテンツ・アイテムはオーディオコンテンツに加えてまたはその代わりに他のコンテンツ(例えば、テキスト、ビデオ、または画像コンテンツ)を含むことができる。例えば、当該コンテンツ・アイテムは、オーディオファイルを含まずオーディオ出力を描画できないテキストまたは画像ファイル、またはその組合せを含むことができる。
【0027】
サービス・プロバイダ・コンピューティング・デバイス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または他のコンポーネントを介して、クライアントコンピューティングデバイス150との当該セッションを確立して、サービス・プロバイダ・コンピューティング・デバイス160を含むかまたはバイパスして、例えばタクシーまたは当該カーシェアサービスの車の配送をアレンジすることができる。
【0028】
データ・リポジトリ145は1つまたは複数のローカルまたは分散データベースを含むことができ、データベース管理システムを含むことができる。データ・リポジトリ145はコンピュータデータ記憶またはメモリを含むことができ、他のデータのうち1つまたは複数のパラメータ146、1つまたは複数のポリシ147、コンテンツ・データ148、またはテンプレート149を格納することができる。パラメータ146、ポリシ147、およびテンプレート149は、クライアントコンピューティングデバイス150(またはサービス・プロバイダ・コンピューティング・デバイス160)とデータ処理システム105の間の音声ベースのセッションに関するルールのような情報を含むことができる。コンテンツ・データ148は、オーディオ出力に対するコンテンツ・アイテムまたは関連付けられたメタデータ、ならびにクライアントコンピューティングデバイス150との1つまたは複数の通信セッションの一部であることができる入力オーディオメッセージを含むことができる。
【0029】
データ処理システム105は、入力オーディオ信号をデータ処理システム105のインタフェース115に通信して、当該クライアントコンピューティングデバイスのコンポーネントを駆動して、出力オーディオ信号を描画するアプリのような、クライアントコンピューティングデバイス150にインストールされたアプリケーション、スクリプトまたはプログラムを含むことができる。データ処理システム105はオーディオ入力信号を含むかまたは識別するデータパケットまたは他の信号を受信することができる。例えば、データ処理システム105はNLPコンポーネント110の少なくとも一部を実行して、当該オーディオ入力信号を受信することができる。
【0030】
NLPコンポーネント110は、当該入力信号を(例えば、データ・リポジトリ145内の)格納された、代表的な組のオーディオ波形と比較し、最も近いマッチを選択することによって、当該オーディオ入力信号を認識されたテキストに変換することができる。当該代表的な波形は多数のユーザにわたって生成され、会話サンプルで補強することができる。当該オーディオ信号を認識されたテキストに変換された後、NLPコンポーネント110は、例えばユーザにわたるトレーニングを介してまたはマニュアル仕様を通じて、データ処理システム105がサービス提供できるアクションに関連付けられる単語に当該テキストをマッチすることができる。
【0031】
当該オーディオ入力信号は、当該クライアントコンピューティングデバイスのセンサ151(例えば、マイクロフォン)により検出されることができる。トランスデューサ152、オーディオ・ドライバ153、または他のコンポーネントを介して、クライアントコンピューティングデバイス150は当該オーディオ入力信号をデータ処理システム105に(例えば、ネットワーク165を介して)提供することができる。当該オーディオ入力信号を、(例えば、インタフェース115により)受信し、NLPコンポーネント110に提供するか、または、データ・リポジトリ145にコンテンツ・データ148として格納することができる。
【0032】
システム100は、音声起動されたデータパケット(または他のプロトコル)環境におけるシーケンス依存動作を含むアクションデータ構造の処理を最適化することができる。例えば、データ処理システム105は、音声起動されたアシスタントサービス、音声コマンドデバイス、インテリジェント・パーソナル・アシスタント、知識ナビゲータ、イベント計画、または他のアシスタントプログラムを含むことができるかまたはその一部であることができる。データ処理システム105は、クライアントコンピューティングデバイス150から表示するためのオーディオ出力の1つまたは複数のインスタンスを提供して、この入力オーディオ信号に関連するタスクを実現することができる。当該タスクはサービス・プロバイダ・コンピューティング・デバイス160または他のサードパーティコンピューティングデバイスを含み、例えば、サービス・プロバイダ・コンピューティング・デバイス160または他のサードパーティコンピューティングデバイスと通信して、ディナー予約を行うかまたは映画チケットを購入することができる。例えば、エンド・ユーザは、「OK, I would like to go to go dinner tonight」の入力オーディオ信号をクライアントコンピューティングデバイス150に入力できる。この入力オーディオ信号を、クライアントコンピューティングデバイス150のセンサ151(例えば、マイクロフォン)により検出して、(例えば、トランスデューサ152により)をデータ処理システム105に送信するためのデータパケットまたは他のプロトコルベースの構造に変換することができる。
【0033】
NLPコンポーネント110は少なくとも1つの第1の入力オーディオ信号を受信または取得することができる。例えば、インタフェース115およびコンピュータネットワーク165を介して、NLPコンポーネント110は第1の入力オーディオ信号をクライアントコンピューティングデバイス150から取得することができる。NLPコンポーネント110は、第1の入力オーディオ信号からデータを抽出し、または、第1の入力オーディオ信号を解析して、少なくとも1つの第1の要求または第1の要求に対応する少なくとも1つの第1のトリガキーワードを識別することができる。第1の要求は、第1の入力オーディオ信号の意図または主題、例えば、ディナーを食べる意図を示すことができる。第1のトリガキーワードは行われる可能性があるアクションのタイプを示すことができる。例えば、NLPコンポーネント110は第1の入力オーディオ信号を解析して、夕方のディナーのために家を出るための少なくとも1つの要求を識別することができる。第1のトリガキーワードは、取るべきアクションを示す少なくとも1つの単語、フレーズ、語源または部分語、または派生物を含むことができる。例えば、当該入力オーディオ信号からのトリガキーワード「go」または「to go to」は輸送に対する必要性を示すことができる。本例では、当該入力オーディオ信号(または識別された要求)は輸送の意図を直接表現しないが、当該トリガキーワードは、輸送が、当該要求により示される少なくとも1つの他のアクションに対する補助またはサブアクションを示す。
【0034】
NLPコンポーネント110は第2の入力オーディオ信号を受信することができる。例えば、第1のオーディオ入力信号は「OK, I would like to go to go dinner tonight」であることができ、第2のオーディオ入力信号は「OK, I would like to catch a movie later」であることができる。NLPコンポーネント110は、第2の入力オーディオ信号を任意のクライアントコンピューティングデバイス150から、第1の入力オーディオ信号が取得された類似の方式で、例えば、ネットワーク165を介して受信または取得することができる。NLPコンポーネント110は、データを第2の入力オーディオ信号から抽出し、または、第2の入力オーディオ信号を解析して、少なくとも1つの第2の要求または第2の要求に対応する少なくとも1つの第2のトリガキーワードを識別することができる。第2の要求は、第2の入力オーディオ信号の意図または主題、例えば、映画館で映画を観る意図を示すことができる。第2のトリガキーワードは行われる可能性があるアクションのタイプを示すことができる。例えば、NLPコンポーネント110は、第2の入力オーディオ信号を解析して、夕方に映画を観るために家を出る少なくとも1つの要求を識別することができる。第2のトリガキーワードは、取るべきアクションを示す少なくとも1つの単語、フレーズ、語源または部分語、または派生物を含むことができる。例えば、第2の入力オーディオ信号からのトリガキーワード「to catch」は、輸送に対する必要性を、例えば、当該要求により示される少なくとも1つの他のアクションに対する補助またはサブアクションとして、示すことができる。
【0035】
ダイレクト・アクションAPI135は、プログラムまたはスクリプトを、例えばNLPコンポーネント110、スレッド最適化コンポーネント120、またはコンテンツ・セレクタ・コンポーネント125から実行して、タスクまたはアクションを実施するか、または、入力オーディオ信号に応答してコンテンツ・アイテムを識別することができる。ダイレクト・アクションAPI135はデータ処理システム105により決定されるものとして、指定されたアクションを実行してエンド・ユーザの意図を満たすことができる。その入力で指定されたアクションに依存して、ダイレクト・アクションAPI135は、ユーザ要求を満たすのに必要なパラメータを識別するコードまたはダイアログスクリプトを実行することができる。かかるコードは、例えば、ホーム・オートメーションサービスの名前のようなデータ・リポジトリ145内の追加の情報を検索することができる、またはクライアントコンピューティングデバイス150で描画するためのオーディオ出力を提供して、エンド・ユーザに要求されたタクシーの意図した宛先、観る映画のジャンル、またはディナーに行くレストランのタイプのような質問をすることができる。ダイレクト・アクションAPI135は必要なパラメータを決定し、当該情報をアクションデータ構造にパッケージ化することができる。当該アクションデータ構造は次いで、コンテンツ・セレクタ・コンポーネント125のような別のコンポーネントにまたは満たすべきサービス・プロバイダ・コンピューティング・デバイス160(またはコンテンツ・プロバイダ・コンピューティング・デバイス155)に送信することができる。
【0036】
データ処理システム105のダイレクト・アクションAPI135は、当該要求または当該トリガキーワードに基づいて、当該スレッドのアクションに対するデータ構造を生成することができる。当該アクションデータ構造を当該要求に応答して生成することができる。当該アクションデータ構造は、サービス・プロバイダ・コンピューティング・デバイス160により送受信されるメッセージに含まれることができる。NLPコンポーネント110により解析された当該要求に基づいて、ダイレクト・アクションAPI135は複数のサービス・プロバイダ・コンピューティング・デバイス160のうちどれに当該メッセージを送信すべきかを判定することができる。
【0037】
ダイレクト・アクションAPI135は、第1のトリガキーワードに基づいておよび第1の要求に応答して、第1のアクションデータ構造を生成でき、第2のトリガキーワードに基づいておよび第2の要求に応答して第2のアクションデータ構造を生成することができる。例えば、第1の入力オーディオ信号が「go to dinner tonight」を含む場合、NLPコンポーネント110はトリガ単語「tonight」およびディナーの示唆または予約の要求を識別することができる。ダイレクト・アクションAPI135は当該要求を、レストランのサービス・プロバイダ・コンピューティング・デバイス160(またはコンテンツ・プロバイダ・コンピューティング・デバイス155)へのメッセージとして送信するための第1のアクションデータ構造にパッケージ化することができる。第1の入力オーディオ信号は、当該ディナーアクションに付属的な他のアクションを示す他の要求またはトリガキーワードを含むことができる。これらのアクションは第1のアクションデータ構造に含まれることができる。例えば、NLPコンポーネント110は、「OK, I would like to go to go dinner tonight」という、ディナーへの輸送に関する第1の要求または第1のトリガキーワード(追加のアクション)を第1の入力オーディオ信号から識別することができる。
【0038】
例えば、第2の入力オーディオ信号が「catch a movie later」を含む場合、NLPコンポーネント110は、映画を観る要求をトリガキーワード「catch」または「later」で識別することができる。ダイレクト・アクションAPI135は当該要求を、映画会社または映画館のサービス・プロバイダ・コンピューティング・デバイス160(またはコンテンツ・プロバイダ・コンピューティング・デバイス155)に対するメッセージとして送信するための第2のアクションデータ構造へパッケージ化することができる。第2の入力オーディオ信号は、当該映画アクションに付属的な他のアクションを示す他の第2の要求または第2のトリガキーワードを含むことができる。これらのアクションは第2のアクションデータ構造に含まれることができる。例えば、NLPコンポーネント110は、映画館(追加のアクション)への輸送に関する第1の要求または第1のトリガキーワードを、「OK, I would like to catch a movie later」という第2の入力オーディオ信号から識別することができる。
【0039】
第1のおよび第2の、または他の任意のアクションデータ構造をまた、コンテンツ・セレクタ・コンポーネント125に渡すことができる。当該アクションデータ構造は、要求に関連付けられた1つまたは複数のアクションを完了するための情報を含むことができる。本例では、当該情報は、レストランまたは映画関心インジケータ、位置情報、レストランまたはレストランのタイプの識別または位置、レストラン予約情報、映画館での映画上映時間、映画館位置情報、またはピックアップ位置および宛先位置を含むことができる。ダイレクト・アクションAPI135は、どのフィールドを当該アクションデータ構造に含めるべきかを判定するためにテンプレート149をリポジトリ145から取り出すことができる。ダイレクト・アクションAPI135は、当該データ構造のフィールドに関する情報を取得するために、コンテンツをリポジトリ145から取り出すことができる。ダイレクト・アクションAPI135は、当該テンプレートからのフィールドをその情報で埋めて、当該データ構造を生成することができる。ダイレクト・アクションAPI135はまた、当該フィールドを入力オーディオ信号またはサードパーティソースからのデータで埋めることができる。テンプレート149を、サービス・プロバイダのカテゴリに対して標準化するか、または、特定のサービス・プロバイダに対して標準化することができる。例えば、乗車共有サービス・プロバイダは以下の標準化されたテンプレート149を使用して当該データ構造{client_device_identifier; authentication_credentials; pick_up_location; destination_location; no_passengers; service_level}を生成することができる。当該データ構造は可変フィールドを含むことができる。当該可変フィールドは、例えば、データ構造の少なくとも1つのアクションにより示されるかまたはそれに関連する識別された複数のアクションのシーケンスまたは順序動作を示すことができる。ダイレクト・アクションAPI135は、可変フィールドを含む当該データ構造のフィールドを埋めることができる。ダイレクト・アクションAPI135は、第1のアクションが終了した後に開始する第2のアクションのようなアクションの間のシーケンス依存性に基づいて、データをデータ構造の1つまたは複数の可変フィールドに埋めることができる。
【0040】
ダイレクト・アクションAPI135は、アクションデータ構造に対応するデータパケットを含むデータ送信を構築することができる。例えば、当該データ送信は、当該アクションデータ構造のパケット化されたバージョン、例えば、当該データ構造により表された情報を示すヘッダおよびペイロード領域を有するデータパケットを含むことができる。当該データ送信を、データ処理システム105を介して、サービス・プロバイダ・コンピューティング・デバイス160およびクライアントコンピューティングデバイス150の間の少なくとも1つの通信セッションを確立(例えば、参加)するために使用することができる。セッションハンドラコンポーネント140はインタフェース115を介して当該通信セッションを確立または識別することができる。例えば、アクション第1のおよび第2のデータ構造(またはそれらの対応するパケット化されたデータ送信)を単一のスレッドにマージまたは関連付けることに続いて、データ処理システム105は当該データ送信をサービス・プロバイダ・コンピューティング・デバイス160に提供することができる。当該通信セッションの通信の一部として、サービス・プロバイダ・コンピューティング・デバイス160はまた、データ処理システム105を介して、データパケット(または他のデータメッセージ)をクライアントコンピューティングデバイス105から受信することができる。例えば、データ処理システム105は、当該通信セッションの一部として、内向きデータメッセージをクライアントコンピューティングデバイス150から受信し、サービス・プロバイダ・コンピューティング・デバイス160に通すことができる。
【0041】
スレッド最適化コンポーネント120は、第1のおよび第2の(および他の任意の)データ送信のデータパケットを取得またはそれにアクセスすることができる。例えば、ダイレクト・アクションAPI135は当該送信(例えば、対応するデータパケット)をデータ・リポジトリ145に記憶のために提供することができる。それらを、スレッド最適化コンポーネント120により取り出すことができる。スレッド最適化コンポーネント120はまた、当該データ送信のデータパケット(または他のプロトコルベースの構造)を、データ・リポジトリ145をバイパスしてダイレクト・アクションAPI135(または他のデータ処理システム105コンポーネント)から受信することができる。
【0042】
スレッド最適化コンポーネント120は、それぞれ複数のアクションデータ構造に対応する複数のデータ送信のデータパケットから情報を解析または抽出することができる。例えば、スレッド最適化コンポーネント120は、少なくとも1つのシーケンス依存性パラメータを決定するために、ヒューリスティック技術を第1のデータ送信のデータパケットに(または対応する第1のデータ構造に)適用し、第2のデータ送信のデータパケットに(または対応する第2のデータ構造に)適用することができる。当該ヒューリスティックまたは他の統計的技術は、当該データ送信により示されるアクションのシーケンス依存性を示す第1のおよび第2のデータ送信(または対応するデータ構造)の中の確実性パターンの閾値量を決定または識別することができる。
【0043】
当該シーケンス依存性パラメータは、互いに対する動作、時間、またはシーケンス依存性の順序を有するデータ送信(または対応するアクションデータ構造)により表されるアクションの(例えば、閾値レベルまたは他のベンチマークに対する)存在または可能性を示すことができる。当該シーケンス依存動作またはアクションは、当該シーケンス依存性パラメータにより示され、既知の、示唆された、要求された、または特定の順序で発生するアクションの数を含むことができる。例えば、家から映画館に行き、次いで家に戻ることは3つのシーケンス依存動作またはアクションを含むことができる。この例における第1のアクションは家から映画館に移動することを含む。第2のアクションは映画館で映画を観ることを含む。第3のアクションは映画館から家に戻ることを含む。
【0044】
これらの3つの(およびおそらく他の)アクションを、ダイレクト・アクションAPI135により、入力オーディオ信号「OK, I would like to catch a movie later」に対応する要求またはトリガキーワードから決定することができる。本例では、当該シーケンス内の第2のアクション(映画を観ること)は第1のアクション(家から映画館に行くこと)に続きそれに依存し、第3のアクション(家に戻ること)は第1のアクションおよび第2のアクションに続きそれに依存する。第3のアクションは第2のアクションに続きそれに依存すると考えることができ、そのような意図を表した際、データ処理システム105は同様に、家に戻る前にエンド・ユーザが映画館で映画を観ると判定または予測する。
【0045】
当該シーケンス依存性パラメータに基づいて、スレッド最適化コンポーネント120は、複数のパケット化されたデータ送信(またはそれらの対応するアクションデータ構造)を単一のスレッドにマージすることができる。当該単一のスレッドは、アクションならびに他のデータ(例えば、メタデータまたはサードパーティデータ)を複数のデータアクション構造から識別するデータを含むことができる。当該単一のスレッドは、パケット化された(または他のプロトコルベースの)形態で、例えば、第1のおよび第2のデータ送信と同一のフォーマットであることができる。当該単一のスレッドはまた、例えば、ダイレクト・アクションAPI135により生成されたデータ構造フォーマット、または少なくとも1つのテンプレート149、ポリシ147、またはパラメータ146のフォーマットであることができる。当該単一のスレッドは、1つまたは複数のデータ送信からのまたは1つまたは複数のアクションデータ構造からのアクションの関連付けまたはリンクを含むかまたは示すことができる。
【0046】
当該通信セッションを介して当該アクションデータ構造により示されるデータをサービス・プロバイダ・コンピューティング・デバイス160に送信する前に、当該データ送信またはアクションデータ構造を、スレッド最適化コンポーネント120により互いにマージまたは関連付けて、当該単一のスレッドを生成することができる。
【0047】
本例では、ダイレクト・アクションAPI135または他のデータ処理システム105コンポーネント(例えば、インタフェース115)は当該単一のスレッドにより示されるデータの少なくとも一部を、当該単一のスレッドの合併または生成に続いて、サービス・プロバイダ・コンピューティング・デバイス160に初めて送信することができる。例えば、当該単一のスレッドの生成の前に、データ処理システム105は、第1のまたは第2の(または他の任意の)データ構造に関連付けられたデータを、遅延させ、防止し、差し控え、または送信していなくてもよい。幾つかの例では、独立なデータ構造により示されるデータの少なくとも幾つかを、当該単一のスレッドの生成の前に、データ処理システム105によりそこから、サービス・プロバイダ・コンピューティング・デバイス160に提供することができる。
【0048】
スレッド最適化コンポーネント120は、当該シーケンス依存性パラメータに基づいて、当該データ送信(または対応するアクションデータ構造)を当該単一のスレッドにマージ、または統合もしくは関連付けることができる。例えば、第1のデータ送信(および第1のデータ構造)は第1の入力オーディオ信号「OK, I would like to go to go dinner tonight」に関連付けられたアクションを表すことができ、第2のデータ送信(および第2のデータ構造)は第2の入力オーディオ信号「OK, I would like to catch a movie later」に関連付けられたアクションを表すことができる。第1のおよび第2の(または他の任意の)入力オーディオ信号は、逐次的(1分未満で互いに続く)であってもよく、別々の時間(例えば、1分より大きい)で互いから分離してもよく、同一のまたは異なるクライアントコンピューティングデバイス150から発生することができる。スレッド最適化コンポーネント120は、この情報を表すデータパケット(または他のデータ)を取得でき、少なくとも1つのシーケンス依存性パラメータを決定することができる。例えば、当該シーケンス依存性パラメータは、映画館から家に戻るアクションが当該映画を観るアクションの後に発生すること、または当該映画を観るアクションがディナーを食べるアクションの後に発生するかと発生すると予測されることを示すことができる。
【0049】
(任意のデータ構造またはフォーマットでの)単一のスレッドは、一連のアクションのような、1つまたは複数の入力オーディオ信号(または対応するデータ構造またはデータ送信)に対応する1組のシーケンス依存動作を示すことができる。当該スレッドは、第1のアクション、第2のアクション、および第3のアクションのような任意の複数のアクションを含むことができる。例えば、第1の入力オーディオ信号「OK, I would like to go to go dinner tonight」、および第2の入力オーディオ信号「OK, I would like to catch a movie later」の合併は、ディナーおよび映画に参加する関心を示す少なくとも1つの要求、および輸送に対する必要性を示す少なくとも1つのトリガキーワード、例えば、「go」を含むことができる。スレッド最適化コンポーネント120は、当該アクションの間の少なくとも1つのシーケンス、時間的な、または動作依存性の順序を示す少なくとも1つのシーケンス依存性パラメータを識別でき、当該複数の入力オーディオ信号(または対応するテンプレートベースのデータ構造またはパケット/プロトコルベースのデータ送信)を結合するための単一のスレッドを生成することができる。スレッド最適化コンポーネント120は、ディナーアクション(第1のアクション)、映画アクション(第2のアクション)、および家への輸送アクション(第3のアクション)のような少なくとも3つのアクションを示す単一のスレッドを生成することができる。本例では、当該要求または当該トリガキーワードから、スレッド最適化コンポーネント120は、当該3つのアクションを示す複数の別々の入力から単一のスレッドを生成する。当該単一のスレッドは、ディナーアクションへの初期輸送のような他のアクションを含むことができる。
【0050】
データ処理システム105またはスレッド最適化コンポーネント120のようなそのコンポーネントは、当該スレッドのアクションがシーケンス依存動作であると判定することができる。例えば、当該スレッド最適化コンポーネントは、映画を観る第2のアクションがディナーを食べる第1のアクションに続き、映画館から家に移動する第3のアクションが当該映画を観る第2のアクションの後であると判定することができる。スレッド最適化コンポーネント120は、当該シーケンス依存アクションの順序を決定または推定するために、データ・リポジトリ145内のパラメータ146またはポリシ147にアクセスすることができる。例えば、パラメータ146またはポリシ147は、輸送アクション(例えば、家へのタクシー)がイベントアクション(例えば、映画を観ること)の後に発生しうることを示しうる。
【0051】
コンテンツ・セレクタ・コンポーネント125は、当該単一のスレッドのアクションの何れかの指示を取得することができる。例えば、スレッド最適化コンポーネント120は、第3の(または他の任意の)アクションを示す当該単一のスレッドの少なくとも一部をコンテンツ・セレクタ・コンポーネント125に直接または間接に(例えば、データ・リポジトリ145を介して)提供することができる。コンテンツ・セレクタ・コンポーネント125はこの情報をデータ・リポジトリ145から取得することができる。当該情報をコンテンツ・データ148の一部として格納することができる。第3のアクションの指示は、コンテンツ・セレクタ・コンポーネント125に、最終目的地への乗車のような、映画館の位置からクライアントコンピューティングデバイス150により決定または示される位置への輸送に対する必要性を知らせることができる。
【0052】
コンテンツ・セレクタ・コンポーネント125は当該スレッド内の後のアクションの指示を少なくとも1つのより早いアクションの発生の前に取得することができる。例えば、コンテンツ・セレクタ・コンポーネント125は、映画が映画館で上映される(第2のアクション)前に、または入力オーディオ信号をクライアントコンピューティングデバイス150に入力した人がレストランでディナーを食べる(第1のアクション)前に、第3のアクションの指示(例えば、映画館からの乗車に対する必要性)を受信することができる。コンテンツ・セレクタ・コンポーネント125は、当該スレッドの少なくとも1つのアクションの完了の前に、当該スレッドの少なくとも1つのアクションの指示を取得することができる。
【0053】
当該シーケンス依存スレッド内の少なくとも1つの過去のアクションの発生の前にコンテンツ・セレクタ・コンポーネント125により受信された情報、例えば、第3のアクションの指示から、コンテンツ・セレクタ・コンポーネント125は少なくとも1つのコンテンツ・アイテムを識別することができる。当該コンテンツ・アイテムは第3の(または他の任意の)アクションに応答または関連することができる。例えば、当該コンテンツ・アイテムは、輸送の必要性を示す第3のアクションに応答して、カーシェア会社のオーディオメッセージ提供サービスを含むことができる。コンテンツ・セレクタ・コンポーネント125はデータ・リポジトリ145に問い合わせて、当該コンテンツ・アイテムを、例えば、コンテンツ・データ148から選択または識別することができる。コンテンツ・セレクタ・コンポーネント125はまた、当該コンテンツ・アイテムをコンテンツ・プロバイダ・コンピューティング・デバイス155から選択することができる。例えばデータ処理システム105から受信されたクエリに応答して、コンテンツ・プロバイダ・コンピューティング・デバイス155はコンテンツ・アイテムをクライアントコンピューティングデバイス150による最終出力のためにデータ処理システム105(またはそのコンポーネント)に提供することができる。
【0054】
オーディオ信号生成器コンポーネント130は、第3の(または他の任意の)アクションに応答して当該コンテンツ・アイテムを含む出力信号を生成または取得することができる。例えば、データ処理システム105は、当該オーディオ信号生成器コンポーネントを実行して、当該コンテンツ・アイテムに対応する出力信号を生成または作成することができる。データ処理システム105のインタフェース115は、コンピュータネットワーク165を介して当該出力信号を含む1つまたは複数のデータパケットを例えば、当該通信セッションの一部としてクライアントコンピューティングデバイス150に提供または送信することができる。インタフェース115は例えば、データパケットを用いて情報を送受信するように設計され、構成され、構築され、または動作することができる。インタフェース115は、ネットワークプロトコルのような1つまたは複数のプロトコルを用いて情報を送受信することができる。インタフェース115は、ハードウェアインタフェース、ソフトウェアインタフェース、有線インタフェース、またはワイヤレスインタフェースを含むことができる。インタフェース115は、或るフォーマットから別のフォーマットへのデータ変換またはデータ・フォーマットを促進することができる。例えば、インタフェース115は、システム100のソフトウェアコンポーネントのような、様々なコンポーネントの間で通信するための定義を含むアプリケーション・プログラミング・インタフェースを含むことができる。
【0055】
例えばデータ処理システム105は当該出力信号をデータ・リポジトリ145からまたはオーディオ信号生成器コンポーネント130からクライアントコンピューティングデバイス150に提供することができる。データ処理システム105はまた、データパケット送信を介して、コンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160に、当該出力信号をクライアントコンピューティングデバイス150に提供するように指示することができる。当該出力信号を、取得し、生成し、1つまたは複数のデータパケット(または他の通信プロトコル)に変換し、または1つまたは複数のデータパケット(または他の通信プロトコル)としてデータ処理システム105(または他のコンピューティングデバイス)からクライアントコンピューティングデバイス150に送信することができる。
【0056】
コンテンツ・セレクタ・コンポーネント125は、当該単一のスレッドにより示される1組のシーケンス依存動作における後のアクションにスキップして、当該後のアクションに対応する活動に対する発生の前(および即時の必要性の前)に当該後のアクションに対するコンテンツ・アイテムを選択することができる。例えば、第1の過去のアクションに対するコンテンツ・アイテムを選択する前に第2の後続のアクションに対するコンテンツ・アイテムを選択するために後の順序付けられたアクションにスキップすることで、データ処理システム105は、後続のアクションに対するコンテンツ・アイテムを選択するための過去のアクションに関連する情報を最初に処理する必要がない。これは、さもなければ第2のアクションに対するコンテンツ・アイテムを選択する前に(第1のアクションに対する)コンテンツ・アイテムを選択することに関連付けられるデータ送信のプロセッサ利用、電力消費および帯域幅を減らす。
【0057】
コンテンツ・セレクタ・コンポーネント125は、当該コンテンツ・アイテムを、(後続のまたは後の)アクションに対してリアルタイムコンテンツ選択プロセスの一部として選択することができる。例えば、当該コンテンツ・アイテムを、当該入力オーディオ信号への直接応答の会話方式でオーディオ出力として送信するために当該クライアントコンピューティングデバイスに提供することができる。当該コンテンツ・アイテムを識別し当該コンテンツ・アイテムをクライアントコンピューティングデバイス150に提供するためのリアルタイムコンテンツ選択プロセスは、当該入力オーディオ信号の時刻から1分以内に発生でき、リアルタイムと考えることができる。
【0058】
例えばオーディオ信号生成器コンポーネント130により取得または生成され、インタフェース115およびコンピュータネットワーク165を介してクライアントコンピューティングデバイス150に送信された、コンテンツ・プロバイダ・コンピューティング・デバイス155に対応するコンテンツ・アイテム(またはサービス・プロバイダ・コンピューティング・デバイス160に対応するデータ)に対応する出力信号はクライアントコンピューティングデバイス150に、オーディオ・ドライバ153を実行してスピーカ154を駆動し、当該出力信号に対応する音波を生成させることができる。当該音波は、当該コンテンツ・アイテムの単語もしくは当該コンテンツ・アイテムに対応する単語、または、後の(例えば、第2のまたは第3の)アクションに対する他のデータを含むことができる。当該コンテンツ・アイテムに対応する出力信号はまた、当該入力オーディオ信号のソースであるクライアントコンピューティングデバイス150上でまたは異なるクライアントコンピューティングデバイス150(例えば、ウェラブルデバイスのコンピューティングデバイス)上でオーディオ要素なしに描画できるテキストまたは画像メッセージとして描画する、非オーディオ・コンテンツ・アイテムを含むことができる。
【0059】
データ処理システム105は、当該入力オーディオ信号に対する直接的またはリアルタイムな応答におけるアクションに応答して当該コンテンツ・アイテムまたは他のデータを含む出力信号を提供でき、その結果、データ処理システム105とクライアントコンピューティングデバイス150の間の通信セッションの一部であるコンピュータネットワーク165を介したパケット・ベースのデータ送信は、リアルタイムな人から人への会話の流れと感覚を有する。このパケット・ベースのデータ送信通信セッションはまた、コンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160を含むことができる。
【0060】
コンテンツ・セレクタ・コンポーネント125は、シーケンス内の任意の過去のアクションに対する任意のコンテンツ・アイテムを選択する前に、シーケンス依存の1組のアクションにおける第2の(または任意の非第1の)アクションに応答して提供されたコンテンツ・アイテムを選択することができる。これは、過去のアクションに対応するデータの少なくとも幾つかを処理する必要性を回避する。これは、第2のコンテンツ・アイテムを、アクションのシーケンスの順序にマッチする順序で当該コンテンツ・アイテムが選択された場合に発生する削減された数の処理動作とともに選択させる。当該過去の(例えば、第1のおよび第2の)アクションに対するコンテンツ・アイテムを、例えば第2のアクションに対するコンテンツ・アイテムの選択の後に選択してもしなくてもよい。
【0061】
コンテンツ・セレクタ・コンポーネント125は、同一のスレッドの1つまたは複数の要求の主題と異なる主題を示すスレッドの少なくとも1つのトリガキーワードに基づいて、(例えば、第2のアクションに対する)コンテンツ・アイテムを選択することができる。例えば、当該単一のスレッドの当該要求はディナー要求の主題(第1のアクション)、および映画要求の主題(第2のアクション)を示すことができる。この主題は輸送の要求を示さない。しかし、NLPコンポーネント110またはスレッド最適化コンポーネント120(またはダイレクト・アクションAPI135の一部として実行される他のデータ処理システム105コンポーネント)は、トリガキーワード「go」「go to」または「to go to」を識別でき、少なくとも当該トリガキーワードに部分的に基づいて輸送の要求を決定することができる。したがって、データ処理システム105は、当該入力オーディオ信号の主要な要求または主題ではない二次要求である入力オーディオ信号からアクションを推論することができる。
【0062】
データ処理システム105は当該コンテンツ・アイテムを含む出力信号の送信を防止または遅延することができる。例えば、インタフェース115またはダイレクト・アクションAPI135介して実行されるスクリプトは、トリガ・イベントまで、コンテンツ・アイテムまたは当該単一のスレッドのアクションに対応する出力信号を含むデータパケットの送信を防止することができる。当該トリガ・イベントは、映画のスケジュールされた終了時刻のような、2時間または当該スレッド内のより早いアクションの発生と一致する時間のような、所定の時間期間の期限切れを含むことができる。当該トリガ・イベントはまた、データ処理システム105によりクライアントコンピューティングデバイス150から受信された認証指示を含むことができる。当該認証指示は、当該スレッドに関連付けられた後続のオーディオ入力として発生するが、当該入力オーディオ信号、テキストベースのまたは他の非可聴信号に続いて、データ処理システム105により受信でき、またはクライアントコンピューティングデバイス150によるコンテンツ・アイテムの受信を承認するクライアントコンピューティングデバイス150の設定の指示を含むことができる。
【0063】
データ処理システム105はまた、当該スレッドの第2のアクションまたは第2のアクションに関連付けられたコンテンツ・アイテムの送信を遅延して、処理の利用を最適化することができる。例えば、データ処理システム105はコンテンツ・アイテム送信をデータセンタ利用のオフピークまたは非ピークの期間まで遅延することができる、これはピーク帯域幅利用、熱出力または冷却要件を減らすことで当該データセンタのより効率的な利用をもたらす。データ処理システム105はまた、データ処理システム105を含むネットワーク165またはデータセンタのデータセンタ利用率または帯域幅メトリックまたは要件に基づいて、車サービスの注文のような、当該コンテンツ・アイテムに関連付けられた変換または他の活動を開始することができる。
【0064】
当該コンテンツ・アイテムは当該スレッドのアクションに対応でき、コンテンツ・セレクタ・コンポーネント125は、当該スレッドの1つの、複数の、または全てのアクションに対するコンテンツ・アイテムを選択することができる。スレッド最適化コンポーネント120は、アクションのシーケンス依存スレッド、例えば、「ディナー」(第1のアクション)「映画」(第2のアクション)および「映画の場所からの輸送」(第3のアクション)を識別することができる。
【0065】
例えば、当該単一のスレッドに基づいて、第3のアクションに対するコンテンツ・アイテムを、当該オーディオ入力信号に応答して「Would you like a ride home from the movie theater?」と述べるオーディオ応答として、クライアントコンピューティングデバイス150で描画するために提供することができる。この描画に続いてまたはその前に、データ処理システム105は、コンテンツ・アイテム、例えば、第1のアクション(ディナー)に対する「the Italian restaurant downtown has an opening for 7pm tonight - are you interested?」を選択または提供でき、別のコンテンツ・アイテム、例えば、第2のアクション(映画)に対して「would you like tickets to the 9pm movie at the downtown theater?」を選択または提供することができる。データ処理システム105は、当該入力オーディオ信号に応答して、オーディオ出力コンテンツ・アイテムとしてクライアントコンピューティングデバイス150により描画するためにこれらのコンテンツ・アイテムを提供する(提供するようにコンテンツ・プロバイダ・コンピューティング・デバイス155に指示することを含む)ことができる。データ処理システム105は、インタフェース115を介して、これらのコンテンツ・アイテムを任意の順序で選択しまたはクライアントコンピューティングデバイス150に提供することができる。例えば、第3の(例えば、最後の)アクションに対するコンテンツ・アイテムを、当該スレッドの他のより早いアクションに対応するコンテンツ・アイテムの前に最初に選択または提供することができる。
【0066】
データ処理システム105は、コンテンツ・アイテム「would you like a ride home from the movie theater?」に対する応答を受信できる。当該応答は、エンド・ユーザによりクライアントコンピューティングデバイス150に入力されデータ処理システム105により受信された入力オーディオ信号、例えば、「yes please」を含むことができる。データ処理システム105またはそのコンポーネント(例えば、スレッド最適化コンポーネント)は当該単一のスレッドの一部として当該応答を含むことができる。この応答に基づいて、ダイレクト・アクションAPI135は、(カーシェア会社のようなコンテンツ・アイテムに関連付けることができる)サービス・プロバイダ・コンピューティング・デバイス160と通信して、映画が終了する時刻に映画館の位置へタクシーまたは相乗り車をオーダすることができる。データ処理システム105は、データ・リポジトリ145から、またはサービス・プロバイダ・コンピューティング・デバイス160またはコンテンツ・プロバイダ・コンピューティング・デバイス155のような他のソースから、クライアントコンピューティングデバイス150とのデータパケット(または他のプロトコル)ベースのデータメッセージ通信の一部として、この位置情報または時刻情報を取得することができる。このオーダ(または他の変換)の確認を、「great, you will have a car waiting for you at 11pm outside the theater」のようなオーディオ出力をクライアントコンピューティングデバイス150に描画させるデータ処理システム105からの出力信号の形で、オーディオ通信としてデータ処理システム105からクライアントコンピューティングデバイス150に提供することができる。データ処理システム105は、ダイレクト・アクションAPI135を介して、サービス・プロバイダ・コンピューティング・デバイス160と通信して車のオーダを確認することができる。
【0067】
データ処理システム105は、コンテンツ・アイテム(「would you like a ride home from the movie theater?」)に対する応答(例えば、「yes please」)を取得でき、パケット・ベースのデータメッセージを、サービス・プロバイダNPLコンポーネント161(またはサービス・プロバイダ・コンピューティング・デバイスの他のコンポーネント)にルーティングすることができる。このパケット・ベースのデータメッセージは、サービス・プロバイダ・コンピューティング・デバイス160に、変換に影響を及ぼして、例えば、映画館の外での車のピックアップ予約を行わせることができる。この変換、または確認された順序、(または当該スレッドの他の任意のアクションの他の任意の変換)は、当該スレッドの1つまたは複数のアクションの完了の前に、例えば映画の完了の前に、ならびに当該スレッドの1つまたは複数のアクションの完了に続いて、例えば、ディナーに続いて発生することができる。
【0068】
シーケンス依存スレッド内の第3の最後のアクションに対するコンテンツ・アイテム「would you like a ride home from the movie theater」に対する応答「yes please」のような、当該スレッド内の後続のアクションコンテンツ・アイテムへの応答に基づいて、データ処理システム105は変換またはアクションを開始することができる。これは、エンド・ユーザが当該スレッドに関連付けられた任意のアクティビティを開始する前に、例えば、ディナー前または映画終了前に発生することができる。データ処理システム105のプロセッサは、そのカーシェアサービスからの車をオーダするスクリプトを実行するように、ダイレクト・アクションAPI135を起動することができる。ダイレクト・アクションAPI135は、データ・リポジトリ145からコンテンツ・データ148(またはパラメータ146またはポリシ147)を取得し、ならびにエンド・ユーザ同意によりクライアントコンピューティングデバイス150から受信されたデータを取得して、カーシェアサービスから車を予約するための位置、時間、ユーザアカウント、物流または他の情報を決定することができる。ダイレクト・アクションAPI135を用いて、データ処理システム105はまた、サービス・プロバイダ・コンピューティング・デバイス160と通信して、この例ではカーシェアのピックアップ予約を行うことによって当該変換を完了することができる。
【0069】
ダイレクト・アクションAPI135は、当該スレッドのアクションを実現するための変換または活動を、当該スレッドに関連付けられた第1の入力オーディオ信号(例えば、「OK, I would like to go to go dinner and then a movie tonight」)のデータ処理システム105による受信から、当該スレッドのアクションの1つの完了に続く閾値時間期間まで(例えば、映画を観る第2のアクションの終了後15分まで)の或る時間期間中の任意の時点で、開始することができる。データ処理システム110はまた、エンド・ユーザが当該スレッドのアクションを完了したこと、例えば、家に戻ったかまたは映画館にもはや居ないことの指示のような、他の因子に基づいてこの時間期間の終了を決定することができる。データ処理システム105はまた、当該スレッドがキャンセルされたまたは休眠であることまたはエンド・ユーザが当該スレッドのアクションをキャンセルまたは完了したことの指示(ネットワーク165を介して送信されたデータメッセージ)を、クライアントコンピューティングデバイス150から取得することができる。
【0070】
ダイレクト・アクションAPI135は、他の当該スレッドのアクションの完了または完了の時点に基づいて、当該スレッドのアクションを実現するための変換または活動を開始することができる。例えば、データ処理システム105は、商品またはサービス(カーシェアピックアップ)を直接に、または、当該スレッド内の過去のアクションの完了の閾値時間期間内にサービス・プロバイダ・コンピューティング・デバイス160と通信することによって、オーダすることができる。映画(第2のアクション)のスケジュールされたまたは実際の完了の前または後の5分(または他の時間期間)内に、データ処理システム105は、カーシェアサービスを確認またはオーダして、エンド・ユーザを映画館(後続の、第3のアクション)でピックアップするために車を送ることができる。これは、この時間期間内にエンド・ユーザコンピューティングデバイス150から受信された入力がない状態で、または、この時間期間内にエンド・ユーザコンピューティングデバイス150から受信されたプロンプトに応答して、発生することができる。
【0071】
ダイレクト・アクションAPI135は、当該スレッドのシーケンス依存動作に関連付けられた変換または他の活動を任意の順序で開始することができる。例えば、ダイレクト・アクションAPI135(または他のデータ処理システム105のコンポーネント)は、当該シーケンス内のより早いスレッドに対応する活動を開始する前に(例えば、ディナー予約を行う前にまたは映画のチケットを注文する前に)、最終アクション(例えば、タクシーのオーダのような3つのアクションスレッド内の第3のアクション)に対応する活動を開始することができる。本例ではデータ処理システム105は、後の(例えば、第3の)アクションに対する活動の開始に続いて、より早い(例えば、第2の)アクションに対する活動を開始する。
【0072】
コンテンツ・セレクタ・コンポーネント125は、複数のコンテンツ選択プロセスから生ずる複数のコンテンツ・アイテムを識別、選択、または取得することができる。当該コンテンツ選択プロセスは、スレッドを含む、データ処理システム105とクライアントコンピューティングデバイス150の間のリアルタイムな、例えば、同一の会話、通信セッション、または一連の通信セッションの一部であることができる。当該会話は、例えば時間または日の期間だけ互いから分離した非同期な通信を含むことができる。当該会話または通信セッションは、第1の入力オーディオ信号の受信から、当該スレッドの最終アクションの推定されたまたは既知の結論、データ処理システム105による当該スレッドの終了の指示の受信までの或る時間期間だけ継続することができる。これを当該スレッドのアクティブ時間期間と称することができる。例えば、3つのアクション(例えば、ディナー、映画、および家への輸送)を有するスレッドに対して、コンテンツ・セレクタ・コンポーネント125はアクションごとに少なくとも1つのコンテンツ・アイテムを選択することができる。コンテンツ・アイテム・セレクタ・コンポーネント125は、アクションごとに異なるコンテンツ選択プロセスからの結果を実行または取得することができる。当該コンテンツ選択プロセスにおいて、コンテンツ・プロバイダ・コンピューティング・デバイス150は、コンテンツ・セレクタ・コンポーネント125による選択のためのコンテンツ・アイテムを説明することができる。少なくとも3つのアクションを有するスレッドに対して、当該コンテンツ・アイテム・セレクタ・コンポーネントは、第1のコンテンツ選択プロセスを介して第1のアクションに対する第1のコンテンツ・アイテムを、第2のコンテンツ選択プロセスを介して第2のアクションに対する第2のコンテンツ・アイテムを、および第3のコンテンツ選択プロセスを介して第3のアクションに対する第3のコンテンツ・アイテムを選択または識別することができる。当該スレッドのアクティブ時間期間中にクライアントコンピューティングデバイス150により描画するためにこれらのコンテンツ・アイテムを提供するデータ処理システム105を、リアルタイムに動作していると考えることができる。本例では当該コンテンツ選択プロセスおよび当該コンテンツ・アイテムの描画はリアルタイムに発生する。
【0073】
データ処理システム105は、コンテンツ・アイテムに関連付けられたアクションをキャンセルすることができる。例えば、車サービスを注文した後、エンド・ユーザは、映画を観るが、車を家までもっていく代わりに、家まで歩くか、または、映画の後にデザートを食べることを決定するかもしれない。クライアントコンピューティングデバイス150でデータ処理システム105の一部として実行されているアプリまたは他のプログラムは、「cancel my ride home」の入力オーディオ信号を受信することができる。NLPコンポーネント110は、この入力オーディオ信号を、例えば1つまたは複数のパケット・ベースのデータメッセージとして受信でき、この入力オーディオ信号は既存のスレッド(例えば、ディナー、映画、家への輸送)に関し同一の会話または通信の一部であると判定することができる。例えば、NLPコンポーネント110(または他のデータ処理システム105コンポーネント)は、スレッドの過去の、現在の、またはスケジュールされたアクションのような時間データ、位置データおよび既存のスレッドデータをデータ・リポジトリ145のコンテンツ・データ148から評価して、入力オーディオ信号が既存のスレッドに関すると判定することができる。例えば、要求「ride」またはトリガキーワード「cancel」に基づいて、NLPコンポーネント110は、入力オーディオ信号「cancel my ride home」が既存のスレッドの第3のアクションに対応するコンテンツ・アイテム「would you like a ride home from the movie theater?」に関すると判定することができる。ダイレクト・アクションAPI135(または他のコンポーネント)はデータ処理システム105に、インタフェース115を介してサービス・プロバイダ・コンピューティング・デバイス160と通信して、映画の終了時にエンド・ユーザを映画館の外で車を待たせるタクシーまたはカーシェアサービスのオーダをキャンセルさせることができる。
【0074】
NLPコンポーネント135は、当該スレッドの任意のアクションの完了の前または後に当該スレッドのアクションをキャンセルするためのデータパケットまたは他のプロトコルベースのメッセージを受信することができる。NLPコンポーネント135は、当該スレッドのより早いアクションによりトリガされた時間間隔内に当該スレッドのアクションをキャンセルするためのデータメッセージ(内向きオーディオ信号)を、クライアントコンピューティングデバイス150から受信する(またはデータ・リポジトリ145から取得する)ことができる。例えば、3つのアクション、即ち、ディナー、映画、輸送を有するシーケンス依存スレッド内で、データ処理システム105は、映画が終了する5分(または他の時間期間)以内に当該輸送をキャンセルするデータメッセージを受信することができる。データ処理システム105は、当該スレッドのアクションに関連する製品またはサービスの確認を促すことができる。例えば、第1のアクションおよび第2のアクションの間の時間期間中(例えば、ディナーの後、かつ、映画の前)に、データ処理システム105は、クライアントコンピューティングデバイス150で描画されるとき、「just confirming that you still want a car waiting for you after the movie」と述べるオーディオまたはテキストメッセージを出力するデータメッセージをクライアントコンピューティングデバイス150に送信することができる。データ処理システム105は、例えば、「yes, confirmed」または「no, cancel the car」の応答を受信することができる。この応答を、当該スレッドの一部として含めることができる。ダイレクト・アクションAPI135はスクリプトを実行してこの情報を処理でき、サービス・プロバイダ・コンピューティング・デバイス160と通信して、当該確認またはキャンセルを示すことができる。
【0075】
とりわけ
図1および
図2を参照すると、当該シーケンス依存性パラメータに基づいて、スレッド最適化コンポーネント120は少なくとも1つの単一のスレッドデータ構造200を生成することができる。単一のスレッドデータ構造200はパケット・ベースのアーキテクチャ(または他のフォーマット)を含むことができ、少なくとも1つのヘッダ205を含むことができる。ヘッダ205は、データ処理システム105を識別する補完データ、ソースまたは宛先アドレス情報、支配的なプロトコル情報、IPアドレス、フレーム同期データ、サイズデータ、解像度データ、またはアクションデータ構造に関連付けられたメタデータを含むことができる。単一のスレッドデータ構造200のペイロードまたはボディは、少なくとも1つのシーケンス依存性パラメータ210、または少なくとも1つの第1のデータ送信215または少なくとも1つの第2のデータ送信220のような他の情報を含むことができる。単一のスレッドデータ構造200は、1つまたは複数の構造、例えば、各ヘッダ205および第1のデータ送信215または第2のデータ送信220の少なくとも一部を示すペイロードを有する複数のパケットを含むことができる。シーケンス依存性パラメータ215は、第1のデータ送信215または第2のデータ送信220により示される当該複数のアクションからのアクションのシーケンス依存性を示すことができる。
【0076】
ヘッダ205、シーケンス依存性パラメータ210、第1のデータ送信215、および第2のデータ送信220は、単一のスレッドデータ構造200に含まれてもよいがその必要はない。例えば、単一のスレッドデータ構造200のボディは、第1のデータ送信215(またはその部分)のみを含み、シーケンス依存性パラメータ210または第2のデータ送信220の何れも含まないことができ、または単一のスレッドデータ構造200のボディはシーケンス依存性パラメータ210ならびに第1のデータ送信215および第2のデータ送信220のうち1つまたは複数を含むことができる。単一のスレッドデータ構造200は、データ処理システム105とサービス・プロバイダ・コンピューティング・デバイス160またはコンテンツ・プロバイダ・コンピューティング・デバイス155との間の1つまたは複数のデータ送信の一部として逐次的にまたは並列に別々に送信された1つまたは複数の独立なパケットを含むことができる。ヘッダ205またはシーケンス依存性パラメータ210は、当該別々の送信または別々のデータパケットが同一のバッチ送信、例えば、同一の全体の単一のスレッドデータ構造200に関連付けられると示すことができる。ダイレクト・アクションAPI135は複数の異なる単一のスレッドデータ構造を1つの単一のスレッドデータ構造200にマージまたはリンクすることができる。単一のスレッドデータ構造200は、別個だが互いに関連付けられた複数のパケットまたは複数の異なる構造を含むことができる。
【0077】
スレッド最適化コンポーネント120は、単一のスレッドデータ構造200の或るアクションを別のアクションに対して優先付けすることができる。当該優先付けはシーケンス依存性パラメータ210により示されることができ、または、ダイレクト・アクションAPI135またはコンテンツ・セレクタ・コンポーネント125に提供される。例えば、スレッド最適化コンポーネント120は、当該単一のスレッドのデータ構造200で示される最初のアクションを優先付けすることができる。当該優先付けに応答して、ダイレクト・アクションAPI135またはコンテンツ・セレクタ・コンポーネント125のような他のコンポーネントは、データ送信(例えば、第1のデータ送信215または第2のデータ送信220の少なくとも一部)を、コンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160に提供して、当該最初のアクションに関連する変換に影響を及ぼすことができる。
【0078】
とりわけ
図3を参照すると、データ処理システム105は第1の入力オーディオ信号305(例えば、「OK, I would like to go to go dinner tonight」)を第1のクライアントコンピューティングデバイス150から受信することができる。データ処理システム105はまた、第2の入力オーディオ信号310(例えば、「OK, I would like to catch a movie later」)を同一のまたは異なるクライアントコンピューティングデバイス150から受信することができる。データ処理システム105は、第1のおよび第2のオーディオ入力信号305、310に対する各アクションデータ構造および対応するデータ送信を生成することができる。スレッド最適化コンポーネント120のようなデータ処理システム105のコンポーネントは、統計的技術またはヒューリスティック技術を第1の入力オーディオ信号305および第2の入力オーディオ信号310に適用して、第1の入力オーディオ信号305および第2の入力オーディオ信号310のアクションからシーケンス依存アクションを示す少なくとも1つのシーケンス依存性パラメータを生成することができる。データ処理システム105は、第1の入力オーディオ信号305および第2の入力オーディオ信号310に対応するデータ送信(例えば、パケット)またはアクションデータ構造をバッチ化またはプールして、バッチ化またはプールされた単一のスレッドデータ構造200を生成することができる。データ処理システム105は、単一のスレッドデータ構造200をサービス・プロバイダ・コンピューティング・デバイス160により処理するためにサービス・プロバイダ・コンピューティング・デバイス160に送信または提供して、例えば第1のおよび第2の入力オーディオ信号305、310に応答して少なくとも1つの車の要約、映画チケットの購入、またはディナー予約を行うことができる。
【0079】
同一の単一のスレッドデータ構造の一部の異なるインスタンスを異なるコンピューティングデバイスに提供することができる。例えば、単一のスレッド200の全部または一部を、サービス・プロバイダ・コンピューティング・デバイス160に提供して、変換、例えば、カーシェアサービスからの車のオーダに影響を及ぼすことができ、単一のスレッド200の同一のまたは異なる部分を(同時にまたは逐次的に)コンテンツ・プロバイダ・コンピューティング・デバイス155に提供して、別の変換に影響を及ぼす、例えば、レストランに対するコンテンツ・アイテムを取得することができる。
【0080】
単一のスレッドデータ構造200の受信に応答して、コンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160は、当該単一のスレッドのデータ構造200により定義または示される少なくとも1つの動作を実施することができる。当該動作は、第1のまたは第2の入力オーディオ信号305、310のアクションデータ構造(またはデータ送信)の各アクションのうち1つまたは複数に対応することができる。例えば、当該動作は、車をカーシェアサービスから、サービス・プロバイダ・コンピューティング・デバイス160から受信するステップ、または映画に対するコンテンツ・アイテムを提供するステップを含むことができる。例えば、コンテンツ・プロバイダ・コンピューティング・デバイス155は第1の応答315(例えば、映画に対するコンテンツ・アイテム)をクライアントコンピューティングデバイス150に提供でき、サービス・プロバイダ・コンピューティング・デバイス160は第2の応答320(例えば、車の予約)を同一のまたは異なるクライアントコンピューティングデバイス150に提供することができる。第1のおよび第2の応答315、320は、コンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160からクライアントコンピューティングデバイス150への送信中に、データ処理システム105をバイパスすることができる。応答315、320は、車サービスからの車の予約またはコンテンツ・アイテムの描画のような変換アクションを確認するテキスト、画像、または他のデータメッセージ(オーディオを含む)を含むことができる。データ処理システム105は当該変換の(または応答315、320の)指示を、コンピュータネットワーク165を介してサービス・プロバイダ・コンピューティング・デバイス160、コンテンツ・プロバイダ・コンピューティング・デバイス155、またはクライアントコンピューティングデバイス150から受信することができる。
【0081】
データ処理システム105により(例えば、スレッド最適化コンポーネント120またはダイレクト・アクションAPI135により)生成された単一のスレッド200は、当該スレッドに対応するアクションの実際の、既知の、スケジュールされた、または推定された時刻を示すことができる。これらの時刻は、とりわけ、映画開始時間、輸送ピックアップ時刻、ディナー予約時刻、またはイベント時刻を含むことができる。当該時刻は、離散的時刻、例えば、午後8:00のディナー予約、または他のアクションに対する相対的な時刻であることができ、例えば、当該アクション‘B’は、アクション‘A’の既知のまたは推定された結論時刻の後15分で開始するようにスケジュールされる。例えば、当該スレッド200は、第1のアクション(例えば、ディナーを食べる)は第2のアクション(例えば映画を観ること)の前に発生するようにスケジュールされることを示すことができる。これらのアクションは、入力オーディオ信号から識別されたデータ構造(またはデータ送信)アクションに対応することができる。ダイレクト・アクションAPI135は第1のアクションの完了を検出することができる。例えば、コンピューティングデバイス150はレストランで支払いを行うためのスクリプトを実行でき、またはダイレクト・アクションAPI135はディナーが90分継続すると推定でき、またはエンド・ユーザはオーディオ入力信号または他のデータメッセージを提供して、第1のアクションが完了するまたは時間ウィンドウの時刻にまたは時間ウィンドウ内に完了するようにスケジュールされたことを示すことができる。第1のアクションの完了(例えば、既知のまたは推定された終了時刻)の検出に応答して、ダイレクト・アクションAPI135は、当該単一のスレッドのデータパケットをサービス・プロバイダ・コンピューティング・デバイス160にまたはコンテンツ・プロバイダ・コンピューティング・デバイス155に送信することに進むことができる。この送信は、既知のまたは推定された第1のアクションの完了に続いて、または既知のまたは推定された第1のアクションの完了の時間ウィンドウ内(例えば、1時間内)に発生することができる。例えば、ディナーの完了時に、ダイレクト・アクションAPI135は、単一のスレッド200の少なくとも一部を、サービス・プロバイダ・コンピューティング・デバイス160に提供して、映画チケットを購入し、またはコンテンツ・プロバイダ・コンピューティング・デバイス155に提供して、映画に対するコンテンツ・アイテムを取得することができる。当該変換(例えば、クライアントコンピューティングデバイス150でのチケットの購入またはコンテンツ・アイテムの描画)の指示を、データ処理システム105にクライアントコンピューティングデバイス150、コンテンツ・プロバイダ・コンピューティング・デバイス155、またはサービス・プロバイダ・コンピューティング・デバイス160から提供することができる。シーケンス依存性パラメータ210は、単一のスレッド200のアクションが発生するようにスケジュールされる順序を示すことができ、例えば、第1のアクションは第2のアクションの前に発生するようにスケジュールされることを示すことができる。
【0082】
ダイレクト・アクションAPI135は、単一のスレッド200の少なくとも1つのアクションの少なくとも1つのデッドロック条件を識別することができる。デッドロック条件は、最初の、過去のアクションが完了した後に第2のアクションが進むことができないことを示すことができる。例えば、ダイレクト・アクションAPI135は、第1のアクションが映画アクション(映画館で映画を観ること)であり第2のアクションが、映画が終了した後にカーシェアサービスを介して家に輸送することであるとき、デッドロック条件を識別することができる。ダイレクト・アクションAPI135は、映画のスケジュールされた終了時刻のような第1のアクションに関連付けられた時刻まで継続する第2のアクション(例えば、家への乗車)に対するデッドロック条件を決定することができる。ダイレクト・アクションAPI135またはインタフェース115のような他のコンポーネントは、当該デッドロック条件に応答してサービス・プロバイダ・コンピューティング・デバイス(例えば、カーシェアサービス)へのデータ送信の送信を防止することができる。例えば、データ処理システム105またはそのコンポーネントは、当該デッドロック条件の時間期間中の、(例えば、カーシェアサービスの)サービス・プロバイダ・コンピューティング・デバイス160へのアクション(例えば、車の予約)に対するデータ送信のデータパケット(またはデータ構造)の送信を防止することができる。これは、サービス・プロバイダ・コンピューティング・デバイス160が車(または他のサービス)の要求をあまりにも早く受信することを防ぐ。
【0083】
ダイレクト・アクションAPI135は、当該デッドロック条件が終了したかまたはもはや存在しないことの指示を取得するか、または、そのように判定することができる。例えば、ダイレクト・アクションAPI135は、映画のスケジュールされた終了時刻または他のアクションを決定するために、サービス・プロバイダ・コンピューティング・デバイス160または他のサードパーティコンピューティングデバイスを問い合わせることができる。この時刻に達すると、または、この時刻の前の閾値時間期間(例えば、30分または5分)内に、当該ダイレクト・アクションAPIは当該デッドロック条件を壊し、解放し、または終了させることができる。当該デッドロック条件の期限切れに続いて、データ処理システム105は(例えば、インタフェース105を介して)、サービス・プロバイダ・コンピューティング・デバイス160に、映画の後の家までの乗車のような後続のアクションに対応するデータ送信またはデータ構造のデータを送信することができる。
【0084】
ダイレクト・アクションAPI135は、当該デッドロック条件を終了するための指示をクライアントコンピューティングデバイス150から受信することができる。例えば、エンド・ユーザは、映画が終了する前に早めに映画から離れることを決定するかもしれず、入力オーディオ信号、例えば、「OK, this movie stinks, I’d like a ride home please」を当該クライアントコンピューティングデバイスに入力することができる。データ処理システム105(例えば、NLPコンポーネント110またはダイレクト・アクションAPI135)は、当該デッドロック条件が切れたことをこの入力オーディオ信号から判定でき、当該後続のアクションに関するデータをサービス・プロバイダ・コンピューティング・デバイス160に送信することができる。当該デッドロック条件の解放に続いて、ダイレクト・アクションAPI135はまた、アクションに関するデータ(例えば、単一のスレッド200のデータ送信またはアクションデータ構造のデータ)をコンテンツ・プロバイダ・コンピューティング・デバイス155に提供して、デッドロックアクション後に関連するコンテンツ・アイテムを取得することができる。当該コンテンツ・アイテムを、データ処理システム105によりまたはコンテンツ・プロバイダ・コンピューティング・デバイス155により、描画するためにクライアントコンピューティングデバイス150に提供することができる。当該コンテンツ・アイテムは、例えば、「Sorry to hear about the movie, would you like to order a car from a car share company?」を示すことができる。コンテンツ・セレクタ・コンポーネント125(またはインタフェース115またはダイレクト・アクションAPI135のような他のコンポーネント)は、デッドロック条件に応答してまたは当該デッドロック条件の解放まで、当該コンテンツ・アイテムの選択、または当該選択されたコンテンツ・アイテムのクライアントコンピューティングデバイス150への送信ブロックすることができる。
【0085】
ダイレクト・アクションAPI135は、単一のスレッド200により示されるアクションの逐次的な順序を修正することができる。例えば、当該ダイレクト・アクションAPIは、第1の逐次的な順序の指示、例えば、第1のアクション、第1のアクションに続く第2のアクション、および第2のアクションに続く第3のアクション(ディナー、次いで映画、次いで家へ乗車)を決定することができる。ダイレクト・アクションAPI135およびNLPコンポーネント110およびインタフェース115のような他のコンポーネントは当該逐次的な順序を修正する要求を受信することができる。例えば、データ処理システム105は、「OK I’d like to eat dinner after the movie」という入力オーディオ信号を当該クライアントコンピューティングデバイスから受信することができる。ダイレクト・アクションAPI135(またはNLPコンポーネント110)は、このオーディオ入力信号から、当該アクションの逐次的な順序を、例えば、映画、次いでディナー、次いで家へ乗車に修正する要求を取得することができる。この情報から、ダイレクト・アクションAPI135は修正された逐次的な順序を生成でき、その結果第2のアクション(映画を観ること)はこの時点で第1のアクション(ディナーを食べる)の前に発生するようにスケジュールされる。ダイレクト・アクションAPI135またはコンテンツ・セレクタ・コンポーネント125(または他のコンポーネント)はそれに応じて、当該ディナーアクションのコンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160へのデータ送信の前に、映画アクションのデータ送信を送信することに進むことができる。ダイレクト・アクションAPI135はまた、第1の映画アクションの終了時刻に基づいて、当該ディナーアクションに関連する動作を遅延するデッドロック条件を識別または修正することができる。ディナー、映画、および輸送のアクションは例であり、任意の数のエンド・ユーザアクティビティまたは要求がアクションを構成することができる。当該修正は、当該入力オーディオ信号と異なる入力に応答して発生することができる。例えば、午後9時の映画(ディナーの後)に対するチケットが売り切れの場合、データ処理システム105はクライアントコンピューティングデバイス150で描画するためのオーディオ出力を提供して、ディナーの前に映画を観ること(例えば、午後5時のショー)を示唆することができる。
【0086】
データ処理システム105はオフラインアクションを実施することができる。これは、処理および電気電力要件を節約し、ネットワークトラフィックを減らすかまたはオフピーク時間にシフトすることができる。例えば、単一のスレッド200は、第1のアクションおよび第1のアクションの解像度に依存する第2の後続のアクションを示すことができる。これらのアクションは、この先6か月に発生する3週間の熱帯ビーチバケーションのために飛行機チケット(第1のアクション、今日)を購入し、バケーションの最終日のスキューバレッスン(第2のアクション、6か月以上先)を予約することのように、互いから数日または数週間(またはそれ以上)離れていることができる。ダイレクト・アクションAPI135は、リアルタイムに航空会社エンティティに対応するサービス・プロバイダ・コンピューティング・デバイス160と通信して、当該入力オーディオ信号の受信に応答して当該飛行機チケットをオンラインアクションで購入して変換に影響を及ぼす(?)こと、即ち、当該飛行機チケットの購入ができる。この例における第2のアクションは6か月先のままである。この6か月期間または他の時間ウィンドウにわたって、ダイレクト・アクションAPI135またはコンテンツ・セレクタ・コンポーネント125のような他のコンポーネントは、コンテンツ・アイテムを選択するかまたは第2のアクション(スキューバレッスン)に応答して他の動作を実施することができる。例えば、当該ダイレクト・アクションAPIは、データ・リポジトリ145からまたはスキューバレッスンに関連するサードパーティデータ・リポジトリからこの情報を取得することで、オフラインで取得することができる。当該オフラインアクションはリアルタイムであってもなくてもよく、オフラインアクションはアクションの間の時間分離(例えば、6か月)を必要としない。例えば、データ処理システム105は、当該クライアントコンピューティングデバイスとの通信セッションまたは同期的または非同期な会話の一部として、データ・リポジトリ145からまたはサードパーティデータベースからのアクションに応答して情報をリアルタイムに取得することができる。
【0087】
図4は、音声起動されたデータパケット・ベースのコンピュータネットワーク環境におけるシーケンス依存動作を示す音声起動されたオーディオ入力データ通信を管理するための方法400を示す。方法400は少なくとも1つの第1のオーディオ入力信号を受信することができる(動作405)。例えば、当該NLPコンポーネントはインタフェース115を介してデータパケットを受信することができる(動作405)。データ処理システム105は、NLPコンポーネント110を実行または起動して、当該ネットワークを介してパケットまたは他のプロトコルベースの送信を少なくとも1つのクライアントコンピューティングデバイス150から受信することができる。当該データパケットは、第1のエンド・ユーザが「OK, I would like to go to go dinner tonight」とクライアントコンピューティングデバイス150、例えば、スマートフォンに言うことのような、第1のクライアントコンピューティングデバイス150のセンサ151により検出された入力オーディオ信号を含むことができるかまたはそれに対応することができる。方法400は当該入力オーディオ信号を解析して、少なくとも1つの第1の要求または少なくとも1つの第1のトリガキーワードを当該入力オーディオ信号から識別することができる(動作410)。例えば、NLPコンポーネント110は当該入力オーディオ信号を解析して、要求(「dinner」に対するエンターテイメント要求)ならびに当該要求に対応または関するトリガキーワード(「to go to」)を識別することができる。方法400は、当該受信された第1のオーディオ入力信号に関連付けられた当該識別された要求またはキーワードに基づいて、少なくとも1つの第1のアクションデータ構造を生成することができる(動作415)。例えば、ダイレクト・アクションAPI135は、タクシーピックアップの要求されたサービス・プロバイダ、またはレストラン推奨のような第1のアクションを示すアクションデータ構造を生成することができる。
【0088】
方法400は少なくとも1つの第2のオーディオ入力信号を受信することができる(動作420)。例えば、NLPコンポーネント110は、パケットまたは他のプロトコルベースの送信を、ネットワーク165を介して第1の入力オーディオ信号を生成した同一のまたは異なるクライアントコンピューティングデバイス150から受信することができる。当該データパケットは、エンド・ユーザが「OK, I would like to catch a movie later」をクライアントコンピューティングデバイス150に言うことのような、第2のクライアントコンピューティングデバイス150のセンサ151により検出された入力オーディオ信号を含むことができるかまたはそれに対応することができる。方法400は、少なくとも1つの第2の要求または少なくとも1つの第2のトリガキーワードを第2の入力オーディオ信号から識別することができる(動作425)。例えば、NLPコンポーネント110は当該入力オーディオ信号を解析して、要求(「movie」に対するエンターテイメント要求)ならびに当該要求に対応または関するトリガキーワード(「to catch」)を識別することができる。方法400は、要求またはキーワードに基づいて当該受信された第1のオーディオ入力信号に関連付けられた当該識別された少なくとも1つの第2のアクションデータ構造を生成することができる(動作430)。例えば、ダイレクト・アクションAPI135は、タクシーピックアップの位置、要求されたサービス・プロバイダ、または映画情報のような第2のアクションを示すアクションデータ構造を生成することができる。
【0089】
方法400は、データ送信を当該アクションデータ構造から構築することができる(動作435)。例えば、ダイレクト・アクションAPI135は、第1の入力オーディオ信号に対応する第1のアクションデータ構造から第1のデータ送信を生成でき、第2の入力オーディオ信号に対応する第2のアクションデータ構造から第2のデータ送信を生成することができる。第1のおよび第2の(または他の数の)データ送信を、当該対応するアクションデータ構造から取得された情報をパケット化し、または、広範囲に定義された通信セッション、例えば、データ処理システム105を介したエンド・ユーザコンピューティングデバイス150とコンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160との間のやり取りまたは非同期な会話もしくはデータの送信の一部として送信するための形態に当該アクションデータ構造を変換することで、構築または生成することができる(動作435)。異なるエンティティに対応する複数のサードパーティデバイス(例えば、コンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160)との通信セッションを、共通の通信セッションの一部と考えることができる。通信セッションは、会話方式でクライアントコンピューティングデバイス150と行き来するデータ送信により同期的であることができ、または、休眠期間、例えば、少なくとも1つの時間がデータ送信の間に存在して非同期であることができる。
【0090】
方法400はデータを当該データ送信から取得することができる(動作440)。例えば、スレッド最適化コンポーネント120は、当該データ送信からの(または当該対応するアクションデータ構造からの)アクションに関する情報にアクセスするかそれを(例えば、データ・リポジトリ145から)取り出すことができる。方法400は少なくとも1つのシーケンス依存性パラメータを決定することができる(動作445)。例えば、アクションの動作の順序またはシーケンス依存性を示す当該データ送信より取得されたデータ(動作440)に基づいて、スレッド最適化コンポーネント120は、少なくとも2つのアクションに対するシーケンス依存性の当該存在を示すシーケンス依存性パラメータを決定することができる。方法400は、1つまたは複数のアクションデータ構造を(直接にまたは対応するデータ送信の関連付けを介して)単一のスレッドデータ構造200に関連付けることができる。例えば、スレッド最適化コンポーネント120(または他のデータ処理システム105コンポーネント)は単一のスレッドデータ構造200を生成することができる(動作450)。例えば、少なくとも2つのシーケンスまたは時間依存動作の指示に基づいて、スレッド最適化コンポーネント120は、第1のおよび第2のデータ送信、第1のおよび第2のアクションデータ構造、またはそれらの関連付けられたアクションを示す少なくとも1つの単一のスレッドデータ構造を生成することができる(動作440)。当該生成された単一のスレッドデータ構造200(動作450)は、アクションの完了を検出するためにダイレクト・アクションAPI135により使用されるデータを含むことができ、その結果データ処理システム105は次いで、異なるアクションに対するデータパケットを、サービス・プロバイダ・コンピューティング・デバイス160にまたはコンテンツ・プロバイダ・コンピューティング・デバイス155に提供することができる。データ処理システム105はまた、当該生成された単一のスレッドデータ構造200のアクションに関連付けられたデッドロック条件を識別することができる(動作450)。単一のスレッドデータ構造200は複数のアクションの逐次的な順序を示すことができ、当該方法は、当該アクションの当該逐次的な順序を変更する修正された逐次的な順序を生成することができる。データ処理システム105は、単一のスレッドデータ構造200の全部または一部を、1つまたは複数のコンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160に提供することができる。
【0091】
図5は例示的なコンピュータシステム500のブロック図である。当該コンピュータシステムまたはコンピューティングデバイス500は、システム100、またはデータ処理システム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を含むことができるかまたはその一部であることができる。
【0092】
当該コンピューティングシステム500を、バス505を介して、情報をユーザに表示するための、液晶ディスプレイ、またはアクティブ行列ディスプレイのようなディスプレイ535に接続してもよい。英数字および他のキーを含むキーボードのような入力デバイス530、が、情報およびコマンド選択をプロセッサ510に通信するためにバス505に接続されてもよい。当該入力デバイス530はタッチ・スクリーンディスプレイ535を含むことができる。当該入力デバイス530はまた、方向情報およびコマンド選択をプロセッサ510に通信し、当該ディスプレイ535上のカーソル移動を制御するための、マウス、トラックボール、またはカーソル方向キーのようなカーソル・コントロールを含むことができる。当該ディスプレイ535は、例えば、
図1のデータ処理システム105、クライアントコンピューティングデバイス150または他のコンポーネントの一部であることができる。
【0093】
本明細書で説明したプロセス、システムおよび方法、プロセッサ510がメイン・メモリ515に含まれる命令の配置を実行したことに応答して当該コンピューティングシステム500により実装することができる。かかる命令を当該記憶デバイス525のような別のコンピュータ−可読媒体からメイン・メモリ515に読み込むことができる。メイン・メモリ515に含まれる命令の配置の実行は、当該コンピューティングシステム500に本明細書で説明した例示的なプロセスを実施させる。マルチプロセッシング配置における1つまたは複数のプロセッサをまた、メイン・メモリ515に含まれる命令を実行するために使用することができる。ハードワイヤード回路を、本明細書で説明するシステムおよび方法とともにソフトウェア命令の代わりにまたはそれを組み合わせて使用することができる。本明細書で説明したシステムおよび方法はハードウェア回路およびソフトウェアの任意の特定の組合せに限定されない。
【0094】
例示的なコンピューティングシステムを
図5で説明したが、本明細書で説明した動作を含む当該主題を、本明細書で開示した構造およびそれらの構造的均等物を含む他のタイプのデジタル電子回路で、またはコンピュータソフトウェア、ファームウェア、またはハードウェアで、またはそれらの1つまたは複数の組合せで実装することができる。
【0095】
本明細書で説明するシステムがユーザに関する個人情報を収集するか、または個人情報を利用しうる状況に対して、当該ユーザに個人情報(例えば、ユーザのソーシャルネットワーク、ソーシャルアクションまたはアクティビティ、ユーザの嗜好、またはユーザの位置に関する情報)をプログラムまたは機能が収集しうるかどうかを制御するか、または、当該ユーザにより関連しうるコンテンツサーバまたは他のデータ処理システムからコンテンツを受信するかどうかまたはその方法を制御ための機会を与えてもよい。さらに、特定のデータはそれが格納または使用される前に1つまたは複数の方法で匿名化してもよく、その結果個人的に識別可能な情報がパラメータを生成するときに除去される。例えば、ユーザのアイデンティティを匿名化してもよく、その結果個人的に識別可能な情報を当該ユーザに対して決定できず、またはユーザの特定の位置を決定できないように、ユーザの地理的位置を位置情報が取得される場所で(例えば都市、郵便番号、または状態レベルに)一般化してもよい。したがって、当該ユーザは、どのように情報が当該ユーザに関して収集され当該コンテンツサーバにより使用されるかを制御することができる。
【0096】
当該主題および本明細書で説明した動作を、本明細書で開示した構造およびそれらの構造的均等物を含むデジタル電子回路で、またはコンピュータソフトウェア、ファームウェア、またはハードウェアで、またはそれらの1つまたは複数の組合せで実装することができる。本明細書で説明した当該主題を、データ処理装置による実行のためにまたは当該装置の動作を制御するために1つまたは複数のコンピュータ記憶媒体で符号化された、1つまたは複数のコンピュータプログラム、例えば、コンピュータプログラム命令の1つまたは複数の回路として実装することができる。代替的にまたは追加として、当該プログラム命令を、人工的に生成された伝播信号、例えば、データ処理装置による実行のために適切な受信器装置に送信するための情報を符号化するために生成されたマシン−生成された電気、光、または電磁気信号で符号化することができる。コンピュータ記憶媒体は、コンピュータ−可読記憶デバイス、コンピュータ−可読記憶基板、ランダムなまたはシリアル・アクセスメモリ・アレイまたはデバイス、またはそれらの1つまたは複数の組合せであることができ、または、それらに含まれることができる。コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝播信号で符号化されたコンピュータプログラム命令のソースまたは宛先であることができる。当該コンピュータ記憶媒体はまた、1つまたは複数の別々のコンポーネントまたは媒体(例えば、複数のCD、ディスク、または他の記憶デバイス)であることができ、または、それに含まれることができる。本明細書で説明した動作を、1つまたは複数のコンピュータ−可読記憶デバイスに格納されまたは他のソースから受信されたデータに対してデータ処理装置により実施される動作として実装することができる。
【0097】
「データ処理システム」「コンピューティングデバイス」「コンポーネント」または「データ処理装置」という用語は、例としてプログラム可能プロセッサ、コンピュータ、システム・オン・チップ、または以上のうち複数または組合せを含む、データを処理するための様々な装置、デバイス、およびマシンを包含する。当該装置は、特殊目的論理回路、例えば、FPGA(フィールドプログラム可能ゲート・アレイ)またはASIC(特殊用途向け集積回路)を含むことができる。当該装置はまた、ハードウェアに加えて、着目するコンピュータプログラムに対する実行環境を生成するコード、例えば、プロセッサファームウェア、プロトコル・スタック、データベース管理システム、オペレーティング・システム、クロス・プラットフォームランタイム環境、仮想マシン、またはそれらの1つまたは複数の組合せを構成するコードを含むことができる。当該装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッド・コンピューティングインフラのような様々な異なるコンピューティングモデルインフラを実現することができる。ダイレクト・アクションAPI135、コンテンツ・セレクタ・コンポーネント125、スレッド最適化コンポーネント120またはNLPコンポーネント110および他のデータ処理システム105コンポーネントは、1つまたは複数のデータ処理装置、システム、コンピューティングデバイス、またはプロセッサを含むかまたは共有ことができる。
【0098】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、スクリプト、またはコードとしても知られる)を、コンパイル型言語またはインタプリタ型言語、宣言型または手続型言語を含む任意の形態のプログラミング言語で書くことができ、スタンドアロンプログラムまたはモジュール、コンポーネント、サブルーチン、オブジェクト、またはコンピューティング環境で使用するのに適した他のユニットを含む任意の形態で展開することができる。コンピュータプログラムはイルシステム内のファイルに対応することができる。コンピュータプログラムを、他のプログラムまたはデータを保持するファイル部分(例えば、マークアップ言語ドキュメントに格納された1つまたは複数のスクリプト)に、着目するプログラム専用の単一のファイルに、または複数の協調ファイルに(例えば、1つまたは複数のモジュール、サブプログラム、またはコード部分を格納するファイル)格納することができる。コンピュータプログラムを、1つのコンピュータ上でまたは1つのサイトに配置されるかまたは複数のサイトにわたって分散され通信ネットワークにより相互接続された複数のコンピュータ上で実行されるように展開することができる。
【0099】
本明細書で説明した当該プロセスおよび論理フローを、1つまたは複数のプログラム可能プロセッサが、1つまたは複数のコンピュータプログラム(例えば、データ処理システム105のコンポーネント)を実行して、入力データで動作し出力を生成することでアクションを実施することにより、実施することができる。当該プロセスおよび論理フローはまた、特殊目的論理回路、例えば、FPGA(フィールドプログラム可能ゲート・アレイ)またはASIC(特殊用途向け集積回路)により実施でき、装置をまた特殊目的論理回路、例えば、FPGA(フィールドプログラム可能ゲート・アレイ)またはASIC(特殊用途向け集積回路)として実装することができる。コンピュータプログラム命令およびデータを格納するのに適したデバイスは、例として半導体メモリデバイス、例えば、EPROM、EEPROM、およびフラッシュ・メモリデバイスを含むあらゆる形態の非揮発性メモリ、媒体およびメモリデバイス、磁気ディスク、例えば、内部ハードディスクまたは取外し可能ディスク、磁気光ディスク、およびCDROMおよびDVD−ROMディスクを含む。当該プロセッサおよび当該メモリを特殊目的論理回路で補完するかまたはそれに組み込むことができる。
【0100】
本明細書で説明する主題を、コンピューティングシステムで実装することができるバックエンドコンポーネントを、例えば、データサーバとして含むか、またはミドルウェアコンポーネント、例えば、アプリケーションサーバを含むか、またはフロントエンドコンポーネント、例えば、ユーザがそれを通じて本明細書で説明した当該主題の実装と対話できるグラフィカルユーザインタフェースまたはウェブブラウザを有するクライアントコンピュータ、または1つまたは複数のかかるバックエンド、ミドルウェア、またはフロントエンドコンポーネントの組合せを含む。当該システムの当該コンポーネントはデジタルデータ通信、例えば、通信ネットワークの任意の形態または媒体により相互接続することができる。通信ネットワークの例は、ローカル・エリア・ネットワーク(「LAN」)および広帯域ネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、およびピア・ツー・ピアネットワーク(例えば、アドホックピア・ツー・ピアネットワーク)を含む。
【0101】
システム100またはシステム500のような当該コンピューティングシステムはクライアントおよびサーバを含むことができる。クライアントおよびサーバは一般に互いから離れており、一般に通信ネットワークを通じて対話する(例えば、ネットワーク165)。クライアントおよびサーバの関係は、当該各コンピュータで実行され互いにクライアントサーバ関係を有するコンピュータプログラムにより生ずる。幾つかの実装では、サーバはデータ(例えば、コンテンツ・アイテムを表すデータパケット)をクライアントコンピューティングデバイス(例えば、当該クライアントコンピューティングデバイスと対話するユーザにデータを表示し、そこからユーザ入力を受信する目的で)に送信する。当該クライアントコンピューティングデバイスで生成されたデータ(例えば、当該ユーザ対話の結果)は当該サーバで当該クライアントコンピューティングデバイスから受信されることができる(例えば、データ処理システム105によりコンピューティングデバイス150またはコンテンツ・プロバイダ・コンピューティング・デバイス155またはサービス・プロバイダ・コンピューティング・デバイス160から受信される)。
【0102】
動作を当該図面において特定の順序で説明したが、かかる動作を示した特定の順序でまたは逐次的な順序で実施する必要はなく、全ての図示した動作を実施する必要はない。本明細書で説明した動作を異なる順序で実施することができる。
【0103】
様々なシステムコンポーネントの分離は全ての実装における分離を要求しないが、当該説明したプログラムコンポーネントを単一のハードウェアまたはソフトウェア製品に含めることができる。例えば、NLPコンポーネント110、コンテンツ・セレクタ・コンポーネント125、またはスレッド最適化コンポーネント120は、単一のコンポーネント、アプリ、またはプログラム、または1つまたは複数の処理回路を有する論理デバイス、またはデータ処理システム105の1つまたは複数のサーバの一部であることができる。
【0104】
幾つかの例示的な実装を説明したので、以上は、例示的であり限定的ではなく、例として提示されていることは明らかである。特に、本明細書で提示した例の多くは方法の動作またはシステム要素の特定の組合せを含むが、これらの動作およびこれらの要素を他の方法で組み合わせて同一の目的を実現してもよい。1実装と関連して説明した動作、要素および特徴は他の実装または実装における類似の役割から排除されるものではない。
【0105】
本明細書で使用したフレーズおよび用語は説明の目的のためであり限定として解釈されるべきではない。「〜を含む」、「〜を備える」、「〜を有する」、「〜を包含する」、「〜が関与する」、「〜により特徴付けられる」、「〜の点で特徴付けられる」、およびその本明細書における変形の使用、は、その後に列挙された項目、その均等物、および追加の項目、ならびに排他的にその後に列挙された項目からなる代替的な実装を含むことを意味する。1実装では、本明細書で説明するシステムおよび方法は当該説明した要素、動作、またはコンポーネントの1つ、複数の各組合せ、または全てから成る。
【0106】
本明細書で単一形で参照されるシステムおよび方法の実装または要素または動作に対する任意の言及は複数のこれらの要素を含む実装を含んでもよく、本明細書の任意の実装または要素または動作への複数形の任意の参照は単一の要素のみを含む実装を含んでもよい。単一形または複数形における参照は本明細書で開示したシステムまたは方法、それらのコンポーネント、動作、または要素を単一のまたは複数の構成に限定しようとするものではない。任意の情報、動作または要素に基づく任意の動作または要素への参照は当該動作または要素は任意の情報、動作、または要素に少なくとも部分的に基づく実装を含んでもよい。
【0107】
本明細書で開示した任意の実装を他の任意の実装または実施形態と組み合わせてもよく「実装」、「幾つかの実装」、「1実装」等への言及は必ずしも相互に排他的ではなく、当該実装と関連して説明した特定の特徴、構造、または特性が少なくとも1つの実装または実施形態に含まれてもよいを示すことを意図している。本明細書で使用した用語は必ずしも全て同一の実装を参照しない。任意の実装を、他の任意の実装と、包含的にまたは排他的に、本明細書で開示した態様および実装と一貫する任意の方式で結合してもよい。
【0108】
「または」に対する言及は、「または」を用いて説明された任意の用語が当該説明した用語のうち1つ、複数、および全ての何れかを示しうるように、包含的として解釈してもよい。例えば、「‘A’および‘B’のうち少なくとも1つ」への言及は‘A’のみ、‘B’のみ、ならびに‘A’および‘B’の両方を含むことができる。「〜を備える」または他のオープンな用語と関連して使用されるかかる言及は追加の項目を含むことができる。
【0109】
当該図面、詳細な説明または任意の請求項における技術的特徴に参照記号が続く場合、当該参照記号は当該図面、詳細な説明、および特許請求の範囲の明瞭性を高めるために含まれている。したがって、当該参照記号もそれがないことも任意のクレーム要素の範囲に対する限定効果を有さない。
【0110】
本明細書で説明するシステムおよび方法をその特徴から逸脱せずに他の特定の形態で具体化してもよい。例えば、データ処理システム105のコンポーネントは別々のコンポーネントである必要はなく、或るコンポーネントは他のコンポーネントを含むことができる。1つまたは複数のコンピューティングデバイス(例えば、サーバ)のプロセッサはデータ処理システム105のコンポーネントを含むかまたは実行することができる。以上の実装は説明したシステムおよび方法の限定ではなく例示的なものである。本明細書で説明するシステムおよび方法の範囲はしたがって以上の説明ではなく添付の特許請求の範囲により示され、添付の特許請求の範囲の均等物の意味と範囲に入る変更がそこに包含される。