概して、本開示の技術は、仮想的なコンピュータによるアシスタント(たとえば、「インテリジェントアシスタント」または単に「アシスタント」とも呼ばれる)がユーザとアシスタントとの間の継続中の会話の間にコンピューティングデバイスのユーザに関連付けられた個人の情報を自動的に取得することを可能にすることができる。アシスタントは、ユーザとの平常の会話の間にアシスタントが取得する情報の個人レコードを自動的に維持し得る。アシスタントは、情報を構造化されたセマンティックな(semantic)方法で個人レコードとして記憶し得る。個人レコードを維持することは、アシスタントが現実のタスク、仮想的なタスクを完了するため、またはそうでなければユーザの当面のもしくは将来のニーズに応えるために検索を実行するかまたはさらなるユーザ入力を引き出すことなしに個人の情報に後で迅速にアクセスすることを可能にし得る。
アシスタントは、そのようにするためのユーザからの明示的な許可を最初に受け取った後にのみユーザに関連付けられた個人レコードを保持してよい。したがって、ユーザは、アシスタントがユーザについての情報をどのようにして収集し、使用するかを完全に制御し得る。アシスタントが個人の情報を個人レコードとしてかまたは何らかのその他の形態でかのどちらかで記憶する前に、アシスタントは、情報を暗号化するか、またはそうでなければ個人を特定し得る情報がユーザの個人レコードから削除されるようにユーザの実際のアイデンティティ(identity)を削除するために情報を処理してよい。アシスタントは、ユーザが個人レコードからの情報を修正するかまたは削除するための方法を提供してよい。このようにして、ユーザは、アシスタントによって保持されている情報を完全に制御し得る。
個人レコードの各エントリは、アシスタントがユーザのニーズをより深く理解し、ユーザがタスクを完了するのを助けるために(たとえば、ユーザ入力から与えられ得ることよりも)より多くの情報を必要とするときにアシスタントによって迅速に解析され得る予め定義されたスキーマ(schema)に関連付けられ得る。個人の情報がユーザに固有の個人レコードまたは値として記録されると、アシスタントは、タスクを完了するためにその情報を使用する(たとえば、その特定の値を使用する)ことができる。継続中のタスクがない場合、アシスタントは、アシスタントがユーザを将来助けるために情報をどのようにして使用することがあるかという例をユーザに提供してよい。ユーザは、(たとえば、ユーザの固有の値を変更することによって)この情報を忘れるかまたは修正するように後でアシスタントに求めることができる。
たとえば、ユーザがユーザについての個人の情報をアシスタントに提供することを承諾することを示すユーザ入力をアシスタントが受け取った後、アシスタントは、タスクを実行するようにアシスタントに命じるユーザからの入力の指示(たとえば、音声、テキスト、電子メールなどであるが、本明細書においては簡単にするために音声入力と呼ばれる)を受け取ってよい。タスクがより公的な性質のものである(たとえば、「昨晩の大学フットボール選手権は誰が勝ったのか教えて」または「近くの歯医者を探して」)のとは対照的により個人的な性質のものである(たとえば、「お母さんに電話して」)かまたは個人の情報に関するユーザが指定したプリファレンスのものである(たとえば、「私の歯医者に電話して」)ことを音声入力が示すとアシスタントがみなす場合、アシスタントは、音声入力によって指定されたタスクを完了するために必要とされる情報(たとえば、ユーザと母親の関係にある人を示す情報)を迅速に見極めるために、前に記憶された個人レコードを解析するか、検索するか、またはそれ以外の方法で分析できる。アシスタントがユーザの個人レコードから必要な情報を取得することができない場合、アシスタントは、アシスタントが欠けている情報を取得するまで(たとえば、追加の音声またはテキスト入力を要求する)ユーザとの会話を自動的に行い得る。欠けている情報を取得すると、アシスタントは、欠けている情報が将来のユーザ入力に応答するために必要とされるときに迅速におよび容易に利用され得るように、欠けている情報を個人レコードに追加してよい。
このようにして、ユーザとの日々の会話中に、例示的なアシスタントは、例示的なアシスタントが将来のタスクを完了するために必要とされる可能性が高いと推測する個人の情報をユーザ入力から自動的にこつこつと収集し得る。本明細書全体を通じて使用される用語「会話」は、最初のセットアップ、インストール、初回使用などの間に行われ得るインタラクションとは対照的にコンピューティングデバイスのユーザとコンピューティングデバイスにおいてまたはコンピューティングデバイスからアクセスされ得るアシスタントとの間の平常のインタラクションを指す。換言すると、会話は、ユーザがアシスタントをセットアップすること以外のタスクを実行しているときに、ユーザによるアシスタントの日々の使用中に行われる。本明細書において使用される会話は、アプリを設定する際にまたはユーザインターフェースの予め設定されたフィールドに提供する際に一部としてユーザが質問に答えることを指していない。
例示的なアシスタントは、ユーザとの会話中に例示的なアシスタントが情報を迅速に取り出すことを可能にするために個人の情報を個人レコードとして保持してよい。したがって、その他のアシスタントが特定のユーザのニーズに応えるためにタスクを課される度にこれらのその他のアシスタントが繰り返し複数の(内部のおよび外部の)情報ソースを検索するかまたは追加的なユーザ入力を引き出す必要があり得る一方、例示的なアシスタントは、ユーザについての個人の情報を呼び出すために個人レコードに依拠することによってユーザが必要とすることをより迅速に見極め、すぐに起こりそうにユーザに思われ得ることを複数の情報ソースを検索する必要なしにより迅速に見極め、ニーズを満たすための行動を起こし始めることができてよい。したがって、例示的なアシスタントは、その他のアシスタントよりも迅速にタスクを完了するおよび/またはより速くユーザ入力に応答するコンピューティングデバイスおよび/またはシステムの能力をサポートし得る。より速く実行することによって、例示的なアシスタントは、ユーザとの会話において休止または口ごもりを最小化してよく、これは、アシスタントとの会話をユーザにとって自然で、よりぎこちなさが少なく、より望ましく見せ得る。
本開示の全体を通じて、コンピューティングデバイスが情報を分析するためにコンピューティングデバイスのユーザから許可を受け取る場合にのみ、コンピューティングデバイスおよび/またはコンピューティングシステムがコンピューティングデバイスおよびコンピューティングデバイスのユーザに関連付けられた情報(たとえば、コンテキスト、位置、通信(communication)、連絡先(contact)、チャットの会話、音声会話など)を分析する例が説明される。たとえば、下で検討される状況において、コンピューティングデバイスまたはコンピューティングシステムにおいて実行されるアシスタントがユーザに関連付けられた情報を収集することができるかまたは利用し得るよりも前に、ユーザは、アシスタント(またはコンピューティングデバイスおよび/もしくはコンピューティングシステムのその他のプログラムもしくは特徴)がユーザ情報を収集し、利用することができるかどうかを制御するための、あるいはコンピューティングデバイスおよび/もしくはコンピューティングシステムがユーザに関連し得る内容を受け取ってよいかどうかならびに/またはどのようにして受け取るべきかを命じるための入力を与える機会を提供されてよい。さらに、特定のデータが、個人を特定し得る情報が削除されるように、アシスタントまたは基礎をなすコンピューティングデバイスおよび/もしくはコンピューティングシステムによって記憶されるかまたは使用される前に1つまたは複数の方法で暗号化されるおよび/または処理されてよい。たとえば、ユーザのアイデンティティが、個人を特定し得る情報がユーザについて決定され得ないように、または位置情報が取得される場合にユーザの地理的位置が(座標位置もしくは実際の住所とは対照的に都市、郵便番号、もしくは州になど)一般化されてよく、したがって、ユーザの特定の位置が決定され得ないように処理され得る。したがって、ユーザは、どのようにして情報がユーザについて収集され、アシスタントならびにアシスタントを実行する基礎をなすコンピューティングデバイスおよびコンピューティングシステムによって使用されるのかを制御し得る。
図1は、本開示の1つまたは複数の態様による例示的なバーチャルアシスタントを実行する例示的なシステムを示す概念図である。図1のシステム100は、検索サーバシステム180およびコンピューティングデバイス110とネットワーク130を介して通信するアシスタントサーバシステム160を含む。システム100がアシスタントサーバシステム160、検索サーバシステム180、およびコンピューティングデバイス110に分散されるように示されるが、その他の例において、システム100に帰せられる特徴および技術は、コンピューティングデバイス110のローカルの構成要素によって内部で実行されてよい。同様に、アシスタントサーバシステム160は、特定の構成要素を含み、下の説明においてはそうではなく検索サーバシステム180および/またはコンピューティングデバイス110に帰せられるさまざまな技術を実行してよい。
ネットワーク130は、コンピューティングシステムと、サーバと、コンピューティングデバイスとの間でデータを送信するための任意の公共または私設通信ネットワーク、たとえば、セルラ、Wi-Fi、および/またはその他の種類のネットワークを表す。アシスタントサーバシステム160は、コンピューティングデバイス110がネットワーク130に接続されるときにコンピューティングデバイス110にアクセスし得るバーチャルアシスタントサービスを提供するためにコンピューティングデバイス110とネットワーク130を介してデータをやりとりし得る。アシスタントサーバシステム160は、検索サーバシステム180によって提供される検索サービスにアクセスするために検索サーバシステム180とネットワーク130を介してデータをやりとりしてよい。コンピューティングデバイス110は、検索サーバシステム180によって提供される検索サービスにアクセスするために検索サーバシステム180とネットワーク130を介してデータをやりとりしてよい。
ネットワーク130は、相互に動作可能なように結合され、それによって、サーバシステム160および180とコンピューティングデバイス110との間の情報のやりとりを提供する1つまたは複数のネットワークハブ、ネットワークスイッチ、ネットワークルータ、または任意のその他のネットワーク機器を含み得る。コンピューティングデバイス110、アシスタントサーバシステム160、および検索サーバシステム180は、任意の好適な通信技術を使用してネットワーク130を介してデータを送信および受信し得る。コンピューティングデバイス110、アシスタントサーバシステム160、および検索サーバシステム180は、それぞれが、それぞれのネットワークリンクを使用してネットワーク130に動作可能なように結合されてよい。コンピューティングデバイス110、アシスタントサーバシステム160、および検索サーバシステム180をネットワーク130に結合するリンクは、イーサネット(登録商標)またはその他の種類のネットワーク接続であってよく、そのような接続は、ワイヤレス接続および/または有線接続であってよい。
アシスタントサーバシステム160および検索サーバシステム180は、ネットワーク130などのネットワークに情報を送信することとネットワークから情報を受信することとの両方が可能な1つまたは複数のデスクトップコンピュータ、ラップトップコンピュータ、メインフレーム、サーバ、クラウドコンピューティングシステムなどの任意の好適なリモートコンピューティングシステムを表す。アシスタントサーバシステム160は、バーチャルアシスタントサービスをホストする(または少なくともバーチャルアシスタントサービスへのアクセスを提供する)。検索サーバシステム180は、検索サービスをホストする(または少なくとも検索サービスへのアクセスを提供する)。一部の例において、アシスタントサーバシステム160および検索サーバシステム180は、クラウドを介してそれらのシステムのそれぞれのサービスへのアクセスを提供するクラウドコンピューティングシステムを表す。
コンピューティングデバイス110は、個々のモバイルまたは非モバイルコンピューティングデバイスを表す。コンピューティングデバイス110の例は、モバイル電話、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバ、メインフレーム、セットトップボックス、テレビ、ウェアラブルデバイス(たとえば、コンピュータ化された腕時計、コンピュータ化されたアイウェア、コンピュータ化された手袋など)、ホームオートメーションデバイスもしくはシステム(たとえば、インテリジェントサーモスタットもしくはホームアシスタントデバイス)、携帯情報端末(PDA)、ゲームシステム、メディアプレイヤー、電子ブックリーダ、モバイルテレビプラットフォーム、自動車ナビゲーションもしくはインフォテインメントシステム、またはバーチャルアシスタントを実行するかもしくはバーチャルアシスタントにアクセスし、ネットワーク130などのネットワークを介して情報を受け取るように構成された任意のその他の種類のモバイル、非モバイル、ウェアラブル、および非ウェアラブルコンピューティングデバイスを含む。
アシスタントサーバシステム160および/または検索サーバシステム180は、アシスタントサーバシステム160によって提供されるバーチャルアシスタントサービスへのアクセスをコンピューティングデバイス110に与えるため、および/または検索サーバシステム180によって提供される検索サービスへのアクセスをコンピューティングデバイス110に与えるために、ネットワーク130を介してコンピューティングデバイス110と通信し得る。バーチャルアシスタントサービスを提供する過程で、アシスタントサーバシステム160は、タスクを完了するための情報をバーチャルアシスタントサービスのユーザに提供するための検索結果を取得するためにネットワーク130を介して検索サーバシステム180と通信し得る。
図1の例において、アシスタントサーバシステム160は、リモートアシスタントモジュール122Bおよびユーザ情報データストア124Bを含む。リモートアシスタントモジュール122Bは、アシスタントサーバシステム160がネットワーク130を介して(たとえば、コンピューティングデバイス110に)提供するバーチャルアシスタントサービスの一部としてユーザ情報データストア124Bを維持してよい。コンピューティングデバイス110は、ユーザインターフェースデバイス(UID)112、ユーザインターフェース(UI)モジュール120、ローカルアシスタントモジュール122A、およびユーザ情報データストア124Aを含む。ローカルアシスタントモジュール122Aは、コンピューティングデバイス110のローカルで実行されるバーチャルアシスタントサービスの一部としてユーザ情報データストア124Aを維持してよい。リモートアシスタントモジュール122Bおよびローカルアシスタントモジュール122Aは、集合的にアシスタント122Aおよび122Bと呼ばれることがある。ローカルデータストア124Aおよびリモートデータストア124Bは、集合的にデータストア124Aおよび124Bと呼ばれることがある。
モジュール120、122A、122B、および182は、コンピューティングデバイス110、アシスタントサーバシステム160、もしくは検索サーバシステム180のうちの1つに存在するおよび/またはコンピューティングデバイス110、アシスタントサーバシステム160、もしくは検索サーバシステム180のうちの1つにおいて実行されるソフトウェア、ハードウェア、ファームウェア、またはハードウェア、ソフトウェア、およびファームウェアの混合を使用して説明される動作を実行し得る。コンピューティングデバイス110、アシスタントサーバシステム160、および検索サーバシステム180は、複数のプロセッサまたは複数のデバイスによってモジュール120、122A、122B、および182を実行し得る。コンピューティングデバイス110、アシスタントサーバシステム160、および検索サーバシステム180は、基礎をなすハードウェア上で実行される仮想マシンとしてモジュール120、122A、122B、および182を実行してよい。モジュール120、122A、122B、および182は、オペレーティングシステムまたはコンピューティングプラットフォームの1つまたは複数のサービスとして実行され得る。モジュール120、122A、122B、および182は、コンピューティングプラットフォームのアプリケーションレイヤにおいて1つまたは複数の実行可能なプログラムを実行してよい。
コンピューティングデバイス110のUID 112は、コンピューティングデバイス110のための入力および/または出力デバイスとして機能してよい。UID 112は、さまざまなテクノロジを使用して実装され得る。たとえば、UID 112は、抵抗式タッチスクリーン、表面弾性波式タッチスクリーン、静電容量式タッチスクリーン、投影型静電容量式タッチスクリーン、感圧スクリーン、音響波照合(acoustic pulse recognition)タッチスクリーン、または別の存在感知(presence-sensitive)ディスプレイテクノロジなどの存在感知入力スクリーンを使用する入力デバイスとして機能してよい。
UID 112は、マイクロフォンテクノロジ、赤外線センサテクノロジ、またはユーザ入力を受け取る際に使用するためのその他の入力デバイステクノロジを使用する入力デバイスとして機能してよい。たとえば、UID 112は、タスクを完了するためにUIモジュール120および/またはローカルアシスタントモジュール122Aが処理する音声入力を、組み込みマイクロフォンテクノロジを使用して検出することがある。別の例として、UID 112は、コンピューティングデバイス110のユーザから触覚入力を受け取り得る存在感知ディスプレイを含むことがある。UID 112は、ユーザから1つまたは複数のジェスチャ(たとえば、ユーザが指またはスタイラスペンによってUID 112の1つまたは複数の位置にタッチするかまたはそれらの位置を指すこと)を検出することによって触覚入力の指示を受け取ることがある。
UID 112は、出力(たとえば、ディスプレイ)デバイスとして機能し、ユーザに出力を提示し得る。UID 112は、液晶ディスプレイ(LCD)、ドットマトリクスディスプレイ、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、電子インク、またはコンピューティングデバイス110のユーザに可視情報を出力することができる同様のモノクロもしくはカラーディスプレイなどの任意の1つまたは複数のディスプレイデバイスを使用する出力デバイスとして機能してよい。UID 112は、スピーカテクノロジ、触覚フィードバックテクノロジ、またはユーザに情報を出力する際に使用するためのその他の出力デバイステクノロジを使用する出力デバイスとして機能してよい。UID 112は、ローカルアシスタントモジュール122Aおよび/またはリモートアシスタントモジュール122Bによって提供されるバーチャルアシスタントに関連するユーザインターフェース(たとえば、ユーザインターフェース114)を提示してよい。UID 112は、コンピューティングデバイス110において実行されるおよび/またはコンピューティングデバイス110からアクセスされ得るコンピューティングプラットフォーム、オペレーティングシステム、アプリケーション、および/またはサービス(たとえば、電子メール、チャット、オンラインサービス、電話、ゲームなど)のその他の特徴に関連するユーザインターフェースを提示してよい。
UIモジュール120は、UID 112を介してアシスタントサービスを提供するためにアシスタントサーバシステム160とインタラクションすることを含む、コンピューティングデバイス110のUID 112およびその他の構成要素とのユーザインタラクションを管理し得る。UIモジュール120は、コンピューティングデバイス110のユーザがUID 112において出力を見るおよび/または入力を与えるときに、ユーザインターフェース114(またはその他の例示的なユーザインターフェース)などのユーザインターフェースをUID 112に出力させ得る。UIモジュール120およびUID 112は、ユーザがユーザインターフェースとインタラクションするときに、異なる時間に、ならびにユーザおよびコンピューティングデバイス110が異なる位置にあるときに、ユーザから入力(たとえば、音声入力、ジェスチャ入力など)の1つまたは複数の指示を受け取ってよい。UIモジュール120およびUID 112は、UID 112において検出された入力を解釈し得、たとえば、コンピューティングデバイス110に機能を実行させるために、コンピューティングデバイス110において実行されるローカルアシスタントモジュール122Aおよび/または1つもしくは複数のその他の関連するプラットフォーム、オペレーティングシステム、アプリケーション、および/もしくはサービスに、UID 112において検出された入力についての情報を中継し得る。
UIモジュール120は、コンピューティングデバイス110ならびに/またはサーバシステム160および180などの1つもしくは複数のリモートコンピューティングシステムにおいて実行される1つまたは複数の関連するプラットフォーム、オペレーティングシステム、アプリケーション、および/またはサービスから情報および命令を受け取ってよい。加えて、UIモジュール120は、コンピューティングデバイス110において実行される1つまたは複数の関連するプラットフォーム、オペレーティングシステム、アプリケーション、および/またはサービスと、コンピューティングデバイス110によって出力(たとえば、グラフィック、光のひらめき、サウンド、触覚による応答など)を生成するためのコンピューティングデバイス110のさまざまな出力デバイス(たとえば、スピーカ、LEDインジケータ、オーディオまたは触覚出力デバイスなど)との間の仲介者として働き得る。
検索モジュール182は、検索モジュール182が(たとえば、コンピューティングデバイス110に関連付けられたコンテキスト情報に基づいて)自動的に生成するかまたは検索モジュール182がアシスタントサーバシステム160もしくはコンピューティングデバイス110から(たとえば、コンピューティングデバイス110のユーザの代わりにバーチャルアシスタントが完了しているタスクの一部として)受け取る検索クエリに関連すると判定された情報の検索を実行し得る。検索モジュール182は、(たとえば、検索サーバシステム180のローカルかまたは遠隔かのどちらかに記憶された)さまざまな情報ソースの中から検索クエリに関連する情報(たとえば、天気または交通の状況、ニュース、株価、スポーツのスコア、ユーザのスケジュール、交通機関のスケジュール、小売価格など)を特定するために検索クエリに基づいてインターネット検索を行うことがある。検索を実行した後、検索モジュール182は、検索から返された情報(たとえば、検索結果)をアシスタントサーバシステム160またはコンピューティングデバイス110に出力し得る。
図1の例において、ユーザインターフェース114は、(たとえば、ローカルアシスタントモジュール122Aおよび/またはアシスタントサーバシステム160のリモートアシスタントモジュール122Bによって提供される)コンピューティングデバイス110によってアクセスされるバーチャルアシスタントサービスに関連付けられたグラフィカルユーザインターフェースである。ユーザインターフェース114は、一部の例においては可聴ユーザインターフェースであってよい。図1に示されるように、ユーザインターフェース114は、コンピューティングデバイス110のユーザとコンピューティングデバイス110において実行されるかまたはコンピューティングデバイス110がアクセスし得るバーチャルアシスタントとの間の会話のテキストを示す。ユーザインターフェース114は、可聴音、振動、テキスト、グラフィックス、コンテンツカード(content card)、画像などのさまざまな形態のバーチャルアシスタントの情報を含むことがある。UIモジュール120は、UIモジュール120がアシスタントサーバシステム160からネットワーク130を介して受け取るデータに基づいてUID 112にユーザインターフェース114を出力させ得る。UIモジュール120は、ユーザインターフェース114を提示するための情報(たとえば、オーディオデータ、テキストデータ、画像データなど)を、UID 112においてユーザインターフェース114内に情報を提示するためのアシスタントサーバシステム160および/またはローカルアシスタントモジュール122Aからの命令と一緒に、アシスタントサーバシステム160および/またはローカルアシスタントモジュール122Aからの入力として受け取り得る。
コンピューティングデバイス110のローカルアシスタントモジュール122Aおよびアシスタントサーバシステム160のリモートアシスタントモジュール122Bは、ユーザとアシスタントとの間の継続中の会話の間にコンピューティングデバイスのユーザに関連付けられた個人の情報を取得するように構成されるアシスタントを自動的に実行するための本明細書において説明される同様の機能をそれぞれが実行し得る。リモートアシスタントモジュール122Bおよびユーザ情報データストア124Bは、例示的なバーチャルアシスタントのサーバサイドのまたはクラウドの実装を表し、一方、ローカルアシスタントモジュール122Aおよびユーザ情報データストア124Aは、例示的なバーチャルアシスタントのクライアントサイドのまたはローカルの実装を表す。
モジュール122Aおよび122Bは、コンピューティングデバイス110のユーザなどの個人のためにタスクまたはサービスを実行することができるインテリジェントなパーソナルアシスタントとして実行されるように構成されたそれぞれのソフトウェアエージェントをそれぞれが含むことがある。モジュール122Aおよび122Bは、(たとえば、UID 112において検出された)ユーザ入力、(たとえば、コンテキストに基づく)位置認識、および/または(たとえば、コンピューティングデバイス110、アシスタントサーバシステム160のローカルに記憶されるか、もしくは検索サーバシステム180によって提供される検索サービスを介して取得されるかのどちらかの)さまざまな情報ソースからのその他の情報(たとえば、天気もしくは交通の状況、ニュース、株価、スポーツのスコア、ユーザのスケジュール、交通機関のスケジュール、小売価格など)にアクセスする能力に基づいてこれらのタスクまたはサービスを実行し得る。モジュール122Aおよび122Bは、1つまたは複数のタスクを自動的に特定し、ユーザの代わりに完了するために人工知能および/または機械学習技術を実行し得る。
リモートアシスタントモジュール122Bおよびローカルアシスタントモジュール122Aによって提供されるそれぞれのアシスタントは、コンピューティングデバイス110のユーザとの会話をサポートするための動作を実行する過程で、会話中に取得された情報の個人レコードを自動的に作成するか、生成するか、またはそうでなければ維持し、個人レコードを、それぞれユーザ情報データストア124Bおよびユーザ情報データストア124Aとして構造化されたセマンティックな方法でユーザに固有である値として記憶し得る。データストア124Bおよび124Aは、リモートアシスタントモジュール122Bおよびローカルアシスタントモジュール122Aによって実行されるそれぞれのアシスタントが現実のタスク、仮想的なタスクを完了するかまたはそうでなければコンピューティングデバイス110のユーザの当面のもしくは将来のニーズに応えるために個人の情報(たとえば、ユーザに固有である値)に迅速にアクセスすることをそれぞれ可能にしてよい。説明を容易にするために、本開示の技術が、主に、ローカルアシスタントモジュール122Aによって実行される観点で説明される。
アシスタントモジュール122Aおよび122Bは、アシスタントモジュール122Aおよび122Bがコンピューティングデバイス110に一緒にまたは別々に提供するバーチャルアシスタントサービスの一部としてユーザ情報データストア124Aおよび124Bを維持し得る。アシスタントモジュール122Aおよび122Bによって提供されるアシスタントは、コンピューティングデバイス110のユーザとの会話をサポートするための動作を実行する過程で、会話から自動的にえり抜かれている情報の個人レコードを維持し、個人レコードをユーザ情報データストア124Aおよび124Bとして構造化されたセマンティックな方法で記憶し得る。データストア124Aおよび124Bは、アシスタントモジュール122Aおよび122Bによって実行されるアシスタントが現実のタスク、仮想的なタスクを完了するかまたはそうでなければコンピューティングデバイス110のユーザの当面のおよび/もしくは将来のニーズに応えるために個人の情報に迅速にアクセスすることを可能にしてよい。
アシスタントモジュール122Aおよび122Bは、そのようにするためのユーザからの明示的な許可を最初に受け取った後にのみコンピューティングデバイス110のユーザに関連付けられた個人レコードを保持し得る。したがって、ユーザは、アシスタントがユーザについての情報をどのようにして収集し、使用するかを完全に制御し得る。たとえば、コンピューティングデバイス110のユーザに関連付けられた個人レコードを保持する前に、アシスタントモジュール122Aおよび122Bは、ボックスを選択するか、ボタンをクリックするか、音声入力を言うか、またはそれ以外の方法でアシスタントモジュール122Aおよび122Bがユーザの個人の情報を収集し、利用するための明白な肯定的承諾としてアシスタントモジュール122Aおよび122Bによって解釈される特定の入力をユーザインターフェースに与えるようにユーザに要求するユーザインターフェースをUIモジュール120にUID 112を介して提示させ得る。
アシスタントモジュール122Aおよび122Bは、個人の情報をデータストア124Aおよび124Bに記憶する前に、個人レコードとして維持されている情報を暗号化するかまたはそうでなければユーザの実際のアイデンティティを削除するために処理し得る。たとえば、情報は、データストア124Aおよび124Bに記憶されるときにすべての個人を特定し得る情報がユーザの個人レコードから削除されるようにアシスタントモジュール122Aおよび122Bによって処理され得る。
アシスタントモジュール122Aおよび122Bは、UIモジュール120にUID 112を介してユーザインターフェースを提示させ得、そのユーザインターフェースから、コンピューティングデバイス110のユーザは、データストア124Aおよび124Bに記憶された個人レコードからの情報を修正または削除し得る。たとえば、ユーザインターフェースは、コンピューティングデバイス110のユーザが個人の情報の特定の部分を修正するかまたは削除するためのコマンドをアシスタントモジュール122Aおよび122Bに伝達するための入力を与えることができるエリアを提供し得る。このようにして、コンピューティングデバイス110のユーザは、アシスタントモジュール122Aおよび122Bによってデータストア124Aおよび124Bに保持されている情報を完全に制御し得る。
データストア124Aおよび124Bによって記憶された個人レコードの各エントリは、ユーザのニーズを理解するためおよびユーザがタスクを完了するのを助けるためにアシスタントモジュール122Aおよび122Bが今現在必要とする情報を見つけるためにアシスタントモジュール122Aおよび122Bによって迅速に詳しく検討されるかまたは解析され得る予め定義されたスキーマに関連付けられてよい。個人の情報がユーザに固有である1つまたは複数の値として記録されると、アシスタントモジュール122Aおよび122Bは、タスクを完了するためにデータストア124Aおよび124Bに記憶された情報を迅速に使用することができる。継続中のタスクがない場合、アシスタントモジュール122Aおよび122Bは、アシスタントがユーザを将来助けるために情報をどのようにして使用し得るかの例をユーザに(たとえば、ユーザインターフェース114を介して)提供し得る。ユーザは、この情報を忘れるかまたは修正するようにアシスタントモジュール122Aおよび122Bに命じるためにUID 112において後で入力を与え得る。
データストア124Aおよび124Bによって記憶される値は、テキストの値(たとえば、人の名前、場所の名前、エンティティ(entity)のその他のテキストの記述子)、数値(たとえば、年齢、身長、体重、その他の生理学的データ、エンティティに関連付けられたその他の数値的情報)、またはユーザに固有の値へのポインタ(たとえば、ユーザのナレッジグラフ内のエンティティへのメモリ内の位置、アドレス帳内の連絡先へのメモリ内の位置など)であってよい。言い換えると、ユーザに固有の値は、多くの形態をとり、記録スキーマによって定義される個人レコードのフィールドに固有であってよい。値は、ユーザに固有である実際の情報を示してよく、またはユーザに固有の情報が取り出され得る位置への参照であってよい。
アシスタントモジュール122Aおよび122Bがユーザについての個人の情報をアシスタントモジュール122Aおよび122Bに提供することへのユーザの承諾を示すUID 112によって検出されたユーザ入力の指示を受け取った後、アシスタントモジュール122Aおよび122Bは、アシスタントモジュール122Aおよび122Bに何かをさせるための命令を含むユーザ入力(たとえば、自然言語音声またはテキスト入力)の指示をUIモジュール120から受け取り得る。ユーザ入力がそれがより公的な要求(たとえば、「昨晩の大学フットボール選手権は誰が勝ったのか教えて」)とは対照的により個人的な要求(たとえば、「お母さんに電話する」)のものであることを示す場合、アシスタントモジュール122Aおよび122Bは、ユーザ入力によって指定されたタスクを完了するために必要とされる情報を迅速に見極めるためにデータストア124Aおよび124Bに前に記憶された個人レコードを解析するかまたは詳しく検討し得る。反対に、ユーザ入力がそれがより私的な要求とは対照的により公的な要求のものであることを示す場合、アシスタントモジュール122Aおよび122Bは、検索モジュール182にユーザ入力に関連する情報の検索を実行させるためにユーザ入力またはその一部を(たとえば、検索クエリの指示として)検索サーバシステム180に送信し得る。
ユーザ入力が個人的データを示唆するかそれとも公的データを示唆するかを判定するために、さまざまな方法が使用され得る。たとえば、家族に関する用語(familial term)、人称代名詞などのユーザ入力内で言及される内容またはエンティティの種類が、個人的データへの関心のしるしであることがある。人の名前、場所など記憶された個人的データとの一致も、個人的データへのユーザの関心を知らせる可能性がある。反対に、入力の内容の調査が、公的なエンティティ(たとえば、スポーツチーム、公的な関心地点(point of interest)、有名人など)への言及のように個人的データから離れる傾向を示唆する可能性がある。ユーザの履歴を利用すること、消去法、機械学習の方法などを含め、個人の情報かそれとも公的情報へのユーザの関心を予想するためのその他の技術も、考えられる。
一部の例において、アシスタントモジュール122Aおよび122Bは、個人レコードを作成する前にユーザ入力が公的な要求であるかまたは個人的な要求であるかを判定し得る。言い換えると、アシスタントモジュール122Aおよび122Bは、ユーザ入力が個人的な要求であるかどうかを初めに判定することによって個人の情報への最初の言及を特定することを回避し得る。
たとえば、アシスタントモジュール122Aおよび122Bは、ユーザ入力からの1つまたは複数の公的なエンティティまたは公的な内容(たとえば、スポーツチーム、有名人の名前、レストラン、地理的位置、概念または話題など)の特定に応じてユーザ入力が公的な要求であると判定し得る。反対に、アシスタントモジュール122Aおよび122Bは、初期ユーザ入力からの1つまたは複数の私的なエンティティまたは私的な内容(たとえば、非有名人または連絡先リスト内の人の名前、人称代名詞、家族に関する用語、個人レコード内のフィールドに関する特定の名前または同義語など)の特定に応じてユーザ入力が私的な要求であると判定し得る。
初期ユーザ入力が個人的な要求であるとの判定に応じて、アシスタントモジュール122Aおよび122Bは、個人の情報に関するユーザに関連付けられた個人レコードを解析し得る。反対に、初期ユーザ入力が公的な要求であるとの判定に応じて、アシスタントモジュール122Aおよび122Bは、コマンドを実行するための情報の公的な検索を検索モジュール182に実行させ得る。
初期ユーザ入力が個人的な要求であるとの判定に応じて、アシスタントモジュール122Aおよび122Bは、個人の情報に関するユーザに関連付けられた個人レコードを解析し、個人レコードが個人の情報に関連付けられたフィールドにヌルまたはゼロ値を含むとの判定に応じて個人の情報への最初の言及を特定し得る。言い換えると、ユーザの要求が個人的であり、公的でない性質のものであると判定した後、アシスタントモジュール122Aおよび122Bは、要求を満たすために必要とされる情報に関してユーザの個人レコードを検索し、必要とされる情報に関連付けられた特定のユーザの値の不特定に応じて、アシスタントモジュール122Aおよび122Bは、要求および最初の機会または個人の情報への最初の言及を認識し得る。
ユーザ入力がより個人的な情報への言及を含み、したがって、より私的な要求のものである場合に、アシスタントがデータストア124Aおよび124Bに記憶されたユーザの個人レコードから必要な情報を取得することができない場合、アシスタントモジュール122Aおよび122Bは、自動的に、アシスタントモジュール122Aおよび122Bが追加的なユーザ入力から欠けている情報を取得するまでUIモジュール120にユーザと会話するための(たとえば、追加の音声またはテキスト入力を要求するための)テキストまたはオーディオをUID 112を介して出力させ得る。追加的なユーザ入力から欠けている情報を取得すると、アシスタントモジュール122Aおよび122Bは、情報が将来のユーザ入力に応答するときに迅速におよび容易に取得され得るように、欠けている情報をデータストア124Aおよび124Bに記憶された個人レコードに追加し得る。
動作中に、ローカルアシスタントモジュール122Aは、ローカルアシスタントモジュール122Aがユーザについての個人の情報を利用し、記憶することをユーザが承諾することを示す、UID 112におけるUIモジュール120によって検出されたユーザ入力の指示を受け取り得る。ユーザからの承諾の指示の受け取りに応じて、ローカルアシスタントモジュール122Aは、コンピューティングデバイス110に「お母さんに電話する」タスクを実行するための動作を実行させるようにローカルアシスタントモジュール122Aに命令するユーザからの音声入力の指示をUIモジュール120から受け取り得る。たとえば、ユーザインターフェース114は、ローカルアシスタントモジュール122Aによって認識されており、それに応じて、UID 112を介して表示するためにまたはオーディオとして出力されている音声入力の書き起こしを示す。
ローカルアシスタントモジュール122Aは、音声入力から単語「お母さん」を認識するために(たとえば、自然言語処理を使用してまたはその他の音声認識技術を実行して)音声入力を解析するか、詳しく検討するか、またはそうでなければ分析し得る。ローカルアシスタントモジュール122Aは、「お母さん」が(たとえば、お母さんという単語の性質から)ユーザにとって個人的でありかつ将来のコマンドを実行するために保持するに値する人の一般的なまたは記述的なアイデンティティを指定し得ると判定し得る。「お母さん」、お母さん、母、またはその何らかの同意語を指すフィールドを有するいかなる以前に作成された個人レコードの特定の失敗に応じて、ローカルアシスタントモジュール122Aは、将来のアクセスのために「お母さん」と呼ばれる個人的な連絡先についての情報を記憶するためにデータストア124Aに個人レコードを作成し得る。ローカルアシスタントモジュール122Aは、個人的な連絡先に関連付けられた情報を記憶するために予め定義されたスキーマに従ってデータストア124Aにレコードを作成し得る。つまり、個人レコードは、データを投入されていないものとしてまたはユーザに固有ではない値として(たとえば、ゼロなったものとしてまたはヌル値もしくは一般的プレースホルダとして)始まる1つまたは複数の一般的な「名前フィールド」を含んでよい。個人レコードは、その人とユーザとの間の関係を指定する「関係フィールド」を含んでよい。ローカルアシスタントモジュール122Aは、単語「お母さん」、「母」、親、人がユーザのお母さんであることを示す何らかのその他の同義語などのユーザに固有である値を関係フィールドに自動的に投入し得る。
一部の例においては、ローカルアシスタントモジュール122Aが(たとえば、ローカルアシスタントモジュール122Aがユーザの初期入力を成功裏に解析せず、単語「お母さん」を正しく認識しなかったために)ユーザの個人の情報の構造化された/セマンティックなレコードを持たない場合、アシスタントは、その情報を試し、見つけるために(たとえば、コンピューティングデバイス110の外部で、たとえば、インターネット上で、またはコンピューティングデバイス110のローカルで、たとえば、ユーザの以前のチャットの履歴、検索履歴などを通じて)検索を実行し得る。検索によって情報を見つけると、ローカルアシスタントモジュール122Aは、この新しい情報をデータストア124Aのレコードに追加し得る。
ローカルアシスタントモジュール122Aは、UIモジュール120にオーディオまたはテキスト「はい、お手伝いします...」をUID 112を介して出力させることによってユーザとの会話を行ってよい。ローカルアシスタントモジュール122Aが「お母さん」であるものとしてユーザが特定する個人的な連絡先に関する個人レコードを作成しただけであることがあるので、レコードは不完全であることがある。ローカルアシスタントモジュール122Aは、個人レコードにさらにデータを投入しようとして、「お母さん」として特定され得る特定の人のアイデンティティを決定しようと試みて(たとえば、コンピューティングデバイス110のローカルにまたは遠隔に記憶されたアドレス帳のエントリの中の)検索を実行し得る。しかし、検索は、「お母さん」として特定される得る特定の人に関するいかなる結果も返すことができないことがある。たとえば、ユーザの母の電話番号がアドレス帳において「お母さん」またはその何らかの同義語によってラベル付けされた連絡先のエントリ下に記憶されていない場合、ローカルアシスタントモジュール122Aは、「お母さん」と呼ばれる特定の人のいかなるアイデンティティも特定することができず、したがって、「お母さん」への言及をユーザに固有である値に前に関連付けられなかった個人の情報への最初の言及として認識し得る。
「お母さん」のアイデンティティを取得することに失敗した後、ローカルアシスタントモジュール122Aは、ユーザが「お母さん」に言及するときにユーザが言及している特定の人の電話番号をローカルアシスタントモジュール122Aが特定するのを助け得る追加の入力をユーザがUID 112において与えることを要求し得る。ローカルアシスタントモジュール122Aは、UIモジュール120にオーディオまたはテキスト「でも、お母さんに関するレコードが見つからないようです。お母さんのお名前は何ですか?」をUID 112を介して出力させることによってユーザとの会話を続けてよい。
ユーザは、単語「Kat」を言い、コンピューティングデバイス110は、言われた単語KatをUID 112を介して追加の音声入力として受け取り得る。ローカルアシスタントモジュール122Aは、ユーザが「Kat」と言うことに応じてUIモジュール120から追加の音声入力の指示を受け取り、UIモジュール120にUID 112において表示するために音声入力「Kat」の書き起こしを出力させ得る。
追加の入力の指示に基づいて、ローカルアシスタントモジュール122Aは、「お母さん」が「Kat」と呼ばれる人を指すと判定し、さらに、名前「Kat」を作成されているレコードの名前フィールドに投入し得る。ローカルアシスタントモジュール122Aは、アドレス帳内で特定された特定の人の名前を「Kat」と決定するために、たとえば、コンピューティングデバイス110のユーザに関連付けられたアドレス帳のエントリの中で後続の検索を実行し得る。コンピューティングデバイス110のユーザに関連付けられたアドレス帳が「Katherine」と呼ばれる2つ以上の連絡先を含むとの判定に応じて、ローカルアシスタントモジュール122Aは、Katherineと呼ばれる2つ以上の連絡差の各々を名前「Kat」との潜在的一致とみなしてよい。
2人以上のKatherineのどちらが「お母さん」としてユーザに知られているかを判定するために、ローカルアシスタントモジュール122Aは、ユーザと同じ名字をさらに共有する「Katherine」と呼ばれる連絡先が、ユーザが「お母さん」と言うときに言及されている特定の人であると自動的に推測し得る。ローカルアシスタントモジュール122Aは、UIモジュール120およびUID 112にユーザからの確認を要求するテキストまたはオーディオを出力させることによって、ユーザと同じ名字をさらに共有する「Katherine」がユーザが「お母さん」と言うときに言及されている特定の人であるという仮定が正しいことをユーザが確認することを求めてよい。
コンピューティングデバイスのユーザが仮定を肯定したことを示すユーザ入力(たとえば、ユーザが単語「はい」を言うときにコンピューティングデバイス110のユーザによって与えられる音声入力)の指示のUIモジュール120からの受け取りに応じて、ローカルアシスタントモジュール122Aは、ユーザの母が、名が「Katherine」、ときには通称「Kat」であり、ユーザと同じ名字である人であることを示すデータを記憶するために、データストア124Aにおいて最初に作成され、記憶されたレコードの名前フィールドに注釈を付けてよい。ローカルアシスタントモジュール122Aは、ローカルアシスタントモジュール122Aがアドレス帳のエントリとユーザのお母さんとの間の関連付けを記憶するためのレコードを作成したことを示すテキストまたはオーディオをUIモジュール120およびUID 112に出力させることによってユーザにフィードバックを提供し得る。
一部の例において、ローカルアシスタントモジュール122Aは、誤った仮定を行うことがある。たとえば、ローカルアシスタントモジュール122は、(たとえば、名字の間の共通性が生得権(birth right)ではなく婚姻による場合に当てはまることがあるように--ユーザおよびユーザの母が名字を共有しない場合)コンピューティングデバイスのユーザが仮定を拒絶したことを示すユーザ入力(たとえば、ユーザが単語「いいえ」と言うときにコンピューティングデバイス110のユーザによって与えられる音声入力)の指示をUIモジュール120から受け取り得る。仮定を拒絶するユーザ入力の指示の受け取りに応じて、ローカルアシスタントモジュール122Aは、ユーザの母のアイデンティティを引き出すための追加の質問を引き続き行い、最終的に、ユーザの母のアイデンティティが決定されると、データストア124Aに最初に作成され、記憶されたレコードの名前フィールドに注釈を付け得る。
ローカルアシスタントモジュール122Aは、元の音声入力によって指定されたタスクを完了するための(たとえば、「お母さんに電話する」ための)1つまたは複数の動作を実行し得る。たとえば、ローカルアシスタントモジュール122Aは、コンピューティングデバイス110のユーザに関連付けられたアドレス帳において、名がKatherineであり、名字がユーザと同じであるエントリの下に記憶された電話番号をダイヤルするためにコンピューティングデバイス110に電話アプリケーションを実行させ得る。
ユーザのお母さんに関する個人レコードを作成した後、ローカルアシスタントモジュール122Aは、「お母さん」に言及するユーザからの音声入力の指示をUIモジュール120から再び受け取ることがある。ローカルアシスタントモジュール122Aは、「お母さん」に関するデータストア124Aに記憶された個人レコードのスキーマを迅速に解析するかまたは詳しく検討し、ユーザが誰をそのユーザの母と考えるかに関する情報を提供する前に作成された個人レコードを迅速に特定し得る。したがって、ローカルアシスタントモジュール122Aは、「お母さん」のアイデンティティを決定するためにコンピューティングデバイス110のローカルにまたは遠隔に記憶された複数の情報ソースの中のローカルのまたはグローバルな検索を実行する必要がないことがある。ローカルアシスタントモジュール122Aは、個人レコードに含まれないデータを参照するユーザ入力と比較して、データストア124Aに記憶された前に作成された個人レコードに含まれるデータをユーザ入力が参照する場合、ユーザ入力に応答する際の応答時間がずっと速い。
このようにして、ユーザとの日々の会話中に、ローカルアシスタントモジュール122Aは、ローカルアシスタントモジュール122Aが将来のタスクを完了するために必要とされる可能性が高いと推測する特定の個人の情報を自動的に認識し、保持し得る。ローカルアシスタントモジュール122Aは、個人の情報を、ローカルアシスタントモジュール122Aがユーザとの会話の途中にある間に、情報の迅速な将来の取り出しを可能にするためにデータストア124Aに構造化されたセマンティックな方法で記憶される個人レコードとして維持し得る。
上述の方法によってもたらされるいくつかの恩恵の中でもとりわけ、(1)個人的データを呼び出すユーザ入力に基づいてデバイスが働くための処理の複雑さおよび時間が、削減され、(2)私的なデータがローカルに記憶され、私的なデータのためのユーザのデバイスにおける複雑でメモリを消費する送信セキュリティプロトコルの必要性を減らし、(3)特定のデータが、ユーザの好ましい問い合わせの言葉遣いに関連付けられ、クエリの書き換えおよびその他の計算が複雑なデータの取り出しのためのユーザデバイスへの要求を減らし、結果の正確さも高め、(4)ローカルアシスタントモジュールがアクセスする必要があるデータがネットワークリソースとは対照的にローカルストレージから取得され得るので、ネットワークの使用が削減される。
その他のアシスタントが特定のユーザのニーズに応えるためにタスクを課される度にこれらのその他のアシスタントが繰り返し複数の(内部のおよび外部の)情報ソースを検索するかまたは追加的なユーザ入力を引き出す必要があることがある一方、本開示によるアシスタントは、個人レコードに依拠することによってユーザが必要とすることをより迅速に見極め、複数の情報ソースを検索する必要なしにニーズを満たすための行動を起こし始めることができてよい。個人レコードはユーザとの平常の会話の過程で自動的に生成され得るので、ユーザは、ユーザについて知るように例示的なアシスタントを手動でプログラミングすることに時間を費やす必要がない。したがって、本開示によるアシスタントは、その他のアシスタントよりもタスクをより迅速に完了するおよび/またはユーザにより速く答え得る。より速く実行することによって、例示的なアシスタントは、ユーザとの会話において休止または口ごもりを最小化し得、これは、アシスタントとの会話をユーザにとって自然で、よりぎこちなさが少なく、より望ましく見せ得る。
図2は、本開示の1つまたは複数の態様による例示的なバーチャルアシスタントを実行するように構成される例示的なコンピューティングデバイスを示すブロック図である。図2のコンピューティングデバイス210が、図1のコンピューティングデバイス110の例として下で説明される。図2は、コンピューティングデバイス210のただ1つの特定の例を示し、コンピューティングデバイス210の多くのその他の例が、その他の場合に使用されてよく、例示的なコンピューティングデバイス210に含まれる構成要素のサブセットを含んでよく、または図2に示されていないさらなる構成要素を含んでよい。
図2の例に示されるように、コンピューティングデバイス210は、ユーザインターフェースデバイス(UID)212、1つまたは複数のプロセッサ240、1つまたは複数の通信ユニット242、1つまたは複数の入力構成要素244、1つまたは複数の出力構成要素246、および1つまたは複数のストレージ構成要素248を含む。UID 212は、ディスプレイ構成要素202、存在感知入力構成要素204、マイクロフォン構成要素206、およびスピーカ構成要素208を含む。コンピューティングデバイス210のストレージ構成要素248は、UIモジュール220、アシスタントモジュール222、検索モジュール282、1つまたは複数のアプリケーションモジュール226、コンテキストモジュール230、およびユーザ情報データストア224を含む。
通信チャネル250は、構成要素間通信のために(物理的に、通信可能なように、および/または動作可能なように)構成要素212、240、242、244、246、および248の各々を相互に接続し得る。一部の例において、通信チャネル250は、システムバス、ネットワーク接続、プロセス間通信データ構造、またはデータを伝達するための任意のその他の方法を含んでよい。
コンピューティングデバイス210の1つまたは複数の通信ユニット242は、1つまたは複数のネットワーク(たとえば、図1のシステム100のネットワーク130)上でネットワーク信号を送信および/または受信することによって1つまたは複数の有線および/またはワイヤレスネットワークを介して外部デバイス(たとえば、図1のシステム100のアシスタントサーバシステム160および/または検索サーバシステム180)と通信し得る。通信ユニット242の例は、(たとえば、イーサネット(登録商標)カードなどの)ネットワークインターフェースカード、光トランシーバ、無線周波数トランシーバ、GPS受信機、または情報を送信および/もしくは受信することができる任意のその他の種類のデバイスを含む。通信ユニット242のその他の例は、短波無線、セルラデータ無線、ワイヤレスネットワーク無線、およびユニバーサルシリアルバス(USB)コントローラを含んでよい。
コンピューティングデバイス210の1つまたは複数の入力構成要素244は、入力を受け取り得る。入力の例は、触覚、オーディオ、およびビデオ入力である。コンピューティングデバイス210の入力構成要素242は、一例において、存在感知入力デバイス(たとえば、タッチ感知スクリーン、PSD)、マウス、キーボード、音声応答システム、カメラ、マイクロフォン、または人もしくは機械からの入力を検出するための任意のその他の種類のデバイスを含む。一部の例において、入力構成要素242は、1つまたは複数のセンサ構成要素、1つまたは複数の測位センサ(GPS構成要素、Wi-Fi構成要素、セルラ構成要素)、1つまたは複数の温度センサ、1つまたは複数の運動センサ(たとえば、加速度計、ジャイロ)、1つまたは複数の圧力センサ(たとえば、気圧計)、1つまたは複数の環境光センサ、および1つまたは複数のその他のセンサ(たとえば、赤外線近接センサ、湿度計センサなど)を含んでよい。いくつかその他の非限定的な例を挙げるとすれば、その他のセンサは、心拍数センサ、磁気計、グルコースセンサ、嗅覚センサ、コンパスセンサ、ステップカウンタセンサ(step counter sensor)を含んでよい。
コンピューティングデバイス110の1つまたは複数の出力構成要素246は、出力を生成し得る。出力の例は、触覚、オーディオ、およびビデオ出力である。コンピューティングデバイス210の出力構成要素246は、一例において、存在感知ディスプレイ、サウンドカード、ビデオグラフィックスアダプタカード、スピーカ、ブラウン管(CRT)モニタ、液晶ディスプレイ(LCD)、または人もしくは機械への出力を生成するための任意のその他の種類のデバイスを含む。
コンピューティングデバイス210のUID 212は、コンピューティングデバイス110のUID 112と同様であってよく、ディスプレイ構成要素202、存在感知入力構成要素204、マイクロフォン構成要素206、およびスピーカ構成要素208を含む。ディスプレイ構成要素202は、情報がUID 212によって表示されるスクリーンであってよく、一方、存在感知入力構成要素204は、ディスプレイ構成要素202にあるおよび/またはディスプレイ構成要素202の近くにある物体を検出し得る。スピーカ構成要素208は、可聴情報がUID 212によって再生されるスピーカであってよく、一方、マイクロフォン構成要素206は、ディスプレイ構成要素202および/もしくはスピーカ構成要素208においてならびに/またはディスプレイ構成要素202および/もしくはスピーカ構成要素208の近くで与えられた可聴入力を検出し得る。
コンピューティングデバイス210の内部構成要素として示されているが、UID 212は、入力および出力を送信および/または受信するためにコンピューティングデバイス210とデータ経路を共有する外部構成要素を表してよい。たとえば、一例において、UID 212は、コンピューティングデバイス210の外装内に置かれ、コンピューティングデバイス210の外装に物理的に接続されたコンピューティングデバイス210の組み込み構成要素(たとえば、モバイル電話のスクリーン)を表す。別の例において、UID 212は、コンピューティングデバイス210のパッケージまたはハウジングの外に置かれ、コンピューティングデバイス210のパッケージまたはハウジングから物理的に分離されたコンピューティングデバイス210の外部構成要素(たとえば、コンピューティングデバイス210と有線および/またはワイヤレスデータ経路を共有するモニタ、プロジェクタなど)を表す。
1つの例示的な範囲として、存在感知入力構成要素204は、ディスプレイ構成要素202の2インチ以内にある指またはスタイラスなどの物体を検出し得る。存在感知入力構成要素204は、物体が検出されたディスプレイ構成要素202の位置(たとえば、[x, y]座標)を判定し得る。別の例示的な範囲において、存在感知入力構成要素204は、ディスプレイ構成要素202から6インチ以内の物体を検出してよく、その他の範囲も、可能である。存在感知入力構成要素204は、静電容量式、誘導式、および/または光学式認識技術を使用してユーザの指によって選択されたディスプレイ構成要素202の位置を判定し得る。一部の例において、存在感知入力構成要素204は、さらに、ディスプレイ構成要素202に関連して説明されたように触覚、オーディオ、またはビデオの刺激を使用してユーザに出力を提供する。図2の例において、UID 212は、(図1のグラフィカルユーザインターフェース114などの)ユーザインターフェースを提示し得る。
スピーカ構成要素208は、コンピューティングデバイス210のハウジングに組み込まれたスピーカを含んでよく、一部の例において、コンピューティングデバイス210に動作可能なように結合される有線またはワイヤレスヘッドフォンのセットに組み込まれたスピーカであってよい。マイクロフォン構成要素206は、UID 212においてまたはUID 212の近くで発生する可聴入力を検出し得る。マイクロフォン構成要素206は、背景雑音を削除するためにさまざまな雑音除去技術を実行し、検出されたオーディオ信号からユーザの発話を分離し得る。
コンピューティングデバイス210のUID 212は、2次元および/または3次元ジェスチャをコンピューティングデバイス210のユーザからの入力として検出し得る。たとえばUID 212のセンサは、UID 212のセンサの閾値の距離以内のユーザの運動(たとえば、手、腕、ペン、スタイラスなどを動かすこと)を検出し得る。UID 212は、運動の2または3次元ベクトル表現を決定し、ベクトル表現に複数次元を有するジェスチャ入力(たとえば、手を振ること、つまむこと、手を叩くこと、ペンの運びなど)を相互に関連付けてよい。言い換えると、UID 212は、UID 212が表示するために情報を出力するスクリーンもしくは面においてまたはそのスクリーンもしくは面の近くでユーザがジェスチャをすることを要求することなく多次元ジェスチャを検出することができる。その代わりに、UID 212は、UID 212が表示するために情報を出力するスクリーンまたは面の近くに置かれることがあり、または近くに置かれないことがあるセンサにおいてまたはそのセンサの近くで実行される多次元ジェスチャを検出することができる。
1つまたは複数のプロセッサ240は、コンピューティングデバイス210に関連付けられた機能を実施し得るおよび/または命令を実行し得る。プロセッサ240の例は、アプリケーションプロセッサ、ディスプレイコントローラ、補助プロセッサ、1つまたは複数のセンサハブ、およびプロセッサ、処理ユニット、または処理デバイスとして機能するように構成された任意のその他のハードウェアを含む。モジュール220、222、226、230、および282は、コンピューティングデバイス210のさまざまな行動、動作、または機能を実行するためにプロセッサ240によって操作され得る。たとえば、コンピューティングデバイス210のプロセッサ240は、動作モジュール220、222、226、230、および282をプロセッサ240に実行させる、ストレージ構成要素248によって記憶された命令を取り出し、実行し得る。命令は、プロセッサ240によって実行されるとき、コンピューティングデバイス210にストレージ構成要素248内に情報を記憶させてよい。
コンピューティングデバイス210内の1つまたは複数のストレージ構成要素248は、コンピューティングデバイス210の動作中に処理するために情報を記憶し得る(たとえば、コンピューティングデバイス210は、コンピューティングデバイス210における実行中にモジュール220、222、226、230、および282によってアクセスされるデータを記憶し得る)。一部の例において、ストレージ構成要素248は一時的メモリであり、つまり、ストレージ構成要素248の主目的は長期的な記憶ではない。コンピューティングデバイス210のストレージ構成要素248は、揮発性メモリとしての情報の短期記憶のために構成され、したがって、電源がオフにされた場合、記憶された内容を保持しなくてよい。揮発性メモリの例は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、および当技術分野で知られているその他の形態の揮発性メモリを含む。
一部の例において、さらに、ストレージ構成要素248は、1つまたは複数のコンピュータ可読ストレージ媒体を含む。一部の例において、ストレージ構成要素248は、1つまたは複数の非一時的コンピュータ可読ストレージ媒体を含む。ストレージ構成要素248は、揮発性メモリに通常記憶されるよりも多くの量の情報を記憶するように構成されてよい。さらに、ストレージ構成要素248は、不揮発性メモリ空間としての情報の長期記憶のために構成され、電源のオン/オフのサイクルの後に情報を保持し得る。不揮発性メモリの例は、磁気ハードディスク、光ディスク、フロッピー(登録商標)ディスク、フラッシュメモリ、または電気的にプログラミング可能なメモリ(EPROM)もしくは電気的に消去可能でありプログラミング可能である(EEPROM)メモリの形態を含む。ストレージ構成要素248は、モジュール220、222、226、230、および282ならびにデータストア224に関連付けられたプログラム命令および/または情報(たとえば、データ)を記憶し得る。ストレージ構成要素248は、モジュール220、222、226、230、および282ならびにデータストア224に関連付けられたデータまたはその他の情報を記憶するように構成されたメモリを含んでよい。
UIモジュール220は、図1のコンピューティングデバイス110のUIモジュール120のすべての機能を含んでよく、たとえば、コンピューティングデバイス110のユーザとアシスタントモジュール222との間のインタラクションを容易にするためにUID 212においてコンピューティングデバイス210が提供するユーザインターフェース(たとえば、ユーザインターフェース114)を管理するためにUIモジュール120と同様の動作を実行し得る。たとえば、コンピューティングデバイス210のUIモジュール220は、アシスタントユーザインターフェース(たとえば、ユーザインターフェース114)を出力する(たとえば、表示するかまたはオーディオを再生する)ための命令を含むアシスタントモジュール222からの情報を受け取ってよい。UIモジュール220は、通信チャネル250を介してアシスタントモジュール222から情報を受け取り、データを使用してユーザインターフェースを生成し得る。UIモジュール220は、UID 212にUID 212においてユーザインターフェースを提示させるために表示または可聴出力コマンドおよび関連するデータを、通信チャネル250を介して送信し得る。
一部の例において、UIモジュール220は、UID 212において検出された1つまたは複数のユーザ入力の指示を受け取ってよく、ユーザ入力についての情報をアシスタントモジュール222に出力し得る。たとえば、UID 212は、ユーザからの音声入力を検出し、音声入力についてのデータをUIモジュール220に送信し得る。
UIモジュール220は、音声入力の指示をさらに解釈するためにアシスタントモジュール222に送信し得る。アシスタントモジュール222は、音声入力に基づいて、検出された音声入力がアシスタントモジュール222が1つまたは複数のタスクを実行することのユーザの要求を表すと判定し得る。
アプリケーションモジュール226は、情報をユーザに提供するおよび/またはタスクを実行するためにアシスタントモジュール222などのアシスタントによってアクセスされ得る、コンピューティングデバイス210において実行され、コンピューティングデバイス210からアクセスされ得るすべてのさまざまな個々のアプリケーションおよびサービスを表す。コンピューティングデバイス210のユーザは、コンピューティングデバイス210に機能を実行させるために1つまたは複数のアプリケーションモジュール226に関連付けられたユーザインターフェースとインタラクションし得る。アプリケーションモジュール226の多くの例が存在し、フィットネスアプリケーション、カレンダーアプリケーション、検索アプリケーション、地図もしくはナビゲーションアプリケーション、輸送サービスアプリケーション(たとえば、バスもしくは電車追跡アプリケーション)、ソーシャルメディアアプリケーション、ゲームアプリケーション、電子メールアプリケーション、チャットもしくはメッセージングアプリケーション、インターネットブラウザアプリケーション、またはコンピューティングデバイス210において実行され得る任意のおよびすべてのその他のアプリケーションを含んでよい。
コンピューティングデバイス210の検索モジュール282は、コンピューティングデバイス210のために統合された検索機能を実行し得る。検索モジュール282は、UIモジュール220、アプリケーションモジュール226のうちの1つもしくは複数、および/またはアシスタントモジュール222によって、それらのモジュールの代わりに検索動作を実行するために呼び出され得る。呼び出されたとき、検索モジュール282は、検索クエリを生成することならびに生成された検索クエリに基づく検索をさまざまなローカルおよびリモート情報ソースにまたがって実行する実行することなどの検索機能を実行し得る。検索モジュール282は、実行された検索の結果を呼び出し元の構成要素またはモジュールに提供し得る。つまり、検索モジュール282は、呼び出しコマンドに応答して検索結果をUIモジュール220、アシスタントモジュール222、および/またはアプリケーションモジュール226に出力し得る。
コンテキストモジュール230は、コンピューティングデバイス210のコンテキストを定義するためにコンピューティングデバイス210に関連付けられたコンテキスト情報を収集し得る。特に、コンテキストモジュール230は、主に、特定の時間のコンピューティングデバイス210の物理的および/または仮想的環境ならびにコンピューティングデバイス210のユーザの特徴を規定するコンピューティングデバイス210のコンテキストを定義するためにアシスタントモジュール222によって使用される。
開示全体を通じて使用されるとき、用語「コンテキスト情報」は、コンピューティングデバイスおよびコンピューティングデバイスのユーザが特定の時間に経験し得る仮想的なおよび/または物理的な環境の特徴を定義するためにコンテキストモジュール230によって使用され得る任意の情報を説明するために使用される。コンテキスト情報の例は多数あり、コンピューティングデバイス210のセンサ(たとえば、位置センサ、加速度計、ジャイロ、気圧計、環境光センサ、近接センサ、マイクロフォン、および任意のその他のセンサ)によって取得されたセンサ情報、コンピューティングデバイス210の通信モジュールによって送信および受信される通信情報(たとえば、テキストに基づく通信、可聴通信、ビデオ通信など)、ならびにコンピューティングデバイス210において実行されるアプリケーションに関連付けられたアプリケーション使用情報(たとえば、アプリケーションに関連付けられたアプリケーションデータ、インターネット検索履歴、テキスト通信、音声およびビデオ通信、カレンダー情報、ソーシャルメディアの投稿および関連する情報など)を含んでよい。コンテキスト情報のさらなる例は、コンピューティングデバイス210の外部にある送信デバイスから取得された信号および情報を含む。たとえば、コンテキストモジュール230は、小売商の物理的場所にまたは小売商の物理的場所の近くに置かれた外部ビーコンから送信されたビーコン情報をコンピューティングデバイス210の無線または通信ユニットを介して受信し得る。
アシスタントモジュール222は、図1のコンピューティングデバイス110のローカルアシスタントモジュール122Aのすべての機能を含んでよく、アシスタントを提供するためのローカルアシスタントモジュール122Aと同様の動作を実行し得る。一部の例において、アシスタントモジュール222は、アシスタント機能を提供するためにローカルで(たとえば、プロセッサ240において)実行され得る。一部の例において、アシスタントモジュール222は、コンピューティングデバイス210にアクセスし得るリモートアシスタントサービスへのインターフェースとして働いてよい。たとえば、アシスタントモジュール222は、図1のアシスタントサーバシステム160のリモートアシスタントモジュール122Bへのインターフェースまたはアプリケーションプログラミングインターフェース(API)であってよい。
図1のシステム100のデータストア124Aおよび124Bと同様に、ユーザ情報データストア224は、ユーザとアシスタントモジュール222によって提供されるアシスタントとの間の会話中にコンピューティングデバイス210のユーザについてアシスタントモジュール222が知った情報を含む、アシスタントモジュール222によって生成された個人レコードを記憶し得る。アシスタントモジュール222は、アシスタントのタスクを実行するために、コンテキストモジュール230および/または検索モジュール282によって提供される任意の情報に加えて、データストア224に記憶された情報に依拠し得る。
データストア224に含まれる情報は、構造化されたセマンティックな方法で記憶され得る。たとえば、UID 212における音声入力「私の名前はjohnです」の検出に応じて、アシスタントモジュール222は、文字列「john」を投入された名前フィールド(たとえば、(name, john))を含むレコードをデータストア224において生成し得る。名前フィールドに加えて、アシスタントモジュール222は、音声入力が受け取られるときにコンテキストモジュール230から受け取られたコンテキスト情報(たとえば、日付、コンピューティングデバイス210の位置、およびその他のコンテキスト情報などの情報)もデータストア224によって記憶されるレコードに含めさせてよい。
別の例として、ユーザとアシスタントモジュール222によって提供されるアシスタントとの間のチャットの会話中に、ユーザは、テキストの文字列「私は地元の図書館のレファレンス係です」としてUID 212によって認識される入力をUID 212において与えてよい。アシスタントモジュール222は、テキストの文字列の指示を受け取り、職業フィールドを含む個人レコードをデータストア224において作成し得る。アシスタントモジュール222は、ユーザ入力から推測された種類および場所を職業フィールドに投入し得る。たとえば、職業フィールドは、種類の参照を「reference_clerk」として含み、勤務先の参照をエンティティ「Springfield Ohio Public Library」として含んでよい(たとえば、(occupation, \type reference_clerk)および(place_of_employment, \entity Springfield_Ohio_Public_Library))。アシスタントモジュール222は、それらの基礎をなすセマンティクス(semantics)のために、情報の明確に定義された、正規化された、および一貫した表現をデータストア224によって記憶される個人レコードのフィールドに投入し得る。
アシスタントモジュール222は、ユーザとの会話中に取得された情報がより幅広い構造を運ぶ一定のスキーマに関連付けられ得ることを認識し得る。アシスタントモジュール222がより幅広い構造のすべてのフィールドにデータを投入するために必要とされる情報をユーザからまだ引き出していない場合、アシスタントモジュール222は、ヌルのまたは空のプレースホルダを用いてより幅広い構造によるレコードを作成し得る。アシスタントモジュール222がユーザと会話をすればするほど、アシスタント222は、将来のインタラクションをより容易でより速くするためにデータストア224の個人レコードのフィールドにデータを投入し得る。
たとえば、アシスタントモジュール222は、名前に加えて、人がしばしば誕生日、家の場所、および勤務先を有すると規定する規則に従って動作し得る。入力「私の名前はjohnです」に応答してデータストア224においての個人レコードの生成に応じて、アシスタントモジュール222は、UID 212に「やあJohn、始めまして。どこで働いていますか?」を出力させ、アシスタントモジュール222が助けているユーザのより完全な理解を築くために、UID 212によって受け取られる結果として得られるユーザ応答を記憶し得る。そのような二次的情報を引き出すことによって動作するので、アシスタントモジュール222は、アシスタントモジュール222が動作する規則によってさらに引き出すことを出力するのを手引きされ得る。そのような規則は、特定の二次的特徴の重要性および/または人気(popularity)、ユーザがそのような質問を最近されたかどうか、それらのユーザが過去によくそれらの質問に答えたかどうかなどに関する規則を含み得る。
動作中、コンピューティングデバイス210のユーザは、自発的にアシスタントモジュール222に命令する音声入力をUID 212において与えてよい。たとえば、ユーザは、「私の名前はJohnです」、「私は2匹の猫と1匹の犬を飼っています」、「私は地元の図書館のレファレンス係です」、「私は野球が好きで、好きなチームはRed Soxです」、「私の兄弟の名前はTedです」などとして音声入力を与えてよい。
一部の例において、アシスタントモジュール222は、継続中のタスクの一部としてコンピューティングデバイス210のユーザから情報を引き出し得る。たとえば、コンピューティングデバイス210のユーザは、「今日の交通の状況はどう」として音声入力を与え、アシスタントモジュール222は、UIモジュール220およびUID 212に「調べてみます。どこで働いていますか?」という可聴のまたはグラフィカルな指示を出力させてよい。コンピューティングデバイス210のユーザは、アシスタントモジュール222に「世界の情勢は?」と訊ねる音声入力を与え、ローカルアシスタントモジュール222は、UIモジュール220およびUID 212に「どこからニュースを得たいですか?」という可聴のまたはグラフィカルな指示を出力させ得る。
一部の例において、ローカルアシスタントモジュール222は、タスクを完了するために情報アシスタントモジュール222にもっともらしいが確証のない答えを与えることがある(アプリケーションモジュール226および/またはコンテキストモジュール230によって維持され、または維持されないことがあるアドレス帳、位置の履歴、通信などの)その他の情報にアクセスすることができる。たとえば、ユーザが職場までの交通量を要求する場合、ユーザに関連し、アプリケーションモジュール226のナビゲーションアプリケーションによって維持される位置の履歴が、ユーザが毎日どこに車を運転しているかを示す形跡を含み得る。アシスタントモジュール222は、その目的地を使用して、「調べてみます。あなたの位置の履歴からすると、あなたはSpringfield Libraryで働いているようですが、そうですか?」と訊ねてよい。この情報は、位置の履歴、検索または閲覧活動、アシスタントまたはその他のエンティティとの電子メール、チャット、またはその他の通信、ユーザに関連付けられたソーシャルネットワークまたはその他のサービスを含む、アシスタントがアクセスを提供されたさまざまなソースに由来してよい。
アシスタントモジュール222は、曖昧さを解決するためにユーザから引き出された情報に対して改善を実行し得る。たとえば、2つの地元の図書館があり、アシスタントモジュール222がどちらの図書館が正しいかを示すようにユーザに促すことがある。あるいは、ユーザの名前が同音異綴りを有することがあり、アシスタントモジュール222が正しい綴りがどちらかを訊ねるためにUID 212を介して情報を出力し得る。アシスタントモジュール222は、UIモジュール220に、別の選択肢のリスト、ピン(pin)の付いた地図、または最も有用で正しい答えを決定するためのさらなる区別の詳細を有する写真/カードなどの視覚的要素をUID 212において提供させてよい。個人の情報が与えられ、理解されると、アシスタントモジュール222は、個人の情報をデータストア224において1つまたは複数の個人レコードとして記憶し得る。
適切な場合、アシスタントモジュール222は、タスクを完了するために、データストア224に記憶されたばかりの情報を使用し得る。たとえば、アシスタントモジュール222は、UIモジュール220に、「分かりました。あなたがそこで働いていることを憶えておきます。今日は交通量が多いようです。職場に着くまで40分かかるでしょう」と言う可聴のまたはグラフィカルな指示をUID 212において出力させ得る。
一部の例においては、継続中のタスクがなかった場合、アシスタントモジュール222は、アシスタントモジュール222がいつかユーザを助けるためにデータストア224に最近記憶された情報をどのように使用し得るかの例を提供し得る。たとえば、アシスタントモジュール222は、UIモジュール220に、「分かりました。あなたがlionsがお好きなことを憶えておきます。lionsが試合をするときにスコアをお送りしましょうか?」または「分かりました。あなたの兄弟の名前がTedだと憶えておきます。これからは、ご兄弟と連絡を取りたいときに「兄弟に電話して」と言ってください」と言う可聴のまたはグラフィカルな指示をUID 212において出力させ得るがある。一部の例において、アシスタントモジュール222は、「私の兄弟」、「仕事」、および「私の犬」などの個人的な言及が使用されるときを認識し、アシスタントモジュール222がタスクを正しく成功裏に完了することができるように、データストア224に記憶された情報に基づいて正しい個人的な解釈を代わりに用いることができる。
アシスタントモジュール222は、アシスタントモジュール222にデータストア224に記憶された情報を忘れさせるかまたは修正させることを選択する機会をコンピューティングデバイス210のユーザに提供し得る。たとえば、アシスタントモジュール222は、文言「私が図書館で働いていることは忘れて」、「私はJohn Smithに改名しました」もしくは「私はもう野球が好きではありません」と言うか、または「私が友達のPeterについて言ったこと」と言い、続けて「それは全部忘れてください」と言う、UIモジュール220およびUID 212によって検出された音声コマンドを認識し得る。そのようなコマンドに応じて、アシスタントモジュール222は、削除コマンドによって指定された情報を削除するためにデータストア224に記憶された個人レコードを変更し得る。アシスタントモジュール222は、データストア224に記憶されている特定の情報をユーザがカスタマイズするかまたは手動で削除することができる設定メニューまたはその他のグラフィカルユーザインターフェースを提供し得る。
アシスタントモジュール222は、データストア224に記憶されたデータに関連付けられた衝突を管理し得る。たとえば、ユーザが入力「私の名前はJonです」を前に与え、その後、入力「私の名前はJonathanです」を与えた場合、アシスタントモジュールは、(a)「Barb」と「Barbara」との両方をユーザの名前に関するユーザに固有である値として記憶する、(b)ユーザが1つの名前をあだ名に関する値として記憶したいかどうか、1つの名前の値を上書きしたいかどうかなどを、はっきりさせるためにユーザに尋ねる、(c)どちらのデータを利用すべきかを決定するために外部リソースを調べる、(d)より古いデータを新しいデータによって常に上書きするデフォルト設定などの何らかのその他の予め定義されたプロトコルに従う等々であり得る。
アシスタントモジュール222は、データストア224に記憶された情報を、アシスタントモジュール222がさまざまな情報ソースから集める情報によって自動的に補足し得る。言い換えると、アシスタントモジュール222は、一部の例において、データストア224において個人レコードの空のフィールドにデータを投入するためにコンピューティングデバイス210のユーザからさらなる情報を引き出してよいが、一部の例において、アシスタントモジュール222は、さまざまな情報を埋めるために検索モジュール282およびコンテキストモジュール230を関与させてよい。たとえば、アシスタントモジュール222は、個人レコード内で欠けているフィールドに、アドレス帳、位置の履歴、電子メールもしくはメッセージ、ソーシャルメディアアカウント、あるいは検索モジュール282、コンテキストモジュール230、および/またはアプリケーションモジュール226のうちの1つもしくは複数を介してアクセス可能である任意のその他の情報ソースからアシスタントモジュール222が取得する情報を投入し得る。アシスタントサービスの実行を遅くしないために、アシスタントモジュール222は、ユーザとの会話が途切れるまで、データストア224に記憶された個人レコードを補足することを遅らせ得る。
図3は、本開示の1つまたは複数の態様による例示的なバーチャルアシスタントを実行する1つまたは複数のプロセッサによって実行される例示的な動作を示す流れ図である。図3が、図1のシステム100の文脈で下に説明される。たとえば、ローカルアシスタントモジュール122Aは、コンピューティングデバイス110の1つまたは複数のプロセッサにおいて実行される間に、本開示の1つまたは複数の態様に従って動作300~380を実行し得る。また、一部の例において、リモートアシスタントモジュール122Bは、アシスタントサーバシステム160の1つまたは複数のプロセッサにおいて実行される間に、本開示の1つまたは複数の態様に従って動作300~380を実行し得る。例示のみを目的として、図3が、図1のコンピューティングデバイスの文脈で下で説明される。
動作中に、コンピューティングデバイス110は、コンピューティングデバイスのユーザとアシスタントとの間の初期会話を示す初期ユーザ入力の指示を受け取ってよい(300)。たとえば、コンピューティングデバイス110のユーザは、「かかりつけの歯医者はいつ開く」としてローカルアシスタントモジュール122Aによって受け取られる音声入力をUID 112において与え得る。
コンピューティングデバイス110は、初期コマンドに関して初期ユーザ入力を解析し得る(310)。たとえば、ローカルアシスタントモジュール122Aは、自然言語処理および/または機械学習技術を使用して、音声入力が事業者(たとえば、かかりつけの歯医者)に関連する情報(たとえば、開く時間)の要求を示すと判定し得る。
初期コマンドに関する初期ユーザ入力を解析する(310)間に、コンピューティングデバイス110は、初期ユーザ入力に基づいて、ユーザに固有である値に前に関連付けられなかった個人の情報への最初の言及を特定し得る(320)。たとえば、ローカルアシスタントモジュール122Aは、「かかりつけの歯医者」を、データストア124Aに維持される個人レコードに保有するに値する可能性がある個人の情報のインジケータであるものとして認識し得る。ローカルアシスタントモジュール122Aは、データストア124Aのスキーマを迅速に解析し、ユーザに関連付けられた歯医者のレコードがデータストア124Aに存在しないと判定し得る。それに応じて、ローカルアシスタントモジュール122Aは、「歯医者」がユーザに固有であるいかなる値(たとえば、個人レコード)とも前に関連付けられなかったと判定し得る。
一部の例において、コンピューティングデバイス110は、個人の情報への言及がユーザとアシスタントとの間のいかなる以前の会話中にも述べられていないと判定することによって、ユーザに固有である値に前に関連付けられなかった個人の情報への最初の言及を特定し得る。その他の例においては、言及が前になされたかもしれないが、ローカルアシスタントモジュール122Aは、言及を、個人レコードの一部として個人の情報を記録するのに十分なだけ重要であるとみなさなかった可能性があり、したがって、ローカルアシスタントモジュール122Aによって記憶された値は、ゼロ、ヌル、またはユーザに固有でないその他の省略値に対応し得る。
コンピューティングデバイス110は、個人の情報を利用し、記憶するためにユーザから承諾を受け取り得る(330)。たとえば、上述のインタラクションの前に、または潜在的な個人の情報の特定に応じて、ローカルアシスタントモジュール122Aは、UIモジュール120に、ローカルアシスタントモジュール122Aおよびユーザによるインタラクション中に取得される個人の情報を記憶し、利用するためのユーザからの承諾を要求させてよい。コンピューティングデバイス110は、ローカルアシスタントモジュールが個人の情報を利用したいかまたは記憶したいときに毎回事前にユーザが承諾することを求めなくてもよい。たとえば、コンピューティングデバイス110が1年に1度、1日に1度、またはさらには(たとえば、最初の製品購入、セットアップなどの後に)ただ1度だけ承諾を受け取る場合、コンピューティングデバイス110は、その以前の承諾を、個人の情報を将来利用し、記憶するための承諾として扱い得る。ユーザがどのようにして承諾を与え得るかの一例として、ユーザは、音声入力「うん、私についての情報を記憶して構わないよ」を与えてよく、音声入力に応じて、ローカルアシスタントモジュール122Aは、データストア122にユーザについての個人レコードを維持し始めてよい。
コンピューティングデバイス110は、そういうことだと確認する質問をユーザに投げかけることによって個人の情報への最初の言及を確認し得る(335)。言い換えると、ローカルアシスタントモジュール122Aは、UIモジュール120およびUID 112に、ユーザに固有である値の確認の要求を出力させ、ユーザに固有である値のユーザの確認を受け取らせ得る。つまり、ユーザの歯医者のレコードがデータストア122Aに存在しないので、ローカルアシスタントモジュール122Aは、UIモジュール120およびUID 112に質問「誰がかかりつけの歯医者ですか?」のテキストまたはオーディオを出力させ得る。
質問の出力に応じて、コンピューティングデバイス110は、「かかりつけの歯医者はDr. Smiley Dentistです」と述べるユーザからの音声入力を受け取ってよい。音声入力に応じて、ローカルアシスタントモジュール122Aは、ユーザの歯医者が「Dr. Smiley Dentist」であると判定し、UIモジュール120およびUID 112に、「分かりました。かかりつけの歯医者は米国SpringfieldのDr. Smiley Dentistですね」と述べるテキストまたはオーディオとして確認を出力させてよい。
コンピューティングデバイス110は、個人の情報の指示を記憶するユーザに関連付けられた個人レコードを生成し得る(340)。たとえば、ローカルアシスタントモジュール122Aはユーザの歯医者について得た知識を残しておくために、ローカルアシスタントモジュール122Aは、ユーザの歯医者についての情報を記憶するための、コンピューティングデバイス110のユーザに関連付けられた個人の情報の新しいまたは既存のデータ構造内のフィールドを作成し得る。言い換えると、ローカルアシスタントモジュール122Aは、人、場所、物、またはその他のエンティティについての情報を記憶するための複数のフィールドを規定する予め定義されたスキーマに従って個人レコードを作成し得る。
個人レコードを作成するとき、ローカルアシスタントモジュール122Aは、ユーザに固有である値を記憶するために複数のフィールドから特定のフィールドを決定してよく、特定のフィールドがユーザに固有であるいかなる値とも関連付けられていないとの判定に応じて、ローカルアシスタントモジュール122Aは、特定のフィールドにユーザに固有である値を投入し得る。たとえば、歯医者フィールドがヌル値、ゼロ値を含むか、またはそうでなければユーザに固有であるいかなる値も含まないとの判定に応じて、ローカルアシスタントモジュール122Aは、コンピューティングデバイス110のユーザがかかりつけの「歯医者」に言及するときにそのユーザが何に言及しているかをローカルアシスタントモジュール122Aが迅速に見極めることを可能にするために十分な情報を個人レコードの歯医者フィールドに記憶し得る。たとえば、歯医者フィールドは、商号、オンラインの情報(たとえば、ウェブサイト)へのリンク、住所、電話番号などを含んでよい。
ユーザの歯医者のレコードを生成すると、コンピューティングデバイス110は、初期ユーザ入力に関連付けられたタスクを完了することを終えてよい。たとえば、初期ユーザ入力がユーザからのかかりつけの歯医者の開く時間についての情報の要求であったので、ローカルアシスタントモジュール122Aは、診療時間に関してユーザの歯医者に関連付けられた個人レコードに記憶された情報をえり抜いてよい。開く時間の特定に応じて、ローカルアシスタントモジュール122Aは、UIモジュール120およびUID 112に、歯科医院の診療時間の指示(たとえば、「かかりつけの歯医者は、今日は午前7時に開いています。歯医者に電話をかけますか?」)を出力させてよい。
コンピューティングデバイス110は、ユーザとアシスタントとの間のその後の会話を示す後続のユーザ入力の指示を受け取り得る(350)。たとえば、後の時点で、コンピューティングデバイス110のユーザは、ローカルアシスタントモジュール122Aによって「歯医者に着くまでの交通の状況はどう」として再び受け取られる音声入力をUID 112において与えてよい。一部の例において、後続のユーザ入力は、初期ユーザ入力の指示を受け取ることの一部として既に受け取られてもよい。たとえば、初期ユーザ入力の一部として受け取られる後続の入力は、コマンド「予約をキャンセルするために歯医者に電話するのを忘れないように私に注意してくれ」であってよい。したがって、ローカルアシスタントモジュール122Aによって受け取られる入力全体は、「かかりつけの歯医者はいつ開く。予約をキャンセルするために歯医者に電話するのを忘れないように私に注意してくれ」であってよい。
コンピューティングデバイス110は、後続のコマンドに関して後続のユーザ入力を解析し得る(360)。たとえば、ローカルアシスタントモジュール122Aは、自然言語処理および/または機械学習技術を使用して、音声入力が事業者(たとえば、かかりつけの歯医者)に関連する情報(たとえば、推定された移動時間)の要求または上で示されたようにユーザが事業者に電話をかけることのリマインダを設定するためのコマンドを示すと判定し得る。
後続のコマンドに関して後続のユーザ入力を解析する間にまたはその後に、コンピューティングデバイス100は、後続のユーザ入力に基づいて個人の情報への後続の言及を特定し得る(370)。たとえば、「歯医者」は何らかの文脈がないと曖昧である(世界中に多くの歯科医院があり、ただ1つではない)ので、ローカルアシスタントモジュール122Aは、ユーザが歯医者を有するかどうかを調べるためにデータストア124Aの個人レコードを解析し得る。ローカルアシスタントモジュール122Aは、前の音声入力に応じて、前に作成された個人レコードを特定し、個人レコードからユーザの歯科医院の場所を判定し得る。
コンピューティングデバイス110は、個人の情報の指示を記憶するユーザに関連付けられた個人レコードの指示に基づいて後続のコマンドを実行し得る(380)。たとえば、ローカルアシスタントモジュール122Aは、コンピューティングデバイス110の現在位置からユーザの歯科医院の場所までの移動の推定される時間の長さを決定するために検索サーバシステム180の検索モジュール182を呼び出し得る。ローカルアシスタントモジュール122Aは、検索サーバシステム180から移動の推定される時間の長さの指示を受け取り得る。ローカルアシスタントモジュール122Aは、UIモジュール120に、推定された時間の長さの可聴のおよび/またはグラフィカルな指示を「交通量は普通です。今、現在位置から米国SpringfieldのDr. Smiley Dentistに向けて出発する場合、約17分かかります」としてUID 112を使用して出力させ得る。
図4は、本開示の1つまたは複数の態様による例示的なバーチャルアシスタントを実行するように構成される例示的なコンピューティングシステムを示すブロック図である。図4のアシスタントサーバシステム460が、図1のアシスタントサーバシステム160の例として下で説明される。図4は、アシスタントサーバシステム460の1つの特定の例を示すだけであり、アシスタントサーバシステム460の多くのその他の例が、その他の場合に使用されてよく、例示的なアシスタントサーバシステム460に含まれる構成要素のサブセットを含んでよく、または図4に示されない追加の構成要素を含んでよい。
図4の例に示されるように、アシスタントサーバシステム460は、1つまたは複数のプロセッサ440、1つまたは複数の通信ユニット442、および1つまたは複数のストレージ構成要素448を含む。ストレージ構成要素448は、アシスタントモジュール422、検索モジュール482、コンテキストモジュール430、およびユーザ情報データストア424を含む。
プロセッサ440は、図2のコンピューティングシステム210のプロセッサ240に類似している。通信ユニット442は、図2のコンピューティングシステム210の通信ユニット242に類似している。ストレージデバイス448は、図2のコンピューティングシステム210のストレージデバイス248に類似している。通信チャネル450は、図2のコンピューティングシステム210の通信チャネル250に類似しており、したがって、構成要素間通信のために構成要素440、442、および448の各々を相互に接続し得る。一部の例において、通信チャネル450は、システムバス、ネットワーク接続、プロセス間通信データ構造、またはデータを伝達するための任意のその他の方法を含んでよい。
アシスタントサーバシステム460の検索モジュール482は、コンピューティングデバイス210の検索モジュール282に類似しており、アシスタントサーバシステム460のために統合された検索機能を実行し得る。つまり、検索モジュール482は、アシスタントモジュール422のために検索動作を実行し得る。一部の例において、検索モジュール482は、アシスタントモジュール422のために検索動作を実行するための検索サーバシステム180などの外部検索システムとインターフェースをとってよい。呼び出されたとき、検索モジュール482は、検索クエリを生成することならびに生成された検索クエリに基づく検索をさまざまなローカルおよびリモート情報ソースにまたがって実行することなどの検索機能を実行し得る。検索モジュール482は、実行された検索の結果を呼び出し元の構成要素またはモジュールに提供し得る。つまり、検索モジュール482は、検索結果をアシスタントモジュール422に出力し得る。
アシスタントサーバシステム460のコンテキストモジュール430は、コンピューティングデバイス210のコンテキストモジュール230に類似している。コンテキストモジュール430は、コンピューティングデバイスのコンテキストを定義するために図1のコンピューティングデバイス110および図2のコンピューティングデバイス210などのコンピューティングデバイスに関連付けられたコンテキスト情報を収集し得る。コンテキストモジュール430は、主に、アシスタントサーバシステム160によって提供されるサービスとインターフェースをとり、アシスタントサーバシステム160によって提供されるサービスにアクセスするコンピューティングデバイスのコンテキストを定義するためにアシスタントモジュール422および/または検索モジュール482によって使用され得る。コンテキストは、特定の時間のコンピューティングデバイスの物理的および/または仮想的環境ならびにコンピューティングデバイスのユーザの特徴を規定してよい。
アシスタントモジュール422は、図1のローカルアシスタントモジュール122Aおよびリモートアシスタントモジュール122Bならびに図2のコンピューティングデバイス210のアシスタントモジュール222のすべての機能を含んでよい。アシスタントモジュール422は、アシスタントサーバシステム460を介してアクセス可能であるアシスタントサービスを提供するためにリモートアシスタントモジュール122Bと同様の動作を実行し得る。つまり、アシスタントモジュール422は、アシスタントサーバシステム460とネットワークを介して通信しているコンピューティングデバイスがアクセスし得るリモートアシスタントサービスとのインターフェースとして働いてよい。たとえば、アシスタントモジュール422は、図1のアシスタントサーバシステム160のリモートアシスタントモジュール122BへのインターフェースまたはAPIであってよい。
ユーザ情報データストア424は、図2のユーザ情報データストア224と同様であり、ユーザとアシスタントモジュール422によって提供されるアシスタントとの間の会話中にコンピューティングデバイスのユーザについてアシスタントモジュール422が知った情報を含む、アシスタントモジュール422によって生成された個人レコードを記憶するように構成される。アシスタントモジュール422は、アシスタントのタスクを実行するために、コンテキストモジュール430および/または検索モジュール482によって提供される任意の情報に加えて、データストア424に記憶された情報に依拠し得る。
たとえば、以下は、図1のコンピューティングデバイス110のユーザとアシスタントモジュール422によって提供されるアシスタントとの間のさまざまな筋書きを表す。それぞれの筋書きに関して、ユーザとアシスタントとの間で情報の何らかの初期のやりとりがあり、これがユーザの体験にどのように影響を与えるかを示す1つまたは複数の例が与えられる。
第1項.1つまたは複数のプロセッサにおいて実行されるアシスタントによって、コンピューティングデバイスのユーザとアシスタントとの間の初期会話を示す初期ユーザ入力の指示を受け取るステップと、アシスタントによって、初期コマンドを特定するために初期ユーザ入力を解析するステップと、アシスタントによって、初期ユーザ入力に基づいて、ユーザに固有である値に前に関連付けられなかった個人の情報への最初の言及を特定するステップと、アシスタントによって、個人の情報をユーザに固有である値として記憶するユーザに関連付けられた個人レコードを生成するステップと、アシスタントによって、ユーザに固有である値に基づいて初期コマンドを実行するステップとを含む方法。
第2項.アシスタントによって、ユーザとアシスタントとの間のその後の会話を示す後続のユーザ入力の指示を受け取るステップと、アシスタントによって、後続のコマンドに関して後続のユーザ入力を解析するステップと、アシスタントによって、後続のユーザ入力に基づいて、個人の情報への後続の言及を特定するステップと、アシスタントによって、ユーザに固有である値に基づいて後続のコマンドを実行するステップとをさらに含む第1項に記載の方法。
第3項.アシスタントによって、コンピューティングデバイスに、ユーザに固有である値の確認の要求を出力させるステップと、アシスタントによって、ユーザに固有である値のユーザの確認を受け取るステップとをさらに含む第1項または第2項に記載の方法。
第4項.個人レコードを生成するステップが、アシスタントによって、複数のフィールドを規定する予め定義されたスキーマに従って個人レコードを作成することと、アシスタントによって、ユーザに固有である値を記憶するために複数のフィールドから特定のフィールドを決定することと、特定のフィールドがユーザに固有であるいかなる値とも関連付けられていないとの判定に応じて、アシスタントによって、特定のフィールドにユーザに固有である値を投入することとを含む第1から3項のいずれか一項に記載の方法。
第5項.アシスタントによって、初期ユーザ入力が公的な要求であるのかまたは個人的な要求であるのかを判定するステップであって、個人の情報への最初の言及が、初期ユーザ入力が個人的な要求であるとの判定に応じて特定される、ステップをさらに含む第1から4項のいずれか一項に記載の方法。
第6項.初期ユーザ入力が個人的な要求であるとの判定に応じて、アシスタントによって、個人の情報に関するユーザに関連付けられた個人レコードを解析するステップであって、個人レコードが個人の情報に関連付けられたフィールドにヌルまたはゼロ値を含むとの判定に応じて個人の情報への最初の言及が特定される、ステップをさらに含む第5項に記載の方法。
第7項.初期ユーザ入力が公的な要求であるとの判定に応じて、アシスタントによって、初期コマンドを実行するための情報の公的な検索を実行するステップをさらに含む第5項または第6項に記載の方法。
第8項.アシスタントによって、初期ユーザ入力からの1つまたは複数の公的なエンティティまたは公的な内容の特定に応じて初期ユーザ入力が公的な要求であると判定するステップと、アシスタントによって、初期ユーザ入力からの1つまたは複数の私的なエンティティまたは私的な内容の特定に応じて初期ユーザ入力が私的な要求であると判定するステップとをさらに含む第5から7項のいずれか一項に記載の方法。
第9項.1つまたは複数の私的なエンティティまたは私的な内容が、1つまたは複数の家族に関する用語、人称代名詞、個人レコードのフィールドを含む第8項に記載の方法。
第10項.アシスタントによって、ユーザとアシスタントとの間のその後の会話を示す後続のユーザ入力の指示を受け取るステップと、アシスタントによって、後続のコマンドを特定するために後続のユーザ入力を解析するステップと、アシスタントによって、後続のユーザ入力に基づいて、個人の情報を修正するためのコマンドを特定するステップと、アシスタントによって、後続のユーザ入力に基づいてユーザに固有である値を修正するステップとをさらに含む第1から9項のいずれか一項に記載の方法。
第11項.コンピューティングデバイスが1つまたは複数のプロセッサを含むか、あるいはコンピューティングシステムが1つまたは複数のプロセッサを含む第1から10項のいずれか一項に記載の方法。
第12項.ユーザインターフェースデバイスと、少なくとも1つのプロセッサと、実行されるときに、少なくとも1つのプロセッサに、コンピューティングデバイスのユーザとアシスタントとの間の初期会話を示す初期ユーザ入力の指示をユーザインターフェースデバイスから受け取り、初期コマンドを特定するために初期ユーザ入力を解析し、初期ユーザ入力に基づいて、ユーザに固有である値に前に関連付けられなかった個人の情報への最初の言及を特定し、ユーザに固有である値を記憶するユーザに関連付けられた個人レコードを少なくとも1つのメモリにおいて生成し、ユーザに固有である値に基づいて初期コマンドを実行するように構成されたアシスタントを提供させる命令を含む少なくとも1つのメモリとを含むコンピューティングデバイス。
第13項.アシスタントが、ユーザとアシスタントとの間のその後の会話を示す後続のユーザ入力の指示を受け取り、後続のコマンドに関して後続のユーザ入力を解析し、後続のユーザ入力に基づいて、個人の情報への後続の言及を特定し、ユーザに固有である値を少なくとも1つのメモリから取り出し、アシスタントによって、ユーザに固有である値に基づいて後続のコマンドを実行するようにさらに構成される第12項に記載のコンピューティングデバイス。
第14項.アシスタントが、ユーザに固有である値の確認の要求をユーザインターフェースデバイスにおいて出力し、ユーザに固有である値のユーザの確認をユーザインターフェースデバイスから受け取るようにさらに構成される第12項または第13項に記載のコンピューティングデバイス。
第15項.アシスタントが、複数のフィールドを規定する予め定義されたスキーマに従って個人レコードを作成し、ユーザに固有である値を記憶するために複数のフィールドから特定のフィールドを決定し、特定のフィールドがユーザに固有であるいかなる値とも関連付けられていないとの判定に応じて、特定のフィールドにユーザに固有である値を投入するようにさらに構成される第12から14項のいずれか一項に記載のコンピューティングデバイス。
第16項.アシスタントが、初期ユーザ入力が公的な要求であるのかまたは個人的な要求であるのかを判定することと、初期ユーザ入力が個人的な要求であるとの判定に応じて、個人の情報に関するユーザに関連付けられた個人レコードを解析することであって、個人レコードが個人の情報に関連付けられたフィールドにヌルまたはゼロ値を含むとの判定に応じて個人の情報への最初の言及が特定される、解析することと、初期ユーザ入力が公的な要求であるとの判定に応じて、初期コマンドを実行するための情報の公的な検索を実行することとを行うようにさらに構成される第12から15項のいずれか一項に記載のコンピューティングデバイス。
第17項.コンピューティングデバイスが、モバイル電話、タブレットコンピュータ、コンピュータ化された腕時計、ホームアシスタントデバイス、テレビ、サーバ、ラップトップコンピュータ、ゲームシステム、または自動車システムを含む第12から16項のいずれか一項に記載のコンピューティングデバイス。
第18項.実行されるときに、アシスタントサーバシステムの少なくとも1つのプロセッサに、モバイルコンピューティングデバイスのユーザとモバイルコンピューティングデバイスにおいて実行されるアシスタントとの間の初期会話を示す初期ユーザ入力の指示をモバイルコンピューティングデバイスから受け取らせ、初期コマンドを特定するために初期ユーザ入力を解析させ、初期ユーザ入力に基づいて、ユーザに固有である値に前に関連付けられなかった個人の情報への最初の言及を特定させ、ユーザに固有である値を記憶するユーザに関連付けられた個人レコードをアシスタントサーバシステムのメモリにおいて生成させ、ユーザに固有である値に基づいて初期コマンドを実行させる命令を含むコンピュータ可読ストレージ媒体。
第19項.命令が、実行されるときに、少なくとも1つのプロセッサにさらに、ホームオートメーションデバイスのユーザとホームオートメーションデバイスにおいて実行されるアシスタントとの間のその後の会話を示す後続のユーザ入力の指示を受け取らせ、後続のコマンドに関して後続のユーザ入力を解析させ、後続のユーザ入力に基づいて、個人の情報への後続の言及を特定させ、ユーザに固有である値を少なくとも1つのメモリから取り出させ、アシスタントによって、ユーザに固有である値に基づいて後続のコマンドを実行させる第19項に記載のコンピュータ可読ストレージ媒体。
第20項.モバイルコンピューティングデバイスのユーザが、ホームオートメーションデバイスのユーザである第19項に記載のコンピュータ可読ストレージ媒体。
第21項.第1から11項のいずれか一項に記載の方法を実行するための手段を含むコンピューティングデバイス。
第22項.少なくとも1つのプロセッサと、実行されるときに少なくとも1つのプロセッサに第1から11項のいずれか一項に記載の方法を実行させる命令を含む少なくとも1つのメモリとを含むコンピューティングデバイス。
第23項.実行されるときにコンピューティングデバイスの少なくとも1つのプロセッサに第1から11項のいずれか一項に記載の方法を実行させる命令を含むコンピュータ可読ストレージ媒体。
第24項.第1から11項のいずれか一項に記載の方法を実行するための手段を含むコンピューティングデバイス。
第25項.少なくとも1つのプロセッサと、実行されるときに少なくとも1つのプロセッサに第1から11項のいずれか一項に記載の方法を実行させる命令を含む少なくとも1つのメモリとを含むコンピューティングシステム。
第26項.実行されるときにコンピューティングシステムの少なくとも1つのプロセッサに第1から11項のいずれか一項に記載の方法を実行させる命令を含むコンピュータ可読ストレージ媒体。
1つまたは複数の例において、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せで実装されてよい。ソフトウェアに実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるかまたはコンピュータ可読媒体上で送信され、ハードウェアに基づく処理ユニットによって実行されてよい。コンピュータ可読媒体は、データストレージ媒体などの有形の媒体に対応するコンピュータ可読ストレージ媒体、またはたとえば通信プロトコルによるある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含んでよい。このようにして、概して、コンピュータ可読媒体は、(1)非一時的である有形のコンピュータ可読ストレージ媒体または(2)信号もしくは搬送波などの通信媒体に対応してよい。データストレージ媒体は、本開示において説明された技術の実装のための命令、コード、および/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であってよい。コンピュータプログラム製品は、コンピュータ可読媒体を含んでよい。
限定ではなく例として、そのようなコンピュータ可読ストレージ媒体は、RAM、ROM、EEPROM、CD-ROMもしくはその他の光ディスクストレージ、磁気ディスクストレージもしくはその他の磁気ストレージデバイス、フラッシュメモリ、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用可能であり、コンピュータによってアクセス可能である任意のその他のストレージ媒体を含み得る。また、当然、任意の接続がコンピュータ可読媒体と呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペアケーブル、デジタル加入者線(DSL)、または赤外線、ラジオ波、およびマイクロ波などのワイヤレステクノロジを用いてウェブサイト、サーバ、またはその他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペアケーブル、DSL、または赤外線、ラジオ波、およびマイクロ波などのワイヤレステクノロジは、媒体の定義に含まれる。しかし、1つのコンピュータ可読ストレージ媒体および複数のコンピュータ可読ストレージ媒体ならびにデータストレージ媒体は、接続、搬送波、信号、またはその他の一時的媒体を含まず、その代わりに、非一時的な有形のストレージ媒体を対象とすることを理解されたい。本明細書において使用されるとき、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD: compact disc)、レーザーディスク(登録商標)(laser disc)、光ディスク(optical disc)、デジタルバーサタイルディスク(DVD: digital versatile disc)、フロッピー(登録商標)ディスク(floppy disk)、およびブルーレイディスク(Blu-ray(登録商標) disc)を含み、ディスク(disk)が、通常、磁気的にデータを再生する一方、ディスク(disc)は、レーザーを用いて光学的にデータを再生する。上記のものの組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、またはその他の等価な集積もしくはディスクリート論理回路などの1つまたは複数のプロセッサによって実行されてよい。したがって、用語「プロセッサ」は、本明細書において使用されるとき、上述の構造または本明細書において説明された技術の実装に好適な任意のその他の構造のいずれかを指してよい。加えて、一部の態様において、本明細書において説明された機能は、専用のハードウェアおよび/またはソフトウェアモジュール内に設けられてよい。また、技術は、1つまたは複数の回路または論理要素にすべて実装されてよい。
本開示の技術は、ワイヤレスハンドセット、集積回路(IC)、または1組のIC(たとえば、チップセット)を含む多種多様なデバイスまたは装置に実装されてよい。さまざまな構成要素、モジュール、またはユニットが、開示された技術を実行するように構成されたデバイスの機能の態様を強調するために本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上述のように、さまざまなユニットが、ハードウェアユニットにおいて組み合わされるか、または好適なソフトウェアおよび/もしくはファームウェアと連携した、上述の1つもしくは複数のプロセッサを含む相互運用性のあるハードウェアユニットの集合によって提供されてよい。
さまざまな実施形態が、説明された。これらのおよびその他の実施形態は、添付の請求項の範囲内にある。