次に以下に、コンピュータネットワーク上でセンサを選択的にポーリングする方法、装置、およびシステムに関係する様々な概念、ならびに方法、装置、およびシステムの実装のより詳細な説明を示す。上で導入され、以下でより詳しく説明される様々な概念は、多数の方法のうちのどれかで実装され得る。
本開示は、一般的に、コンピュータネットワーク上でセンサを選択的にポーリングすることを対象とする。たとえば、コンピューティングシステムは、同じまたは類似の種類の情報を検出することができる複数のコンピューティングデバイス上に構成されている複数のセンサにアクセスし得る。しかしながら、検出された情報が類似の情報であるように同じコンピューティングデバイスまたは互いに近接しているコンピューティングデバイスのグループのいずれかに構成されている複数のセンサに同じまたは類似の種類の情報を要求することはリソース集約的であり得る。さらに、いくつかのセンサ、またはセンサが構成されているコンピューティングデバイスは、他のセンサまたはコンピューティングデバイスと比較してリソース(たとえば、エネルギー、電池電力、プロセッサ利用度、または帯域幅)消費量が大きくなり得る。したがって、本開示のシステムおよび方法は、1つまたは複数のセンサを選択的にポーリングして、リソース消費を低減するようにして情報を取得することができる。
本開示のシステムおよび方法は、一般的に、コンピュータネットワーク上でセンサを選択的にポーリングするデータ処理システムを対象とする。データ処理システムは、集約された音声入力上で学習された、およびエンドユーザ音声入力で強化された音声モデルを使用して音声ベース入力を処理することができる。データ処理システムは、音声入力内の要求およびトリガーキーワードに基づきアクションデータ構造体に対するテンプレートを識別することができる。データ処理システムは、アクションデータ構造体を生成するようにテンプレート内の1つまたは複数のフィールドを埋めることを決定することができる。フィールドを埋めるために、データ処理システムは、センサ管理コンポーネントとインターフェースして、音声入力を提供したエンドユーザに関連付けられている1つまたは複数のコンピューティングデバイスのセンサを選択的にポーリングすることができる。センサ管理コンポーネントは、ポリシーまたは一組の規則を適用して、利用可能な1つまたは複数のセンサを識別することができ、アクションデータ構造体を生成するようにテンプレートのフィールドを埋めるために使用される値を提供することができる。データ処理システムは、選択されたセンサから値を受信し、アクションデータ構造体を生成し、データ構造体をサードパーティプロバイダデバイスに伝送することができる。次いで、データ処理システムは、アクションデータ構造体に対応するオペレーションが開始されているという指示をサードパーティプロバイダデバイスから受信することができる。
たとえば、データ処理システムは、一般的に、センサ選択を改善し、音声ベースシステムによる使用のためにデータを収集するようにセンサ構成を最適化することができる。データ処理システムは、デバイスがオフライン状態からオンライン状態に入ったときにデータ同期化またはバッチアップロードを実行することができる。データ処理システムは、収集されるデータ、ユーザ、またはタスクに関連付けられている特性に基づきセンサを有効化するか、または無効化することができる。データ処理システムは、リソース利用を削減しながらデータ品質を改善するポリシーに基づきセンサを選択的に有効化することができる。たとえば、データ処理システムは、ユーザが位置センサを備える複数のデバイスを携えていると決定することができる。データ処理システムは、どのデバイスの残余電力が最大かを決定し、そのデバイスにのみ位置を要求することができる。別の例では、データ処理システムは、第1のデバイスがすでに位置情報を(たとえば、ナビゲーションアプリケーションを介して)取得していると決定し、その位置データをピギーバックオフする(piggy-back off)ことができる。
図1は、コンピュータネットワークを介してセンサを選択的にポーリングする例示的なシステム100を示している。システム100は、コンテンツ選択基盤を含むことができる。システム100は、データ処理システム102を備え得る。データ処理システム102は、コンテンツプロバイダコンピューティングデバイス106、サービスプロバイダコンピューティングデバイス108、またはクライアントコンピューティングデバイス104のうちの1つまたは複数と、ネットワーク105を介して通信することができる。ネットワーク105は、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、メトロエリアネットワーク、または他のエリアネットワーク、イントラネット、衛星ネットワーク、および音声もしくはデータ携帯電話ネットワークなどの他のコンピュータネットワークを含み得る。ネットワーク105は、ラップトップ、デスクトップ、タブレット、携帯情報端末、スマートフォン、ポータブルコンピュータ、またはスピーカなどの、少なくとも1つのコンピューティングデバイス104上に提示されるか、出力されるか、レンダリングされるか、または表示されるものとしてよいウェブページ、ウェブサイト、ドメイン名、またはユニフォームリソースロケータなどの情報リソースにアクセスするために使用され得る。たとえば、ネットワーク105を介して、コンピューティングデバイス104のユーザは、サービスプロバイダ108またはコンテンツプロバイダ106によって提供される情報またはデータにアクセスすることができる。
ネットワーク105は、ディスプレイネットワーク、たとえば、コンテンツ配置または検索エンジン結果システムに関連付けられているか、またはコンテンツアイテム配置キャンペーンの一部としてサードパーティ製コンテンツアイテムを含む資格のあるインターネット上で利用可能な情報リソースのサブセットを含むか、またはそれらの構成要素となり得る。ネットワーク105は、クライアントコンピューティングデバイス104によって提示されるか、出力されるか、レンダリングされるか、または表示され得るウェブページ、ウェブサイト、ドメイン名、またはユニフォームリソースロケータなどの情報リソースにアクセスするためにデータ処理システム102によって使用され得る。たとえば、ネットワーク105を介して、クライアントコンピューティングデバイス104のユーザは、コンテンツプロバイダコンピューティングデバイス106またはサービスプロバイダコンピューティングデバイス108によって提供される情報またはデータにアクセスすることができる。
ネットワーク105は、任意の種類または形態のネットワークであってよく、2地点間ネットワーク、放送網、ワイドエリアネットワーク、ローカルエリアネットワーク、電気通信網、データ通信ネットワーク、コンピュータネットワーク、ATM(非同期転送モード)ネットワーク、SONET(同期光ネットワーク)ネットワーク、SDH(同期デジタルハイアラーキ)ネットワーク、ワイヤレスネットワーク、および有線ネットワークのうちのどれかを含み得る。ネットワーク105は、赤外線チャネルまたは衛星帯域などのワイヤレスリンクを含み得る。ネットワーク105のトポロジーは、バス型、スター型、またはリング型ネットワークトポロジーを含み得る。ネットワークは、高度携帯電話プロトコル(「AMPS」)、時分割多元接続(「TDMA」)、符号分割多元接続(「CDMA」)、グローバルシステムフォーモバイルコミュニケーションズ(「GSM(登録商標)」)、汎用パケット無線サービス(「GPRS」)、またはユニバーサルモバイル通信システム(「UMTS」)を含む、モバイルデバイス間の通信に使用される1つまたは複数の任意のプロトコルを使用する携帯電話ネットワークを含み得る。異なる種類のデータは、異なるプロトコルを介して伝送され得るか、または同じ種類のデータは、異なるプロトコルを介して伝送され得る。
システム100は、少なくとも1つのデータ処理システム102を備え得る。データ処理システム102は、ネットワーク105を介して、たとえば、コンピューティングデバイス104、コンテンツプロバイダデバイス106(コンテンツプロバイダ106)、またはサービスプロバイダデバイス108(またはサービスプロバイダ108)と通信するためのプロセッサを有するコンピューティングデバイスなどの少なくとも1つの論理デバイスを備えることができる。データ処理システム102は、少なくとも1つの計算リソース、サーバ、プロセッサ、またはメモリを備え得る。たとえば、データ処理システム102は、少なくとも1つのデータセンタ内に配置されている複数の計算リソースまたはサーバを備え得る。データ処理システム102は、複数の論理的にグループ化されたサーバを含むものとしてよく、分散コンピューティング技術を利用しやすくすることができる。サーバの論理グループは、データセンタ、サーバファーム、またはマシンファームと称され得る。サーバは、また、地理的に分散されていてもよい。データセンタまたはマシンファームは、単一のエンティティとして管理され得るか、またはマシンファームは、複数のマシンファームを含むことができる。各マシンファーム内のサーバは、異機種であってもよく、サーバまたはマシンのうちの1つまたは複数が1つまたは複数の種類のオペレーティングシステムプラットフォームに従って動作することができる。
マシンファーム内のサーバは、関連付けられているストレージシステムとともに高密度ラックシステム内に格納され、エンタープライズデータセンタ内に配置され得る。たとえば、このようにしてサーバを一元管理することで、サーバおよび高性能ストレージシステムをローカライズされた高性能ネットワーク上に配置することによってシステム管理性、データセキュリティ、システムの物理的セキュリティ、およびシステム性能を改善し得る。サーバおよびストレージシステムを含む、データ処理システム102のコンポーネントの全部または一部を中央集中化し、それらを高度なシステム管理ツールに結合することにより、サーバリソースをより効率的に使用することができ、それにより、必要な電力および処理の節約をはかり、帯域幅使用を減らす。
システム100は、少なくとも1つのサービスプロバイダデバイス108を備えるか、アクセスするか、または他の何らかの形でインタラクティブにやり取りすることができる。サービスプロバイダデバイス108は、ネットワーク105を介して、たとえば、コンピューティングデバイス104、データ処理システム102、またはコンテンツプロバイダ106と通信するためのプロセッサを有するコンピューティングデバイスなどの少なくとも1つの論理デバイスを備えることができる。サービスプロバイダデバイス108は、少なくとも1つの計算リソース、サーバ、プロセッサ、またはメモリを備え得る。たとえば、サービスプロバイダデバイス108は、少なくとも1つのデータセンタ内に配置されている複数の計算リソースまたはサーバを備え得る。サービスプロバイダデバイス108は、データ処理システム102の1つまたは複数のコンポーネントもしくは機能を備えることができる。
コンテンツプロバイダコンピューティングデバイス106は、オーディオ出力コンテンツアイテムとしてクライアントコンピューティングデバイス104により表示するためにオーディオベースのコンテンツアイテムを提供することができる。コンテンツアイテムは、「Would you like me to order you a taxi?」と述べる音声ベースのメッセージなどの商品もしくはサービスのオファーを含むことができる。たとえば、コンテンツプロバイダコンピューティングデバイス155は、音声ベースの問い合わせに応答して提供され得る一連のオーディオコンテンツアイテムを記憶するためのメモリを備えることができる。コンテンツプロバイダコンピューティングデバイス106は、オーディオベースのコンテンツアイテム(または他のコンテンツアイテム)を、それらがデータリポジトリ124に記憶され得るデータ処理システム102に送ることもできる。データ処理システム102は、オーディオコンテンツアイテムを選択し、オーディオコンテンツアイテムをクライアントコンピューティングデバイス104に提供する(かまたは提供するようにコンテンツプロバイダコンピューティングデバイス104に指令する)ことができる。オーディオベースのコンテンツアイテムはもっぱらオーディオであるか、またはテキスト、画像、またはビデオデータと組み合わせたものとすることができる。
サービスプロバイダデバイス108は、少なくとも1つのサービスプロバイダ自然言語プロセッサコンポーネント142およびサービスプロバイダインターフェース144を備えるか、インターフェースするか、または他の何らかの形で通信することができる。サービスプロバイダコンピューティングデバイス108は、少なくとも1つのサービスプロバイダ自然言語プロセッサ(NLP)コンポーネント142および少なくとも1つのサービスプロバイダインターフェース144を備えることができる。サービスプロバイダNLPコンポーネント142(またはサービスプロバイダデバイス108のダイレクトアクションAPIなどの他のコンポーネント)はクライアントコンピューティングデバイス104と(データ処理システム102を介して、またはデータ処理システム102をバイパスして)関わり、クライアントコンピューティングデバイス104とサービスプロバイダコンピューティングデバイス108との間の行ったり来たりのリアルタイムの音声またはオーディオベースの会話(たとえば、セッション)を作成することができる。サービスプロバイダNLP142は、データ処理システム102のNLPコンポーネント112としての1つまたは複数の機能または特徴を備えることができる。たとえば、サービスプロバイダインターフェース144は、データメッセージを受信するか、またはデータ処理システム102のダイレクトアクションAPI116に送ることができる。サービスプロバイダコンピューティングデバイス108およびコンテンツプロバイダコンピューティングデバイス106は、同じエンティティに関連付けられ得る。たとえば、コンテンツプロバイダコンピューティングデバイス106は、カーシェアリングサービスに対するコンテンツアイテムを作成するか、記憶するか、または利用可能にすることができ、サービスプロバイダコンピューティングデバイス108は、クライアントコンピューティングデバイス104のエンドユーザを車で迎えに行くようにカーシェアサービスのタクシーまたは自動車の配車を手配するためにクライアントコンピューティングデバイス106とのセッションを確立することができる。データ処理システム102は、たとえば、カーシェアサービスのタクシーまたは自動車の配車を手配するために、ダイレクトアクションAPI116、NLPコンポーネント112、または他のコンポーネントを介して、サービスプロバイダコンピューティングデバイス104を含めるか、またはバイパスする、クライアントコンピューティングデバイスとのセッションを確立することもできる。
コンピューティングデバイス104は、少なくとも1つのセンサ134、トランスデューサ136、オーディオドライバ138、またはプリプロセッサ140を備えるか、インターフェースするか、または他の何らかの形で通信することができる。センサ134は、たとえば、周辺光センサ、近接センサ、温度センサ、加速度計、ジャイロスコープ、動き検出器、GPSセンサ、位置センサ、マイクロフォン、またはタッチセンサを含み得る。トランスデューサ136は、スピーカまたはマイクロフォンを備えることができる。オーディオドライバ138は、ハードウェアトランスデューサ136にソフトウェアインターフェースを提供することができる。オーディオドライバは、データ処理システム102によって提供されるオーディオファイルまたは他の命令を実行して、対応する音響波または音波を生成するようにトランスデューサ136を制御することができる。プリプロセッサ140は、キーワードを検出し、そのキーワードに基づきアクションを実行するように構成され得る。プリプロセッサ140は、さらなる処理のために、1つまたは複数の検索語をフィルタリングで除去するかまたは検索語を修正することを、検索語をデータ処理システム102に伝送する前に行うことができる。プリプロセッサ140は、マイクロフォンによって検出されたアナログオーディオ信号をデジタルオーディオ信号に変換し、ネットワーク105を介して、デジタルオーディオ信号を搬送する1つまたは複数のデータパケットをデータ処理システム102に伝送することができる。いくつかの場合において、プリプロセッサ140は、入力オーディオ信号の一部または全部を搬送するデータパケットを、そのような伝送を実行する命令を検出したことに応答して伝送することができる。命令は、たとえば、入力オーディオ信号を含むデータパケットをデータ処理システム102に伝送するためのトリガーキーワードまたは他のキーワードまたは承認を含むことができる。コンピューティングデバイス104は、ディスプレイを備えていても備えていなくてもよく、たとえば、コンピューティングデバイスは、マイクロフォンおよびスピーカなどの、限られた種類のユーザインターフェースを備え得る。いくつかの場合において、コンピューティングデバイス104の主たるユーザインターフェースは、マイクロフォンおよびスピーカであるものとしてよい。
クライアントコンピューティングデバイス104は、音声問い合わせをクライアントコンピューティングデバイス104へのオーディオ入力として(センサ134を介して)入力し、データ処理システム102(またはコンテンツプロバイダコンピューティングデバイス106もしくはサービスプロバイダコンピューティングデバイス108)からクライアントコンピューティングデバイス104に送られ、トランスデューサ136(たとえば、スピーカ)から出力され得るコンピュータ発生音声の形態のオーディオ出力を受け取るエンドユーザに関連付けられ得る。コンピュータ発生音声は、実際の人またはコンピュータによって生成される言語からの読み取りを含むことができる。
データリポジトリ124は、1つまたは複数のローカルデータベースまたは分散型データベースを含むことができ、データベース管理システムを含み得る。データリポジトリ124は、コンピュータデータストレージまたはメモリを備えるものとしてよく、他にもデータはあるがとりわけ、1つまたは複数のパラメータ126、1つまたは複数のポリシー128、コンテンツデータ130、またはテンプレート132を記憶することができる。パラメータ126、ポリシー128、およびテンプレート132は、クライアントコンピューティングデバイス104とデータ処理システム102(またはサービスプロバイダコンピューティングデバイス108)との間の音声ベースのセッションに関する規則などの情報を含むことができる。コンテンツデータ130は、オーディオ出力または関連付けられているメタデータ、さらにはクライアントコンピューティングデバイス104との1つまたは複数の通信セッションの一部であってよい入力オーディオメッセージに対するコンテンツアイテムを含み得る。通信セッションは、オペレーションセッションを含むか、またはオペレーションセッションと称され得る。いくつかの場合において、オペレーションセッションは、1つまたは複数のオペレーションがサードパーティプロバイダデバイス108、クライアントコンピューティングデバイス、コンテンツプロバイダデバイス106、データ処理システム102、または他のコンポーネントもしくはエンティティによって実行される通信セッションを指すものとしてよい。
データ処理システム102は、少なくとも1つの計算リソースまたはサーバを有するコンテンツ配置システムを備え得る。データ処理システム102は、少なくとも1つのインターフェース110を備えるか、インターフェースするか、または他の何らかの形で通信することができる。データ処理システム102は、少なくとも1つの自然言語プロセッサコンポーネント112を備えるか、インターフェースするか、または他の何らかの形で通信することができる。データ処理システム102は、少なくとも1つのダイレクトアクションアプリケーションプログラミングインターフェース(「API」)116を備えるか、インターフェースするか、または他の何らかの形で通信することができる。データ処理システム102は、少なくとも1つのセッションハンドラ114を備えるか、インターフェースするか、または他の何らかの形で通信することができる。データ処理システム102は、少なくとも1つのコンテンツセレクタコンポーネント118を備えるか、インターフェースするか、または他の何らかの形で通信することができる。データ処理システム102は、少なくとも1つのセンサ管理コンポーネント120を備えるか、インターフェースするか、または他の何らかの形で通信することができる。データ処理システム102は、少なくとも1つのオーディオ信号発生器122を備えるか、インターフェースするか、または他の何らかの形で通信することができる。データ処理システム102は、少なくとも1つのデータリポジトリ124を備えるか、インターフェースするか、または他の何らかの形で通信することができる。少なくとも1つのデータリポジトリ124は、1つまたは複数のデータ構造体またはデータベース内に、パラメータ126、ポリシー128、コンテンツデータ130、またはテンプレート132を入れるか、または記憶することができる。パラメータ126は、たとえば、閾値、距離、時間間隔、持続時間、スコア、または重みを含むことができる。コンテンツデータ130は、たとえば、コンテンツプロバイダ106によって提供されるか、またはコンテンツ選択を円滑にするためにデータ処理システムによって取得または決定されるコンテンツキャンペーン情報、コンテンツグループ、コンテンツ選択基準、コンテンツアイテムオブジェクトまたは他の情報を含むことができる。コンテンツデータ130は、たとえば、コンテンツキャンペーンの過去の実績を含み得る。
インターフェース110、自然言語プロセッサコンポーネント112、セッションハンドラ114、ダイレクトアクションAPI116、コンテンツセレクタコンポーネント118、センサ管理コンポーネント120、またはオーディオ信号発生器コンポーネント122は、各々、プログラマブルロジックアレイエンジンなどの少なくとも1つの処理ユニットもしくは他の論理デバイス、またはデータベースリポジトリもしくはデータベース124と通信するように構成されているモジュールを含み得る。インターフェース110、自然言語プロセッサコンポーネント112、セッションハンドラ114、ダイレクトアクションAPI116、コンテンツセレクタコンポーネント118、センサ管理コンポーネント120、オーディオ信号発生器コンポーネント122、およびデータリポジトリ124は、別個のコンポーネント、単一のコンポーネント、またはデータ処理システム102の一部であってよい。データ処理システム102などの、システム100およびそのコンポーネントは、1つまたは複数のプロセッサ、論理デバイス、または回路などの、ハードウェア要素を備えることができる。
データ処理システム102は、複数のコンピューティングデバイス104に関連付けられている匿名コンピュータネットワーク活動情報を取得することができる。コンピューティングデバイス104のユーザは、データ処理システム102がユーザのコンピューティングデバイス104に対応するネットワーク活動情報を取得することを肯定的に許可することができる。たとえば、データ処理システム102は、1つまたは複数の種類のネットワーク活動情報を取得するために同意を求めるプロンプトをコンピューティングデバイス104のユーザに出すことができる。コンピューティングデバイス104のユーザの識別情報は匿名のままであってよく、コンピューティングデバイス104は一意的識別子(たとえば、データ処理システムまたはコンピューティングデバイスのユーザによって提供されるユーザまたはコンピューティングデバイスに対する一意的識別子)に関連付けられ得る。データ処理システムは、各観察を対応する一意的識別子に関連付けることができる。
コンテンツプロバイダ106は、電子コンテンツキャンペーンを確立することができる。電子コンテンツキャンペーンは、データリポジトリ124内にコンテンツデータ130として記憶され得る。電子コンテンツキャンペーンは、共通テーマに対応する1つまたは複数のグループを指すものとしてよい。コンテンツキャンペーンは、コンテンツグループ、コンテンツアイテムデータオブジェクト、およびコンテンツ選択基準を含む階層データ構造体を含み得る。コンテンツキャンペーンを作成するために、コンテンツプロバイダ106は、コンテンツキャンペーンのキャンペーンレベルパラメータに対する値を指定することができる。キャンペーンレベルパラメータは、たとえば、キャンペーン名、コンテンツアイテムオブジェクトを配置するための好ましいコンテンツネットワーク、コンテンツキャンペーンに使用されるべきリソースの値、コンテンツキャンペーンに対する開始日および終了日、コンテンツキャンペーンに対する持続時間、コンテンツアイテムオブジェクト配置のスケジュール、言語、地理的位置、コンテンツアイテムオブジェクトを提供する際のコンピューティングデバイスの種類を含むことができる。いくつかの場合において、印象は、コンテンツアイテムオブジェクトがそのソース(たとえば、データ処理システム102またはコンテンツプロバイダ106)からいつフェッチされるかを指すものとしてよく、カウント可能である。いくつかの場合において、ワンクリック詐欺の可能性があるため、ロボット活動は、印象として、フィルタリングされ、除外され得る。したがって、いくつかの場合において、印象はブラウザからのページ要求に対するウェブサーバからの応答の測定を指すものとしてよく、これはロボット活動およびエラーコードからフィルタリングされ、コンテンツアイテムオブジェクトをレンダリングしてコンピューティングデバイス104上に表示する機会にできる限り近い時点において記録される。いくつかの場合において、印象は、表示できるまたは聴き取れる印象を指すものとしてよく、たとえば、コンテンツアイテムオブジェクトは、クライアントコンピューティングデバイス104の表示デバイス上に少なくとも部分的に(たとえば、20%、30%、30%、40%、50%、60%、70%、またはそれ以上)表示可能であるか、またはコンピューティングデバイス104のスピーカ136を介して聴き取れる。クリックまたは選択は、聴き取れる印象への音声応答、マウスクリック、タッチインタラクション、ジェスチャー、シェイク、オーディオインタラクション、またはキーボードクリックなどの、コンテンツアイテムオブジェクトとのユーザインタラクションを指すものとしてよい。変換は、ユーザがコンテンツアイテムオブジェクトに関して所望のアクションを実行すること、たとえば、製品もしくはサービスを購入すること、調査を完遂すること、コンテンツアイテムに対応する実店舗を訪問すること、または電子取引を完遂することを指すものとしてよい。
コンテンツプロバイダ106は、コンテンツキャンペーンに対する1つまたは複数のコンテンツグループをさらに確立することができる。コンテンツグループは、キーワード、単語、検索語、フレーズ、地理的位置、コンピューティングデバイスの種類、時刻、関心、話題、または垂直などの、1つまたは複数のコンテンツアイテムオブジェクトおよび対応するコンテンツ選択基準を含む。同じコンテンツキャンペーンの下にあるコンテンツグループは、同じキャンペーンレベルパラメータを共有することができるが、キーワード、否定的キーワード(たとえば、主コンテンツ上の否定的キーワードの存在下でのコンテンツアイテムの配置をブロックする)、キーワードに対する入札、または入札もしくはコンテンツキャンペーンに関連付けられているパラメータなどの、特定のコンテンツグループレベルパラメータに対する指定を修正している場合もある。
新規コンテンツグループを作成するために、コンテンツプロバイダは、コンテンツグループのコンテンツグループレベルパラメータに対する値を提供することができる。コンテンツグループレベルパラメータは、たとえば、コンテンツグループ名またはコンテンツグループテーマ、および異なるコンテンツ配置機会(たとえば、自動配置もしくは管理された配置)または成果(たとえば、クリック、印象、または変換)を含む。コンテンツグループ名またはコンテンツグループテーマは、コンテンツプロバイダ106がコンテンツグループのコンテンツアイテムオブジェクトが表示のために選択されるべきである話題または主題を捕らえるために使用できる1つまたは複数の検索語であってよい。たとえば、自動車の販売代理店は、保有している車両の各ブランドに対して異なるコンテンツグループを作成することができ、保有している車両の各モデルに対する異なるコンテンツグループをさらに作成し得る。自動車の販売代理店が使用することができるコンテンツグループテーマの例は、たとえば、「Make A sports car」、「Make B sports car」、「Make C sedan」、「Make C truck」、「Make C hybrid」、「Make D hybrid」を含む。たとえば、例示的なコンテンツキャンペーンテーマが「hybrid」であり、「Make C hybrid」および「Make D hybrid」の両方に対するグループコンテンツを含み得る。
コンテンツプロバイダ106は、各コンテンツグループに1つまたは複数のキーワードおよびコンテンツアイテムオブジェクトを与えることができる。キーワードは、コンテンツアイテムオブジェクトに関連付けられるか、または識別される製品もしくはサービスに関連する検索語を含むことができる。キーワードは、1つまたは複数の検索語もしくはフレーズを含むことができる。たとえば、自動車の販売代理店は、コンテンツグループまたはコンテンツキャンペーンに対するキーワードとして、「sports car」、「V-6 engine」、「four-wheel drive」、「fuel efficiency」を含むことができる。いくつかの場合において、否定的キーワードは、いくつかの検索語またはキーワードに関してコンテンツ配置を回避するか、防止するか、ブロックするか、または無効にするためにコンテンツプロバイダによって指定され得る。コンテンツプロバイダは、コンテンツアイテムオブジェクトを選択するために使用される、完全一致、フレーズ一致、またはあいまい一致などのマッチングの種類を指定することができる。
コンテンツプロバイダ106は、コンテンツプロバイダ106によって与えられるコンテンツアイテムオブジェクトを選択するためにデータ処理システム102によって使用されるべき1つまたは複数のキーワードを提供することができる。コンテンツプロバイダ106は、値付けする1つまたは複数のキーワードを識別し、様々なキーワードに対する入札額を提示することができる。コンテンツプロバイダ106は、コンテンツアイテムオブジェクトを選択するためにデータ処理システム102によって使用されるべき追加のコンテンツ選択基準を提供することができる。複数のコンテンツプロバイダ106は、同じまたは異なるキーワードに値付けすることができ、データ処理システム102は、電子メッセージのキーワードの指示を受信したことに応答してコンテンツ選択プロセスまたは広告オークションを実行することができる。
コンテンツプロバイダ106は、データ処理システム102によって選択される1つまたは複数のコンテンツアイテムオブジェクトを提供することができる。データ処理システム102は、(たとえば、コンテンツセレクタコンポーネント118を介して)、コンテンツグループに対して指定されたリソース割り振り、コンテンツスケジュール、最高入札、キーワード、および他の選択基準と一致するコンテンツ配置機会が利用可能になったときにコンテンツアイテムオブジェクトを選択することができる。音声コンテンツアイテム、オーディオコンテンツアイテム、テキストコンテンツアイテム、画像コンテンツアイテム、ビデオコンテンツアイテム、マルチメディアコンテンツアイテム、またはコンテンツアイテムリンクなどの、異なる種類のコンテンツアイテムオブジェクトがコンテンツグループに含まれ得る。コンテンツアイテムを選択した後、データ処理システム102は、コンテンツアイテムオブジェクトを伝送して、コンピューティングデバイス104またはコンピューティングデバイス104の表示デバイス上にレンダリングすることができる。レンダリングするステップは、表示デバイス上にコンテンツアイテムを表示するステップ、またはコンピューティングデバイス104のスピーカを介してコンテンツアイテムを再生するステップを含み得る。データ処理システム102は、コンテンツアイテムオブジェクトをレンダリングする命令をコンピューティングデバイス104に送ることができる。データ処理システム102は、コンピューティングデバイス104、コンピューティングデバイス104のオーディオドライバ138に、オーディオ信号または音響波を生成するように指令することができる。
データ処理システム102は、たとえば、データパケットを使用して情報を送受信するように設計されるか、構成されるか、構築されるか、または動作可能であるインターフェースコンポーネント110を備えることができる。インターフェース110は、ネットワークプロトコルなどの、1つまたは複数のプロトコルを使用して情報を送受信することができる。インターフェース110は、ハードウェアインターフェース、ソフトウェアインターフェース、有線インターフェース、またはワイヤレスインターフェースを含むことができる。インターフェース110は、一方のフォーマットから別のフォーマットに変換するか、またはフォーマットすることを円滑にすることができる。たとえば、インターフェース110は、ソフトウェアコンポーネントなどの、様々なコンポーネントの間の通信に対する定義を含むアプリケーションプログラミングインターフェースを含むことができる。
データ処理システム102は、入力オーディオ信号をデータ処理システム102のインターフェース110に伝達し、クライアントコンピューティングデバイスのコンポーネントを、出力オーディオ信号をレンダリングするように駆動するためのアプリなどのクライアントコンピューティングデバイス104にインストールされているアプリケーション、スクリプト、またはプログラムを含むことができる。データ処理システム102は、データパケットまたはオーディオ入力信号を含むかもしくは識別する他の信号を受信することができる。たとえば、データ処理システム102は、NLPコンポーネント112を実行するか、作動させることでオーディオ信号を受信もしくは取得し、オーディオ信号を解析することができる。たとえば、NLPコンポーネント112は、人間とコンピュータとの間のインタラクションを取り持つことができる。NLPコンポーネント112は、自然言語を理解し、人間または自然言語入力から意味を導出することをデータ処理システム102に行わせるための技術とともに構成され得る。NLPコンポーネント112は、統計的機械学習などの、機械学習に基づく技術を含むか、またはその技術とともに構成され得る。NLPコンポーネント112は、決定木、統計モデル、または確率的モデルを利用して、入力オーディオ信号を解析することができる。NLPコンポーネント112は、たとえば、名前付きエンティティ認識(たとえば、テキストのストリームが与えられた場合に、人々または場所などのテキスト内のどのアイテムが適切な名前にマップされるか、および人、場所、または組織などの、そのような各名前の種類がどのようなものであるかを決定する)、自然言語生成(たとえば、コンピュータデータベースからの情報または意味論的意図を理解可能な人間言語に変換する)、自然言語理解(たとえば、テキストをコンピュータモジュールが操作することができる一階論理構造などのより形式的な言語に変換する)、機械翻訳(たとえば、テキストを一方の人間言語から他方の人間言語に自動的に翻訳する)、形態論的分割(たとえば、単語を個別の形態素に分離し、形態素のクラスを識別するが、これは考察されている言語の単語の形態または構造の複雑度に基づき困難な場合があり得る)、質問回答(たとえば、人間言語質問への回答を決定する、これは限定的である場合も限定的でない場合もある)、意味処理(たとえば、単語を識別し、その意味を符号化し、識別された単語を類似の意味を有する他の単語に関係付けた後に行われ得る処理)などの機能を実行することができる。
NLPコンポーネント112は、入力信号を、記憶されている代表的な一組のオーディオ波形(たとえば、データリポジトリ124内の)と比較し、最もよく一致するものを選択することによってオーディオ入力信号を認識されたテキストに変換する。一組のオーディオ波形は、データ処理システム102にアクセス可能なデータリポジトリ124または他のデータベースに記憶され得る。代表的な波形は、大きいユーザ群について生成され、次いで、ユーザの話し声サンプルで強化され得る。オーディオ信号が認識されたテキストに変換された後、NLPコンポーネント112は、テキストと、たとえば、ユーザにまたがる学習を介して、または手動による指定を通じて、データ処理システム102が利用され得るアクションに関連付けられている単語とのマッチングを行う。
オーディオ入力信号は、クライアントコンピューティングデバイス104のセンサ134またはトランスデューサ136(たとえば、マイクロフォン)によって検出され得る。トランスデューサ136、オーディオドライバ138、または他のコンポーネントを介して、クライアントコンピューティングデバイス104は、オーディオ入力信号をデータ処理システム102に(たとえば、ネットワーク105を介して)送ることができ、これは(たとえば、インターフェース110によって)受信され、NLPコンポーネント112に送られるか、またはデータリポジトリ124内に記憶され得る。
NLPコンポーネント112は、入力オーディオ信号を取得することができる。NLPコンポーネント112は、入力オーディオ信号から、少なくとも1つの要求または要求に対応する少なくとも1つのトリガーキーワードを識別することができる。要求は、入力オーディオ信号の意図または主題を指示することができる。トリガーキーワードは、行われる可能性の高いアクションの種類を指示することができる。たとえば、NLPコンポーネント112は、入力オーディオ信号を解析して、ディナーおよび映画に出席するため夕方に家を出る少なくとも1つの要求を識別することができる。トリガーキーワードは、少なくとも1つの単語、フレーズ、語幹もしくは部分単語、または行われるべきアクションを指示する派生語を含み得る。たとえば、入力オーディオ信号からのトリガーキーワード「go」または「to go to」は、輸送の必要性を指示し得る。この例では、入力オーディオ信号(または識別された要求)は、輸送の意図を直接表すことはないが、トリガーキーワードは、要求によって指示される少なくとも1つの他のアクションの補助アクションであることを指示する。
NLPコンポーネント112は、入力オーディオ信号を解析して、要求およびトリガーキーワードを識別するか、決定するか、取り出すか、または他の何らかの形で取得することができる。たとえば、NLPコンポーネント112は、意味処理技術を入力オーディオ信号に適用して、トリガーキーワードまたは要求を識別することができる。NLPコンポーネント112は、意味処理技術を入力オーディオ信号に適用して、第1のトリガーキーワードおよび第2のトリガーキーワードなどの、1つまたは複数のトリガーキーワードを含むトリガーフレーズを識別することができる。たとえば、入力オーディオ信号は、「I need someone to do my laundry and my dry cleaning」という文を含むことができる。NLPコンポーネント112は、意味処理技術、または他の自然言語処理技術を、文を含むデータパケットに適用して、「do my laundry」および「do my dry cleaning」というトリガーキーワードを識別することができる。NLPコンポーネント112は、laundryおよびdry cleaningなどの、複数のトリガーキーワードをさらに識別することができる。たとえば、NLPコンポーネント112は、トリガーフレーズがそのトリガーキーワードおよび第2のトリガーキーワードを含むと決定することができる。
NLPコンポーネント112は、入力オーディオ信号をフィルタリングしてトリガーキーワードを識別することができる。たとえば、入力オーディオ信号を搬送するデータパケットは、「It would be great if I could get someone that could help me go to the airport」を含むことができ、その場合、NLPコンポーネント112は「it」、「would」、「be」、「great」、「if」、「I」、「could」、「get」、「someone」、「that」、「could」、または「help」のように1つまたは複数の検索語をフィルタリングで除去することができる。これらの検索語をフィルタリングで除去することによって、NLPコンポーネント112は、「go to the airport」などの、トリガーキーワードをより正確にかつ確実に識別し、これがタクシーまたは乗車シェアサービスの要求であると決定することができる。
いくつかの場合において、NLPコンポーネントは、入力オーディオ信号を搬送するデータパケットが1つ複数の要求を含むと決定することができる。たとえば、入力オーディオ信号は、「I need someone to do my laundry and my dry cleaning」という文を含むことができる。NLPコンポーネント112は、ランドリーサービスおよびドライクリーニングサービスの要求であると決定することができる。NLPコンポーネント112は、ランドリーサービスおよびドライクリーニングサービスの両方を提供することができるサービスプロバイダに対する単一の要求であると決定することができる。NLPコンポーネント112は、これが、2つの要求、すなわち、ランドリーサービスを実行するサービスプロバイダに対する第1の要求およびドライクリーニングサービスを提供するサービスプロバイダに対する第2の要求であると決定することができる。いくつかの場合において、NLPコンポーネント112は、複数の決定された要求を組み合わせて単一の要求にし、単一の要求をサービスプロバイダデバイス108に伝送することができる。いくつかの場合において、NLPコンポーネント112は、個別の要求を各サービスプロバイダデバイス108に伝送するか、または両方の要求を別々に同じサービスプロバイダデバイス108に伝送することができる。
データ処理システム102は、トリガーキーワードに基づき、要求に応答するアクションデータ構造体を生成するように設計され構築されたダイレクトアクションAPI116を備えることができる。データ処理システム102のプロセッサは、ダイレクトアクションAPI116を呼び出して、カーシェアサービスからの自動車などのサービスまたは製品を要求するか、または注文するサービスプロバイダデバイス108へのデータ構造体を生成するスクリプトを実行することができる。ダイレクトAPI116は、データリポジトリ124からのデータ、さらにクライアントコンピューティングデバイス104からエンドユーザの同意を得て受信されたデータを取得して、場所、時間、ユーザアカウント、物流もしくは他の情報を決定し、サービスプロバイダデバイス108がカーシェアサービスに自動車を予約するなどのオペレーションを実行することを可能にすることができる。ダイレクトアクションAPI116を使用することで、データ処理システム102は、また、サービスプロバイダデバイス108と通信して、この例による変換を完遂し、カーシェアピックアップ予約を行うこともできる。
ダイレクトアクションAPI116は、データ処理システム102によって決定されるような、エンドユーザの意図を満足させるために指定されたアクションを実行することができる。その入力で指定されているアクションに応じて、ダイレクトアクションAPI116は、ユーザ要求を履行するために必要なパラメータを識別するコードまたはダイアログスクリプトを実行することができる。そのようなコードは、ホームオートメーションサービスの名称などの、たとえば、データリポジトリ124内にある追加情報を探索し得るか、または要求されたタクシーの意図された目的地などのエンドユーザ質問を尋ねるようにクライアントコンピューティングデバイス104においてレンダリングするためのオーディオ出力を行うことができる。ダイレクトアクセスAPI116は、必要なパラメータを決定することができ、情報をアクセションデータ構造体にパッケージ化することができ、次いで、これは、コンテンツセレクタコンポーネント118などの別のコンポーネントに、または履行されるべきサービスプロバイダコンピューティングデバイス108に送信され得る。
ダイレクトアクションAPI116は、NLPコンポーネント112からの命令またはコマンド、またはデータ処理システム102の他のコンポーネントを受信して、アクションデータ構造体を生成または構築することができる。ダイレクトアクションAPI116は、データリポジトリ124に記憶されているテンプレートリポジトリ132からのテンプレートを選択するためにアクションの種類を決定することができる。アクションの種類は、たとえば、サービス、製品、予約、またはチケットを含むことができる。アクションの種類は、サービスまたは製品の種類をさらに含むことができる。たとえば、サービスの種類は、カーシェアサービス、食品配達サービス、ランドリーサービス、メイドサービス、修理サービス、または家事サービスを含むことができる。製品の種類は、たとえば、衣類、靴、おもちゃ、電子機器、コンピュータ、書籍、または宝飾品を含むことができる。予約の種類は、たとえば、ディナー予約または美容室予約を含むことができる。チケットの種類は、たとえば、映画チケット、スポーツ会場チケット、または航空券を含むことができる。いくつかの場合において、サービス、製品、予約、またはチケットの種類は、価格、場所、出荷の種類、入手性、または他の属性に基づき分類され得る。
ダイレクトAPI116は、要求の種類を識別した後に、テンプレートリポジトリ132から対応するテンプレートにアクセスすることができる。テンプレートは、サービスプロバイダデバイス108の要求されたオペレーション(ピックアップ場所でエンドユーザをピックアップし、エンドユーザを目的地まで輸送するためにタクシーを送るオペレーションなど)を促進するためにダイレクトアクションAPI116によって埋められ得るフィールドを構造化データセットに入れることができる。ダイレクトアクションAPI116は、テンプレートリポジトリ132において探索を実行し、トリガーキーワードおよび要求の1つまたは複数の特性と一致するテンプレートを選択することができる。たとえば、要求が自動車または目的地への乗車の要求に対応する場合、データ処理システム102は、カーシェアリングサービステンプレートを選択することができる。カーシェアリングサービステンプレートは、デバイス識別子、ピックアップ場所、目的地、乗客数、またはサービスの種類のうちの1つまたは複数のフィールドを備えることができる。ダイレクトアクションAPI116は、これらのフィールドに値を埋め込むことができる。これらのフィールドに値を埋め込むために、ダイレクトアクションAPI116は、コンピューティングデバイス104の1つまたは複数のセンサ134またはデバイス104のユーザインターフェースにpingを行うか、ポーリングを行うか、または他の何らかの形でそこから情報を取得することができる。
ポーリングは、データ処理システム102によって、またはデータ処理システム102からの命令に応答してコンピューティングデバイス104によって、センサ134などの外部デバイスの情報を能動的にサンプリングすることを指すものとしてよい。ポーリングは、非同期的な活動であり得る。ポーリング中、データ処理システム102は、センサ134がそれの準備状態、状態をチェックするか、環境条件を検出するか、またはセンサ134が実行するように構成されている他の機能もしくは活動(たとえば、温度読取値を収集し、記録する、周辺光レベルを検出する、位置を決定する、圧力を決定する、高度を決定する、運動速度を決定する、または運動方向を決定する)を実行するのを待つことができる。いくつかの場合において、ポーリングは、1つまたは複数のセンサ134を使用することによって少なくとも一部分において収集されるか、測定されるか、検出されるか、または他の何らかの形で決定されるデータをコンピューティングデバイス104に要求することを指すものとしてよい。
たとえば、ダイレクトアクションAPI116は、GPSセンサなどの位置センサを使用して発信元位置を検出することができる。ダイレクトアクションAPI116は、コンピューティングデバイス104のエンドユーザに調査、プロンプト、または問い合わせをサブミットすることによってさらなる情報を取得することができる。ダイレクトアクションAPIは、データ処理システム102のインターフェース110およびコンピューティングデバイス104のユーザインターフェース(たとえば、オーディオインターフェース、音声ベースユーザインターフェース、ディスプレイ、またはタッチスクリーン)を介して調査、プロンプト、または問い合わせをサブミットすることができる。したがって、ダイレクトアクションAPI116は、トリガーキーワードまたは要求に基づきアクションデータ構造体に対するプレートを選択し、1つまたは複数のセンサ134によって検出されるか、またはユーザインターフェースを介して取得される情報をテンプレート内の1つまたは複数のフィールドに埋め込み、サービスプロバイダデバイス108によるオペレーションの実行を円滑にするようにアクションデータ構造体を生成するか、作成するか、または他の何らかの形で構築することができる。
データ処理システム102は、たとえば、トリガーキーワード、要求、サードパーティプロバイダデバイス108、サードパーティプロバイダデバイス108の種類、サードパーティプロバイダデバイス108が入るカテゴリ(たとえば、タクシーサービス、洗濯サービス、フラワーサービス、または食品宅配)、位置、または他のセンサ情報を含む様々な要因に基づきテンプレートデータ構造体132から基づきテンプレートを選択することができる。
トリガーキーワードに基づきテンプレートを選択するために、データ処理システム102は(たとえば、ダイレクトアクションAPI116を介して)、トリガーキーワードをマップするか、または他の何らかの形で対応するテンプレートデータ構造体を識別するために、トリガーキーワードを使用してテンプレートデータベース132に対して探索または他の問い合わせオペレーションを実行することができる。たとえば、テンプレートデータベース132内の各テンプレートは、通信セッションを確立するためにサードパーティプロバイダデバイス108が処理することができるトリガーキーワードに応答してアクションデータ構造体を生成するようにテンプレートが構成されていることを示すように1つまたは複数のトリガーキーワードに関連付けられ得る。
いくつかの場合において、データ処理システム102は、トリガーキーワードに基づきサードパーティプロバイダデバイス108を識別することができる。トリガーキーワードに基づきサードパーティプロバイダ108を識別するために、データ処理システム102は、データリポジトリ124において探索を実行して、トリガーキーワードにマップするサードパーティプロバイダデバイス108を識別することができる。たとえば、トリガーキーワードが「ride」または「to go to」を含む場合、データ処理システム102は(たとえば、ダイレクトアクションAPI116を介して)、サードパーティプロバイダデバイス108をTaxi Service Company Aに対応するものとして識別することができる。データ処理システム102は、識別されたサードパーティプロバイダデバイス108を使用してテンプレートデータベース132からテンプレートを選択することができる。たとえば、テンプレートデータベース132は、通信セッションを確立するためにサードパーティプロバイダデバイス108が処理することができるトリガーキーワードに応答してアクションデータ構造体を生成するように構成されているテンプレートへの、サードパーティプロバイダデバイス108またはエンティティの間のマッピングまたは相関を含むことができる。いくつかの場合において、テンプレートは、サードパーティプロバイダデバイス108用に、またはサードパーティプロバイダデバイス108のカテゴリ用にカスタマイズされ得る。データ処理システム102は、サードパーティプロバイダ108用のテンプレートに基づきアクションデータ構造体を生成することができる。
アクションデータ構造体を構築または生成するために、データ処理システム102は、値を埋める選択されたテンプレート内の1つまたは複数のフィールドを識別することができる。フィールドは、数値、文字列、Unicode値、ブール論理、2進値、16進値、識別子、場所の座標、地理的領域、タイムスタンプ、または他の値で埋められ得る。フィールドまたはデータ構造体それ自体は、データセキュリティを維持するように暗号化またはマスクすることができる。
テンプレート内のフィールドを決定した後、データ処理システム102は、アクションデータ構造体を作成するために、テンプレートのフィールドを埋めるフィールドの値を識別することができる。データ処理システム102は、データリポジトリ124上で探索または他の問い合わせオペレーションを実行することによってフィールドに対する値を取得するか、取り出すか、決定するか、または他の何らかの形で識別することができる。
いくつかの場合において、データ処理システム102は、フィールドに対する情報または値がデータリポジトリ124から欠如していると決定することができる。データ処理システム102は、データリポジトリ124に記憶されている情報または値が古くなっているか、陳腐化しているか、または他の何らかの形でNLPコンポーネント112によって識別されたトリガーキーワードおよび要求に応答してアクションデータ構造体を構築する目的に適していないと決定することができる(たとえば、クライアントコンピューティングデバイス104の位置が古い位置であり、現在位置ではあり得ない、アカウントが失効している可能性がある、目的のレストランが新しい場所に移転している可能性がある、物理的活動情報、または輸送手段)。
データ処理システム102が、それが現在、データ処理システム102のメモリ内で、テンプレートのフィールドに対する値または情報へのアクセス権を有していないと決定した場合に、データ処理システム102は、値または情報を取得することができる。データ処理システム102は、クライアントコンピューティングデバイス104の1つまたは複数の利用可能なセンサに問い合わせるか、もしくはポーリングするか、クライアントコンピューティングデバイス104のエンドユーザに情報の入力を求めるか、またはHTTPプロトコルを使用してオンラインウェブベースリソースにアクセスすることによって情報を獲得または取得することができる。たとえば、データ処理システム102は、それがテンプレートの必要なフィールドであり得る、クライアントコンピューティングデバイス104の現在位置を有していないと決定することができる。データ処理システム102は、位置情報についてクライアントコンピューティングデバイス104に問い合わせることができる。データ処理システム102は、全世界測位システムセンサ、WIFI三角測量、携帯電話基地局三角測量、Bluetooth(登録商標)ビーコン、IPアドレス、または他の位置感知技術などの、1つまたは複数の位置センサ134を使用して位置情報を提供するようにクライアントコンピューティングデバイス104に要求することができる。
いくつかの場合において、ダイレクトアクションAPI116は、センサ管理コンポーネント120にセンサ情報を要求することができる。データ処理システム102は、センサ管理コンポーネント120を備えることができる。センサ管理コンポーネント120は、クライアントコンピューティングデバイス104とは別個の、または独立しているデータ処理システム102上で実行することができる。いくつかの場合において、センサ管理コンポーネント120は、データ処理システム102上で実行するセンサ管理コンポーネント120とインターフェースするようにコンピューティングデバイス104上で構成されている1つまたは複数のエージェント、スクリプト、実行ファイルを含み得る。
センサ管理コンポーネント120は、通信セッションの特性を測定するためのハードウェアまたはソフトウェアを備えることができる。たとえば、ダイレクトアクションAPI116は、トリガーキーワードに基づき、要求に対応するか、または応答するアクションデータ構造体に対するテンプレートを選択することができる。テンプレートは、第1のフィールドおよび第2のフィールドなどの、埋められるべき1つまたは複数のフィールドを含むことができる。これらのフィールドを埋めることについて、ダイレクトアクションAPI116は、センサ管理コンポーネント120に問い合わせるか、要求するか、呼び出すか、または他の何らかの形でインターフェースすることができる。センサ管理コンポーネント120は、センサ134またはセンサ134に関連付けられているコンピューティングデバイス104によるリソース利用を削減することによってフィールドに対する情報を取得することができる。たとえば、センサ管理コンポーネント120は、第1のフィールドに対する情報を取得するように構成されている複数の利用可能なセンサ134を識別することができる。複数の利用可能なセンサは、第1のセンサと第2のセンサとを含むことができる。センサ管理コンポーネント120は、複数のセンサのうちの各々のステータスを決定することができる。センサ管理コンポーネント120は、ステータスに基づき複数のセンサのうちの第1のセンサを選択することができる。センサ管理コンポーネント120は、第1のフィールドに対応するデータについて第1のセンサをポーリングすることができる。ダイレクトアクションAPI116は、第1のフィールドに、第1のセンサのポーリングに応答してセンサ管理コンポーネントによって受信されたデータを埋めることができる。
センサ管理コンポーネント120は、複数の利用可能なセンサ134を識別することができる。センサ管理コンポーネント120は、データリポジトリ124内に、コンピューティングデバイス104に関連付けられているエンドユーザアカウントに利用可能であるセンサ134のリストを記憶することができる。センサ134は、利用可能とするステータスを有することができる。利用可能は、センサがオンラインであるか、アクティブであるか、スタンバイモードであるか、または低電力モードであることを指すものとしてよい。センサは、診断テストまたはプロセスに通った場合に利用可能であり得る。いくつかの場合において、センサ134は、コンピューティングデバイス104がセンサ134をオンラインにするように指示できる場合にオフラインであっても利用可能であり得る。センサ134のステータスは、センサ134がオフラインであるか、タイミングよくpingに応答しないか、正常に機能していないか、誤ったもしくは矛盾した値を提供するか、または診断テストもしくはプロセスに通らない場合に利用不可能であるものとしてよい。
いくつかの場合において、クライアントコンピューティングデバイス104は、通信セッションを確立した後に、センサステータス情報をセンサ管理コンポーネント120にプッシュすることができる。いくつかの場合に、センサ管理コンポーネント120は、クライアントコンピューティングデバイス104または利用可能なセンサ134のリストについてアカウント識別子に関連付けられている1つもしくは複数のクライアントコンピューティングデバイス104に要求を送信し得る。センサ管理コンポーネント120は、コンピューティングデバイス同士の接近度に基づき、または1つもしくは複数のコンピューティングデバイス104に関連付けられているネットワーク活動に基づき1つまたは複数のコンピューティングデバイス104の集合を識別することができる(たとえば、エンドユーザは、データ処理システム102またはそのコンポーネントとインタラクティブにやり取りするために1つまたは複数のコンピューティングデバイス104を能動的に使用している場合がある)。いくつかの場合において、データ処理システム102は、時間間隔に基づきセンサ管理コンポーネントによって使用される事前に知られているすべてのセンサ134をポーリングすることができる。
したがって、データ処理システム102は、テンプレートの第1のフィールドを埋めるデータを提供することができ、および提供するために利用可能である複数のセンサを識別することができる。次いで、データ処理システムは、センサの1つ(または部分集合)を選択し、センサからデータを受信することができる。データ処理システム102は、入力オーディオ信号を提供したコンピューティングデバイス104に結合されていないセンサをポーリングすることを決定することができる。たとえば、エンドユーザは、第1のコンピューティングデバイス104を使用して入力オーディオ信号を提供することができる。第1のコンピューティングデバイス104は、第1のコンピューティングデバイス104に結合されている第1のセンサ134を備えることができる。データ処理システムは、エンドユーザアカウントにも関連付けられている第2のコンピューティングデバイス104があると決定することができる(たとえば、第1および第2の両方のコンピューティングデバイス104は、データ処理システム102とのハンドシェイクプロセスを正常に実行した)。第2のコンピューティングデバイス104は、第1のコンピューティングデバイス104に近いものとしてよいか、またはデータ処理システム102は、第2のコンピューティングデバイス104がテンプレートの第1のフィールドを埋める十分な品質を有するデータを提供することもできると他の何らかの形で決定することができる(たとえば、2つのセンサによって提供される位置情報は、25メートル、50メートル、75メートル、または100メートルなどの許容範囲内である)。データ処理システム102は、第1のコンピューティングデバイス104がデータ処理システム102との通信を呼び出したか、開始したか、または確立したとしても、第1のコンピューティングデバイスに結合されている第1のセンサ134の代わりに第2のコンピューティングデバイス104に結合される第2のセンサ134を使用することを決定することができる。データ処理システム102は、リソース削減ポリシーを使用して、入力オーディオ信号をNLPコンポーネント110に供給した第1のコンピューティングデバイス104に結合されている第1のセンサ134の代わりに第2のコンピューティングデバイスに結合されている第2のセンサ134を使用することを決定することができる。データ処理システム102は、電池残量が多いか、リソース利用可能性が高いか、または結果としてセンサ情報のその後の要求を減らす可能性があるより高い品質もしくはより正確なデータを提供するように構成され得るので、第2のコンピューティングデバイス104を使用することを決定することができる。
いくつかの場合において、センサ管理コンポーネント120は、メモリから、第2のセンサによって以前に検出された第2の環境条件を取り出しながら、第1のセンサに、第1の環境条件(たとえば、位置、速度、温度、周辺光、周囲の音など)を検出させることによってリソース利用を削減することができる。センサ管理コンポーネント120は、第2のセンサにオンラインになるかまたはアクティベートして環境条件を検出するように指令するのではなく、メモリから以前に検出された値を取り出して、リソース利用を削減することができる。たとえば、センサ管理コンポーネントは、第2のフィールドに対応するデータをコンピューティングデバイス104のメモリから取得しながら、第1のフィールドに対応するデータについて第1のセンサをポーリングすることができる。第2のデータは、データ処理システム102が第2のデータを要求する前にコンピューティングデバイス104のメモリに記憶され得る。センサ管理コンポーネント120は、ダイレクトアクションAPI116から受信されたデータに対する第2のセンサからの要求に応答して第2のセンサ134をポーリングしなくてもよい。センサ管理コンポーネント120は、第1のフィールドに対応するデータについて第1のセンサをポーリングするが、第2のフィールドに対応するデータについては第2のセンサをポーリングしないことを決定することができる。センサ管理コンポーネント120は、規則の集合のポリシー、論理を使用して、1つまたは複数のセンサをポーリングするかしないかを決定することができる。たとえば、規則のポリシー、論理、または集合は、条件付き規則、if/then条件、トリガーイベント、許容範囲、閾値、時間間隔、位置、地理的フェンシング、または活動の種類を含むか、またはそれらに基づき得る。たとえば、センサ管理コンポーネント120は、データ処理システム102によって受信された最後の位置データが時間間隔(たとえば、10秒、5秒、20秒、30秒、1分、またはそれ以上)に基づき失効している可能性があるので位置情報について第1のセンサをポーリングすることを決定することができる。データ処理システム102は、第2のセンサが温度センサであってよいので第2のセンサについてメモリからデータを取得することができ、データ処理システム102は、最後の温度測定が検出され、メモリに記憶されたときのタイムスタンプが時間間隔(たとえば、1分、2分、3分、5分、10分、20分、30分、またはそれ以上)を満たし得ると決定するものとしてよい。
センサ管理コンポーネント120は、データの種類に基づきデータを収集するようにセンサの構成を調整することができる。たとえば、センサ管理コンポーネント120は、センサに対するサンプルレート、サンプル間隔、またはサンプル持続時間を調整することができる。センサ管理コンポーネント120は、サンプルレートを増加または減少させることができる。サンプルレートは、測定時間間隔において取られたサンプルの数を指すことができる。サンプルレートは、たとえば、.005Hz、0.01Hz、0.015Hz、0.02Hz、0.05Hz、0.1Hz、0.2Hz、0.5Hz、0.7Hz、1Hz、2Hz、3Hz、5Hz、10Hz、またはセンサリソース利用を最適化しながらアクションデータ構造体を作成するためにデータを提供する他の何らかのサンプルレートを含むことができる(たとえば、データは、過剰なデータ収集なしでオペレーションを実行するうえで許容範囲内にある)。
センサ管理コンポーネント120は、サンプル間隔を調整することができる。サンプル間隔は、センサがオンにされたか、またはセンサデータを能動的に収集している時間期間を指すものとしてよい。サンプル持続時間は、サンプルレートでデータを能動的に収集するためにどれだけ長くオンにされているかを指すものとしてよい。たとえば、センサ管理コンポーネント120は、持続時間30秒(たとえば、サンプル持続時間)の間、1Hz(たとえば、サンプルレート)でセンサデータを収集するために、5分毎(たとえば、サンプル間隔)にオンになるようにセンサに指令または命令することができる。ポリシーデータ構造体128に記憶されているポリシーは、センサの種類、活動の種類、または他の特性に基づくサンプルレート、サンプル間隔、または持続時間に対する異なる値を含み得る。
いくつかの場合において、センサ管理コンポーネント120は、1つまたは複数のセンサを無効化することができる。センサ管理コンポーネント120は、センサによって収集されたデータの特性に基づきまたは応答してセンサを無効化することができる。センサ管理コンポーネント120は、センサを一時的にまたは永久的に無効化することができる。センサ134を無効化することで、センサがセンサデータを収集もしくは検出すること、または他の測定を行うことを防ぐことができる。いくつかの場合において、センサを無効化することは、センサを制御するか、またはセンサとインターフェースする電子機器またはAPIを無効化すること、またはオフにすることを指すものとしてよい。たとえば、コンピューティングデバイス102は、データについてセンサをポーリングすることと、センサ134を無効化するセンサ管理コンポーネント120からの命令に応答してデータを収集し、記憶することとを停止することができる。
センサ管理コンポーネント120は、リソース利用削減ポリシーを第1のセンサによって収集されたデータの特性に適用して、第1のセンサを無効化することができる。データの特性は、データの品質、データの量、センサの性能を示すデータ、またはデータを収集することを続けるためにコンピュータリソースが利用可能かどうかもしくは電池残量を示すデータを含むか、または指すものとしてよい。たとえば、データは、センサが正常に機能していないか、較正されていないか、または他の何らかの形で誤ったデータを収集していることを指示することができる。さらなる誤ったデータおよび破棄リソース(たとえば、電池残量、処理能力、または帯域幅)を収集するのを防ぐために、センサ管理コンポーネント120は、一定期間の間、センサ134を無効化することができる。センサ管理コンポーネント120は、その期間の後にセンサをポーリングすることができ、その時にデータを評価する。データが再び、不満足なものである(たとえば、他のセンサによって収集されたデータ、履歴データ、データの種類、データのフォーマットと一致しない)場合、センサ管理コンポーネント120は、再び、ある時間間隔の間、センサを無効化することができ、これは第1の時間間隔よりも長いか、またはセンサが修復されるまで永続的であってもよい。
いくつかの場合において、第1のセンサから収集されたデータは、センサ管理コンポーネント120によって分析され、それにより、同じコンピューティングデバイスまたは別のコンピューティングデバイスの第2のセンサを無効化することができる。たとえば、電池センサは、ローバッテリになっている(たとえば、20%の電池残量)を示し、次いで、デバイス104の1つまたは複数のセンサを無効化することができる。別の例では、温度センサは、デバイスが過熱していることを示すことができ、それに応答してセンサ管理コンポーネント120は位置センサまたは他のセンサを無効化することができる。
いくつかの場合において、データ処理システムは、同じまたは類似の種類の情報(たとえば、位置情報、活動情報、速度、温度、周辺光、または周囲の音)を取得するように構成されている複数の利用可能なセンサ134を識別することができる。センサ管理コンポーネント120は、センサ134が正常に機能している場合にセンサ134は利用可能であると決定することができるか、データに対する要求に応答することができるか、または検出されたデータをネットワーク104に接続されているコンピューティングデバイス104に伝達し、データをデータ処理システム102にルーティングすることができる。センサ管理コンポーネント120は、センサ134が、コンピューティングデバイス104のエンドユーザの近くもしくは他の場所にある場合に利用可能であるか、またはアクションデータ構造体を生成するために使用される関連データを収集するように構成されていると決定することができる。
たとえば、センサ管理コンポーネント120は、両方ともコンピューティングデバイス104のエンドユーザのアカウントに関連付けられている位置情報を収集するように構成されている2つのセンサがあると決定することができる。センサ管理コンポーネント120は、両方のセンサがエンドユーザの近くにあるということを、2つのセンサによって収集されたデータの比較結果に基づき類似の位置情報をその両方のセンサが収集しているという理由により決定することができる。センサ管理コンポーネント120は、ポリシーを適用して、位置データについてセンサの一方のみをポーリングすることを決定し、他のセンサを無効化することで、両方のセンサを動作させている場合と比較してリソース消費を削減することができる。たとえば、2つのセンサは、スマートフォンおよびスマートウォッチなどの、両方ともエンドユーザの近くにある2つの異なるコンピューティングデバイス104上に構成され得る。センサ管理コンポーネント120は、2つの異なるコンピューティングデバイス104の電池ステータスを決定し、電池残量が多いコンピューティングデバイス104上に構成される2つのセンサのうちの1つを選択することができる。電池残量は、残っている電力のパーセンテージ、絶対的な残っている電力、または電池が現在の利用(たとえば、プロセッサもしくはメモリ利用、センサ利用、ネットワークインターフェース利用)の下でコンピューティングデバイス104に電力を供給することができる推定時間とすることができる。したがって、センサ管理コンポーネント120は、電池消費を節減するためにセンサの1つを無効化し、位置情報をアクティブセンサに要求することができる。
いくつかの場合において、センサ管理コンポーネント120は、以前に収集された情報からピギーバックオフすることができる。たとえば、センサ管理コンポーネントは、位置情報を取得するように構成されているエンドユーザの近くにある複数の利用可能なセンサがあると決定することができる。複数の利用可能なセンサは、第1のセンサ、第2のセンサ、または第3のセンサを含むことができる。センサ管理コンポーネント120は、第1のセンサがエンドユーザの現在の位置情報を(たとえば、1秒、2秒、3秒、またはそれ以上などの閾値時間内に)収集したと決定することができる。この情報は、ダイレクトアクションAPIがセンサ管理コンポーネント120にセンサ情報を要求する前に収集されている可能性がある。さらに、センサ管理コンポーネント120は、第3のセンサがオフライン状態にあり、現在位置情報を欠いていると決定することができる。したがって、センサ管理コンポーネント120は、第3のセンサに、オンライン状態に入り、リソースを消費するように命令するのではなく、第3のセンサをオフラインまたはローパワー状態に残しながら、第1のセンサからの情報を使用して、または第1のセンサをポーリングして、更新された位置情報を収集することを決定することができる。
いくつかの場合において、センサ管理コンポーネント120は、クライアントデバイス104に、収集されたセンサデータのバッチアップロードを実行するように指令することができる。収集されたセンサデータのバッチアップロードは、データがセンサ134によって収集されるときの個別のアップロードまたはデータのストリーミングと比較してリソース消費を削減することができる。クライアントデバイス104は、オフライン状態からオンライン状態に入ること(たとえば、ネットワーク104への接続を取り戻すこと、オンにされること、またはGPS衛星への見通し内内にあること)に応答してバッチアップロードを実行することができる。いくつかの場合において、センサ管理コンポーネント120は、コンピューティングデバイス104に、ジオフェンス(たとえば、小売店の場所、または他の物理的な場所もしくはエリア)に入るか、また出る、など、位置に基づきバッチアップロードを実行するように指令することができる。いくつかの場合において、コンピューティングデバイスは、コンピューティングデバイス104上にインストールされているアプリケーションのリストをアップロードすることができる(たとえば、コンピューティングデバイスのレジストリまたはインストール済みアプリケーションを記憶しておく他のデータベースにアクセスすることによって)。
ダイレクトアクションAPI116は、1つまたは複数のフィールド(たとえば、第1のフィールド)に、第1のセンサのポーリングに応答してセンサ管理コンポーネント120によって受信されたデータを埋めることができる。ダイレクトアクションAPI116は、第2のフィールドに、クライアントデバイスのメモリからセンサ管理コンポーネント120によって受信されたデータを埋めて、リソース消費を削減することができる。次いで、ダイレクトアクションAPI116は、テンプレートの第1のフィールドおよび第2のフィールドに基づきアクションデータ構造体を生成することができる。
ダイレクトアクションAPI116は、アクションデータ構造体をサードパーティプロバイダデバイス(たとえば、サービスプロバイダ108)に伝送して、サードパーティプロバイダデバイス108にオペレーションセッションを呼び出させることができる。オペレーションセッションは、要求されたサービスを実行すること、要求された製品を購入すること、または対話アプリケーションプログラミングインターフェース(たとえば、サービスプロバイダNLPコンポーネント142)を呼び出すことなどの、アクションデータ構造体を伴うか、または基づくオペレーションを実行して、サードパーティプロバイダデバイス108とクライアントコンピューティングデバイス104との間のオペレーションセッションまたは通信セッションを確立するサードパーティプロバイダデバイス108を指すか、または含むものとしてよい。サービスプロバイダデバイス108とクライアントコンピューティングデバイス104との間のオペレーションセッションまたは通信セッションを確立したことに応答して、サービスプロバイダデバイス108は、ネットワーク105を介して、データパケットをクライアントコンピューティングデバイス104に直接伝送することができる。いくつかの場合において、サービスプロバイダデバイス108は、データ処理システム102およびネットワーク105を介してデータパケットをクライアントコンピューティングデバイス104に伝送することができる。
データ処理システム102は、サードパーティプロバイダデバイス108から、サードパーティプロバイダデバイス108がクライアントデバイス104とのオペレーションセッションを確立したという指示を受信することができる。たとえば、指示は、実行されているオペレーションの種類(たとえば、タクシーサービスなどのサービスを提供すること、製品を購入すること、問い合わせに応答すること)を識別することができる。データ処理システム102は、オペレーションセッションにおいてオペレーションが実行された(たとえば、タクシーがエンドユーザを拾ってエンドユーザを目的地へ輸送した)という指示をさらに受信することができる。オペレーションが実行されたという指示は、たとえば、エンドユーザの識別子、タイムスタンプ、オペレーションの種類、サードパーティサービスプロバイダ108の識別子、または価格を含むオペレーションデータ構造体を介して与えられ得る。オペレーションデータ構造体は、テンプレートデータ構造体132からのテンプレートを使用して形成され得る。テンプレートは、すべてのオペレーションについて標準テンプレートであるか、またはオペレーションの種類に基づきカスタマイズできる。
いくつかの場合において、サードパーティデバイス108は、対話API142の少なくとも一部を実行することができる。たとえば、サードパーティプロバイダデバイス108は、通信セッションのいくつかの態様または問い合わせの種類を取り扱うことができる。サードパーティプロバイダデバイス108は、データ処理システム102によって実行されるNLPコンポーネント112を利用して、通信セッションに関連付けられているオーディオ信号を処理することと、問い合わせへの応答を生成することとを円滑にし得る。いくつかの場合において、データ処理システム102は、サードパーティプロバイダ108用に構成されている対話API142を備えることができる。いくつかの場合において、データ処理システムは、通信セッションを確立するために、クライアントコンピューティングデバイスとサードパーティプロバイダデバイスとの間でデータパケットをルーティングする。データ処理システム102は、サードパーティプロバイダデバイス108から、サードパーティプロバイダデバイスがクライアントデバイス104との通信セッションを確立したという指示を受信することができる。この指示は、クライアントコンピューティングデバイス104の識別子、通信セッションが確立された時刻に対応するタイムスタンプ、または通信セッションに関連付けられているアクションデータ構造体などの、通信セッションに関連付けられている他の情報を含むことができる。いくつかの場合において、データ処理システム102は、オペレーションセッションまたは通信セッションを管理するためのセッションハンドラコンポーネント114と、データを収集するセンサを管理するか、または選択するためのセンサ管理コンポーネント120とを備えることができる。
データ処理システム102は、セッションハンドラコンポーネント114を備えるか、実行するか、アクセスするか、または他の何らかの形で通信して、クライアントデバイス104とデータ処理システム102との間の通信セッションを確立することができる。通信セッションは、クライアントデバイス104のセンサ134によって検出される入力オーディオ信号およびデータ処理システム102によってクライアントデバイス104に伝送される出力信号を含むクライアントデバイス104とデータ処理システム102との間の1つまたは複数のデータ伝送を指すものとしてよい。データ処理システム102は(たとえば、セッションハンドラコンポーネント114を介して)、入力オーディオ信号を受信したことに応答して通信セッション(たとえば、オペレーションセッション)を確立することができる。データ処理システム102は、通信セッションに対する持続時間を設定することができる。データ処理システム102は、通信セッションについて設定された持続時間に対するタイマまたはカウンタを設定することができる。タイマの終了に応答して、データ処理システム102は通信セッションを終了することができる。
通信セッションは、クライアントデバイス104がセッションを確立するための認証情報または資格証明書を提供するネットワークベースの通信セッションを指すものとしてよい。いくつかの場合において、通信セッションは、セッション時にデータパケットによって搬送されるトピックまたはオーディオ信号のコンテキストを指す。たとえば、第1の通信セッションは、タクシーサービスに関係する(たとえば、キーワード、アクションデータ構造体、またはコンテンツアイテムオブジェクトを含む)クライアントデバイス104とデータ処理システム102との間で伝送されるオーディオ信号を指すものとしてよく、第2の通信セッションは、ランドリーおよびドライクリーニングサービスに関係するクライアントデバイス104とデータ処理システム102との間で伝送されるオーディオ信号を指すものとしてよい。この例では、データ処理システム102は、オーディオ信号のコンテキストが異なると決定し(たとえば、NLPコンポーネント112を介して)、二組のオーディオ信号を異なる通信セッションに分けることができる。セッションハンドラ114は、ドライクリーニングおよびランドリーサービスに関係する1つまたは複数のオーディオ信号を識別したことに応答して乗車サービスに関係する第1のセッションを終了することができる。したがって、データ処理システム102は、オーディオ信号のコンテキストを検出したことに応答してドライクリーニングおよびランドリーサービスに関係するオーディオ信号に対する第2のセッションを開始するか、または確立することができる。
データ処理システム102は、コンテンツセレクタコンポーネント118を備えるか、実行するか、または他の何らかの形で通信して、自然言語プロセッサによって識別されたトリガーキーワードを受信し、トリガーキーワードに基づき、リアルタイムコンテンツ選択プロセスを介してコンテンツアイテムを選択することができる。いくつかの場合において、ダイレクトアクションAPI116は、アクションデータ構造体をコンテンツセレクタコンポーネント118に伝送して、リアルタイムコンテンツ選択プロセスを実行し、コンテンツプロバイダデバイス106(またはサードパーティプロバイダデバイス108)とクライアントコンピューティングデバイス104との間の通信セッションを確立することができる。
コンテンツ選択プロセスは、サードパーティコンテンツプロバイダ106によって提供されるスポンサー付きコンテンツアイテムを選択するステップを指すか、または含むことができる。コンテンツ選択プロセスは、複数のコンテンツプロバイダによって提供されるコンテンツアイテムがコンピューティングデバイス104に提供する1つまたは複数のコンテンツアイテムを選択するために解析されるか、処理されるか、重み付けされるか、またはマッチングが行われるサービスを含むことができる。コンテンツ選択プロセスは、リアルタイムまたはオフラインで実行され得る。コンテンツ選択プロセスをリアルタイムで実行するステップは、クライアントコンピューティングデバイス104を介して受信されるコンテンツに対する要求に応答してコンテンツ選択プロセスを実行するステップを指すものとしてよい。リアルタイムコンテンツ選択プロセスは、要求を受信する時間間隔(たとえば、5秒、10秒、20秒、30秒、1分、2分、3分、5分、10分、または20分)の範囲内で実行され(たとえば、開始するか、または完了し)得る。リアルタイムコンテンツ選択プロセスは、クライアントコンピューティングデバイス104との通信セッションにおいて、または通信セッションが終了した後の時間間隔内で実行され得る。
たとえば、データ処理システム102は、コンテンツアイテムオブジェクトを選択するように設計されるか、構築されるか、構成されるか、または動作可能であるコンテンツセレクタコンポーネント118を備えることができる。音声ベース環境に表示するコンテンツアイテムを選択するために、データ処理システム102は(たとえば、NLPコンポーネント112を介して)、入力オーディオ信号を解析してキーワード(たとえば、トリガーキーワード)を識別し、それらのキーワードを使用して、あいまい一致、完全一致、またはフレーズ一致に基づき一致するコンテンツアイテムを選択することができる。たとえば、コンテンツセレクタコンポーネント118は、候補コンテンツアイテムの主題を分析するか、解析するか、または他の何らかの形で処理して、候補コンテンツアイテムの主題がクライアントコンピューティングデバイス104のマイクロフォンによって検出された入力オーディオ信号のキーワードまたはフレーズの主題に対応するかどうかを決定することができる。コンテンツセレクタコンポーネント118は、画像処理技術、文字認識技術、自然言語処理技術、またはデータベース探索を使用して候補コンテンツアイテムの音声、オーディオ、検索語、文字、テキスト、シンボル、または画像を識別するか、分析するか、または認識し得る。候補コンテンツアイテムは、候補コンテンツアイテムの主題を示すメタデータを含むものとしてよく、その場合、コンテンツセレクタコンポーネント118はメタデータを処理して、候補コンテンツアイテムの主題が入力オーディオ信号に対応しているかどうかを決定し得る。
コンテンツプロバイダ106は、コンテンツアイテムを含むコンテンツキャンペーンをセットアップするときに追加のインジケータを提供することができる。コンテンツプロバイダ106は、コンテンツセレクタコンポーネント118が候補コンテンツアイテムに関する情報を使用して探索を実行することによって識別することができるコンテンツキャンペーンまたはコンテンツグループレベルの情報を提供し得る。たとえば、候補コンテンツアイテムは、コンテンツグループ、コンテンツキャンペーン、コンテンツプロバイダにマップし得る、一意的識別子を含み得る。コンテンツセレクタコンポーネント118は、データリポジトリ124内のコンテンツキャンペーンデータ構造体に記憶されている情報に基づき、コンテンツプロバイダ106に関する情報を決定し得る。
データ処理システム102は、コンピュータネットワークを介して、コンピューティングデバイス104上に提示するコンテンツの要求を受信することができる。データ処理システム102は、クライアントコンピューティングデバイス104のマイクロフォンによって検出された入力オーディオ信号を処理することによって要求を識別することができる。要求は、デバイスの種類、場所、および要求に関連付けられているキーワードなどの、要求の選択基準を含むことができる。要求は、そのアクションデータ構造体またはアクションデータ構造体を含み得る。
この要求に応答して、データ処理システム102は、データリポジトリ124、またはコンテンツプロバイダ106に関連付けられているデータベースからコンテンツアイテムオブジェクトを選択し、ネットワーク105を介し、またコンピューティングデバイス104を介して提示するコンテンツアイテムを提供することができる。コンテンツアイテムオブジェクトは、サービスプロバイダデバイス108と異なるコンテンツプロバイダデバイス108によって提供され得る。コンテンツアイテムは、アクションデータ構造体のサービスの種類と異なるサービスの種類に対応することができる(たとえば、タクシーサービス対食品宅配)。コンピューティングデバイス104は、コンテンツアイテムオブジェクトをインタラクティブに操作することができる。コンピューティングデバイス104は、コンテンツアイテムへのオーディオ応答を受信することができる。コンピューティングデバイス104は、サービスプロバイダ108を識別することをコンピューティングデバイス104に行わせるか、または行わせることを可能にするコンテンツアイテムオブジェクトに関連付けられているハイパーリンクまたは他のボタンを選択する、サービスプロバイダ108にサービスを要求する、サービスを実行するようにサービスプロバイダ108に指令する、情報をサービスプロバイダ108に伝送する、または他の何らかの形でサービスプロバイダデバイス108に問い合わせる指示を受け取ることができる。
データ処理システム102は、出力信号を生成するためにオーディオ信号発生器コンポーネント122を備えるか、実行するか、または通信することができる。出力信号は、1つまたは複数の部分を含み得る。たとえば、出力信号は、第1の部分と第2の部分とを備えるものとしてよい。出力信号の第1の部分は、アクションデータ構造体に対応し得る。出力信号の第2の部分は、リアルタイムコンテンツ選択プロセスにおいてコンテンツセレクタコンポーネント118によって選択されたコンテンツアイテムに対応し得る。
オーディオ信号発生器コンポーネント122は、第1の部分が第1のデータ構造体に対応する音を有する出力信号を生成することができる。たとえば、オーディオ信号発生器コンポーネント122は、ダイレクトアクションAPI116によってアクションデータ構造体のフィールド内に埋め込まれている1つまたは複数の値に基づき出力信号の第1の部分を生成することができる。タクシーサービスの例では、フィールドに対する値は、たとえば、ピックアップ場所に対する123 Main Street、目的地に対する1234 Main Street、乗客数に対する2、およびサービスのレベルに対する経済性を含むことができる。オーディオ信号発生器コンポーネント122は、コンピューティングデバイスのエンドユーザがサービスプロバイダ108への要求伝送の継続を望んでいることを確認するために出力信号の第1の部分を生成することができる。第1の部分は、「Would you like to order an economy car from taxi service provider A to pick two people up at 123 Main Street and drop off at 1234 Main Street?」という出力を含むことができる。
いくつかの場合において、第1の部分は、サービスプロバイダデバイス108から受信された情報を含み得る。サービスプロバイダデバイス108から受信された情報は、アクションデータ構造体に合わせてカスタマイズされるか、または手直しされ得る。たとえば、データ処理システム102は(たとえば、ダイレクトアクションAPI116を介して)、アクションデータ構造体をサービスプロバイダ108に伝送し、その後に、オペレーションを実行するようにサービスプロバイダ108に指令することができる。その代わりに、データ処理システム102は、アクションデータ構造体に初期または予備的処理を実行してオペレーションに関する予備的情報を生成するようにサービスプロバイダデバイス108に指令することができる。タクシーサービスの例では、アクションデータ構造体に対する予備的処理は、ピックアップ場所の周りに配置されるサービス要件のレベルを満たす利用可能なタクシーを識別するステップと、最も近い利用可能なタクシーがピックアップ場所に到着するまでの時間の長さを推定するステップと、目的地への到着時刻を推定するステップと、タクシーサービスの料金を推定するステップとを含むことができる。推定された予備的値は、固定された値、様々な条件に基づき変更を受ける推定値、または値の範囲を含み得る。サービスプロバイダデバイス108は、ネットワーク104を介して、予備的情報をデータ処理システム102に返すか、またはクライアントコンピューティングデバイス104に直接返すことができる。データ処理システム102は、サービスプロバイダデバイス108からの予備的結果を出力信号に組み込み、出力信号をコンピューティングデバイス104に伝送することができる。出力信号は、たとえば、「Taxi Service Company A can pick you up at 123 Main Street in 10 minutes, and drop you off at 1234 Main Street by 9 AM for $10. Do you want to order this ride?」を含むことができる。これは、出力信号の第1の部分を形成し得る。
いくつかの場合において、データ処理システム102は、出力信号の第2の部分を形成することができる。出力信号の第2の部分は、リアルタイムコンテンツ選択プロセスにおいてコンテンツセレクタコンポーネント118によって選択されたコンテンツアイテムを含み得る。第1の部分は、第2の部分と異なり得る。たとえば、第1の部分は、クライアントコンピューティングデバイス104のセンサ134によって検出された入力オーディオ信号を搬送するデータパケットに直接応答するアクションデータ構造体に対応する情報を含むことができるが、第2の部分は、アクションデータ構造体にわずかに関連し得るコンテンツセレクタコンポーネント104によって選択されたコンテンツアイテム、またはコンテンツプロバイダデバイス106によって提供されたスポンサー付きコンテンツを含むことができる。たとえば、コンピューティングデバイス104のエンドユーザは、Taxi Service Company Aにタクシーを要求することができる。データ処理システム102は、Taxi Service Company Aからタクシーに関する情報を含むように出力信号の第1の部分を生成することができる。しかしながら、データ処理システム102は、キーワード「taxi service」とエンドユーザが関心を持っていると思われるアクションデータ構造体に収容されている情報とに基づき選択されたコンテンツアイテムを含むように出力信号の第2の部分を生成することができる。たとえば、第2の部分は、Taxi Service Company Bなどの、異なるタクシーサービス会社によって提供されるコンテンツアイテムまたは情報を含み得る。ユーザは、Taxi Service Company Bを特に要求していない場合があるが、データ処理システム102は、それにもかかわらず、ユーザがTaxi Service Company Bとのオペレーションを実行することを選択し得るのでTaxi Service Company Bからコンテンツアイテムを提供することができる。
データ処理システム102は、アクションデータ構造体からの情報をTaxi Service Company Bに伝送して、ピックアップ時刻、目的地の到着時刻、および乗車料金を決定することができる。データ処理システム102は、この情報を受信し、「Taxi Service Company B can pick you up at 123 Main Street in 2 minutes, and drop you off at 1234 Main Street by 8:52 AM for $15. Do you want this ride instead?」のような出力信号の第2の部分を生成することができる。次いで、コンピューティングデバイス104のエンドユーザは、Taxi Service Company Aによって提供される乗車サービスまたはTaxi Service Company Bによって提供される乗車サービスを選択することができる。
出力信号の第2の部分で、Taxi Service Company Bによって提供されるサービスに対応するスポンサー付きコンテンツアイテムを提供する前に、データ処理システム102は、第2の部分がリアルタイムコンテンツ選択プロセスにおいて選択されたコンテンツアイテムオブジェクトに対応することをエンドユーザコンピューティングデバイスに通知することができる(たとえば、コンテンツセレクタコンポーネント118によって)。しかしながら、データ処理システム102では、コンピューティングデバイス104のエンドユーザに通知を提供するための異なる種類のインターフェースへのアクセスは限られている可能性がある。たとえば、コンピューティングデバイス104は、表示デバイスを備えないか、または表示デバイスは、無効にされるか、またはオフにされ得る。コンピューティングデバイス104の表示デバイスは、コンピューティングデバイス104のスピーカよりも消費するリソースが多くなる場合があり、したがって、コンピューティングデバイス104のスピーカを使用して通知を伝えるのと比べてコンピューティングデバイス104の表示デバイスをオンにすることは効率が低い場合がある。したがって、いくつかの場合において、データ処理システム102は、1つもしくは複数のインターフェースまたは1つもしくは複数の種類のコンピュータネットワーク上の情報伝送の効率および有効性を改善することができる。たとえば、データ処理システム102は(たとえば、オーディオ信号発生器コンポーネント122を介して)、コンテンツアイテムを含む出力オーディオ信号の一部分を変調して、出力信号のその部分がスポンサー付きコンテンツアイテムを含むという指示または通知をエンドユーザに与えることができる。
データ処理システム102は(たとえば、インターフェース110およびネットワーク105を介して)、オーディオ信号発生器コンポーネント122によって生成された出力信号を含むデータパケットを伝送することができる。出力信号は、クライアントデバイス104の、またはそれによって実行される、オーディオドライバコンポーネント138がクライアントデバイス104のスピーカ(たとえば、トランスデューサ136)を駆動して出力信号に対応する音響波を生成するようにすることができる。
図2は、コンピュータネットワークを介してセンサを選択的にポーリングするシステムのオペレーションを示す図である。システムは、図1に示されているシステム100の1つまたは複数のコンポーネントを備えることができる。NLPコンポーネント112は、コンピューティングデバイスによって検出されたオーディオ信号を受信して解析することができる。NKPコンポーネント112は、ACT202で情報をダイレクトアクションAPI116に受け渡すことができる。ダイレクトアクションAPI116は、センサ情報を収集してテンプレートの1つまたは複数のフィールドを埋め、NLPコンポーネント112によって解析されるオーディオ信号に応答してアクションデータ構造体を生成することを決定することができる。
ACT204では、ダイレクトアクションAPIは、センサ管理コンポーネント120にセンサ情報を要求することができる。センサ管理コンポーネント120は、複数のコンピューティングデバイス(たとえば、第1、第2、および第3のコンピューティングデバイス104)とのセンサデータ収集セッション206を確立することができる。センサ管理コンポーネント120は、ACT206でコンピューティングデバイス104のうちの1つまたは複数をポーリングすることができる。センサ管理コンポーネント120は、センサデータについてコンピューティングデバイス104のうちの1つのみをポーリングすることを決定し、それにより、エンドユーザに関係するか、または類似の情報を提供する複数のコンピューティングデバイス104の間の総リソース消費量を削減することができる。センサ管理コンポーネント120は、センサ134をポーリングするようにコンピューティングデバイス104のうちの1つまたは複数に指令することができる。
ACT208で、コンピューティングデバイス104のうちの1つまたは複数は、センサ134をポーリングするか、有効化するか、アクティベートするか、または他の何らかの形でセンサ134が、センサデータを収集し、センサ管理コンポーネント120もしくはデータ処理システム102に供給するセンサデータをコンピューティングデバイス104に提供するようにすることができる。センサ管理コンポーネント120は、ACT210で、収集されたセンサデータをダイレクトアクションAPI116に提供することができる。したがって、センサ管理コンポーネント120は、ポーリングする1つもしくは複数のセンサまたはセンサの部分集合を選択することによってエンドユーザに関連付けられている(または要求されたセンサ情報を提供することができるエンドユーザの近くにある)複数のコンピューティングデバイス104のうちの総リソース利用を削減するようにセンサ利用を最適化することができる。
図3は、センサを選択的にポーリングする例示的な方法を示す図である。方法300は、1つまたは複数のコンポーネント、システム、またはシステム100もしくはシステム400の要素によって実行され得る。方法300は、データ処理システムが入力オーディオ信号を受信するステップを含み得る(ACT305)。データ処理システムは、クライアントコンピューティングデバイスから入力オーディオ信号を受信することができる。たとえば、データ処理システムによって実行される自然言語プロセッサコンポーネントが、データ処理システムのインターフェースを介してクライアントコンピューティングデバイスから入力オーディオ信号を受信することができる。データ処理システムは、クライアントコンピューティングデバイス(またはクライアントデバイス)のセンサによって検出された入力オーディオ信号を搬送するか、または含むデータパケットを受信することができる。
ACT310において、方法300は、データ処理システムが入力オーディオ信号を解析するステップを含み得る。自然言語プロセッサコンポーネントは、入力オーディオ信号を解析して、要求および要求に対応するトリガーキーワードを識別することができる。たとえば、クライアントデバイスによって検出されたオーディオ信号は、「Okay device, I need a ride from Taxi Service Company A to go to 1234 Main Street.」を含み得る。このオーディオ信号において、初期トリガーキーワードは、「okay device」を含むものとしてよく、これは入力オーディオ信号をデータ処理システムに伝送することをクライアントデバイスに指示することができる。クライアントデバイスのプリプロセッサは、残りのオーディオ信号をデータ処理システムに送信する前に検索語「okay device」をフィルタリングで取り除くことができる。いくつかの場合において、クライアントデバイスは、追加検索語をフィルタリングで取り除くか、またはキーワードを生成してデータ処理システムに伝送しさらに処理することができる。
データ処理システムは、入力オーディオ信号内のトリガーキーワードを識別することができる。トリガーキーワードは、たとえば、「to go to」もしくは「ride」またはこれらの検索語の変形を含むことができる。トリガーキーワードは、サービスまたは製品の種類を指示することができる。データ処理システムは、入力オーディオ信号内の要求を識別することができる。要求は、検索語「I need」に基づき決定され得る。キーワードおよび要求は、意味処理技術または他の自然言語処理技術を使用して決定され得る。
ACT315において、データ処理システムは、アクションデータ構造体に対するテンプレートを選択することができる。テンプレートは、トリガーキーワード、要求、または識別されたサードパーティプロバイダに応答することができる。テンプレートは、第1のフィールドなどの1つまたは複数のフィールドを備えることができる。
ACT320で、データ処理システムは、1つまたは複数のセンサをポーリングするか、またはセンサをポーリングするようにコンピューティングデバイスに指令することができる。データ処理システムは、第1のフィールドを埋めるデータを提供することができる複数のセンサを識別することができ、その一方で、データ処理システムはポーリングする1つのセンサを選択することができる。データ処理システムは、入力オーディオ信号を提供したコンピューティングデバイス104に結合されていないセンサをポーリングすることを決定することができる。たとえば、エンドユーザは、第1のコンピューティングデバイス104を使用して入力オーディオ信号を提供することができる。第1のコンピューティングデバイス104は、第1のコンピューティングデバイスに結合されている第1のセンサを備えることができる。データ処理システムは、エンドユーザアカウントにも関連付けられている第2のコンピューティングデバイス104があると決定することができる。第2のコンピューティングデバイスは、第1のコンピューティングデバイスに近いものとしてよいか、またはデータ処理システムは、第2のコンピューティングデバイスがテンプレートの第1のフィールドを埋める十分な品質を有するデータを提供することもできると他の何らかの形で決定することができる(たとえば、2つのセンサによって提供される位置情報は、25メートル、50メートル、75メートル、または100メートルなどの許容範囲内である)。データ処理システムは、第1のコンピューティングデバイスがデータ処理システム102との通信を呼び出したか、開始したか、または確立したとしても、第1のコンピューティングデバイスに結合されている第1のセンサの代わりに第2のコンピューティングデバイス104に結合される第2のセンサを使用することを決定することができる。データ処理システムは、リソース削減ポリシーを使用して、第2のコンピューティングデバイスに結合されている第2のセンサを使用することを決定することができる。たとえば、第2のコンピューティングデバイスは、電池残量が多いか、リソース利用可能性が高いか、または電源に接続され得る。
いくつかの場合において、データ処理システムは、メモリから、センサによって以前に検出されたデータを取り出すことを決定することができる。たとえば、データ処理システムは、第2のセンサからの情報が第2のフィールドを埋めるために必要であるとしても1つのセンサを、第2のセンサをポーリングしていない間にポーリングすることを決定することができる。たとえば、データ処理システムは、以前に収集された情報を使用することによって(たとえば、センサデータの要求の前に)、リソース消費を削減することを決定することができる。したがって、データ処理システムは、第1のセンサをポーリングして、第2のセンサからの記憶されているデータを使用することができる。データ処理システムは、規則またはポリシーに基づき、または記憶されているデータを分析して、それが条件もしくは閾値(たとえば、時間間隔以内に収集されている)を満たしていると決定することによって、そうするように決定することができる。
ACT325において、データ処理システムは、センサデータによりアクションデータ構造体を生成することができる。データ処理システムは、トリガーキーワード、要求、サードパーティプロバイダデバイス、または他の情報に基づきアクションデータ構造体を生成することができる。アクションデータ構造体は、要求に応答するものとしてよい。たとえば、クライアントコンピューティングデバイスのエンドユーザがTaxi Service Company Aにタクシーを要求した場合、アクションデータ構造体は、Taxi Service Company Aにタクシーサービスを要求するための情報を含み得る。データ処理システムは、Taxi Service Company Aに対するテンプレートを選択し、Taxi Service Company Aがタクシーをクライアントコンピューティングデバイスのユーザの元に送りユーザをピックアップし、ユーザを要求された目的地に輸送することを可能にする1つまたは複数のセンサもしくはメモリから取得された値をテンプレート内のフィールドに埋めることができる。
ACT330で、データ処理システムは、サードパーティプロバイダデバイスから、サードパーティプロバイダデバイスがクライアントデバイスとのオペレーションセッションを確立したという指示を受信することができる。指示は、オペレーションが開始されたこと、保留中であること、処理中であること、または完了していることを示すことができる。指示は、オペレーションに関する追加情報とともにデータ構造体を含むことができる。
図4は、例示的なコンピュータシステム400のブロック図である。コンピュータシステムまたはコンピューティングデバイス400は、システム100、または処理システム102などのそのコンポーネントを含むか、または実装するために使用され得る。データ処理システム102は、インテリジェントパーソナルアシスタントまたは音声ベースデジタルアシスタントを含むことができる。コンピューティングシステム400は、情報を伝達するためのバス405または他の通信コンポーネントと、情報を処理するためにバス405に結合されているプロセッサ410または処理回路とを備える。コンピューティングシステム400は、情報を処理するためにバスに結合されている1つまたは複数のプロセッサ410もしくは処理回路も備え得る。コンピューティングシステム400は、情報、およびプロセッサ410によって実行されるべき命令を記憶するためにバス405に結合されるランダムアクセスメモリ(RAM)または他のダイナミックストレージデバイスなどのメインメモリ415も備える。メインメモリ415は、データリポジトリ145であり得るか、または含み得る。メインメモリ415は、プロセッサ410による命令の実行時に位置情報、一時変数、または他の中間情報を記憶するためにも使用できる。コンピュータシステム400は、静的情報とプロセッサ410に対する命令とを記憶するためにバス405に結合されているリードオンリーメモリ(ROM)420または他のスタティックストレージデバイスをさらに備え得る。ソリッドステートデバイス、磁気ディスク、または光ディスクなどのストレージデバイス425はバス405に結合され、情報および命令を永続的に記憶することができる。ストレージデバイス425は、データリポジトリ145を含み得るか、またはその一部であってよい。
コンピューティングシステム400は、情報をユーザに対し表示するために、バス405を介して液晶ディスプレイ、またはアクティブマトリックスディスプレイなどのディスプレイ435に結合され得る。英数字および他のキーを備えるキーボードなどの入力デバイス430はバス405に結合され、情報およびコマンド選択をプロセッサ410に伝達することができる。入力デバイス430は、タッチスクリーンディスプレイ435を含み得る。入力デバイス430は、マウス、トラックボール、またはカーソル方向キーなどのカーソルコントロールも備え、それにより、方向情報およびコマンド選択をプロセッサ410に伝達し、ディスプレイ435上のカーソル移動を制御することができる。ディスプレイ435は、たとえば、データ処理システム102、クライアントコンピューティングデバイス150、または図1の他のコンポーネントの一部であってもよい。
本明細書で説明されているプロセス、システム、および方法は、メインメモリ415に収められている命令の配置構成をプロセッサ410が実行することに応答してコンピューティングシステム400によって実装され得る。このような命令は、ストレージデバイス425などの別のコンピュータ可読媒体からメインメモリ415内に読み込まれ得る。メインメモリ415に収められている命令の配置構成が実行されると、コンピューティングシステム400は本明細書で説明されている例示的なプロセスを実行する。多重処理配置構成の1つまたは複数のプロセッサも、メインメモリ415に収められている命令を実行するために採用され得る。ハード配線された回路は、本明細書で説明されているシステムおよび方法と一緒にソフトウェア命令の代わりに、またはそれと組み合わせて使用され得る。本明細書で説明されているシステムおよび方法は、ハードウェア回路とソフトウェアとの特定の組合せに限定されない。
例示的なコンピューティングシステムが図4において説明されているけれども、本明細書で説明されているオペレーションを含む主題は、他の種類のデジタル電子回路で、または本明細書およびその構造的等価物において開示されている構造を含む、コンピュータソフトウェア、ファームウェア、またはハードウェアで、またはそれらのうちの1つまたは複数の組合せで実装され得る。
本明細書で説明されているシステムがユーザに関する個人情報を収集するか、または個人情報を利用し得る状況に関して、ユーザは、プログラムまたは機能により個人情報(たとえば、ユーザのソーシャルネットワーク、社会的行為もしくは活動、ユーザの選好、またはユーザの現在の場所に関する情報)を収集し得るかどうかを制御する、またはユーザに対してより高い関連性を有する思われるコンテンツをコンテンツサーバまたは他のデータ処理システムから受信するかどうか、またはどのように受信するかを制御する機会を与えられ得る。それに加えて、パラメータを生成するときに、特定データが、それが記憶されるか、または使用される前に1つまたは複数の方法で匿名化されるものとしてよく、したがって個人的に識別可能な情報は取り除かれる。たとえば、ユーザの身元は、ユーザに対して個人的に識別可能な情報が決定され得ないように匿名化され得るか、または位置情報(市名、郵便番号、国レベルなど)が得られる場合にユーザの地理的位置が一般化されるものとしてよく、したがって、ユーザの詳細な位置が決定され得ない。したがって、ユーザは、コンテンツサーバによってユーザに関する情報がどのように収集され、どのように使用されるかを制御し得る。
本明細書で説明されている主題およびオペレーションは、デジタル電子回路で、または本明細書およびその構造的等価物において開示されている構造を含む、コンピュータソフトウェア、ファームウェア、またはハードウェアで、またはそれらのうちの1つまたは複数の組合せで実装され得る。本明細書において説明されている主題は、1つまたは複数のコンピュータプログラム、たとえば、データ処理装置によって実行できるようにまたはデータ処理装置の動作を制御するために1つまたは複数のコンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数の回路として実現されてよい。代替的に、またはそれに加えて、プログラム命令は、データ処理装置による実行のため好適な受信機装置に送信する情報が符号化されるように生成される、人工的に生成された伝搬信号、たとえば、機械で生成された電気、光、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、または含まれ得る。コンピュータ記憶媒体は、伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成される伝搬信号内に符号化されているコンピュータプログラム命令の送信元または送信先とすることができる。コンピュータ記憶媒体は、また、1つまたは複数の独立したコンポーネントまたは媒体(たとえば、複数のCD、ディスク、または他のストレージデバイス)であり得るか、または含まれ得る。本明細書において説明されているオペレーションは、1つまたは複数のコンピュータ可読ストレージデバイス上に記憶されるか、または他のソースから受信されたデータに対してデータ処理装置によって実行されるオペレーションとして実装され得る。
「データ処理システム」、「コンピューティングデバイス」、「コンポーネント」、または「データ処理装置」という用語は、たとえばプログラム可能プロセッサ、コンピュータ、1つまたは複数のシステムオンチップ、または前述のものの組合せを含む、データを処理するための様々な装置、デバイス、およびマシンを包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)を含んでいてもよい。装置は、また、ハードウェアに加えて、注目しているコンピュータプログラム用の実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォーム実行時環境、仮想マシン、またはこれらのうちの1つまたは複数のものの組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービス、分散型コンピューティング、およびグリッドコンピューティング基盤などの様々な異なるコンピューティングモデル基盤を実現することができる。たとえば、ダイレクトアクションAPI116、コンテンツセレクタコンポーネント118、またはNLPコンポーネント112、および他のデータ処理システム102コンポーネントは、1つまたは複数のデータ処理装置、システム、コンピューティングデバイス、またはプロセッサを含むか、または共有することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、スクリプト、またはコードとも称される)は、コンパイル言語またはインタプリタ言語、宣言型もしくは手続き型言語を含む、任意の形態のプログラミング言語で書かれ、スタンドアロンプログラム、またはモジュール、コンポーネント、サブルーチン、オブジェクト、またはコンピューティング環境において使用するのに適している他のユニットを含む、任意の形態で配備され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応するものとしてよい。コンピュータプログラムは、他のプログラムをまたはデータ(たとえば、マークアップ言語ドキュメントに記憶される1つまたは複数のスクリプト)を保持するファイルの一部に、注目しているプログラム専用の単一ファイルに、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、副プログラム、またはコードの一部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるか、または複数のサイトにまたがって分散され、通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるように配備され得る。
本明細書で説明されているプロセスおよび論理の流れは、入力データを操作し、出力を生成することによってアクションを実行するように1つまたは複数のコンピュータプログラム(たとえば、データ処理システム102のコンポーネント)を実行する1つまたは複数のプログラム可能なプロセッサによって実行され得る。これらのプロセスまたは論理の流れは、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)によっても実行され、また装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)としても実装され得る。コンピュータプログラムの命令およびデータを記憶するのに適したデバイスは、たとえば、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補助されるか、または専用論理回路に組み込まれ得る。
本明細書で説明されている主題は、バックエンドコンポーネントを、たとえば、データサーバとして備えるか、またはミドルウェアコンポーネント、たとえば、アプリケーションサーバを備えるか、またはフロントエンドコンポーネント、たとえば、ユーザが本明細書で説明されている主題の実装をインタラクティブに操作することを可能にするグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータを備えるコンピューティングシステムで、または1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せで実装され得る。システムのコンポーネントは、デジタルデータ通信の任意の形態または媒体、たとえば、通信ネットワーク、によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、およびピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
システム100またはシステム400などのコンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、一般に、互いに隔てられており、典型的には、通信ネットワーク(たとえば、ネットワーク165)を通じてインタラクティブな操作を行う。クライアントとサーバとの関係は、コンピュータプログラムが各コンピュータ上で実行され、互いとの間にクライアント-サーバ関係を有することによって発生する。いくつかの実装において、サーバはデータ(たとえば、コンテンツアイテムを表すデータパケット)をクライアントデバイスに(たとえば、クライアントデバイスをインタラクティブに操作するユーザにデータを表示し、ユーザ入力を受け取ることを目的して)伝送する。クライアントデバイスで(たとえば、ユーザインタラクションの結果として)生成されたデータは、サーバにおいてクライアントデバイスから受信され(たとえば、コンピューティングデバイス150またはコンテンツプロバイダコンピューティングデバイス155またはサービスプロバイダコンピューティングデバイス160からデータ処理システム102によって受信され)得る。
オペレーションは特定の順序で図面に示されているが、そのようなオペレーションは、示される特定の順序でもしくは順番に実行される必要がなく、例示されているすべてのオペレーションが実行される必要があるとは限らない。本明細書で説明されているアクションは、異なる順序で実行できる。
様々なシステムコンポーネントを分離するといってもすべての実装で分離する必要はなく、説明されているプログラムコンポーネントは単一のハードウェアまたはソフトウェア製品に含まれ得る。たとえば、NLPコンポーネント110、コンテンツセレクタコンポーネント125、またはセンサ管理コンポーネント120は、単一のコンポーネント、アプリ、もしくはプログラム、または1つまたは複数の処理回路を有する論理デバイス、またはデータ処理システム102の1つまたは複数のサーバの一部であり得る。
いくつかの例示的な実装が説明されているが、前述の内容は例示的であり、限定する意図はなく、例として提示されていることは明らかである。特に、本明細書に提示されている例の多くは、方法動作またはシステム要素の特定の組合せを伴い、それらの動作およびそれらの要素は、同じ目的を遂行するために他の方法で組み合わされてもよい。一実装に関連して説明されている動作、要素、および特徴では、他の実装における類似の役割または実装から除外されることは意図されていない。
本明細書で使用されている語法および術語は、説明を目的とするものであり、限定するものとしてみなされるべきでない。「含む、備える(including)」、「からなる、備える、含む(comprising)」、「有する(having)」、「収容する、含む(containing)」、「伴う(involving)」、「特徴付けられる(characterized by)」、「特徴とする(characterized in that)」、および本明細書におけるそれらの変形では、それ以降に記載される項目、同等の項目、および追加項目、さらにはこれ以降排他的に記載されている項目からなる代替的実装を包含することが意図されている。一実装において、本明細書で説明されているシステムおよび方法は、説明されている要素、動作、またはコンポーネントのうちの1つ、複数の各組合せ、またはすべてからなる。
本明細書において単数形で参照されているシステムおよび方法の実装または要素または動作への参照は、また、これらの複数の要素を含む実装も包含するものとしてよく、本明細書における実装または要素または動作への複数の参照は、また、単一の要素のみを含む実装も包含し得る。単数形または複数形による参照は、本開示のシステムまたは方法、そのコンポーネント、動作、または要素を単一または複数の構成に限定することを意図していない。情報、動作、または要素に基づいている動作または要素への参照は、動作または要素が少なくとも一部は情報、動作、または要素に基づく実装を含み得る。
本明細書で開示されている実装は、他の実装または実施形態と組み合わされるものとしてよく、「実装」、「いくつかの実装」、「一実装」、または同様の言い回しへの参照は、必ずしも相互排他的でなく、実装に関連して説明されている特定の特徴、構造、または特性が少なくとも1つの実装または実施形態に含まれ得ることを指示することが意図されている。そのような術語は、必ずしもすべて同じ実装を指しているわけではない。実装は、本明細書で開示されている態様および実装に一致する方式で、包含的にまたは排他的に他の実装と組み合わされてもよい。
「または」への参照は、「または」を使用して説明されている術語が、説明されている術語の1つ、複数、およびすべてのどれかを指示し得るように包含的に解釈され得る。たとえば、「AおよびBのうちの少なくとも一方」の参照は、Aのみ、Bのみ、さらにはAとBの両方を含み得る。「含む」または他のオープンターミノロジーと併せて使用されるそのような参照は、追加項目を含むことができる。
図面、詳細な説明、または請求項における技術的特徴の後に引用符号が続く場合、引用符号は、図面、詳細な説明、および請求項の明瞭さを高めるために含まれている。したがって、引用符号があることもないことも、請求要素の範囲に対する限定的効果を有しない。
本明細書で説明されているシステムおよび方法は、その特徴から逸脱することなく他の特定の形式で具現化され得る。たとえば、データ処理システム102は、第2のアクション210が完了しているか、または今から始まるところであることを指示する第2のアクション210からのデータなど、スレッド200のアクションのシーケンスにおける前のアクションからのデータに一部基づきその後のアクション(たとえば、第3のアクション215)に対するコンテンツアイテムを選択することができる。前述の実装は、説明されているシステムおよび方法を限定するものではなく、例示するものである。したがって、本明細書で説明されているシステムおよび方法の範囲は、前述の説明ではなく、付属の請求項によって指示され、請求項の等価性の意味および範囲に入る変更は、そこに包含される。