(57)【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサによって実行される自動アシスタントによって実行される方法であって、
コンピューティングデバイスの1つまたは複数の入力構成要素において、第1の発話入力を、ユーザから受信するステップであって、前記第1の発話入力が、タスクを実行するためのコマンドを含む、ステップと、
前記第1の発話入力から生成された第1の発話認識出力に対してセマンティック処理を実行するステップと、
前記セマンティック処理に基づいて、前記自動アシスタントが前記コマンドを解釈できないと判定するステップと、
前記コンピューティングデバイスの1つまたは複数の出力構成要素において、前記コマンドについて前記ユーザに明確化を要請する出力を、前記ユーザに提供するステップと、
前記出力に応答して、前記入力構成要素のうちの1つまたは複数において、前記ユーザからの第2の発話入力を、同じ前記ユーザから受信するステップと、
前記第2の発話入力から生成された第2の発話認識出力から、前記タスクを遂行するために値で埋められることが必要とされる1つまたは複数のスロットを識別するステップと、
前記コマンドと前記タスクとの間のマッピングを含みかつ前記1つまたは複数のスロットを埋めるための1つまたは複数の値を入力として受け付ける、対話ルーチンを記憶するステップと、
前記入力構成要素のうちの1つまたは複数において、第3の発話入力を受信するステップであって、前記第3の発話入力が、前記コマンドを含み、かつ前記マッピングに基づいて前記対話ルーチンを呼び出す、ステップと、
前記タスクを遂行するために値で埋められることが必要とされる前記1つまたは複数のスロットを埋めるために使用されるべき1つまたは複数の値を、前記第3の発話入力または追加の発話入力から生成された第3の発話認識出力に基づいて識別するステップと、
前記1つまたは複数のスロットを埋めるために使用されるべき少なくとも前記1つまたは複数の値を示すデータをリモートコンピューティングデバイスへ送信するステップであって、前記送信により、前記タスクを前記リモートコンピューティングデバイスに遂行させる、ステップと、
前記対話ルーチンを、前記自動アシスタントによって実行可能な複数の候補タスクと比較するステップと、
前記比較するステップに基づいて、前記コマンドがマッピングされる先の前記タスクを前記複数の候補タスクから選択するステップとを含み、
前記比較するステップが、前記タスクを遂行するために埋められることが必要とされる前記1つまたは複数のスロットを、前記複数の候補タスクの各々に関連する1つまたは複数のスロットと比較するステップを含む、方法。
【請求項２】
前記コマンドがマッピングされる先の前記タスクが、サードパーティのエージェントタスクを備え、
前記送信により、前記リモートコンピューティングデバイスに、前記1つまたは複数のスロットを埋めるための前記1つまたは複数の値を使用して前記サードパーティのエージェントタスクを実行させる、
請求項1に記載の方法。
【請求項３】
前記方法は、
前記記憶するステップの前に、前記入力構成要素のうちの1つまたは複数において、前記ユーザからの第4の発話入力を、受信するステップをさらに含み、
前記第4の発話入力が、前記スロットのうちの1つまたは複数を埋めるための可能な値のユーザ提供の列挙リストを含み、
前記比較するステップが、
前記複数の候補タスクの各々に対して、可能な値の前記ユーザ提供の列挙リストを、前記候補タスクの1つまたは複数のスロットを埋めるための可能な値の列挙リストと比較するステップを含む、
請求項1に記載の方法。
【請求項４】
少なくとも前記1つまたは複数の値を示しかつ前記リモートコンピューティングデバイスへ送信される前記データが、前記コマンドまたは前記コマンドがマッピングされる先の前記タスクの一方または両方を示すものをさらに含む、
請求項1に記載の方法。
【請求項５】
少なくとも前記1つまたは複数の値を示す前記データが、前記1つまたは複数の値に基づいて前記タスクの実行を要求する自然言語出力の形式をとり、
前記送信により、前記リモートコンピューティングデバイスに、前記自然言語出力を第2のユーザに対して可聴式または視覚式に提供させる、
請求項4に記載の方法。
【請求項６】
1つまたは複数のプロセッサによって実行される自動アシスタントによって実行される方法であって、
ユーザからの第1の発話入力をコンピューティングデバイスの1つまたは複数の入力構成要素において受信するステップであって、前記第1の発話入力がタスクを実行するためのコマンドを含む、ステップと、
前記第1の発話入力から生成された第1の発話認識出力から、タスクにマッピングされることを前記ユーザが意図するコマンド、および前記タスクを遂行するために値で埋められることが必要とされる1つまたは複数のスロットを識別するステップと、
前記コマンドと前記タスクとの間のマッピングを含みかつ前記1つまたは複数のスロットを埋めるための1つまたは複数の値を入力として受け付ける、対話ルーチンを記憶するステップと、
前記入力構成要素のうちの1つまたは複数において、前記ユーザからの第2の発話入力を受信するステップであって、前記第2の発話入力が、前記マッピングに基づいて前記対話ルーチンを呼び出す、ステップと、
前記タスクを遂行するために値で埋められることが必要とされる前記1つまたは複数のスロットを埋めるために使用されるべき1つまたは複数の値を、前記第2の発話入力または追加の発話入力から生成された第2の発話認識出力に基づいて識別するステップと、
前記1つまたは複数のスロットを埋めるために使用されるべき少なくとも前記1つまたは複数の値を示すデータを、リモートコンピューティングデバイスに送信するステップであって、前記送信により、前記タスクを前記リモートコンピューティングデバイスに遂行させる、ステップと、
前記対話ルーチンを、前記自動アシスタントによって実行可能な複数の候補タスクと比較するステップと、
前記比較するステップに基づいて、前記コマンドがマッピングされる先の前記タスクを前記複数の候補タスクから選択するステップとを含み、
前記比較するステップが、前記タスクを遂行するために埋められることが必要とされる前記1つまたは複数のスロットを、前記複数の候補タスクの各々に関連する1つまたは複数のスロットと比較するステップを含む、方法。
【請求項７】
前記コマンドがマッピングされる先の前記タスクが、サードパーティのエージェントタスクを備え、
前記送信により、前記リモートコンピューティングデバイスに、前記1つまたは複数のスロットを埋めるための前記1つまたは複数の値を使用して前記サードパーティのエージェントタスクを実行させる、
請求項6に記載の方法。
【請求項８】
少なくとも前記1つまたは複数の値を示しかつ前記リモートコンピューティングデバイスへ送信される前記データが、前記コマンドまたは前記コマンドがマッピングされる先の前記タスクの一方または両方を示すものをさらに含む、
請求項6に記載の方法。
【請求項９】
少なくとも前記1つまたは複数の値を示す前記データが、前記1つまたは複数の値に基づいて前記タスクの実行を要求する自然言語出力の形式をとり、
前記送信するステップが、前記リモートコンピューティングデバイスに、前記自然言語出力を第2のユーザに対して可聴式または視覚式に提供させる、
請求項8に記載の方法。
【請求項１０】
1つまたは複数のプロセッサに以下の動作を実行させるための命令を備えるコンピュータ可読記憶媒体であって、前記動作が、
コンピューティングデバイスの1つまたは複数の入力構成要素において、第1の発話入力を、ユーザから受信することであって、前記第1の発話入力が、タスクを実行するためのコマンドを含む、ことと、
前記第1の発話入力から生成された第1の発話認識出力に対してセマンティック処理を実行することと、
前記セマンティック処理に基づいて、自動アシスタントが前記コマンドを解釈できないと判定することと、
前記コンピューティングデバイスの1つまたは複数の出力構成要素において、前記コマンドについて前記ユーザに明確化を要請する出力を提供することと、
前記入力構成要素のうちの1つまたは複数において、第2の発話入力を、同じ前記ユーザから受信することと、
前記第2の発話入力から生成された第2の発話認識出力に基づいて、前記タスクを遂行するために値で埋められることが必要とされる1つまたは複数のスロットを識別することと、
前記コマンドと前記タスクとの間のマッピングを含みかつ前記1つまたは複数のスロットを埋めるための1つまたは複数の値を入力として受け付ける、対話ルーチンを記憶することと、
前記入力構成要素のうちの1つまたは複数において、前記ユーザからの第3の発話入力を受信することであって、前記第3の発話入力が、前記コマンドを含み、かつ前記マッピングに基づいて前記対話ルーチンを呼び出す、ことと、
前記タスクを遂行するために値で埋められることが必要とされる前記1つまたは複数のスロットを埋めるために使用されるべき1つまたは複数の値を、前記第3の発話入力または追加の発話入力から生成された第3の発話認識出力に基づいて識別することと、
前記1つまたは複数のスロットを埋めるために使用されるべき少なくとも前記1つまたは複数の値を示すデータをリモートコンピューティングデバイスに送信することであって、前記送信により、前記タスクを前記リモートコンピューティングデバイスに遂行させる、ことと、
前記対話ルーチンを、前記自動アシスタントによって実行可能な複数の候補タスクと比較することと、
前記比較することに基づいて、前記コマンドがマッピングされる先の前記タスクを前記複数の候補タスクから選択することとを含み、
前記比較することが、前記タスクを遂行するために埋められることが必要とされる前記1つまたは複数のスロットを、前記複数の候補タスクの各々に関連する1つまたは複数のスロットと比較することを含む、コンピュータ可読記憶媒体。
【請求項１１】
前記コマンドがマッピングされる先の前記タスクが、サードパーティのエージェントタスクを備え、
前記送信により、前記リモートコンピューティングデバイスに、前記1つまたは複数のスロットを埋めるための前記1つまたは複数の値を使用して前記サードパーティのエージェントタスクを実行させる、
請求項10に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記コンピュータ可読記憶媒体は、
前記ユーザからの第4の発話入力を、前記記憶することの前に前記入力構成要素のうちの1つまたは複数において受信するための命令をさらに備え、
前記第4の発話入力が、前記スロットのうちの1つまたは複数を埋めるための可能な値のユーザ提供の列挙リストを含み、
前記比較することが、前記複数の候補タスクの各々に対して、可能な値の前記ユーザ提供の列挙リストを、前記候補タスクの1つまたは複数のスロットを埋めるための可能な値の列挙リストと比較することを含む、
請求項10に記載のコンピュータ可読記憶媒体。
【請求項１３】
少なくとも前記1つまたは複数の値を示しかつ前記リモートコンピューティングデバイスへ送信される前記データが、前記コマンドまたは前記コマンドがマッピングされる先の前記タスクの一方または両方を示すものをさらに含む、
請求項10に記載のコンピュータ可読記憶媒体。
【請求項１４】
少なくとも前記1つまたは複数の値を示す前記データが、前記1つまたは複数の値に基づいて前記タスクの実行を要求する自然言語出力の形式をとり、
前記送信により、前記リモートコンピューティングデバイスに、前記自然言語出力を第2のユーザに可聴式または視覚式に提供させる、
請求項13に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ユーザプログラマブル自動アシスタントを提供する。
【背景技術】
【０００２】
人間は、「自動アシスタント」(「チャットボット」、「対話式パーソナルアシスタント」、「知的パーソナルアシスタント」、「パーソナル音声アシスタント」、「会話式エージェント」などとも呼ばれる)と本明細書で呼ばれる対話式ソフトウェアアプリケーションとの、人間対コンピュータの対話に関与することがある。たとえば、人間(自動アシスタントと相互作用するときに「ユーザ」と呼ばれることがある)は、自由形式自然言語入力を使用して、コマンド、問合せ、および/または要求(本明細書で「問合せ」と総称される)を提供してよく、自由形式自然言語入力は、テキストに、次いで、処理および/またはタイプされた自由形式自然言語入力に変換される、声の発話を含んでよい。
【０００３】
通常、自動アシスタントは、たとえば、タスクがマッピングされる先の様々な所定の標準コマンドに応答して、様々なタスクを実行するように構成される。これらのタスクは、品物(たとえば、飲食物、製品、サービスなど)を注文すること、メディア(たとえば、音楽、ビデオ)を再生すること、買い物リストを修正すること、住宅制御を実行すること(たとえば、サーモスタットを制御する、1つまたは複数の照明を制御するなど)、質問に答えること、チケットを予約することなどのようなものを含むことができる。自然言語分析およびセマンティック処理は、わずかな相違の標準コマンドをユーザが発することを可能にするが、どのタスクを実行すべきかを自然言語分析およびセマンティック処理が決定できるうちは、これらの相違はある程度までしか逸脱し得ない。簡単に言えば、タスク指向型対話管理は、自然言語およびセマンティック分析における多くの進歩にもかかわらず、比較的融通がきかないままである。追加として、ユーザは、しばしば、標準コマンドを知らないかまたは忘れており、したがって、ユーザが可能である多くのタスクを実行するために自動アシスタントを呼び出すことができない場合がある。その上、新たなタスクを追加することは、新たな標準コマンドを追加することをサードパーティの開発者に求め、通常、自動アシスタントがそれらの標準コマンドの許容できる相違を学習するために時間およびリソースがかかる。
【発明の概要】
【課題を解決するための手段】
【０００４】
タスクを達成するために後で呼び出され得るカスタマイズされたルーチンすなわち「対話ルーチン」を用いて自動アシスタントをプログラムするために、ユーザが音声ベースの人間対コンピュータの対話を採用することを可能にするための技法が、本明細書で説明される。いくつかの実装形態では、ユーザは、タスクを実行するためのコマンドを含む自由形式自然言語入力を提供することによって、自動アシスタントに新たな対話ルーチンを学習させてよい。自動アシスタントがコマンドを解釈できない場合、自動アシスタントは、コマンドについてユーザに明確化を要請してよい。たとえば、いくつかの実装形態では、自動アシスタントは、タスクを遂行するために値で埋められることが必要とされる1つまたは複数のスロットを識別することを、ユーザに促してよい。他の実装形態では、ユーザは、自動アシスタントから促すことなく、事前にスロットを識別し得る。いくつかの実装形態では、ユーザは、たとえば、自動アシスタントの要求において、または事前に、スロットのうちの1つまたは複数を埋めるための可能な値の列挙リストを提供し得る。自動アシスタントは、次いで、コマンドとタスクとの間のマッピングを含み、かつ1つまたは複数のスロットを埋めるための1つまたは複数の値を入力として受け付ける、対話ルーチンを記憶し得る。ユーザは、コマンドまたはそれらのいくつかのシンタクティック/セマンティック相違を含む自由形式自然言語入力を使用して、対話ルーチンを後で呼び出し得る。
【０００５】
対話ルーチンが呼び出され対話ルーチンのスロットがユーザによって値で埋められると、自動アシスタントは様々なアクションをとり得る。いくつかの実装形態では、自動アシスタントは、少なくともユーザ提供のスロットを示すデータ、スロット自体、および/またはコマンド/タスクを示すデータを、リモートコンピューティングシステムへ送信し得る。場合によっては、この送信は、リモートコンピューティングシステムに、値/スロット/コマンド/タスクを示す自然言語出力または他のデータを、たとえば、別の人物に出力させ得る。この自然言語出力は、たとえば、電子メール、テキストメッセージ、自動通話などを介して、(要求を処理するためのそれ自体のサードパーティのソフトウェアエージェントをインストールまたは構成することを、他の人物に求めなくてよい)様々な方法で、他の人物に提供され得る。そうした他の人物は、次いで、タスクを遂行し得る。
【０００６】
追加または代替として、いくつかの実装形態では、スロット、潜在的なスロット値、コマンドなどの、対話ルーチンの様々な側面が、(たとえば、ユーザがそれに対する標準コマンドを知らなかった)複数の知られている候補タスクの類似の構成要素と比較され得る。最良に整合する候補タスクとユーザのコマンドとの間にマッピングが生成されてよく、その結果、ユーザによる自動アシスタントへのコマンド(または、それらのシンタクティックおよび/もしくはセマンティック相違)の将来の使用は、対話ルーチンを、また最終的には最良に整合する候補タスクを、呼び出す。複数の候補タスクが対話ルーチンに等しく整合する場合、ユーザは1つのタスクを選択することを促されてよく、またはユーザのコンテキスト、以前のアプリケーション使用などの他の信号が、タイブレーク(break the tie)するために使用され得る。
【０００７】
以下の対話においてユーザが自動アシスタントを従事させることを仮定する。
ユーザ:「私はピザが欲しい。」
AA:「私はどのようにピザを注文するのかを知りません。」
ユーザ:「ピザを注文するためには、クラストのタイプおよびトッピングのリストを知る必要があります。」
AA:「可能なピザクラストタイプは何ですか。」
ユーザ:「薄いクラストまたは厚いクラストです。」
AA:「可能なトッピングは何ですか。」
ユーザ:「ここに可能な値があります。」
AA:「わかりました。ピザを注文する準備ができていますか。」
ユーザ:「はい、トマトのトッピング付きの薄いクラストのピザを私に買ってください。」
このシナリオにおけるコマンドは「私はピザが欲しい。」であり、タスクはピザを注文することである。タスクを遂行するために埋められることが必要とされるユーザ定義のスロットは、クラストのタイプおよびトッピングのリストを含む。
【０００８】
いくつかの実装形態では、ピザを注文するタスクは、たとえば、電子メール、テキストメッセージ、自動通話などを介して、(ユーザが指定し得るか、または、たとえば、距離、レーティング、価格、知られているユーザ選好などに基づいて、自動的に選択され得る)ピザ店に、自然言語出力を提供することによって達成され得る。ピザ店の従業員は、1つまたは複数のコンピューティングデバイス(たとえば、店の中のコンピュータ端末、従業員の電話、店の中のスピーカーなど)の出力を介して自然言語出力を受け取ってよく、自然言語出力は、「<ユーザ>は<トッピング1、トッピング2、…>付きの<クラスト_スタイル>のピザを注文したがっている」のような何かを話してよい。
【０００９】
いくつかの実装形態では、ピザショップ従業員は、たとえば、「1」を押すことによって、または「わかりました」、「承りました」などと話すことによってユーザの要求を確認するように、依頼され得る。その確認が受け取られると、いくつかの実装形態では、要求しているユーザの自動アシスタントは、「あなたのピザは準備中です。」などの、確認の出力を提供してよく、または提供しなくてもよい。いくつかの実装形態では、ピザ店において提供される自然言語出力はまた、支払い情報、ユーザの住所などの、他の情報を搬送し得る。こうした他の情報は、対話ルーチンを作成する間に、要求しているユーザから取得されてよく、または、たとえば、ユーザのプロファイルに基づいて、自動的に決定されてもよい。
【００１０】
所定のサードパーティのソフトウェアエージェント(たとえば、特定のピザショップ用のサードパーティのソフトウェアエージェント)にコマンドがマッピングされる他の実装形態では、ピザを注文するタスクはサードパーティのソフトウェアエージェントを介して自動的に達成され得る。たとえば、スロット/値を示す情報が、様々な形式でサードパーティのソフトウェアエージェントに提供されてよい。すべての必須スロットが適切な値で埋められることを想定すると、サードパーティのソフトウェアエージェントは、ユーザのためのピザの注文を出すタスクを実行し得る。サードパーティのソフトウェアエージェントは、何らかの偶然によって追加の情報(たとえば、追加のスロット値)を必要とする場合、自動アシスタントに、要求された追加の情報をユーザに求めさせるために、自動アシスタントとインターフェースし得る。
【００１１】
本明細書で説明する技法は、様々な技術的利点を生じることがある。上述のように、タスクベースの対話管理は、現在、手作業で作成され既定のタスクにマッピングされる標準コマンドを用いて大部分は処理される。このことは、これらのマッピングを作成し彼らのユーザに通知することをサードパーティの開発者に求めるので、そのスケーラビリティが限定される。同様に、そのことは、標準コマンドを学習し、後で使用するためにそれらを覚えていることをユーザに求める。これらの理由のために、身体障害を有するユーザおよび/または他のタスク(たとえば、運転)に関与しているユーザなどの、タスクを達成するための入力を提供するための能力が限定されたユーザは、自動アシスタントにタスクを実行させる困難を有することがある。その上、ユーザが、解釈不可能なコマンドを用いてタスクを呼び出すことを試みるとき、ユーザの要求の曖昧さをなくすために、またはさもなければ明確化を得ようとするために、追加のコンピューティングリソースが必要とされる。カスタムコマンドを使用して呼び出される彼ら自身の対話ルーチンをユーザが作成することを可能にすることによって、ユーザは、コマンドを覚えること、および/または自動アシスタントを介して正常かつ/もしくはもっと迅速にタスクを達成できることの可能性が高い。このことは、上述の曖昧さ排除/明確化のために本来なら必要とされるかもしれないコンピューティングリソースを保持し得る。その上、いくつかの実装形態では、ユーザ作成の対話ルーチンは他のユーザと共有されてよく、他人によって使用されるかもしれない、個々のユーザからの「ロングテール(long tail)」コマンドに、自動アシスタントがもっと反応を示すことを可能にする。
【００１２】
いくつかの実装形態では、1つまたは複数のプロセッサによって実行される方法が提供され、方法は、ユーザからの第1の自由形式自然言語入力をコンピューティングデバイスの1つまたは複数の入力構成要素において受信することであって、第1の自由形式自然言語入力が、タスクを実行するためのコマンドを含むことと、自由形式自然言語入力に対してセマンティック処理を実行することと、自動アシスタントがコマンドを解釈できないと、セマンティック処理に基づいて判定することと、コマンドについてユーザに明確化を要請する出力を、コンピューティングデバイスの1つまたは複数の出力構成要素において提供することと、ユーザからの第2の自由形式自然言語入力を入力構成要素のうちの1つまたは複数において受信することであって、第2の自由形式自然言語入力が、タスクを遂行するために値で埋められることが必要とされる1つまたは複数のスロットを識別することと、コマンドとタスクとの間のマッピングを含み、かつ1つまたは複数のスロットを埋めるための1つまたは複数の値を入力として受け付ける、対話ルーチンを記憶することと、ユーザからの第3の自由形式自然言語入力を入力構成要素のうちの1つまたは複数において受信することであって、第3の自由形式自然言語入力が、マッピングに基づいて対話ルーチンを呼び出すことと、タスクを遂行するために値で埋められることが必要とされる1つまたは複数のスロットを埋めるために使用されるべき1つまたは複数の値を、第3の自由形式自然言語入力または追加の自由形式自然言語入力に基づいて識別することと、1つまたは複数のスロットを埋めるために使用されるべき少なくとも1つまたは複数の値を示すデータをリモートコンピューティングデバイスへ送信することとを含み、送信することは、タスクをリモートコンピューティングデバイスに遂行させる。
【００１３】
本明細書で開示する技術のこれらおよび他の実装形態は、以下の特徴のうちの1つまたは複数を随意に含んでよい。
【００１４】
様々な実装形態では、方法は、対話ルーチンを、自動アシスタントによって実行可能な複数の候補タスクと比較することと、比較することに基づいて、コマンドがマッピングされる先のタスクを複数の候補タスクから選択することとをさらに含んでよい。様々な実装形態では、コマンドがマッピングされる先のタスクは、サードパーティのエージェントタスクを備え、送信することは、リモートコンピューティングデバイスに、1つまたは複数のスロットを埋めるための1つまたは複数の値を使用してサードパーティのエージェントタスクを実行させる。様々な実装形態では、比較することは、タスクを遂行するために埋められることが必要とされる1つまたは複数のスロットを、複数の候補タスクの各々に関連する1つまたは複数のスロットと比較することを含んでよい。
【００１５】
様々な実装形態では、方法は、ユーザからの第4の自由形式自然言語入力を、記憶する前に入力構成要素のうちの1つまたは複数において受信することをさらに含んでよい。様々な実装形態では、第4の自由形式自然言語入力は、スロットのうちの1つまたは複数を埋めるための可能な値のユーザ提供の列挙リストを含んでよい。様々な実装形態では、比較することは、複数の候補タスクの各々に対して、可能な値のユーザ提供の列挙リストを、候補タスクの1つまたは複数のスロットを埋めるための可能な値の列挙リストと比較することを含んでよい。
【００１６】
様々な実装形態では、少なくとも1つまたは複数の値を示すデータは、コマンドまたはコマンドがマッピングされる先のタスクの表示の一方または両方をさらに含んでよい。様々な実装形態では、少なくとも1つまたは複数の値を示すデータは、1つまたは複数の値に基づいてタスクの実行を要求する自然言語出力の形式をとってよく、送信することは、リモートコンピューティングデバイスに、出力として自然言語を提供させる。
【００１７】
密接に関係する別の態様では、方法は、ユーザからの第1の自由形式自然言語入力を1つまたは複数の入力構成要素において受信することであって、第1の自由形式自然言語入力が、タスクにマッピングされることをユーザが意図するコマンド、およびタスクを遂行するために値で埋められることが必要とされる1つまたは複数のスロットを識別することと、コマンドとタスクとの間のマッピングを含み、かつ1つまたは複数のスロットを埋めるための1つまたは複数の値を入力として受け付ける、対話ルーチンを記憶することと、ユーザからの第2の自由形式自然言語入力を入力構成要素のうちの1つまたは複数において受信することであって、第2の自由形式自然言語入力が、マッピングに基づいて対話ルーチンを呼び出すことと、タスクを遂行するために値で埋められることが必要とされる1つまたは複数のスロットを埋めるために使用されるべき1つまたは複数の値を、第2の自由形式自然言語入力または追加の自由形式自然言語入力に基づいて識別することと、1つまたは複数のスロットを埋めるために使用されるべき少なくとも1つまたは複数の値を示すデータをリモートコンピューティングデバイスへ送信することとを含んでよく、送信することは、タスクをリモートコンピューティングデバイスに遂行させる。
【００１８】
加えて、いくつかの実装形態は、1つまたは複数のコンピューティングデバイスの1つまたは複数のプロセッサを含み、ここで、1つまたは複数のプロセッサは、関連するメモリの中に記憶された命令を実行するように動作可能であり、ここで、命令は、上述の方法のいずれかの実行を引き起こすように構成される。いくつかの実装形態はまた、上述の方法のいずれかを実行するために1つまたは複数のプロセッサによって実行可能なコンピュータ命令を記憶する、1つまたは複数の非一時的コンピュータ可読記憶媒体を含む。
【００１９】
本明細書でより詳細に説明する上記の概念および追加の概念のすべての組合せが、本明細書で開示する主題の一部であるものと企図されることを諒解されたい。たとえば、本開示の末尾に掲載された請求される主題のすべての組合せは、本明細書で開示する主題の一部であるものと企図される。
【図面の簡単な説明】
【００２０】
【図１】本明細書で開示する実装形態が実施され得る例示的な環境のブロック図である。
【図２】様々な実装形態による、対話ルーチンの呼出し中に生成されるデータが様々な構成要素の間をどのように流れることがあるのかという一例を概略的に示す図である。
【図３】様々な実装形態による、対話ルーチンの呼出し時に様々な構成要素の間でデータがどのように交換されることがあるのかという一例を概略的に示す図である。
【図４】本明細書で開示する実装形態による例示的な方法を示すフローチャートである。
【図５】コンピューティングデバイスの例示的なアーキテクチャを示す図である。
【発明を実施するための形態】
【００２１】
ここで図1を参照すると、本明細書で開示する技法が実施され得る例示的な環境が図示される。例示的な環境は、複数のクライアントコンピューティングデバイス1061〜Nを含む。各クライアントデバイス106は、自動アシスタントクライアント118のそれぞれのインスタンスを実行し得る。自然言語プロセッサ122などの、1つまたは複数のクラウドベースの自動アシスタント構成要素119は、110において概略的に示される1つまたは複数のローカルエリアネットワークおよび/またはワイドエリアネットワーク(たとえば、インターネット)を介してクライアントデバイス1061〜Nに通信可能に結合されている、1つまたは複数のコンピューティングシステム(「クラウド」コンピューティングシステムと総称される)上に実装され得る。
【００２２】
いくつかの実装形態では、自動アシスタントクライアント118のインスタンスは、1つまたは複数のクラウドベースの自動アシスタント構成要素119とのその相互作用を介して、ユーザがそれを用いて人間対コンピュータの対話に関与することがある自動アシスタント120の論理的なインスタンスであるようにユーザの観点から見えるものを形成し得る。そのような自動アシスタント120の2つのインスタンスが図1に示される。破線で取り囲まれた第1の自動アシスタント120Aは、第1のクライアントデバイス1061を操作する第1のユーザ(図示せず)にサービスし、自動アシスタントクライアント1181および1つまたは複数のクラウドベースの自動アシスタント構成要素119を含む。ダッシュ-ダッシュ-ドット(dash-dash-dot)線で取り囲まれた第2の自動アシスタント120Bは、別のクライアントデバイス106Nを操作する第2のユーザ(図示せず)にサービスし、自動アシスタントクライアント118Nおよび1つまたは複数のクラウドベースの自動アシスタント構成要素119を含む。したがって、いくつかの実装形態では、クライアントデバイス106上で実行する自動アシスタントクライアント118に関与する各ユーザが、事実上、自動アシスタント120の彼自身または彼女自身の論理的なインスタンスに関与する場合があることを理解されたい。簡潔および簡単のために、特定のユーザに「サービスする」ものとして本明細書で使用する「自動アシスタント」という用語は、ユーザによって操作されるクライアントデバイス106上で実行する自動アシスタントクライアント118と、(複数の自動アシスタントクライアント118の間で共有され得る)1つまたは複数のクラウドベースの自動アシスタント構成要素119との組合せを指す。いくつかの実装形態では、ユーザが自動アシスタント120のその特定のインスタンスによって実際に「サービス」されているかどうかにかかわらず、自動アシスタント120がいかなるユーザからの要求にも応答し得ることも理解されたい。
【００２３】
クライアントデバイス1061〜Nは、たとえば、デスクトップコンピューティングデバイス、ラップトップコンピューティングデバイス、タブレットコンピューティングデバイス、モバイルフォンコンピューティングデバイス、ユーザの車両のコンピューティングデバイス(たとえば、車載通信システム、車載エンターテインメントシステム、車載ナビゲーションシステム)、スタンドアロンの対話式スピーカー、スマートテレビジョンなどのスマートアプライアンス、および/またはコンピューティングデバイスを含むユーザのウェアラブル装置(たとえば、コンピューティングデバイスを有するユーザの時計、コンピューティングデバイスを有するユーザの眼鏡、仮想現実または拡張現実コンピューティングデバイス)のうちの1つまたは複数を含んでよい。追加および/または代替のクライアントコンピューティングデバイスが提供されてよい。
【００２４】
様々な実装形態では、クライアントコンピューティングデバイス1061〜Nの各々は、複数のメッセージ交換クライアント1071〜Nのうちの対応するメッセージ交換クライアントなどの、様々な異なるアプリケーションを動作させ得る。メッセージ交換クライアント1071〜Nは、様々な形態になることがあり、形態はクライアントコンピューティングデバイス1061〜Nにわたって変化してよく、かつ/または複数の形態がクライアントコンピューティングデバイス1061〜Nのうちの単一のクライアントコンピューティングデバイス上で動作させられてよい。いくつかの実装形態では、メッセージ交換クライアント1071〜Nのうちの1つまたは複数は、ショートメッセージングサービス(「SMS:short messaging service」)および/またはマルチメディアメッセージングサービス(「MMS:multimedia messaging service」)クライアント、オンラインチャットクライアント(たとえば、インスタントメッセンジャー、インターネット中継チャットすなわち「IRC:Internet relay chat」など)、ソーシャルネットワークに関連するメッセージングアプリケーション、自動アシスタント120との会話に専用のパーソナルアシスタントメッセージングサービスなどの形態になることがある。いくつかの実装形態では、メッセージ交換クライアント1071〜Nのうちの1つまたは複数は、クライアントコンピューティングデバイス106のウェブブラウザ(図示せず)または他のアプリケーションによってレンダリングされるウェブページまたは他のリソースを介して実装され得る。
【００２５】
本明細書でより詳細に説明するように、自動アシスタント120は、1つまたは複数のクライアントデバイス1061〜Nのユーザインターフェース入出力デバイスを介して、1人または複数のユーザとの人間対コンピュータの対話セッションに関与する。いくつかの実装形態では、自動アシスタント120は、クライアントデバイス1061〜Nのうちの1つの、1つまたは複数のユーザインターフェース入力デバイスを介してユーザによって提供されるユーザインターフェース入力に応答して、ユーザとの人間対コンピュータの対話セッションに関与することがある。それらの実装形態のうちのいくつかでは、ユーザインターフェース入力は、明示的に自動アシスタント120に向けられる。たとえば、メッセージ交換クライアント1071〜Nのうちの1つは、自動アシスタント120との会話に専用のパーソナルアシスタントメッセージングサービスであってよく、そのパーソナルアシスタントメッセージングサービスを介して提供されるユーザインターフェース入力は、自動的に自動アシスタント120に提供され得る。また、たとえば、ユーザインターフェース入力は、自動アシスタント120が呼び出されるべきであることを示す特定のユーザインターフェース入力に基づいて、メッセージ交換クライアント1071〜Nのうちの1つまたは複数の中の自動アシスタント120に明示的に向けられてよい。たとえば、特定のユーザインターフェース入力は、タイプされた1つもしくは複数の文字(たとえば、@AutomatedAssistant)、ハードウェアボタンおよび/もしくは仮想ボタンとのユーザ相互作用(たとえば、タップ、ロングタップ)、口頭のコマンド(たとえば、「やあ、自動アシスタント」)、ならびに/または他の特定のユーザインターフェース入力であってよい。
【００２６】
いくつかの実装形態では、ユーザインターフェース入力が明示的に自動アシスタント120に向けられていないときでも、自動アシスタント120は、そのユーザインターフェース入力に応答して対話セッションに関与することがある。たとえば、自動アシスタント120は、ユーザインターフェース入力の中に存在しているいくつかの言葉に応答して、かつ/または他の手がかりに基づいて、ユーザインターフェース入力の内容を調べるとともに対話セッションに関与してよい。多くの実装形態では、自動アシスタント120は、ユーザがコマンド、検索などを発話することができるような対話式音声応答(「IVR:interactive voice response」)を従事させてよく、自動アシスタントは、自然言語処理および/または1つもしくは複数の文法を利用して発話をテキストに変換してよく、それに応じてテキストに応答してよい。いくつかの実装形態では、自動アシスタント120は、追加または代替として、発話をテキストに変換することなく発話に応答することができる。たとえば、自動アシスタント120は、音声入力を埋込みに、(音声入力の中に存在する1つまたは複数のエンティティを示す)エンティティ表現および/または他の「非テキスト」表現に、変換することができ、そのような非テキスト表現に対して動作することができる。したがって、音声入力から変換されたテキストに基づいて動作するものとして本明細書で説明する実装形態は、追加および/または代替として、音声入力に対して直接、かつ/または音声入力の他の非テキスト表現に対して、動作し得る。
【００２７】
クライアントコンピューティングデバイス1061〜Nの各々、およびクラウドベースの自動アシスタント構成要素119を動作させるコンピューティングデバイスは、データおよびソフトウェアアプリケーションの記憶用の1つまたは複数のメモリ、データにアクセスしアプリケーションを実行するための1つまたは複数のプロセッサ、ならびにネットワークを介した通信を容易にする他の構成要素を含んでよい。クライアントコンピューティングデバイス1061〜Nのうちの1つもしくは複数によってかつ/または自動アシスタント120によって実行される動作は、複数のコンピュータシステムにわたって分散され得る。自動アシスタント120は、たとえば、ネットワークを通じて互いに結合されている、1つまたは複数のロケーションにおける1つまたは複数のコンピュータ上で動作するコンピュータプログラムとして実装され得る。
【００２８】
上述のように、様々な実装形態では、クライアントコンピューティングデバイス1061〜Nの各々は、自動アシスタントクライアント118を動作させ得る。様々な実装形態では、各自動アシスタントクライアント118は、対応する音声キャプチャ/テキスト音声(「TTS」)/STTモジュール114を含んでよい。他の実装形態では、音声キャプチャ/TTS/STTモジュール114の1つまたは複数の態様は、自動アシスタントクライアント118とは別個に実装され得る。
【００２９】
各音声キャプチャ/TTS/STTモジュール114は、1つまたは複数の機能を実行するように、すなわち、たとえば、(場合によっては存在センサー105を備えてよい)マイクロフォンを介して、ユーザの音声をキャプチャし、キャプチャされたその音響をテキストに(かつ/または他の表現もしくは埋込みに)変換し、かつ/またはテキストを音声に変換するように、構成され得る。たとえば、いくつかの実装形態では、クライアントデバイス106がコンピューティングリソース(たとえば、プロセッササイクル、メモリ、バッテリーなど)に関して比較的制約されることがあるので、各クライアントデバイス106に対して局所的な音声キャプチャ/TTS/STTモジュール114は、話された有限個の異なるフレーズ-特に自動アシスタント120を呼び出すフレーズ-をテキストに(または次元数がより小さい埋込みなどの他の形式に)変換するように構成され得る。他の音声入力は、クラウドベースのTTSモジュール116および/またはクラウドベースのSTTモジュール117を含んでよい、クラウドベースの自動アシスタント構成要素119へ送られてよい。
【００３０】
クラウドベースのSTTモジュール117は、音声キャプチャ/TTS/STTモジュール114によってキャプチャされた音響データを、(次に自然言語プロセッサ122に提供され得る)テキストに変換するために、クラウドの仮想的に無限のリソースを活用するように構成され得る。クラウドベースのTTSモジュール116は、テキストデータ(たとえば、自動アシスタント120によって定式化された自然言語応答)をコンピュータ生成の音声出力に変換するために、クラウドの仮想的に無限のリソースを活用するように構成され得る。いくつかの実装形態では、TTSモジュール116は、たとえば、1つまたは複数のスピーカーを使用して直接出力されるべきコンピュータ生成の音声出力を、クライアントデバイス106に提供し得る。他の実装形態では、自動アシスタント120によって生成されたテキストデータ(たとえば、自然言語応答)は、音声キャプチャ/TTS/STTモジュール114に提供されてよく、音声キャプチャ/TTS/STTモジュール114は、次いで、テキストデータを、局所的に出力されるコンピュータ生成の音声に変換してよい。
【００３１】
自動アシスタント120(および特にクラウドベースの自動アシスタント構成要素119)は、自然言語プロセッサ122、上述のTTSモジュール116、上述のSTTモジュール117、対話状態トラッカー124、対話マネージャ126、および(いくつかの実装形態ではTTSモジュール116と組み合わせられてよい)自然言語生成器128を含んでよい。いくつかの実装形態では、自動アシスタント120のエンジンおよび/またはモジュールのうちの1つまたは複数は、省略されてよく、組み合わせられてよく、かつ/または自動アシスタント120とは別個の構成要素の中に実装されてよい。
【００３２】
いくつかの実装形態では、自動アシスタント120は、自動アシスタント120との人間対コンピュータの対話セッション中にクライアントデバイス1061〜Nのうちの1つのユーザによって生成される様々な入力に応答して、応答性コンテンツを生成する。自動アシスタント120は、対話セッションの一部としてユーザへの提示用に、(たとえば、ユーザのクライアントデバイスとは別個のとき、1つまたは複数のネットワークを介して)応答性コンテンツを提供し得る。たとえば、自動アシスタント120は、クライアントデバイス1061〜Nのうちの1つを介して提供された自由形式自然言語入力に応答して、応答性コンテンツを生成し得る。本明細書で使用する自由形式自然言語入力とは、ユーザによって定式化されるとともに、ユーザによる選択用に提示されるオプションのグループに制約されない、入力である。
【００３３】
本明細書で使用する「対話セッション」は、ユーザと自動アシスタント120(および、場合によっては他の人間の参加者)との間での1つまたは複数のメッセージの、論理的に自蔵式の交換、および/または自動アシスタント120による1つまたは複数の応答性アクションの実行を含んでよい。自動アシスタント120は、セッションの間の時間の経過、セッションの間のユーザコンテキスト(たとえば、ロケーション、スケジュールされた会議の前/その間/その後など)の変化、ユーザと自動アシスタントとの間の対話以外の、ユーザとクライアントデバイスとの間の1つまたは複数の介在する相互作用の検出(たとえば、少しの間、ユーザがアプリケーションを切り替える、ユーザがスタンドアロンの音声作動製品から立ち去り、次いで、後でそこに戻る)、セッションの間にクライアントデバイスをロックすること/スリープさせること、自動アシスタント120の1つまたは複数のインスタンスとインターフェースするために使用されるクライアントデバイスの変化などの、様々な信号に基づいて、ユーザとの複数の対話セッションの間を区別し得る。
【００３４】
自動アシスタント120の自然言語プロセッサ122(代替として、「自然言語理解エンジン」と呼ばれる)は、クライアントデバイス1061〜Nを介してユーザによって生成された自由形式自然言語入力を処理し、いくつかの実装形態では、自動アシスタント120の1つまたは複数の他の構成要素による使用のために注釈付き出力を生成し得る。たとえば、自然言語プロセッサ122は、クライアントデバイス1061の1つまたは複数のユーザインターフェース入力デバイスを介してユーザによって生成される自然言語自由形式入力を処理し得る。生成される注釈付き出力は、自然言語入力の1つまたは複数の注釈を、また随意に自然言語入力の言葉のうちの1つまたは複数(たとえば、すべて)を、含んでよい。
【００３５】
いくつかの実装形態では、自然言語プロセッサ122は、自然言語入力の中の様々なタイプの文法的な情報を識別しそれに注釈を付けるように構成される。たとえば、自然言語プロセッサ122は、それらの文法的な役割を用いて言葉に注釈を付けるように構成された音声タガー(図示せず)の部分を含んでよい。たとえば、音声タガーの部分は、「名詞」、「動詞」、「形容詞」、「代名詞」などの、音声のその部分を用いて各言葉にタグ付けし得る。また、たとえば、いくつかの実装形態では、自然言語プロセッサ122は、追加および/または代替として、自然言語入力の中の言葉の間のシンタクティック関係を決定するように構成された依存関係パーサ(図示せず)を含んでよい。たとえば、依存関係パーサは、どの言葉が他の言葉を修飾するのか、文の主語および動詞など(たとえば、パース木)を決定し得、そのような依存関係の注釈を付け得る。
【００３６】
いくつかの実装形態では、自然言語プロセッサ122は、追加および/または代替として、(たとえば、文学の登場人物、著名人、公人などを含む)人々、組織、(現実および空想の)ロケーションなどへの参照などの、1つまたは複数のセグメントの中のエンティティ参照に、注釈を付けるように構成されたエンティティタガー(図示せず)を含んでよい。いくつかの実装形態では、エンティティについてのデータは、知識グラフ(図示せず)の中などの1つまたは複数のデータベースの中に記憶され得る。いくつかの実装形態では、知識グラフは、知られているエンティティ(および、場合によってはエンティティ属性)を表すノード、ならびにノードを接続しエンティティ間の関係を表すエッジを含んでよい。たとえば、「バナナ」ノードは、「果物」ノードに(たとえば、子として)接続されてよく、「果物」ノードは、「製品」ノードおよび/または「飲食物」ノードに(たとえば、子として)接続されてよい。別の例として、「Hypothetical Cafe」と呼ばれるレストランは、その住所、提供される飲食物のタイプ、営業時間、連絡先情報などの属性も含むノードによって表されてよい。「Hypothetical Cafe」ノードは、いくつかの実装形態では、「レストラン」ノード、「ビジネス」ノード、レストランが位置する都市および/または州を表すノードなどの、1つまたは複数の他のノードに(たとえば、子から親への関係を表す)エッジによって接続されてよい。
【００３７】
自然言語プロセッサ122のエンティティタガーは、(たとえば、人々などのエンティティクラスへのすべての参照の識別を可能にするために)高いレベルの粒度で、かつ/または(たとえば、特定の人物などの特定のエンティティへのすべての参照の識別を可能にするために)もっと低いレベルの粒度で、エンティティへの参照に注釈を付けてよい。エンティティタガーは、特定のエンティティを決めるために自然言語入力の内容に依拠してよく、かつ/または特定のエンティティを決めるために知識グラフもしくは他のエンティティデータベースと随意に通信してよい。
【００３８】
いくつかの実装形態では、自然言語プロセッサ122は、追加および/または代替として、1つまたは複数のコンテキスト上の手がかりに基づいて同じエンティティへの参照をグループ化すなわち「クラスタ化」するように構成された、同一指示レゾルバ(図示せず)を含んでよい。たとえば、同一指示レゾルバは、自然言語入力「私は、私たちが前回そこで食事をしたHypothetical Cafeが気に入りました。」の中で、言葉「そこで」を「Hypothetical Cafe」と決めるために利用され得る。
【００３９】
いくつかの実装形態では、自然言語プロセッサ122の1つまたは複数の構成要素は、自然言語プロセッサ122の1つまたは複数の他の構成要素からの注釈に依拠し得る。たとえば、いくつかの実装形態では、名指しされたエンティティタガーは、特定のエンティティへのすべての言及に注釈を付ける際に、同一指示レゾルバおよび/または依存関係パーサからの注釈に依拠し得る。また、たとえば、いくつかの実装形態では、同一指示レゾルバは、同じエンティティへの参照をクラスタ化する際に、依存関係パーサからの注釈に依拠し得る。いくつかの実装形態では、特定の自然言語入力を処理する際に、自然言語プロセッサ122の1つまたは複数の構成要素は、1つまたは複数の注釈を決定するために、特定の自然言語入力の外側で、以前の関係する入力および/または他の関係するデータを使用し得る。
【００４０】
タスク指向型対話のコンテキストでは、自然言語プロセッサ122は、対話セッションの各順番においてユーザによって提供された自由形式自然言語入力を、本明細書で「対話行為(dialog act)」と呼ばれることがあるセマンティック表現にマッピングするように構成され得る。セマンティック表現は、ユーザから生成された対話行為が自動アシスタント発話の他のセマンティック表現を入力するかどうかにかかわらず、様々な形態をとり得る。いくつかの実装形態では、セマンティック表現は、個別のセマンティックフレームとしてモデル化され得る。他の実装形態では、セマンティック表現は、たとえば、継続的なセマンティック空間の中でのベクトル埋込みとして形成され得る。
【００４１】
いくつかの実装形態では、対話行為(または、より一般的には、セマンティック表現)は、とりわけ、自動アシスタント120を介してユーザが実行しようとしていることがあるいくつかのアクションまたはタスクのパラメータに対応する1つまたは複数のスロット/値のペアを示し得る。たとえば、ユーザが「今夜の夕食のためのインド風レストランを提案してください。」という形式で自由形式自然言語入力を提供することを仮定する。いくつかの実装形態では、自然言語プロセッサ122は、そのユーザ入力を、たとえば、以下のような、すなわち、意図(見つける_レストラン);通知する(料理=インド風、食事=夕食、時間=今夜)などのパラメータを含む対話行為にマッピングし得る。対話行為は、「挨拶」(たとえば、自動アシスタント120を呼び出す)、「通知する」(たとえば、スロットを埋めるためのパラメータを提供する)、「意図」(たとえば、エンティティを見つける、何かを注文する)、「要求」(たとえば、エンティティについての特定の情報を要求する)、「確認する」、「肯定する」、および「ありがとう」(随意であり、対話セッションをクローズしてよく、かつ/または肯定的なフィードバックとして、かつ/もしくは肯定的な報酬値が提供されるべきであることを示すために、使用されてよい)などの、様々な形式になり得る。これらは例にすぎず限定的であることは意図されない。
【００４２】
対話状態トラッカー124は、たとえば、人間対コンピュータの対話セッションの過程にわたる(かつ/または複数の対話セッションを横断する)ユーザの目標(すなわち「意図」)の確信状態を含む、「対話状態」を追跡するように構成され得る。対話状態を決定する際に、いくつかの対話状態トラッカーは、対話の中でインスタンス化されているスロットに対して最も可能性が高い値を、対話セッションにおけるユーザ発話およびシステム発話に基づいて決定しようとしてよい。いくつかの技法は、スロットのセットおよびそれらのスロットに関連する値のセットを規定する固定されたオントロジー(ontology)を利用する。いくつかの技法は、追加または代替として、個々のスロットおよび/または領域に編整され得る。たとえば、いくつかの技法は、各領域の中のスロットタイプごとにモデルをトレーニングすることを必要とすることがある。
【００４３】
対話マネージャ126は、たとえば、対話状態トラッカー124によって提供された、現在の対話状態を、複数の候補応答性アクションのうちの自動アシスタント120によって次に実行される1つまたは複数の「応答性アクション」にマッピングするように構成され得る。応答性アクションは、現在の対話状態に応じて様々な形式になり得る。たとえば、(たとえば、最終的なユーザ所望のタスクが実行される)最後の順番の前に行われる対話セッションの順番に対応する、初期および中途の対話状態は、自動アシスタント120が追加の自然言語対話を出力することを含む様々な応答性アクションにマッピングされ得る。この応答性対話は、たとえば、ユーザが実行することを意図すると対話状態トラッカー124が確信するいくつかのアクション用のパラメータをユーザが提供する(すなわち、スロットを埋める)という要求を含んでよい。
【００４４】
いくつかの実装形態では、対話マネージャ126は、ニューラルネットワークなどの機械学習モデルを含んでよい。いくつかのそのような実装形態では、ニューラルネットワークは、たとえば、2つの隠れ層とそれに後続するソフトマックス層とを有する、フィードフォワードニューラルネットワークの形態をとり得る。ただし、他の構成のニューラルネットワークならびに他のタイプの機械学習モデルが採用されてもよい。対話マネージャ126がニューラルネットワークを採用するいくつかの実装形態では、ニューラルネットワークへの入力は、限定はしないが、ユーザアクション、以前の応答性アクション(すなわち、以前の順番において対話マネージャによって実行されたアクション)、現在の対話状態(たとえば、どのスロットが埋められているのかを示す、対話状態トラッカー124によって提供されるバイナリベクトル)、および/または他の値を含んでよい。
【００４５】
様々な実装形態では、対話マネージャ126は、セマンティック表現レベルで動作し得る。たとえば、対話マネージャ126は、(たとえば、自然言語プロセッサ122によって提供される対話行為、および/または対話状態トラッカー124によって提供される対話状態を含んでよい)セマンティック対話フレームの形式で、新たな観測を受信し得、複数の候補応答性アクションから応答性アクションを確率的に選択し得る。自然言語生成器128は、対話マネージャ126によって選択された応答性アクションを、たとえば、対話セッションの各順番の終了において出力としてユーザに提供される1つまたは複数の発話にマッピングするように構成され得る。
【００４６】
上述のように、様々な実装形態では、ユーザは、様々なユーザ定義またはユーザ選択のタスクを達成するために、自動アシスタント120が後で効果的に再現することが可能であり得るカスタマイズされた「対話ルーチン」を作成できる場合がある。様々な実装形態では、対話ルーチンは、コマンド(たとえば、テキストまたは次元数が低減された埋込みに変換された声の自由形式自然言語発話、タイプされた自由形式自然言語入力など)と、コマンドに応答して自動アシスタント120によって全体的または部分的に実行されるべきタスクとの間のマッピングを含んでよい。加えて、いくつかの事例では、対話ルーチンは、タスクを遂行するために値(本明細書では「スロット値」とも呼ばれる)で埋められることが必要とされる1つまたは複数のユーザ定義の「スロット」(「パラメータ」または「属性」とも呼ばれる)を含んでよい。様々な実装形態では、対話ルーチンは、作成されると、1つまたは複数のスロットを埋めるための1つまたは複数の値を入力として受け付けてよい。いくつかの実装形態では、対話ルーチンはまた、対話ルーチンに関連する1つまたは複数のスロットに対して、スロットを埋めるために使用され得る1つまたは複数のユーザ列挙の値を含んでよいが、このことは必須ではない。
【００４７】
様々な実装形態では、対話ルーチンに関連するタスクは、1つまたは複数の必須スロットが値で埋められるときに、自動アシスタント120によって実行され得る。たとえば、値で埋められることを2つのスロットに求める対話ルーチンをユーザが呼び出すことを仮定する。呼出し中に両方のスロットに対する値をユーザが提供した場合、自動アシスタント120は、ユーザに追加の情報を要請することなく、対話ルーチンに関連するタスクを実行するために、提供されたそれらのスロット値を使用し得る。したがって(ユーザが前もってすべての必要なパラメータを提供すると想定すると)、呼び出されるとき、対話ルーチンが対話の単一の「順番」のみを伴うことが可能である。一方、ユーザが少なくとも1つの必須スロットに対する値を提供しない場合、自動アシスタント120は、必要とされるがまだ埋められていないスロットに対する値を要請する自然言語出力を自動的に提供してよい。
【００４８】
いくつかの実装形態では、各クライアントデバイス106は、そのデバイスにおいて1人または複数のユーザによって作成された1つまたは複数の対話ルーチンを記憶するように構成されている、ローカル対話ルーチンインデックス113を含んでよい。いくつかの実装形態では、各ローカル対話ルーチンインデックス113は、対応するクライアントデバイス106において任意のユーザによって作成された対話ルーチンを記憶し得る。追加または代替として、いくつかの実装形態では、各ローカル対話ルーチンインデックス113は、クライアントデバイス106の協調「エコシステム」を操作する特定のユーザによって作成された対話ルーチンを記憶し得る。場合によっては、協調エコシステムの各クライアントデバイス106が、制御するユーザによって作成された対話ルーチンを記憶し得る。たとえば、スタンドアロンの対話式スピーカーの形態をとる第1のクライアントデバイス(たとえば、1061)において、ユーザが対話ルーチンを作成することを仮定する。いくつかの実装形態では、その対話ルーチンは、クライアントデバイス106の同じ協調エコシステムの一部を形成する他のクライアントデバイス106(たとえば、スマートフォン、タブレットコンピュータ、別のスピーカー、スマートテレビジョン、車両コンピューティングシステムなど)のローカル対話ルーチンインデックス113に伝搬されるとともにそこに記憶されてよい。
【００４９】
いくつかの実装形態では、個々のユーザによって作成された対話ルーチンは、複数のユーザ間で共有され得る。この目的で、いくつかの実装形態では、グローバル対話ルーチンエンジン130は、複数のユーザによって作成された対話ルーチンをグローバル対話ルーチンインデックス132の中に記憶するように構成され得る。いくつかの実装形態では、グローバル対話ルーチンインデックス132の中に記憶された対話ルーチンは、(たとえば、1つまたは複数のアクセス制御リストを介して)作成者によって与えられた許諾に基づいて、選択されたユーザにとって利用可能であり得る。他の実装形態では、グローバル対話ルーチンインデックス132の中に記憶された対話ルーチンは、すべてのユーザにとって自由に利用可能であり得る。いくつかの実装形態では、クライアントデバイスの協調エコシステムの1つのクライアントデバイス106において特定のユーザによって作成された対話ルーチンは、グローバル対話ルーチンインデックス132の中に記憶されてよく、その後、協調エコシステムの他のクライアントデバイスにおける特定のユーザにとって(たとえば、随意のダウンロードまたはオンライン使用のために)利用可能であり得る。いくつかの実装形態では、グローバル対話ルーチンエンジン130は、グローバル対話ルーチンインデックス132の中のグローバルに利用可能な対話ルーチンと、ローカル対話ルーチンインデックス113の中に記憶されたローカルに利用可能な対話ルーチンの両方へのアクセスを有してよい。
【００５０】
いくつかの実装形態では、対話ルーチンは、それらの作成者による呼出しに限定されることがある。たとえば、いくつかの実装形態では、新たに作成された対話ルーチンをその作成者の音声プロファイルに割り当てるために、音声認識技法が使用され得る。その対話ルーチンが後で呼び出されると、自動アシスタント120は、スピーカーの音声を対話ルーチンに関連する音声プロファイルと比較し得る。整合がある場合、スピーカーは対話ルーチンを呼び出すことが許可され得る。スピーカーの音声が、対話ルーチンに関連する音声プロファイルに整合しない場合、場合によっては、スピーカーは対話ルーチンを呼び出すことが許されなくてよい。
【００５１】
いくつかの実装形態では、ユーザは、既存の標準コマンドおよび関連するタスクに事実上優先するカスタマイズされた対話ルーチンを作成し得る。ユーザ定義のタスクを実行するための新たな対話ルーチンをユーザが作成すること、および以前に異なるタスクにマッピングされた標準コマンドを使用して新たな対話ルーチンが呼び出されることを仮定する。将来において、その特定のユーザが対話ルーチンを呼び出すと、以前に標準コマンドがマッピングされた先の異なるタスクではなく、対話ルーチンに関連するユーザ定義のタスクが遂行され得る。いくつかの実装形態では、ユーザ定義のタスクは、対話ルーチンを呼び出すのが作成者ユーザである場合のみ(たとえば、そのことはスピーカーの音声を対話ルーチンの作成者の音声プロファイルに整合させることによって決定され得る)、標準コマンドに応答して実行され得る。別のユーザが標準コマンドを発話するかまたは別の方法で提供する場合、従来より標準コマンドにマッピングされている異なるタスクが代わりに実行され得る。
【００５２】
もう一度図1を参照すると、いくつかの実装形態では、タスクスイッチボード134は、対話ルーチンがユーザによって呼び出されると生成されるデータを、たとえば、対話ルーチンに関連するタスクが遂行され得るように1つまたは複数の適切なリモートコンピューティングシステム/デバイスにルーティングするように構成され得る。タスクスイッチボード134はクラウドベースの自動アシスタント構成要素119とは別個に示されるが、このことは限定的であることは意図されない。様々な実装形態では、タスクスイッチボード134は、自動アシスタント120の一体部分を形成し得る。いくつかの実装形態では、タスクスイッチボード134によって適切なリモートコンピューティングデバイスにルーティングされるデータは、呼び出される対話ルーチンに関連する1つまたは複数のスロットを埋めるために使用されるべき1つまたは複数の値を含んでよい。追加または代替として、リモートコンピューティングシステム/デバイスの性質に応じて、タスクスイッチボード134によってルーティングされるデータは、埋められるべきスロット、呼び出しているコマンドを示すデータ、実行されるべきタスクを示すデータ(たとえば、ユーザの知覚される意図)などの、情報の他の断片を含んでよい。いくつかの実装形態では、リモートコンピューティングシステム/デバイスは、タスクを遂行する際にそれらの役割を実行すると、直接および/またはタスクスイッチボード134を介して応答性データを自動アシスタント120に戻してよい。様々な実装形態では、自動アシスタント120は、次いで、たとえば、呼び出しているユーザによって操作されるクライアントデバイス106の1つまたは複数の音響および/または視覚式の出力デバイスを介して、ユーザに提供するための自然言語出力を、(たとえば、自然言語生成器128を介して)生成し得る。
【００５３】
いくつかの実装形態では、タスクスイッチボード134は、タスクインデックス136と動作可能に結合され得る。タスクインデックス136は、自動アシスタント120によって全体的または部分的に実行可能な(たとえば、トリガ可能な)複数の候補タスクを記憶し得る。いくつかの実装形態では、候補タスクは、自動的に注文に応答すること、人間対コンピュータの対話(たとえば、チャットボットのような)に関与することなどを行うように構成された、サードパーティのソフトウェアエージェントを含んでよい。様々な実装形態では、これらのサードパーティのソフトウェアエージェントは、自動アシスタント120を介してユーザと相互作用し得、自動アシスタント120は橋渡し役として働く。他の実装形態では、特にサードパーティのエージェント自体がチャットボットである場合、サードパーティのエージェントは、たとえば、自動アシスタント120および/またはタスクスイッチボード134によって、直接ユーザに接続され得る。追加または代替として、いくつかの実装形態では、候補タスクは、たとえば、特定のスロットが埋められるとともにその情報を(たとえば、所定のフォーマットで)人間などのサードパーティに提示する、特定の形式の中にユーザによって提供される収集情報を含んでよい。いくつかの実装形態では、候補タスクは、追加または代替として、必ずしもサードパーティへのサブミッションを必要とするとは限らないタスクを含んでよく、その場合、タスクスイッチボード134は情報をリモートコンピューティングデバイスにルーティングしなくてよい。
【００５４】
まだ決定されていないタスクにカスタムコマンドをマッピングするための新たな対話ルーチンをユーザが作成することを仮定する。様々な実装形態では、タスクスイッチボード134(または、自動アシスタント120の1つもしくは複数の構成要素)は、新たな対話ルーチンをタスクインデックス136の中の複数の候補タスクと比較し得る。たとえば、新たな対話ルーチンに関連する1つまたは複数のユーザ定義のスロットが、タスクインデックス136の中の候補タスクに関連するスロットと比較されてよい。追加または代替として、新たな対話ルーチンのスロットを埋めるために使用され得る1つまたは複数のユーザ列挙の値が、複数の候補タスクのうちの1つまたは複数に関連するスロットを埋めるために使用され得る列挙された値と比較されてよい。追加または代替として、マッピングされるべきコマンド、ユーザの呼出しの中に含まれる1つまたは複数の他のトリガワードなどの、新たな対話ルーチンの他の側面が、複数の候補タスクの様々な属性と比較されてよい。比較することに基づいて、コマンドがマッピングされるべき先のタスクが複数の候補タスクから選択され得る。
【００５５】
コマンド「私はタコスを注文したい。」を用いて呼び出される新たな対話ルーチンをユーザが作成することを仮定する。決定されるべきメキシコ風レストランに飲食物注文を出すことを、この新たな対話ルーチンが意図することをさらに仮定する(おそらくは、ユーザは、ユーザを最良の選択まで案内するために自動アシスタント120に依拠している)。ユーザは、たとえば、自動アシスタント120との自然言語対話に関与することを通して、シェルタイプ(たとえば、クランキー、ソフト、小麦粉、トウモロコシなど)、肉の選択、チーズのタイプ、ソースのタイプ、トッピングなどの、このタスクに関連する様々なスロットを規定し得る。いくつかの実装形態では、これらのスロットは、どのサードパーティのエージェントが最良適合するのかを決定するために、既存のサードパーティの飲食物注文アプリケーション(すなわち、サードパーティのエージェント)の埋められるべきスロットと比較されてよい。メキシコ風の飲食物を求める注文を受信するように構成されている複数のサードパーティのエージェントがあり得る。たとえば、第1のソフトウェアエージェントは、(たとえば、原料をカスタマイズするためのオプションを有しない)所定のメニュー項目に対する注文を受け付けることがある。第2のソフトウェアエージェントは、カスタマイズされたタコス注文を受け付けることがあり、したがって、トッピング、シェルタイプなどのスロットに関連し得る。その関連するスロットを含む新たなタコス注文対話ルーチンが、第1および第2のソフトウェアエージェントと比較されてよい。第2のソフトウェアエージェントが、新たな対話ルーチンの中でユーザによって規定されたものとより密に整合するスロットを有するので、コマンド「私はタコスを注文したい」(または、構文的/意味論的に十分に類似の発話)を用いてマッピングするために、たとえば、タスクスイッチボード134によって、第2のソフトウェアエージェントが選択されてよい。
【００５６】
対話ルーチンが、タスクが完了されるために埋められることが必要とされる1つまたは複数のスロットを規定するとき、対話ルーチンを最初に呼び出すときにユーザがこれらのスロットを事前に埋めることは必要とされない。それとは反対に、様々な実装形態では、ユーザが対話ルーチンを呼び出すとき、呼出し中に必須スロットに対する値をユーザが提供しない限りにおいて、自動アシスタント120は、たとえば、自然言語出力として、ユーザにこれらの値を要請する(たとえば、可聴式の、視覚式の)出力を提供させ得る。たとえば、上のタコス注文対話ルーチンを用いて、ユーザが発話「私はタコスを注文したい」を後で提供することを仮定する。この対話ルーチンが、埋められることが必要とされるスロットを有するので、自動アシスタント120は、欠けている任意のスロット(たとえば、シェルタイプ、トッピング、肉など)の中を埋めるための値をユーザに求めることによって応答し得る。一方、いくつかの実装形態では、ユーザは、対話ルーチンを呼び出すときにスロットを事前に埋めることができる。ユーザがフレーズ「私はハードシェル付きのいくつかの魚のタコスを注文したい」を発話することを仮定する。この例では、シェルタイプおよび肉に対するスロットは、すでにそれぞれの値「ハードシェル」および「魚」で埋められている。したがって、自動アシスタント120は、トッピングなどの欠けている任意のスロット値しかユーザに求めなくてよい。すべての必須スロットが値で埋められると、いくつかの実装形態では、タスクスイッチボード134はタスクを実行させるためのアクションをとってよい。
【００５７】
図2は、ユーザによって提供される自由形式自然言語入力(図2および他の場所における「FFNLI」)が対話ルーチンを呼び出すためにどのように使用され得るのか、および対話ルーチンを実施することの一部として自動アシスタント120によって収集されたデータがタスクの遂行のために様々な構成要素にどのように伝搬され得るのかという一例を示す。ユーザは、話された発話に対してタイプされて、または話された発話として、FFNLIを自動アシスタント120に(人間対コンピュータの対話セッションの1つまたは複数の順番を介して)提供する。自動アシスタント120は、たとえば、自然言語プロセッサ122(図2に示さず)および/または対話状態トラッカー124(やはり図2に示さず)を介して、FFNLIを解釈および構文解析して、ユーザ意図、埋められるべき1つまたは複数のスロット、スロットを埋めるために使用されるべき1つまたは複数の値などの、様々なセマンティック情報にする。
【００５８】
自動アシスタント120は、たとえば、対話マネージャ126(図2に示さず)を介して、ユーザおよびタスクによって提供されたFFNLIの中に含まれるコマンド間のマッピングを含む対話ルーチンを識別するために、対話ルーチンエンジン130と協議し得る。いくつかの実装形態では、対話ルーチンエンジン130は、ユーザによって操作されるコンピューティングデバイスのローカル対話ルーチンインデックス113、またはグローバル対話ルーチンインデックス132の一方または両方と協議し得る。自動アシスタント120が、整合する対話ルーチン(たとえば、ユーザのFFNLIの中に含まれるコマンドに意味論的/構文的に最も類似の呼出しコマンドを含む対話ルーチン)を選択すると、必要な場合、自動アシスタント120は、対話ルーチン用の埋められていない任意の必須スロットを埋めるための値をユーザに求めてよい。
【００５９】
すべての必要なスロットが埋められると、自動アシスタント120は、スロットを埋めるために使用される少なくとも値を示すデータをタスクスイッチボード134に提供し得る。場合によっては、データはまた、スロット自体、および/またはユーザのコマンドにマッピングされている1つまたは複数のタスクを識別し得る。タスクスイッチボード134は、次いで、タスクの実行を容易にするために、本明細書で「サービス」と呼ばれるものを選択し得る。たとえば、図2において、サービスは、公衆交換電話網(「PSTN」)サービス240、SMSおよびMMSメッセージを処理するためのサービス242、電子メールサービス244、ならびに1つまたは複数のサードパーティのソフトウェアエージェント246を含む。楕円によって示すように、任意の他の数の追加のサービスがタスクスイッチボード134にとって利用可能であってもなくてもよい。これらのサービスは、呼び出された対話ルーチンを示すデータ、すなわち簡単に「タスク要求」を、1つまたは複数のリモートコンピューティングデバイスにルーティングするために使用され得る。
【００６０】
たとえば、PSTNサービス240は、(任意の必須スロットを埋めるための値を含む)呼び出された対話ルーチンを示すデータを受信するように構成されてよく、そのデータをサードパーティのクライアントデバイス248に提供し得る。このシナリオでは、サードパーティのクライアントデバイス248は、セルラーフォン、従来型電話、ボイスオーバーIP(「VOI」)電話、電話をかける/受けるように構成されたコンピューティングデバイスなどの、電話呼を受信するように構成されているコンピューティングデバイスの形態をとり得る。いくつかの実装形態では、そのようなサードパーティのクライアントデバイス248に提供される情報は、たとえば、(たとえば、自然言語生成器128を介して)自動アシスタント120によって、かつ/またはPSTNサービス240によって生成される、自然言語出力を含んでよい。この自然言語出力は、たとえば、実行されるべきタスクおよびタスクに関連するパラメータ(すなわち、必須スロットの値)を搬送するコンピュータ生成の発話を含んでよく、かつ/またはユーザのタスクの遂行を可能にするように設計される限定された対話に受信者が関与すること(たとえば、ロボコール(robocall)によく似たもの)を可能にし得る。この自然言語出力は、たとえば、サードパーティのコンピューティングデバイス248によって、人間知覚可能出力250として、たとえば、可聴式に、視覚式に、ハプティックフィードバックなどとして、提示され得る。
【００６１】
ピザを求める注文を出すために対話ルーチンが作成されることを仮定する。対話ルーチンに対して(たとえば、ユーザによって、またはタスクスイッチボード134によって)識別されるタスクが、それ自体のサードパーティのソフトウェアエージェントがない特定のピザ店へのユーザのピザ注文に提供されるべきであることを、さらに仮定する。いくつかのそのような実装形態では、対話ルーチンの呼出しに応答して、PSTNサービス240は、特定のピザ店における電話に電話をかけてよい。特定のピザ店における従業員が電話に答えると、PSTNサービス240は、ユーザが対話ルーチンを呼び出したときにユーザによって指定されたクラストタイプおよびトッピングを有するピザをユーザが注文したがっていることをピザ店従業員に通知する、自動(たとえば、IVR)対話を開始し得る。いくつかの実装形態では、ピザ店従業員は、たとえば、「1」を押すこと、口頭の確認を行うことなどによって、ピザ店がユーザの注文を遂行することを確認するように、依頼され得る。この確認は受け取られると、たとえば、PSTNサービス240に提供されてよく、PSTNサービス240は、(たとえば、タスクスイッチボード134を介して)自動アシスタント120に確認を転送し得、自動アシスタント120は、次いで、(たとえば、「あなたのピザは準備中です。」などの可聴式および/または視覚式の自然言語出力を使用して)ピザが準備中であることをユーザに通知し得る。いくつかの実装形態では、ピザ店従業員は、対話ルーチンを呼び出すときにユーザが指定していないことがある追加の情報(たとえば、対話ルーチンの作成中に指定されなかったスロット)を要求することができる場合がある。
【００６２】
SMS/MMSサービス242が同様の方式で使用され得る。様々な実装形態では、SMS/MMSサービス242には、1つまたは複数のスロット/値などの、呼び出された対話ルーチンを示すデータが、たとえば、タスクスイッチボード134によって提供され得る。このデータに基づいて、SMS/MMSサービス242は、様々なフォーマット(たとえば、SMS、MMSなど)でテキストメッセージを生成してよく、今回もスマートフォンまたは別の類似のデバイスであってよいサードパーティのクライアントデバイス248へテキストメッセージを送信してよい。サードパーティのクライアントデバイス248を操作する人物(たとえば、ピザショップ従業員)は、次いで、人間知覚可能出力250として、テキストメッセージを消費(たとえば、それを読む、声に出してそれを読み上げるなど)し得る。いくつかの実装形態では、テキストメッセージは、「この注文を遂行できる場合は「1」で応答してください。できない場合は「2」で応答してください。」などの、その人物が応答を行うことを要求してよい。このようにして、PTSNサービス240を用いて上記で説明した例と同様に、第2のユーザが呼び出された対話ルーチンに関連するタスクを遂行する助けとなり得るために、対話ルーチンを呼び出す第1のユーザが、サードパーティのデバイス248を操作する第2のユーザと非同期的にデータを交換することが可能である。電子メールサービス244が、電子メールを生成および/またはサードパーティのコンピューティングデバイス248と交換するために、IMAP、POP、SMTPなどの電子メール関連通信プロトコルを利用することを除いて、電子メールサービス244はSMS/MMSサービス242と同様に動作し得る。
【００６３】
サービス240〜244およびタスクスイッチボード134は、相互作用され得る複雑なソフトウェアサービスを実施するためのサードパーティの要件を低減しながら、サードパーティに関与するための対話ルーチンをユーザが作成することを可能にする。しかしながら、少なくともいくつかのサードパーティは、たとえば、それらの遠隔のユーザによって従事させられる自動アシスタント120を介して、自動的に遠隔のユーザと相互作用するように構成される、サードパーティのソフトウェアエージェント246を構築することおよび/または構築する能力を有することを好む場合がある。したがって、様々な実装形態では、これらのサードパーティのエージェント246と整合され得る対話ルーチンをユーザが作成できるように、1つまたは複数のサードパーティのソフトウェアエージェント246は、自動アシスタント120および/またはタスクスイッチボード134と相互作用するように構成され得る。
【００６４】
スロット、列挙された潜在的なスロット値、他の情報などに基づいて、特定のサードパーティのエージェント246に(上記で説明したように)整合される対話ルーチンをユーザが作成することを、仮定する。呼び出されると、対話ルーチンは、ユーザ提供のスロット値を含む、対話ルーチンを示すデータを自動アシスタント120にタスクスイッチボード134へ送らせてよい。タスクスイッチボード134は、次に、整合するサードパーティのソフトウェアエージェント246にこのデータを提供し得る。いくつかの実装形態では、サードパーティのソフトウェアエージェント246は、対話ルーチンに関連するタスクを実行してよく、結果(たとえば、成功/失敗メッセージ、自然言語出力など)を、たとえば、タスクスイッチボード134に戻してよい。
【００６５】
サードパーティのエージェント246から直接自動アシスタント120までの矢印によって示すように、いくつかの実装形態では、サードパーティのソフトウェアエージェント246は、自動アシスタント120と直接インターフェースし得る。たとえば、いくつかの実装形態では、サードパーティのソフトウェアエージェント246は、たとえば、可聴式および/または視覚式の出力として、対話ルーチンを呼び出したユーザに次に提示される自然言語出力を、自動アシスタント120が、たとえば、自然言語生成器128を介して生成することを可能にするデータ(たとえば、状態データ)を、自動アシスタント120に提供してよい。追加または代替として、サードパーティのソフトウェアエージェント246は、次に自動アシスタント120に提供されるそれ自体の自然言語出力を生成してよく、自動アシスタント120は、自然言語出力をユーザに出力する。
【００６６】
図2における様々な矢印のうちの他のものによって示すように、上述の例は限定的であることは意図されない。たとえば、いくつかの実装形態では、タスクスイッチボード134は、呼び出された対話ルーチンを示すデータを1つまたは複数のサービス240〜244に提供してよく、これらのサービスは、次に、このデータ(または、修正されたデータ)を1つまたは複数のサードパーティのソフトウェアエージェント246に提供してよい。これらのサードパーティのソフトウェアエージェント246のうちのいくつかは、たとえば、テキストメッセージまたは電子メールを受信し、タスクスイッチボード134にかつ前進して自動アシスタント120に戻され得る応答を、自動的に生成するように構成され得る。
【００６７】
本開示の選択される態様を用いて構成される対話ルーチンは、クライアントデバイス106からリモートに実行/遂行されるタスクに限定されない。それとは反対に、いくつかの実装形態では、ユーザは、様々なタスクをローカルに実行する対話ルーチンを作成するために、自動アシスタント120を従事させてよい。非限定的な例として、ユーザは、単一のコマンドを使用してスマートフォンなどのモバイルデバイスの複数の設定を一度に構成する対話ルーチンを作成することができる。たとえば、ユーザは、Wi-Fi設定、Bluetooth(登録商標)設定、およびホットスポット設定をすべて一度に入力として受信するとともに、それに応じてこれらの設定を変更する、対話ルーチンを作成することができる。別の例として、ユーザは、ユーザが「私は遅刻しそうです。」と話すことを用いて呼び出される対話ルーチンを作成することができる。このコマンドが自動アシスタント120に、ユーザがいくつかの目的地に到着するのに遅刻しそうであることを、たとえば、テキストメッセージ、電子メールなどを使用して、ユーザの配偶者などの別の人物に通知させるべきであることを、ユーザは自動アシスタント120に教えてよい。場合によっては、そのような対話ルーチン用のスロットは、ユーザの所期の目的地にユーザが到着する予測時刻を含んでよく、そうした予測時刻は、ユーザによって埋められてよく、または位置座標データ、カレンダーデータなどに基づいて、たとえば、自動アシスタント120によって自動的に予測されてよい。
【００６８】
いくつかの実装形態では、ユーザは、特定のスロットの中の事前選択されたスロット値を使用するように対話ルーチンを構成できる場合があり、その結果、ユーザは、これらのスロット値を提供する必要がなく、ユーザがそうしたスロット値を提供しないときにそれらの値を求められない。ピザ注文対話ルーチンをユーザが作成することを仮定する。ユーザが常に薄いクラストを好むことをさらに仮定する。様々な実装形態では、この特定の対話ルーチンが呼び出されると、ユーザが別段に指定しない限りスロット「クラストタイプ」がデフォルト値「薄いクラスト」を用いて自動的にポピュレートされるべきであることを、ユーザは自動アシスタント120に教えてよい。そうすれば、ユーザが時々異なるクラストタイプを注文することを希望し(たとえば、厚いクラストを好む来客をユーザが有し)、たとえば、「やあ、アシスタント、私にハンドトス(hand-tossed)のピザを注文してください。」となる場合、ユーザが異なるタイプのクラストを特に要求し得ることを除いて、ユーザは対話ルーチンを通常通り呼び出すことができる。ユーザが単に「やあ、アシスタント、私にピザを注文してください。」と話したのであれば、自動アシスタント120は、薄いクラストを想定することがあり、他の必須スロット値をユーザに求めることがある。いくつかの実装形態では、自動アシスタント120は、ユーザがどのスロット値を好むのかを経時的に「学習」してよい。その後、ユーザが、学習されたそれらのスロット値を明示的に提供することなく対話ルーチンを呼び出すと、たとえば、所定の回数よりも多く、または対話ルーチンを呼び出すことの特定のしきい値頻度よりも多く、ユーザがそれらのスロット値を提供している場合、自動アシスタント120は、それらの値を想定(または、それらのスロット値を確認するようにユーザに依頼)してよい。
【００６９】
図3は、様々な実装形態による、ユーザがピザ注文対話ルーチンを呼び出すと行われ得る1つの例示的なプロセスフローを示す。301において、ユーザは、たとえば、自動アシスタントクライアント118に、呼出しフレーズ「薄いクラストのピザを注文してください。」を発話することによってピザ注文対話ルーチンを呼び出す。302において、自動アシスタントクライアント118が、たとえば、再注文、文字化されたテキストセグメント、次元数が低減された埋込みなどとして、クラウドベースの自動アシスタント構成要素(「CBAAC:cloud-based automated assistant component」)119に呼出しフレーズを提供する。303において、自然言語プロセッサ122、対話状態トラッカー124、対話マネージャ126などの、CBAAC119の様々な構成要素は、「ピザ」という対象物および「薄いクラスト」という属性(すなわち、「スロット値」)などの情報を抽出するために、対話コンテキスト、動詞/名詞辞書、標準発話、類義語辞書(たとえば、シソーラス)などの様々な手がかりを使用して、上記で説明したように要求を処理し得る。
【００７０】
304において、抽出されたこのデータはタスクスイッチボード134に提供され得る。いくつかの実装形態では、305において、タスクスイッチボード134は、たとえば、303において抽出されるとともに304において受信されたデータに基づいて、ユーザの要求に整合する対話ルーチンを識別するために、対話ルーチンエンジン130と協議し得る。図3に示すように、この例では、識別される対話ルーチンは、「注文する」という(それ自体がスロットであってよい)アクション、「ピザ」という(場合によっては、やはりスロットであってよい)対象物、「クラスト」という(必須である)属性(すなわち、スロット)、「トッピング」という(やはり必須である)別の属性(すなわち、スロット)、および「注文_サービス」といういわゆる「実施者」を含む。ユーザが対話ルーチンをどのように作成したのか、および/または対話ルーチンが特定のタスク(たとえば、特定のサードパーティのソフトウェアエージェント246)に整合されたかどうかに応じて、「実施者」は、たとえば、図2のサービス240〜244および/または1つもしくは複数のサードパーティのソフトウェアエージェント246のいずれかであってよい。
【００７１】
306において、たとえば、タスクスイッチボード134によって、対話ルーチン用の1つまたは複数の必須スロットがまだ値で埋められていないことが決定され得る。したがって、タスクスイッチボード134は、1つまたは複数のスロットが依然としてスロット値で埋められるべきであることを、自動アシスタント120(たとえば、図3における自動アシスタントクライアント118、ただし、1つまたは複数のCBAAC119などの別の構成要素であってもよい)などの構成要素に通知し得る。いくつかの実装形態では、タスクスイッチボード134は、埋められていないこれらのスロットをユーザに求める必要な自然言語出力(たとえば、「どんなトッピングですか」)を生成してよく、自動アシスタントクライアント118は、たとえば、307において、単にこの自然言語出力をユーザに提供してよい。他の実装形態では、自動アシスタントクライアント118に提供されるデータは、欠けている情報の通知を与えてよく、自動アシスタントクライアント118は、欠けているスロット値をユーザに求めるためにユーザに提示される自然言語出力を生成するために、CBAAC119の1つまたは複数の構成要素に関与することがある。
【００７２】
簡潔および完全性のために図3に示さないが、ユーザ提供のスロット値がタスクスイッチボード134に戻されてよい。308において、すべての必須スロットがユーザ提供のスロット値で埋められると、タスクスイッチボード134は、次いで、完全なタスクを定式化することが可能であり得る。この完全なタスクは、上述のように、1つまたは複数のサービス240〜244、1つまたは複数のサードパーティのソフトウェアエージェント246などであってよい、適切な実施者350に、たとえば、タスクスイッチボード134によって提供されてよい。
【００７３】
図4は、本明細書で開示する実装形態による例示的な方法400を示すフローチャートである。便宜上、フローチャートの動作は、動作を実行するシステムを参照しながら説明される。このシステムは、自動アシスタント120を実施するコンピューティングシステムの1つまたは複数の構成要素などの、様々なコンピュータシステムの様々な構成要素を含んでよい。その上、方法400の動作は特定の順序で示されるが、このことは限定的であることは意図されない。1つまたは複数の動作が、並び替えられてよく、省略されてよく、または追加されてもよい。
【００７４】
ブロック402において、システムは、ユーザからの第1の自由形式自然言語入力を、たとえば、クライアントデバイス106の1つまたは複数の入力構成要素において受信し得る。様々な実装形態では、第1の自由形式自然言語入力は、タスクを実行するためのコマンドを含んでよい。動作例として、話された発話「私はピザが欲しい。」をユーザが提供することを仮定する。
【００７５】
ブロック404において、システムは、自由形式自然言語入力に対してセマンティック処理を実行し得る。たとえば、1つまたは複数のCBAAC119は、ユーザの発話(または、次元数が低減されたそれらの埋込み)を、1つまたは複数の標準コマンドと、様々な辞書などと、比較し得る。自然言語プロセッサ122は、上記で説明した分析の様々な態様を、エンティティを識別するために実行すること、同一指示解決を実行すること、音声の部分にラベル付けすることなどを行ってよい。ブロック406において、システムは、自動アシスタント120がコマンドを解釈できないと、ブロック404のセマンティック処理に基づいて判定し得る。いくつかの実装形態では、ブロック408において、システムは、自然言語出力「私はどのようにピザを注文するのかを知りません。」を出力することなどの、コマンドについてユーザに明確化を要請する出力を、クライアントデバイス106の1つまたは複数の出力構成要素において提供し得る。
【００７６】
ブロック410において、システムは、ユーザからの第2の自由形式自然言語入力を入力構成要素のうちの1つまたは複数において受信し得る。様々な実装形態では、第2の自由形式自然言語入力は、タスクを遂行するために値で埋められることが必要とされる1つまたは複数のスロットを識別し得る。たとえば、ユーザは、「ピザを注文するためには、クラストのタイプおよびトッピングのリストを知る必要があります。」などの自然言語入力を提供し得る。この特定の自由形式自然言語入力は、2つのスロット、すなわち、クラストタイプ、および(何個のトッピングをユーザが望むのかに応じて、技術的に任意の数のスロットであり得る)トッピングのリストを識別する。
【００７７】
上記について言及したように、いくつかの実装形態では、ユーザは、対話ルーチンの所与のスロットに対する潜在的なスロット値または候補スロット値のリストを列挙できる場合がある。いくつかの実装形態では、このことは、事実上、列挙リストからの1つまたは複数の値にそのスロットを制約することがある。場合によっては、スロットに対する可能な値を列挙することは、自動アシスタント120が、どのスロットが特定の値で埋められるべきであるのかを決定すること、および/または提供されたスロット値が無効であることを決定することを、可能にし得る。たとえば、フレーズ「私に厚いクラスト、トマト、およびタイヤ付きのピザを注文してください。」を用いてユーザが対話ルーチンを呼び出すことを仮定する。自動アシスタント120は、「厚いクラスト」が潜在的な値の列挙リストのうちの1つであることに基づいて、「厚いクラスト」をスロット「クラストタイプ」に整合させ得る。同じことが「トマト」およびスロット「トッピング」に従う。しかしながら、「タイヤ」は潜在的なトッピングの列挙リストの中にある可能性が低いので、自動アシスタント120は、指定されたトッピング、すなわちタイヤに対する修正をユーザに依頼してよい。他の実装形態では、ユーザ提供の列挙リストは、たとえば、対話ルーチンの将来の呼出し中にユーザに提供されるべき提案として、自動アシスタント120によって使用され得る非限定的かつ潜在的なスロット値を単に含んでよい。このことは、可能なピザトッピングのリストが潜在的に大きいピザ注文などのコンテキストにおいて有益であり得、ピザ確定にわたってかつ/または経時的に、大幅に変化し得る(たとえば、ピザショップは、どんな農産物が季節に合っているのかに応じて、その年の異なる時節において異なるトッピングを勧めることがある)。
【００７８】
動作例を続けると、自動アシスタント120は、「可能なピザクラストタイプは何ですか。」または「可能なトッピングは何ですか。」などの質問を尋ねてよい。ユーザは、考えられる例の列挙リストを提供すること、ならびに列挙リストが制約的である(すなわち、列挙されたものの外側のスロット値が許されない)ことを意図されているのか、それとも単に例であるのかを示すことによって、そのような各質問に応答し得る。場合によっては、ユーザは、自動アシスタント120が制約されず、ユーザが提供するいかなるスロット値を用いてもそのスロットをポピュレートできるように、所与のスロットが特定の値に限定されないことを応答し得る。
【００７９】
図4に戻ると、ユーザが、任意の必須/随意のスロットを規定すること、および/または潜在的なスロット値のリストを列挙することを完了していると、ブロック412において、システム、たとえば、対話ルーチンエンジン130は、ユーザによって提供されるコマンドと、タスクとの間のマッピングを含む、対話ルーチンを記憶し得る。作成される対話ルーチンは、1つまたは複数のスロットを埋めるための1つまたは複数の値を入力として受け付け、たとえば、前に説明したようにリモートコンピューティングデバイスにおいて、対話ルーチンに関連するタスクを遂行させるように構成され得る。対話ルーチンは様々なフォーマットで記憶されてよく、どのフォーマットが使用されるのかは本開示のコンテキストでは重要でない。
【００８０】
いくつかの実装形態では、ユーザが話した何かを自動アシスタント120が最初に解釈できないというよりむしろ、特に自動アシスタント120が対話ルーチンを生成することをユーザが明示的に要求する場合に、動作402〜408などの図4の様々な動作は省略されてよい。たとえば、ユーザは対話ルーチンの作成をトリガするために、単に自動アシスタント120に以下のようなフレーズ、すなわち「やあ、アシスタント、私は君に新しい手品を教えたい」、またはその趣旨での何かを話してよい。そのことは、たとえば、ブロック410において開始する、方法400の部分をトリガし得る。当然、多くのユーザは、自動アシスタント120が対話ルーチンを学習することが可能であると知らないことがある。したがって、自動アシスタント120が解釈できないコマンドまたは要求をユーザが発するとき、自動アシスタント120がブロック402〜408に関して上記で説明したようなプロセスを通じてユーザを案内することが有益であり得る。
【００８１】
その後のある時、ブロック414において、システムは、ユーザからの後続の自由形式自然言語入力を同じクライアントデバイス106または異なるクライアントデバイス106(たとえば、クライアントデバイスの同じ協調エコシステムの別のクライアントデバイス)の1つまたは複数の入力構成要素において受信し得る。後続の自由形式自然言語入力は、ブロック412において記憶されたマッピングに基づいて対話ルーチンを呼び出し得る、コマンド、またはそれらのいくつかのシンタクティックおよび/もしくはセマンティック相違を含んでよい。
【００８２】
ブロック416において、システムは、対話ルーチンに関連するタスクを遂行するために値で埋められることが必要とされる1つまたは複数のスロットを埋めるために使用されるべき1つまたは複数の値を、後続の自由形式自然言語入力または(たとえば、対話ルーチンの呼出しにおいて1つまたは複数の必須スロット値を提供しないユーザに要請された)追加の自由形式自然言語入力に基づいて識別し得る。たとえば、ユーザが、任意の必須スロットに対する値を提供することなく単に対話ルーチンを呼び出す場合、自動アシスタント120は、たとえば、1つずつ、ひとまとまりなどで、ユーザにスロット値を要請してよい。
【００８３】
いくつかの実装形態では、ブロック418において、システムは、たとえば、タスクスイッチボード134、および/またはサービス240〜244のうちの1つまたは複数を介して、1つまたは複数のスロットを埋めるために使用されるべき少なくとも1つまたは複数の値を示すデータを、たとえば、サードパーティのクライアントデバイス248などのリモートコンピューティングデバイスへ、かつ/またはサードパーティのソフトウェアエージェント246へ、送信し得る。様々な実装形態では、送信することは、タスクをリモートコンピューティングデバイスに遂行させ得る。たとえば、リモートコンピューティングデバイスがサードパーティのソフトウェアエージェント246を動作させる場合、たとえば、タスクスイッチボード134からのデータの受信は、ユーザ提供のスロット値を使用してタスクを遂行するようにサードパーティのソフトウェアエージェント246をトリガし得る。
【００８４】
本明細書で説明する技法は、様々な異なるサードパーティのソフトウェアアプリケーション(たとえば、サードパーティのソフトウェアエージェント)によって実行され得るタスクを効果的に「一緒に接着」するために使用され得る。事実上、複数の当事者によって複数のタスクを遂行させる単一の対話ルーチンを作成することがまったく可能である。たとえば、ユーザは、「やあ、アシスタント、私は私の妻を夕食と映画に連れて行きたい」などのフレーズを用いて呼び出される対話ルーチンを作成することができる。ユーザは、夕食の予約を行うことおよび映画チケットを購入することなどの複数のタスクに関連するスロットを、単一の対話ルーチンの中に規定し得る。夕食の予約を行うためのスロットは、たとえば、(ユーザが特定のレストランをすでに選んでいることを想定して)レストラン、(ユーザがまだレストランを選んでいない場合は)料理タイプ、価格範囲、時間範囲、批評範囲(たとえば、三つ星を超える)などを含んでよい。映画チケットを購入するためのスロットは、たとえば、映画、映画館、時間範囲、価格範囲などを含んでよい。その後、この「夕食と映画」予約をユーザが呼び出すと、様々なスロットを埋めるためのスロット値をユーザが事前に提供しない限りにおいて、自動アシスタント120はユーザにそのような値を要請し得る。自動アシスタントが、対話ルーチンのタスクごとに、すべての必須スロットに対するスロット値を有すると、自動アシスタント120は、タスクの各々を遂行させるために、前に説明したように様々なリモートコンピューティングデバイスへデータを送信し得る。いくつかの実装形態では、自動アシスタント120は、どのタスクが遂行されるのかおよびどれが依然として保留中であるのかに関して、ユーザに知らせ続けてよい。いくつかの実装形態では、自動アシスタント120は、すべてのタスクが遂行されると(または、タスクのうちの1つもしくは複数が遂行され得ない場合)、ユーザに通知し得る。
【００８５】
場合によっては(複数のタスクが単一の会話式予約の中で一緒に接着されるかどうかにかかわらず)、自動アシスタント120は、潜在的なスロット値(たとえば、映画館における映画、上映開始時間、利用可能な夕食予約など)を求めて最初に検索し、次いで、たとえば、提案としてまたは考えられる例の列挙リストとして、これらの潜在的なスロット値をユーザに提示することによって、特定のスロット値をユーザに求めてよい。いくつかの実装形態では、自動アシスタント120は、そのようなリストを絞り込むために、ユーザの選好、過去のユーザ活動などの、ユーザの様々な側面を利用し得る。たとえば、ユーザ(および/またはユーザの配偶者)が特定のタイプ(たとえば、高く批評されるもの、コメディ、ホラー、アクション、ドラマなど)の映画を好む場合、自動アシスタント120は、潜在的なスロット値をユーザに提示する前にそれらのリストを絞り込んでよい。
【００８６】
自動アシスタント120は、特定のタスク(たとえば、製品を注文すること、予約を行うことなど)の遂行のために必要とされることがある支払いに関して、様々な手法をとり得る。いくつかの実装形態では、自動アシスタント120は、自動アシスタント120が、たとえば、必要に応じてサードパーティのソフトウェアエージェント246に提供し得る、ユーザ提供の支払い情報(たとえば、1つまたは複数のクレジットカード)へのアクセスを有してよい。いくつかの実装形態では、支払いを必要とするタスクを遂行するための対話ルーチンをユーザが作成すると、自動アシスタント120は、支払い情報を、かつ/またはユーザのプロファイルにすでに関連付けられた支払い情報を使用するための許諾を、ユーザに求めてよい。(1つまたは複数のスロット値を含む)呼び出された対話ルーチンを示すデータが、自然言語出力として出力されるべきサードパーティのコンピューティングデバイス(たとえば、248)に提供されるいくつかの実装形態では、ユーザの支払い情報も提供されてよく、または提供されなくてもよい。それが提供されない場合、たとえば、飲食物を注文するとき、飲食物ベンダーは、単に飲食物をユーザのドアまで配達するときに支払いをユーザに要求してよい。
【００８７】
いくつかの実装形態では、自動アシスタント120は、1つまたは複数のクライアントコンピューティングデバイス上で動作する1つまたは複数のアプリケーションとのユーザ関与を分析してパターンを検出することによって、新たな対話ルーチンを「学習」し得る。様々な実装形態では、自動アシスタント120は、たとえば、事前に既存の人間対コンピュータの対話中にまたは別のタイプの通知(たとえば、ポップアップカード、テキストメッセージなど)として、自然言語出力をユーザに提供してよく、そのことは、ユーザがアクション/タスクの通常実行されるシーケンスを口頭のコマンドに割り当てたいのかどうかをユーザに尋ね、事実上、ユーザが明示的にコマンドを求めることなく対話ルーチンを構築および推奨する。
【００８８】
一例として、ユーザが、(たとえば、レストランに関連する)単一の飲食物注文ウェブサイトを繰り返し訪問し、メニューに関連するウェブページを閲覧し、次いで、同じ飲食物注文ウェブサイトに関連する電話番号に電話をかけるためにユーザが操作する別個の電話アプリケーションをオープンすることを仮定する。自動アシスタント120は、このパターンを検出し得、ユーザへの推奨のための対話ルーチンを生成し得る。いくつかの実装形態では、自動アシスタント120は、対話ルーチンの中に組み込まれ得る潜在的なスロットおよび/または潜在的なスロット値に対して、メニューウェブページをかき寄せてよく、(自動アシスタント120が提案し得るか、またはユーザによって提供され得る)1つまたは複数のコマンドを飲食物注文タスクにマッピングしてよい。この事例では、飲食物注文タスクは、PSTN240に関して上記で説明したように、電話番号に電話をかけること、および自然言語メッセージ(たとえば、ロボコール)を飲食物注文ウェブサイトの従業員に出力することを含んでよい。
【００８９】
飲食物を注文する(または、一般に他のタスクを実行する)ためのアクションの他のシーケンスも検出され得る。たとえば、ユーザが、通常、飲食物を注文するためにサードパーティのクライアントアプリケーションをオープンすること、およびサードパーティのクライアントアプリケーションがGUIベースのアプリケーションであることを仮定する。自動アシスタント120は、これを検出してよく、たとえば、サードパーティのクライアントアプリケーションがサードパーティのソフトウェアエージェント(たとえば、246)とインターフェースすることを決定してよい。サードパーティのクライアントアプリケーションと相互作用することに加えて、このサードパーティのソフトウェアエージェント246は、自動アシスタントと相互作用するようにすでに構成されていることがある。そのようなシナリオでは、自動アシスタント120は、サードパーティのソフトウェアエージェント246と相互作用するための対話ルーチンを生成することができる。または、サードパーティのソフトウェアエージェント246が現在自動アシスタントと相互作用できないことを仮定する。いくつかの実装形態では、自動アシスタントは、注文ごとにどんな情報がサードパーティのクライアントアプリケーションによって提供されるのかを決定してよく、対話ルーチン用のスロットを生成するためにその情報を使用してよい。ユーザが対話ルーチンを後で呼び出すと、自動アシスタント120は、必須スロットを埋めてよく、次いで、これらのスロット/スロット値に基づいて、サードパーティのソフトウェアエージェント246と互換性のあるデータを生成してよい。
【００９０】
図5は、本明細書で説明する技法の1つまたは複数の態様を実行するために随意に利用され得る例示的なコンピューティングデバイス510のブロック図である。いくつかの実装形態では、クライアントコンピューティングデバイスおよび/または他の構成要素のうちの1つまたは複数は、例示的なコンピューティングデバイス510の1つまたは複数の構成要素を備えてよい。
【００９１】
コンピューティングデバイス510は、通常、バスサブシステム512を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ514を含む。これらの周辺デバイスは、たとえば、メモリサブシステム525およびファイル記憶サブシステム526を含む記憶サブシステム524、ユーザインターフェース出力デバイス520、ユーザインターフェース入力デバイス522、ならびにネットワークインターフェースサブシステム516を含んでよい。入出力デバイスは、コンピューティングデバイス510とのユーザ相互作用を可能にする。ネットワークインターフェースサブシステム516は、外部ネットワークへのインターフェースを提供し、他のコンピューティングデバイスの中の対応するインターフェースデバイスに結合される。
【００９２】
ユーザインターフェース入力デバイス522は、キーボード、マウス、トラックボール、タッチパッド、もしくはグラフィックスタブレットなどのポインティングデバイス、スキャナ、ディスプレイの中に組み込まれたタッチスクリーン、音声認識システム、マイクロフォンなどの音響入力デバイス、および/または他のタイプの入力デバイスを含んでよい。一般に、「入力デバイス」という用語の使用は、コンピューティングデバイス510の中または通信ネットワーク上に情報を入力するための、すべての可能なタイプのデバイスおよび方法を含むものとする。
【００９３】
ユーザインターフェース出力デバイス520は、表示サブシステム、プリンタ、ファックス機械、または音響出力デバイスなどの非視覚式表示を含んでよい。表示サブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、投影デバイス、または可視画像を作成するためのいくつかの他のメカニズムを含んでよい。表示サブシステムはまた、音響出力デバイスを介するような非視覚式表示を提供してもよい。一般に、「出力デバイス」という用語の使用は、コンピューティングデバイス510からユーザにまたは別の機械もしくはコンピューティングデバイスに情報を出力するための、すべての可能なタイプのデバイスおよび方法を含むものとする。
【００９４】
記憶サブシステム524は、本明細書で説明するモジュールの一部または全部の機能を提供するプログラミングおよびデータ構築体を記憶する。たとえば、記憶サブシステム524は、図4の方法の選択された態様を実行するための、同様に図1〜図3に示す様々な構成要素を実装するための、論理を含んでよい。
【００９５】
これらのソフトウェアモジュールは、一般に、プロセッサ514によって単独で、または他のプロセッサと組み合わせて実行される。記憶サブシステム524の中で使用されるメモリ525は、プログラム実行中の命令およびデータの記憶用のメインランダムアクセスメモリ(RAM)530、ならびに固定された命令がその中に記憶される読取り専用メモリ(ROM)532を含む、いくつかのメモリを含むことができる。ファイル記憶サブシステム526は、プログラムおよびデータファイルに対して永続的な記憶をもたらすことができ、ハードディスクドライブ、関連するリムーバブルメディアと一緒にフロッピーディスクドライブ、CD-ROMドライブ、オプティカルドライブ、またはリムーバブルメディアカートリッジを含んでよい。いくつかの実装形態の機能を実施するモジュールは、記憶サブシステム524の中の、またはプロセッサ514によってアクセス可能な他の機械の中の、ファイル記憶サブシステム526によって記憶され得る。
【００９６】
バスサブシステム512は、意図されるときにコンピューティングデバイス510の様々な構成要素およびサブシステムに互いに通信させるためのメカニズムを提供する。バスサブシステム512は単一のバスとして概略的に図示されるが、バスサブシステムの代替実装形態は複数のバスを使用してもよい。
【００９７】
コンピューティングデバイス510は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む、様々なタイプのものであり得る。コンピュータおよびネットワークの絶え間なく変化する性質に起因して、図5に示すコンピューティングデバイス510の説明は、いくつかの実装形態を示すための具体例として意図されるにすぎない。図5に示すコンピューティングデバイスよりも多数または少数の構成要素を有する、コンピューティングデバイス510の多くの他の構成が可能である。
【００９８】
本明細書で説明するいくつかの実装形態が、ユーザについての個人情報(たとえば、他の電子通信から抽出されたユーザデータ、ユーザのソーシャルネットワークについての情報、ユーザのロケーション、ユーザの時間、ユーザの生体情報、ならびにユーザの活動および人口統計学的情報、ユーザ間の関係など)を収集または使用し得る状況では、ユーザは、情報が収集されるかどうか、個人情報が記憶されるかどうか、個人情報が使用されるかどうか、ならびにユーザについて情報がどのように収集、記憶、および使用されるのかを制御するための、1つまたは複数の機会が提供される。すなわち、本明細書で説明するシステムおよび方法は、関連するユーザからのそのようにするための明示的な許可を受けているときのみ、ユーザ個人情報を収集、記憶、および/または使用する。
【００９９】
たとえば、ユーザには、プログラムまたは機能がプログラムまたは機能に関連するその特定のユーザまたは他のユーザについてのユーザ情報を収集するかどうかの、制御が提供される。情報が収集されるかどうかに関して、また情報のどの部分が収集されるべきであるのかに関して、許諾または許可を与えるために、個人情報が収集される各ユーザには、そのユーザに関連する情報収集の制御を可能にするための1つまたは複数のオプションが提示される。たとえば、ユーザには、通信ネットワークの1つまたは複数のそのような制御オプションが提供され得る。加えて、個人が識別できる情報が除去されるように、いくつかのデータは、記憶または使用される前に1つまたは複数の方法で処理されてよい。一例として、個人が識別できる情報が決定できないように、ユーザの識別情報が処理されてよい。別の例として、ユーザの特定のロケーションが決定できないように、ユーザの地理的ロケーションは、より大きな領域に一般化されてよい。
【０１００】
いくつかの実装形態が本明細書で説明および図示されているが、機能を実行および/もしくは結果を取得するための様々な他の手段および/もしくは構造、ならびに/または本明細書で説明する利点のうちの1つもしくは複数が利用されてよく、そのような変形および/または修正の各々は、本明細書で説明する実装形態の範囲内にあるものと見なされる。より一般的には、本明細書で説明するすべてのパラメータ、寸法、材料、および構成は、例であることが意図され、実際のパラメータ、寸法、材料、および/または構成は、本教示がそれに対して使用される1つまたは複数の特定の適用例に依存する。当業者は、本明細書で説明する特定の実装形態の多くの均等物を、せいぜい日常的な実験を使用して認識し、または確認することができる。したがって、上記の実装形態が例として提示されるにすぎないこと、ならびに添付の特許請求の範囲およびそれらの均等物の範囲内で、実装形態が、詳細に説明および請求される以外の別様に実践され得ることを理解されたい。本開示の実装形態は、本明細書で説明する各個々の特徴、システム、物品、材料、キット、および/または方法を対象とする。加えて、2つ以上のそのような特徴、システム、物品、材料、キット、および/または方法の任意の組合せは、そのような特徴、システム、物品、材料、キット、および/または方法が互いに矛盾しない場合、本開示の範囲内に含まれる。
【符号の説明】
【０１０１】
106  クライアントコンピューティングデバイス
107  メッセージ交換クライアント
110  ローカルエリアネットワークおよび/またはワイドエリアネットワーク
113  ローカル対話ルーチンインデックス
114  音声キャプチャ/TTS/STTモジュール
116  クラウドベースのTTSモジュール
117  クラウドベースのSTTモジュール
118  自動アシスタントクライアント
119  クラウドベースの自動アシスタント構成要素
120  自動アシスタント
122  自然言語プロセッサ
124  対話状態トラッカー
126  対話マネージャ
128  自然言語生成器
130  グローバル対話ルーチンエンジン
132  グローバル対話ルーチンインデックス
134  タスクスイッチボード
136  タスクインデックス
240  公衆交換電話網(「PSTN」)サービス
242  SMS/MMSサービス
244  電子メールサービス
246  サードパーティのソフトウェアエージェント
248  サードパーティのクライアントデバイス
250  人間知覚可能出力
350  実施者
510  コンピューティングデバイス
512  バスサブシステム
514  プロセッサ
516  ネットワークインターフェースサブシステム
520  ユーザインターフェース出力デバイス
522  ユーザインターフェース入力デバイス
524  記憶サブシステム
525  メモリサブシステム
526  ファイル記憶サブシステム
530  メインランダムアクセスメモリ(RAM)
532  読取り専用メモリ(ROM)
【図１】
0006888125.tif 000002
【図２】
0006888125.tif 000003
【図３】
0006888125.tif 000004
【図４】
0006888125.tif 000005
【図５】
0006888125.tif 000006