(57)【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサによって実施される方法であって、
ユーザに関するアシスタント対話データを識別するステップであって、前記アシスタント対話データが、自動アシスタントアプリケーションによって前記ユーザに対して実行された複数の履歴アクションを示し、前記履歴アクションの各々が、前記自動アシスタントアプリケーションと対話する1つまたは複数の自動アシスタントインターフェースを介して前記ユーザによって提供された対応するユーザインターフェース入力に応答して実行される、ステップと、
ユーザアクション埋め込みを生成するために、トレーニングされた機械学習モデルを使用して前記アシスタント対話データの少なくとも一部を処理するステップと、
複数のコマンドバンドルを識別するステップであって、前記コマンドバンドルの各々が、前記自動アシスタントアプリケーションによって実行され得る複数の対応する個別のアクションを識別するコマンドバンドルデータを備える、ステップと、
前記コマンドバンドルの各々について、
コマンドバンドル埋め込みを生成するために、前記トレーニングされた機械学習モデルまたは追加のトレーニングされた機械学習モデルを使用して前記コマンドバンドルデータの少なくとも一部を処理するステップと、
前記コマンドバンドルに関する類似性スコアを生成するステップであって、前記コマンドバンドルの各々について前記類似性スコアを生成するステップが、前記ユーザアクション埋め込みを前記コマンドバンドルに関する前記コマンドバンドル埋め込みと比較するステップを備える、ステップと、
前記複数のコマンドバンドルのうちの所与のコマンドバンドルを、前記所与のコマンドバンドルに関する前記類似性スコアに基づいて選択するステップと、
前記所与のコマンドバンドルを選択することに応答して、
前記所与のコマンドバンドルに関連する情報を、前記ユーザのコンピューティングデバイスを介して前記ユーザへ提示させるステップであって、
ユーザインターフェース入力に応答する前記ユーザに対する前記所与のコマンドバンドルの呼び出しが、前記自動アシスタントアプリケーションに前記所与のコマンドバンドルの前記対応する個別のアクションを実行させる、ステップと
を備える、方法。
【請求項２】
前記ユーザへ提示される前記所与のコマンドバンドルに関連する前記情報が、前記所与のコマンドバンドルに関する呼び出しフレーズを含み、
前記所与のコマンドバンドルに関連する前記情報を提示させるステップに続いて、前記自動アシスタントインターフェースのうちの1つを介して前記ユーザによって提供された自然言語のユーザインターフェース入力を受信するステップと、
前記自然言語のユーザインターフェース入力が前記呼び出しフレーズに一致することを判定するステップと、
前記自然言語のユーザインターフェース入力が前記呼び出しフレーズに一致すると判定することに応答して、
前記自動アシスタントアプリケーションによって、前記所与のコマンドバンドルの前記対応する個別のアクションを実行するステップと
をさらに備える、請求項1に記載の方法。
【請求項３】
前記所与のコマンドバンドルの前記対応する個別のアクションが、
前記自動アシスタントアプリケーションに、第1のコマンドを第1の電子デバイスへ送信させる第1の個別アクションと、
前記自動アシスタントアプリケーションに、第2のコマンドを第2の電子デバイスへ送信させる第2の個別アクションと
を備える、請求項1に記載の方法。
【請求項４】
前記所与のコマンドバンドルの前記対応する個別のアクションが、
前記自動アシスタントアプリケーションに、第1のコマンドを第1のエージェントへ送信させる第1の個別アクションと、
前記自動アシスタントアプリケーションに、第2のコマンドを第2のエージェントへ送信させる第2の個別アクションと
を備える、請求項1に記載の方法。
【請求項５】
前記類似性スコアに基づいて前記コマンドバンドルをランク付けするステップをさらに備え、
前記所与のコマンドバンドルを選択するステップが、前記コマンドバンドルのうちの他のものに対する前記所与のコマンドバンドルの前記ランク付けに基づく、請求項1に記載の方法。
【請求項６】
前記所与のコマンドバンドルに関連する前記情報を、前記ユーザのコンピューティングデバイスを介して前記ユーザへ提示させるステップが、前記所与のコマンドバンドルの前記ランク付けに基づく表示卓越性を用いて前記情報を提示させるステップを備える、請求項5に記載の方法。
【請求項７】
前記複数のコマンドバンドルを識別するステップが、
利用可能なコマンドバンドルのコーパスから、前記選択された複数のコマンドバンドルと前記ユーザのユーザ固有データとの間の一致に基づいて前記複数のコマンドバンドルを選択するステップを備える、請求項1に記載の方法。
【請求項８】
前記選択された複数のコマンドバンドルと前記ユーザのユーザ固有データとの間の一致に基づいて前記複数のコマンドバンドルを選択するステップが、
前記所与の利用可能なコマンドバンドルに必要な周辺デバイスを識別するステップと、
前記ユーザ固有データに基づいて、前記自動アシスタントアプリケーションが前記ユーザに関して前記必要な周辺デバイスにアクセスできないと判定するステップと
に基づいて、前記選択された複数のコマンドバンドルから、前記利用可能なコマンドバンドルのうちの所与の利用可能なコマンドバンドルを除外するステップを備える、請求項7に記載の方法。
【請求項９】
前記コマンドバンドルデータの前記少なくとも一部の前記処理が、トレーニングされた機械学習モデルを使用して実行される、請求項1に記載の方法。
【請求項１０】
前記コマンドバンドルの各々に関する前記類似性スコアを生成するステップが、前記ユーザアクション埋め込みと、前記コマンドバンドルに関する前記コマンドバンドル埋め込みとの間のユークリッド距離に基づいている、請求項1に記載の方法。
【請求項１１】
前記所与のコマンドバンドルが、前記対応するアクションのうちの少なくとも1つのアクションについて、未定義値を有する少なくとも1つのスロットを備え、
前記所与のコマンドバンドルに関連する前記情報を提示させることに応答して、前記所与のコマンドバンドルの選択を受信するステップと、
前記選択を受信することに応答して、前記スロットに関する値を解決するために、前記自動アシスタントアプリケーションを介して前記ユーザとダイアログを行うステップと、
前記所与のコマンドバンドルおよび前記ユーザに関して、前記スロットに関連付けて前記値を記憶するステップと
をさらに備える、請求項1に記載の方法。
【請求項１２】
前記所与のコマンドバンドルおよび前記ユーザに関して、前記スロットに関連付けて前記値を記憶するステップに続いて、
前記自動アシスタントインターフェースのうちの1つを介して前記ユーザによって提供された自然言語のユーザインターフェース入力を受信するステップと、
前記自然言語のユーザインターフェース入力が前記コマンドバンドルに関する呼び出しフレーズに一致することを判定するステップと、
前記自然言語のユーザインターフェース入力が前記呼び出しフレーズに一致すると判定することに応答して、前記記憶されている値に基づいて、
前記自動アシスタントアプリケーションによって、前記スロットに関する前記値を使用して前記少なくとも1つのアクションを実行することを含む、前記所与のコマンドバンドルの前記対応する個別のアクションを実行するステップと
をさらに備える、請求項11に記載の方法。
【請求項１３】
1つまたは複数のプロセッサによって実施される方法であって、
コマンドバンドルのコーパスを識別するステップであって、前記コマンドバンドルの各々が、自動アシスタントアプリケーションによって実行され得る複数の対応する個別のアクションを識別するコマンドバンドルデータを備える、ステップと、
ユーザに関する周辺デバイスデータを識別するステップであって、前記周辺デバイスデータが、自動アシスタントアプリケーションとペアにされた前記ユーザの周辺デバイスを示す、ステップと、
前記コマンドバンドルのコーパスから、前記ユーザに関する複数の候補コマンドバンドルを選択するステップであって、前記複数の候補コマンドバンドルを選択するステップが、前記周辺デバイスデータと前記コマンドバンドルの前記コマンドバンドルデータとの比較に基づいている、ステップと、
前記コマンドバンドルデータと、前記自動アシスタントアプリケーションによって前記ユーザに対して実行された複数の履歴アクションを示すアシスタント対話データとに基づいて、前記候補コマンドバンドルをランク付けするステップと、
前記ランク付けに基づいて、前記候補コマンドバンドルのうちの1つまたは複数に関連する情報を提示させるステップであって、前記情報が、前記ユーザのコンピューティングデバイスを介して前記ユーザへ提示される、ステップと
を備える、方法。
【請求項１４】
前記1つまたは複数のコマンドバンドルのうちの所与のコマンドバンドルに関連する前記情報が、前記所与のコマンドバンドルに関する呼び出しフレーズを含み、
前記1つまたは複数のコマンドバンドルに関連する前記情報を提示させるステップに続いて、前記自動アシスタントアプリケーションに関連付けられたアシスタントインターフェースを介して前記ユーザによって提供された自然言語のユーザインターフェース入力を受信するステップと、
前記自然言語のユーザインターフェース入力が前記呼び出しフレーズと一致することを判定するステップと、
前記自然言語のユーザインターフェース入力が前記呼び出しフレーズに一致すると判定することに応答して、
前記自動アシスタントアプリケーションによって、前記所与のコマンドバンドルの前記対応する個別のアクションを実行するステップと
をさらに備える、請求項13に記載の方法。
【請求項１５】
前記所与のコマンドバンドルの前記対応する個別のアクションが、
前記自動アシスタントアプリケーションに、第1のコマンドを第1の電子デバイスへ送信させる第1の個別アクションと、
前記自動アシスタントアプリケーションに、第2のコマンドを第2の電子デバイスへ送信させる第2の個別アクションと
を備える、請求項14に記載の方法。
【請求項１６】
1つまたは複数のプロセッサによって実施される方法であって、
コマンドバンドルのコーパスを識別するステップであって、前記コーパスの前記コマンドバンドルの各々が、自動アシスタントアプリケーションによって実行され得る複数の対応する個別アクションを識別するコマンドバンドルデータを備える、ステップと、
ユーザのデータを識別するステップと、
前記コマンドバンドルのコーパスから、前記ユーザに関する複数の候補コマンドバンドルを選択するステップであって、前記複数の候補コマンドバンドルを選択するステップが、前記ユーザの前記データと前記コマンドバンドルの前記コマンドバンドルデータとの比較に基づいている、ステップと、
前記ユーザに関するアシスタント対話データを識別するステップであって、前記アシスタント対話データが、自動アシスタントアプリケーションによって前記ユーザに対して実行された複数の履歴アクションを示し、前記履歴アクションの各々が、前記自動アシスタントアプリケーションと対話する1つまたは複数の自動アシスタントインターフェースを介して前記ユーザによって提供された対応するユーザインターフェース入力に応答して実行される、ステップと、
ユーザアクション埋め込みを生成するために、トレーニングされた機械学習モデルを使用して前記アシスタント対話データの少なくとも一部を処理するステップと、
前記複数の候補コマンドバンドルから、所与のコマンドバンドルを、前記ユーザアクション埋め込みと前記所与のコマンドバンドルに関するコマンドバンドル埋め込みとの比較に基づいて選択するステップと、
前記所与のコマンドバンドルを選択することに応答して、
前記所与のコマンドバンドルに関連する情報を、前記ユーザのコンピューティングデバイスを介して前記ユーザへ提示させるステップであって、
前記ユーザインターフェース入力に応答する前記ユーザに関する前記所与のコマンドバンドルの呼び出しが、前記自動アシスタントアプリケーションに前記所与のコマンドバンドルの前記対応する個別アクションを実行させる、ステップと
を備える、方法。
【請求項１７】
前記ユーザへ提示される前記所与のコマンドバンドルに関連する前記情報が、前記所与のコマンドバンドルに関する呼び出しフレーズを含み、
前記所与のコマンドバンドルに関連する前記情報を提示させるステップに続いて、前記自動アシスタントインターフェースを介して前記ユーザによって提供された自然言語のユーザインターフェース入力を受信するステップと、
前記自然言語のユーザインターフェース入力が前記呼び出しフレーズと一致することを判定するステップと、
前記自然言語のユーザインターフェース入力が前記呼び出しフレーズと一致すると判定することに応答して、
前記自動アシスタントアプリケーションによって、前記所与のコマンドバンドルの前記対応する個別アクションを実行するステップと
をさらに備える、請求項16に記載の方法。
【請求項１８】
前記所与のコマンドバンドルが、前記対応するアクションのうちの少なくとも1つのアクションについて、未定義値を有する少なくとも1つのスロットを備え、
前記所与のコマンドバンドルに関連する前記情報を提示させるステップに続いて、前記所与のコマンドバンドルの呼び出しを受信するステップと、
前記呼び出しを受信することに応答して、前記スロットに関する値を解決するために、前記自動アシスタントアプリケーションを介して前記ユーザとダイアログを行うステップと、
前記所与のコマンドバンドルおよび前記ユーザに関して、前記スロットに関連付けて前記値を記憶するステップと
をさらに備える、請求項16に記載の方法。
【請求項１９】
前記所与のコマンドバンドルおよびユーザに関して、前記スロットに関連付けて前記値を記憶するステップに続いて、
前記自動アシスタントインターフェースのうちの1つを介して前記ユーザによって提供された自然言語のユーザインターフェース入力を受信するステップと、
前記自然言語のユーザインターフェース入力が前記コマンドバンドルに関する呼び出しフレーズに一致することを判定するステップと、
前記自然言語のユーザインターフェース入力が前記呼び出しフレーズに一致すると判定することに応答して、前記記憶されている値に基づいて、
前記自動アシスタントアプリケーションによって、前記スロットに関する値を使用して前記少なくとも1つのアクションを実行することを含む、前記所与のコマンドバンドルの前記対応する個別のアクションを実行するステップと
をさらに備える、請求項18に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
自動アシスタント(「パーソナルアシスタント」、「モバイルアシスタント」などとしても知られる)は、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス、自動車システム、スタンドアロンのパーソナルアシスタントデバイスなどの様々なクライアントデバイスを介してユーザと対話し得る。自動アシスタントは、ユーザからの入力(例えば、タイプされたおよび/または発話された自然言語入力)を受信し、応答コンテンツ(例えば、視覚および/または聴覚自然言語出力)を用いておよび/または1つもしくは複数の周辺デバイス(例えば、インターネットオブシングス(IoT)デバイス)を制御することによって応答する。クライアントデバイスを介して対話する自動アシスタントは、クライアントデバイス自体を介して、および/または、クライアントデバイスとネットワーク通信する1つもしくは複数のリモートコンピューティングデバイス(例えば、「クラウド」内のコンピューティングデバイス)を介して実装され得る。
【０００２】
自動アシスタントは、しばしば、様々なアクションを実行するように構成され、各アクションは、アクションにマッピングされた所定の正規コマンド(またはその僅かな変動)に応答して実行される。例えば、「アシスタント、リビングルームの照明をオフにして」の音声コマンドを受信することに応答して、自動アシスタントは、「リビングルーム」照明とラベル付けされたユーザのネットワーク化照明を「オフ」状態へ移行させる1つまたは複数のコマンドを送信させることができる。別の例として、「アシスタント、明日の天気はなに」の別個の音声コマンドを受信することに応答して、自動アシスタントは、音声コマンドを発するユーザの場所に関する「明日の天気」の予測を解決するために、サードパーティエージェントに1つもしくは複数のクエリを発し、および/またはサードパーティエージェントと対話し、明日の予測される天気を中継するグラフィカルおよび/または可聴出力を提供することができる。
【０００３】
しかしながら、自動アシスタントを利用するユーザは、自動アシスタントによって実行可能なアクションの多くを知らない可能性があり、および/または、自動アシスタントによってアクションを実行させるためにユーザによって提供され得る正規コマンドを知らない可能性がある。結果として、多くのユーザは、自動アシスタントの限られた量の機能のみを用いる可能性がある。正規コマンドおよび関連するアクションに関する一般的な推奨事項は、自動アシスタントと対話しているユーザへ提供され得るが(例えば、「明日の天気予報を得るためにXと言ってみてください」)、しばしばそのような一般的な推奨事項は、ユーザへ盲目的に提供される。結果として、ユーザに無関係な推奨事項を提供する際に、かなりのネットワークリソースおよび/または計算リソースが浪費される可能性がある。さらに、しばしばそのような一般的な推奨事項は、単一のアクションのみを対象とする。複数のアクションを実行するために、自動アシスタントとの複数のダイアログターンを介してユーザによって複数の異種の正規コマンドが提供されなければならず、それによって、複数のアクションの実行においてかなりのネットワークリソースおよび/または計算リソースを消費する。
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書は、自動アシスタントアプリケーションのユーザのためのコマンドバンドルを生成および/または推奨するための方法、装置、およびコンピュータ可読媒体(一時的および非一時的)に向けられる。コマンドバンドルは、自動アシスタントアプリケーションによって実行され得る複数の個別のアクションを備える。例えば、「おやすみ」バンドルは、自動アシスタントアプリケーションに、1つまたは複数のネットワーク化照明をオフにするコマンドを送信する第1のアクション、ユーザのコンピューティングデバイスのアラームを午前8:00に鳴らすように設定するコマンドを送信する第2のアクション、「明日の」局地的な天気を要求するコマンドを送信する第3のアクション、応答コンテンツを聴覚的に提示することなどを実行させることができる。
【０００５】
前述の例から理解されるように、コマンドバンドルのアクションのうちの1つまたは複数は、バンドルの他のアクションに基づいてデータが送信されるデバイスおよび/またはエージェントとは異なる1つまたは複数のデバイスおよび/またはエージェントへの対応するコマンドおよび/または他のデータの送信を引き起こすことができる。例えば、前述の例では、第1のアクションについて、コマンドは、ネットワーク化照明(および/またはネットワーク化照明と通信するハードウェアブリッジ)へ送信され得るが、第3のアクションでは、別のコマンドが「天気」エージェントをホストするリモートコンピューティングデバイスへ送信され得る。コマンドバンドルは、コマンドバンドルに関する1つもしくは複数の呼び出しフレーズのうちの1つ(例えば、「おやすみ」バンドルに関する「おやすみ」)の発話、コマンドバンドルに関するグラフィカルユーザインターフェース要素(例えば、コマンドバンドルに関する「ショートカット」アイコン)を起動すること、および/または、1つもしくは複数のコンテキスト条件の発生(例えば、「おやすみ」バンドルについて、午後10:00であることの発生)などの、様々なキューに応答してアクティブにされ得る。
【０００６】
コマンドバンドルは、ゼロから、または、1人もしくは複数のユーザと自動アシスタントとの間の対話中に収集された履歴データに基づいて生成され得る。例えば、コマンドバンドルは、コマンドバンドルに関するアクションを指定し、アクションのうちの1つまたは複数の各々について、オプションでは、アクションの1つまたは複数のスロットに関する1つまたは複数の固定スロット値を指定するプログラマによってゼロから生成され得る。別の例として、コマンドバンドルは、複数の対応するユーザの各々によって、互いに短い時間フレーム内で発せられたコマンドフレーズを収集し、アクティブ化されると、収集されたコマンドフレーズに関連付けられたアクションを実行させる対応するコマンドバンドルを生成することによって自動的に生成され得る。例えば、第1、第2、および第3のアクションを有するコマンドバンドルは、ユーザの自動アシスタントとの対話を介して互いに1分以内に第1、第2、および第3のアクションを各々が実行させる少なくとも閾値数のユーザに基づいて自動的に生成され得る。
【０００７】
本明細書で開示された実装形態は、所与のユーザに関連する可能性が高いコマンドバンドルを決定し、それらのコマンドバンドルを所与のユーザに対する提案/推奨として提示することに関する。それらの実装形態のうちのいくつかにおいて、1つまたは複数の自動アシスタントの「アクション」(ならびにオプションでアクションに関するスロット値および/または他のパラメータ)を入力として受信し、多次元空間においてそれらのアクション(ならびにオプションでスロット値および/または他のパラメータ)の意味表現を提供する埋め込みを出力として提供する機械学習モデルがトレーニングされ得る。
【０００８】
自動アシスタントアプリケーションを介して所与のユーザによって実行されるアクション(ならびにオプションでアクションに関するスロット値および/または他のパラメータ)は、「ユーザアクション埋め込み」を生成するために機械学習モデルを使用して処理され得る。さらに、コマンドバンドルの各々について、コマンドバンドルのアクション(ならびにオプションでアクションに関するスロット値および/または他のパラメータ)は、「コマンドバンドル埋め込み」を生成するために機械学習モデル(または別の機械学習モデル)を使用して処理され得る。「ユーザアクション埋め込み」に最も類似する「コマンドバンドル埋め込み」を有するコマンドバンドルは、次いで、推奨事項として所与のユーザへ提供され得る。例えば、所与のユーザが「音楽」アクションおよび「照明制御」アクションにのみ自動アシスタントアプリケーションを使用する場合、「ユーザアクション埋め込み」は、それらのアクションを表すことができる。対応する「音楽」アクションおよび「照明制御」アクションを有するコマンドバンドルは、例えば、音楽アクションまたは照明制御アクションがないコマンドバンドルよりも「ユーザアクション埋め込み」に類似したコマンドバンドル埋め込みを有することになる。これらおよび他の方法で、所与のユーザにグラフィカルにおよび/または聞こえるように推奨されるコマンドバンドルは、最初に、コマンドバンドルの特徴と、所与のユーザと自動アシスタントアプリケーションとの過去の対話の特徴との比較を通して、所与のユーザに関連する可能性が高いと判定され得る。
【０００９】
さらに、いくつかの実装形態において、コマンドバンドルをユーザに推奨するかどうかを判定する際に、コマンドバンドルの1つまたは複数のアクションの必要な周辺デバイスおよび/または他のパラメータが考慮され得る。例えば、いくつかのコマンドバンドルは、所与のユーザがコマンドバンドルに必要な周辺デバイスを欠いていると判断したことに基づいて(例えば、類似性の判定の前に)除外され得る。例えば、アクションの実行のためにネットワーク化照明を必要とする所与のコマンドバンドルは、自動アシスタントアプリケーションについてネットワーク化照明が所与のユーザに関連付けられていないことの判定に基づいて、所与のユーザへの推奨事項としての考慮から除外され得る、また、例えば、ユーザの周辺デバイスおよび/またはコマンドバンドルの周辺デバイスの指示は、上記または本明細書の他の場所で説明したように、ユーザ埋め込みおよび/またはコマンドバンドル埋め込みを生成する際の入力としてさらに適用され得る。
【００１０】
いくつかの実装形態において、所与のユーザに推奨されるコマンドバンドルの少なくとも1つのアクションは、固定値を欠く少なくとも1つのスロット(すなわち、明示的な「未定義」もしくは「変数」値を有するスロット、または、スロットに関する任意の値の定義を欠くスロット)を含むことができる。それらの実装形態のうちのいくつかにおいて、コマンドバンドルが所与のユーザによって選択されたとき、またはその後所与のユーザによって最初に呼び出されたとき、自動アシスタントアプリケーションは、所与のユーザに固定値を欠くスロットに関する値の解決を有効にするように促すことができる。それらの実装形態のいくつかのバージョンにおいて、スロットに関する解決された値は、所与のユーザと関連して記憶され、その後、コマンドバンドルのさらなる呼び出しに応答して自動的に利用され得る。例えば、コマンドバンドルは、ユーザのコンピューティングデバイスのアラームを設定するコマンドを送信するアクションを含むことができる。しかしながら、アラームアクションの「アラーム時間」スロットは、固定されない場合がある。それらの実装形態のうちのいくつかにおいて、自動アシスタントアプリケーションは、ユーザへの提示のために、「アラームを何時に設定したいですか」というプロンプトと、プロンプトに応答して受信された「午前8:00」の応答ユーザインターフェース入力とを提供することができる。自動アシスタントアプリケーションは、オプションで、ユーザがそれをデフォルトとして設定したいことを確認した後、ユーザのためのコマンドバンドルに関する「アラーム時間」スロットに対する解決された値として「午前8:00」を記憶することができる。その後、自動アシスタントアプリケーションは、そのコマンドバンドルが所与のユーザによって呼び出されたとき、「アラーム時間」スロットに関するスロット値として「午前8:00」を自動的に利用することができる。
【００１１】
本明細書で説明した主題の特徴の実装形態は、以下の利点のうちの1つまたは複数を実現するように実装され得る。コマンドバンドル推奨方法および/またはコマンドバンドル推奨において利用されるモデルは、他の方法と比較して改善されたデータ効率を提供することができる。例えば、そのような推奨方法および/またはモデルは、所与のユーザへ提供されるコマンドバンドル推奨事項が所与のユーザに関連する可能性を高め、その結果、所与のユーザがその後コマンドバンドルを利用することになる可能性を高めることができる。これは、無関係なコマンドバンドルの提供におけるネットワークリソースおよび/または計算リソースの消費を軽減することができる。
【００１２】
さらに、本明細書で説明したように、多くの実装形態において、推奨コマンドバンドルは、その後呼び出されると、複数の個別のアクションを実行させることができる。そのようなその後の呼び出しは、複数の個別のアクションの各々が独立して呼び出される場合よりも少ないネットワークリソースおよび/または計算リソースを消費するその後のユーザインターフェース入力で達成され得る。例えば、上記で説明した「おやすみ」バンドルは、「アシスタント、おやすみ」などの、自動アシスタントへ提供される音声コマンドを介して呼び出され得る。「おやすみ」バンドルの呼び出しは、自動アシスタントアプリケーションに、1つまたは複数のネットワーク化照明をオフにするコマンドを送信する第1のアクションと、ユーザのコンピューティングデバイスのアラームを午前8:00に鳴るように設定するコマンドを送信する第2のアクションと、「明日の」局地的な天気を要求するコマンドを送信し、応答コンテンツを聞こえるように提示するコマンドを送信する第3のアクションとを実行させることができる。コマンドバンドルがない場合、ユーザは、少なくとも3つの個別のコマンドを発する必要があり、それらは、処理するために、コマンドバンドルの単一の呼び出しコマンドよりも多くのネットワークリソースおよび/または計算リソースの消費を必要とする。例えば、コマンドバンドルがない場合、「アシスタント、明かりをオフにして」、「アシスタント、携帯電話のアラームを午前8:00に設定して」、および「アシスタント、明日の天気はなに」の3つの個別のコマンドを発しなければならない場合がある。
【００１３】
加えて、本明細書でも説明したように、多くの実装形態において、推奨コマンドバンドルは、固定値を欠く少なくとも1つのスロットと、所与のユーザとの対話(例えば、自動アシスタントとユーザとのダイアログ)を介して所与のユーザについて解決され得るそのスロットのための値とを含むことができる。その後、所与のユーザがコマンドバンドルを呼び出させたとき、オプションで任意の確認についてユーザを促すことなく、解決された値が利用され得る。これらおよび他の方法で、ユーザによるコマンドバンドルのその後の呼び出しは、そうでなければスロットに関する値を解決するために提供される必要がある1つまたは複数のプロンプトの除去により、より効率的になされ得る。
【００１４】
上記の要約は、本明細書で開示された様々な実装形態のいくつかの特徴の概要として提供される。それらの実装形態、ならびに様々な追加の特徴および様々な追加の実装形態の追加の説明が以下に提供される。
【００１５】
いくつかの実装形態において、1つまたは複数のプロセッサによって実行される方法が提供され、ユーザに関するアシスタント対話データを識別するステップと、ユーザアクション埋め込みを生成するために、トレーニングされた機械学習モデルを使用してアシスタント対話データの少なくとも一部を処理するステップとを含む。アシスタント対話データは、自動アシスタントアプリケーションによってユーザに対して実行された複数の履歴アクションを示す。履歴アクションの各々は、自動アシスタントアプリケーションと対話する1つまたは複数の自動アシスタントインターフェースを介してユーザによって提供された対応するユーザインターフェース入力に応答して実行される。方法は、自動アシスタントアプリケーションによって実行され得る複数の対応する個別のアクションを識別するコマンドバンドルデータを各々が含む複数のコマンドバンドルを識別するステップをさらに含む。方法は、コマンドバンドルの各々について、コマンドバンドル埋め込みを生成するために、トレーニングされた機械学習モデルまたは追加のトレーニングされた機械学習モデルを使用してコマンドバンドルデータの少なくとも一部を処理するステップと、コマンドバンドルに関する類似性スコアを生成するステップとをさらに含む。コマンドバンドルの各々について類似性スコアを生成するステップは、ユーザアクション埋め込みをコマンドバンドルに関するコマンドバンドル埋め込みと比較するステップを含む。方法は、所与のコマンドバンドルに関する類似性スコアに基づいて、複数のコマンドバンドルのうちの所与のコマンドバンドルを選択するステップをさらに含む。方法は、所与のコマンドバンドルを選択することに応答して、所与のコマンドバンドルに関連する情報を、ユーザのコンピューティングデバイスを介してユーザへ提示させるステップをさらに含む。ユーザインターフェース入力に応答するユーザに関する所与のコマンドバンドルの呼び出しは、自動アシスタントアプリケーションに所与のコマンドバンドルの対応する個別のアクションを実行させる。
【００１６】
本明細書で開示された技術のこれらおよび他の実装形態は、オプションで、以下の特徴のうちの1つまたは複数を含み得る。
【００１７】
いくつかの実装形態において、ユーザへ提示される所与のコマンドバンドルに関連する情報は、所与のコマンドバンドルに関する呼び出しフレーズを含む。それらの実装形態のうちのいくつかにおいて、方法は、所与のコマンドバンドルに関連する情報を提示させるステップに続いて、アシスタントインターフェースのうちの1つを介してユーザによって提供された自然言語のユーザインターフェース入力を受信するステップと、自然言語のユーザインターフェース入力が呼び出しフレーズに一致することを判定するステップと、自然言語のユーザインターフェース入力が呼び出しフレーズに一致すると判定することに応答して、自動アシスタントアプリケーションによって、所与のコマンドバンドルの対応する個別のアクションを実行するステップとをさらに含む。
【００１８】
いくつかの実装形態において、所与のコマンドバンドルの対応する個別のアクションは、第1の個別アクションと第2の個別アクションとを含む。それらの実施形態のうちのいくつかにおいて、第1の個別アクションは、自動アシスタントアプリケーションに、第1のコマンドを第1の電子デバイスへ送信させ、第2の個別アクションは、自動アシスタントアプリケーションに、第2のコマンドを第2の電子デバイスへ送信させる。それらの実装形態のうちのいくつかにおいて、第1の個別アクションは、自動アシスタントアプリケーションに、第1のコマンドを第1のエージェントへ送信させ、第2の個別アクションは、自動アシスタントアプリケーションに、第2のコマンドを第2のエージェントへ送信させる。
【００１９】
いくつかの実装形態において、方法は、類似性スコアに基づいてコマンドバンドルをランク付けするステップをさらに含む。それらの実装形態のうちのいくつかにおいて、所与のコマンドバンドルを選択するステップは、コマンドバンドルのうちの他のものに対する所与のコマンドバンドルのランク付けに基づく。それらの実装形態のいくつかのバージョンにおいて、所与のコマンドバンドルに関連する情報を、ユーザのコンピューティングデバイスを介してユーザへ提示させるステップは、所与のコマンドバンドルのランク付けに基づく表示卓越性(display prominence)を用いて情報を提示させるステップを含む。
【００２０】
いくつかの実装形態において、複数のコマンドバンドルを識別するステップは、利用可能なコマンドバンドルのコーパスから、選択された複数のコマンドバンドルとユーザのユーザ固有データとの間の一致に基づいて複数のコマンドバンドルを選択するステップを含む。それらの実装形態のうちのいくつかにおいて、選択された複数のコマンドバンドルとユーザのユーザ固有データとの間の一致に基づいて複数のコマンドバンドルを選択するステップは、所与の利用可能なコマンドバンドルに必要な周辺デバイスを識別するステップと、ユーザ固有データに基づいて、自動アシスタントアプリケーションがユーザに関して必要な周辺デバイスにアクセスできないと判定するステップとに基づいて、選択された複数のコマンドバンドルから、利用可能なコマンドバンドルのうちの所与の利用可能なコマンドバンドルを除外するステップを含む。
【００２１】
いくつかの実装形態において、コマンドバンドルデータの少なくとも一部の処理は、トレーニングされた機械学習モデルを使用して実行される。
【００２２】
いくつかの実装形態において、コマンドバンドルの各々に関する類似性スコアを生成するステップは、ユーザアクション埋め込みと、コマンドバンドルに関するコマンドバンドル埋め込みとの間のユークリッド距離に基づいている。
【００２３】
いくつかの実装形態において、所与のコマンドバンドルは、対応するアクションのうちの少なくとも1つのアクションについて、未定義値を有する少なくとも1つのスロットを含む。それらの実装形態のうちのいくつかにおいて、方法は、所与のコマンドバンドルに関連する情報を提示させることに応答して、所与のコマンドバンドルの選択を受信するステップと、選択を受信することに応答して、スロットに関する値を解決するために、自動アシスタントアプリケーションを介してユーザとダイアログを行うステップと、所与のコマンドバンドルおよびユーザに関して、スロットに関連付けて値を記憶するステップとをさらに含む。それらの実装形態のいくつかのバージョンにおいて、方法は、所与のコマンドバンドルおよびユーザに関して、スロットに関連付けて値を記憶するステップに続いて、アシスタントインターフェースのうちの1つを介してユーザによって提供された自然言語のユーザインターフェース入力を受信するステップと、自然言語のユーザインターフェース入力がコマンドバンドルに関する呼び出しフレーズに一致することを判定するステップと、自然言語のユーザインターフェース入力が呼び出しフレーズに一致すると判定することに応答して、記憶されている値に基づいて、自動アシスタントアプリケーションによって、スロットに関する値を使用して少なくとも1つのアクションを実行することを含む、所与のコマンドバンドルの対応する個別のアクションを実行するステップとをさらに含む。
【００２４】
いくつかの実装形態において、1つまたは複数のプロセッサによって実行される方法が提供され、コマンドバンドルのコーパスを識別するステップと、ユーザに関する周辺デバイスデータを識別するステップとを含む。識別されたコマンドバンドルの各々は、自動アシスタントアプリケーションによって実行され得る複数の対応する個別のアクションを識別するコマンドバンドルデータを含む。識別された周辺デバイスデータは、自動アシスタントアプリケーションとペアにされたユーザの周辺デバイスを示す。方法は、コマンドバンドルのコーパスから、ユーザに関する複数の候補コマンドバンドルを選択するステップをさらに含む。複数の候補コマンドバンドルを選択するステップは、周辺デバイスデータとコマンドバンドルのコマンドバンドルデータとの比較に基づいている。方法は、コマンドバンドルデータとアシスタント対話データとに基づいて候補コマンドバンドルをランク付けするステップと、ランク付けに基づいて、候補コマンドバンドルのうちの1つまたは複数に関連する情報を提示させるステップとをさらに含む。情報は、ユーザのコンピューティングデバイスを介してユーザへ提示される。
【００２５】
本明細書で開示された技術のこれらおよび他の実装形態は、以下の特徴のうちの1つまたは複数をオプションで含み得る。
【００２６】
いくつかの実装形態において、1つまたは複数のコマンドバンドルのうちの所与のコマンドバンドルに関連する情報は、所与のコマンドバンドルに関する呼び出しフレーズを含む。それらの実装形態のうちのいくつかにおいて、方法は、1つまたは複数のコマンドバンドルに関連する情報を提示させるステップに続いて、自動アシスタントアプリケーションに関連付けられたアシスタントインターフェースを介してユーザによって提供された自然言語のユーザインターフェース入力を受信するステップと、自然言語のユーザインターフェース入力が呼び出しフレーズと一致することを判定するステップと、自然言語のユーザインターフェース入力が呼び出しフレーズに一致すると判定することに応答して、自動アシスタントアプリケーションによって、所与のコマンドバンドルの対応する個別のアクションを実行するステップとをさらに含む。それらの実装形態のいくつかのバージョンにおいて、所与のコマンドバンドルの対応する個別のアクションは、自動アシスタントアプリケーションに、第1のコマンドを第1の電子デバイスへ送信させる第1の個別アクションと、自動アシスタントアプリケーションに、第2のコマンドを第2の電子デバイスへ送信させる第2の個別アクションとを含む。
【００２７】
いくつかの実装形態において、1つまたは複数のプロセッサによって実行される方法が提供され、コマンドバンドルのコーパスを識別するステップと、ユーザに関するデータを識別するステップとを含む。コーパスのコマンドバンドルの各々は、自動アシスタントアプリケーションによって実行され得る複数の対応する個別アクションを識別するコマンドバンドルデータを含む。方法は、コマンドバンドルのコーパスから、ユーザに関する複数の候補コマンドバンドルを選択するステップをさらに含む。複数の候補コマンドバンドルを選択するステップは、ユーザのデータとコマンドバンドルのコマンドバンドルデータとの比較に基づいている。方法は、自動アシスタントアプリケーションによってユーザに対して実行された複数の履歴アクションを示す、ユーザに関するアシスタント対話データを識別するステップをさらに含む。方法は、ユーザアクション埋め込みを生成するために、トレーニングされた機械学習モデルを使用してアシスタント対話データの少なくとも一部を処理するステップと、複数の候補コマンドバンドルから、ユーザアクション埋め込みと所与のコマンドバンドルに関するコマンドバンドル埋め込みとの比較に基づいて所与のコマンドバンドルを選択するステップとをさらに含む。方法は、所与のコマンドバンドルを選択することに応答して、所与のコマンドバンドルに関連する情報を、ユーザのコンピューティングデバイスを介してユーザへ提示させるステップをさらに含む。ユーザインターフェース入力に応答するユーザに関する所与のコマンドバンドルの呼び出しは、自動アシスタントアプリケーションに所与のコマンドバンドルの対応する個別アクションを実行させる。
【００２８】
本明細書で開示された技術のこれらおよび他の実装形態は、以下の特徴のうちの1つまたは複数をオプションで含み得る。
【００２９】
いくつかの実装形態において、ユーザへ提示される所与のコマンドバンドルに関連する情報は、所与のコマンドバンドルに関する呼び出しフレーズを含む。それらの実装形態のうちのいくつかにおいて、方法は、所与のコマンドバンドルに関連する情報を提示させるステップに続いて、アシスタントインターフェースを介してユーザによって提供された自然言語のユーザインターフェース入力を受信するステップと、自然言語のユーザインターフェース入力が呼び出しフレーズと一致することを判定するステップと、自然言語のユーザインターフェース入力が呼び出しフレーズと一致すると判定することに応答して、自動アシスタントアプリケーションによって、所与のコマンドバンドルの対応する個別アクションを実行するステップとをさらに含む。
【００３０】
いくつかの実装形態において、所与のコマンドバンドルは、対応するアクションのうちの少なくとも1つのアクションについて、未定義値を有する少なくとも1つのスロットを含む。それらの実装形態のうちのいくつかにおいて、方法は、所与のコマンドバンドルに関連する情報を提示させるステップに続いて、所与のコマンドバンドルの呼び出しを受信するステップと、呼び出しを受信することに応答して、スロットに関する値を解決するために、自動アシスタントアプリケーションを介してユーザとダイアログを行うステップと、所与のコマンドバンドルおよびユーザに関して、スロットに関連付けて値を記憶するステップとをさらに含む。それらの実装形態のいくつかのバージョンにおいて、方法は、所与のコマンドバンドルおよびユーザに関して、スロットに関連付けて値を記憶するステップに続いて、アシスタントインターフェースを介してユーザによって提供された自然言語のユーザインターフェース入力を受信するステップと、自然言語のユーザインターフェース入力がコマンドバンドルに関する呼び出しフレーズに一致することを判定するステップと、自然言語のユーザインターフェース入力が呼び出しフレーズに一致すると判定することに応答して、記憶されている値に基づいて、自動アシスタントアプリケーションによって、スロットに関する値を使用して少なくとも1つのアクションを実行することを含む、所与のコマンドバンドルの対応する個別のアクションを実行するステップとをさらに含む。
【００３１】
加えて、いくつかの実装形態は、1つまたは複数のコンピューティングデバイスの1つまたは複数のプロセッサを含み、1つまたは複数のプロセッサは、関連するメモリ内に記憶された命令を実行するように動作可能であり、命令は、本明細書で説明した1つまたは複数の方法を実行させるように構成される。プロセッサは、1つまたは複数のグラフィックス処理ユニット(GPU)、中央処理装置(CPU)、および/またはテンソル処理ユニット(TPU)を含み得る。いくつかの実装形態は、本明細書で説明した1つまたは複数の方法を実行するために1つまたは複数のプロセッサによって実行可能なコンピュータ命令を記憶する1つまたは複数の非一時的コンピュータ可読媒体を含む。
【００３２】
本明細書でより詳細に説明された上記の概念および追加の概念のすべての組合せは、本明細書で開示された主題の一部と考えられることが理解されるべきである。例えば、本開示の最後に現れる特許請求された主題のすべての組合せは、本明細書で開示された主題の一部と考えられる。
【図面の簡単な説明】
【００３３】
【図１】本明細書で開示された実装形態が実装され得る例示的な環境のブロック図である。
【図２Ａ】いくつかの実装形態において図1の様々な構成要素がどのように相互作用し得るかの例を示す図である。
【図２Ｂ】いくつかの実装形態において図1の様々な構成要素がどのように相互作用し得るかの例を示す図である。
【図３Ａ】アクションモデルの例と、ユーザのアシスタント対話データがユーザアクション埋め込みを生成するためにアクションモデルを使用してどのように処理され得るかとを示す図である。
【図３Ｂ】アクションモデルの例と、ユーザのアシスタント対話データがユーザアクション埋め込みを生成するためにアクションモデルを使用してどのように処理され得るかとを示す図である。
【図４Ａ】複数のコマンドバンドルに関する推奨事項をグラフィカルに表示するディスプレイ画面を有する例示的なコンピューティングデバイスを示す図である。
【図４Ｂ】図4Aの例示的なコンピューティングデバイスと、図4のコマンドバンドルのうちの1つの最初の呼び出し時に発生し得るダイアログの例と、そのコマンドバンドルの後続の呼び出し時に発生し得るダイアログの例とを示す図である。
【図５】本明細書で開示された実装形態による例示的な方法を示すフローチャートである。
【図６】コンピューティングデバイスの例示的なアーキテクチャを示す図である。
【発明を実施するための形態】
【００３４】
図1は、本明細書で開示された技法が実装され得る例示的な環境を示す。例示的な環境は、クライアントデバイス106と、自動アシスタント110(本明細書では自動アシスタントアプリケーションとも呼ばれる)と、複数のエージェント140A〜Nとを含む。クライアントデバイス106は、例えば、スタンドアロンの音声起動型スピーカデバイス、デスクトップコンピューティングデバイス、ラップトップコンピューティングデバイス、タブレットコンピューティングデバイス、携帯電話コンピューティングデバイス、ユーザの車両のコンピューティングデバイス、および/または、コンピューティングデバイスを含むユーザのウェアラブル装置(例えば、コンピューティングデバイスを有するユーザの腕時計、コンピューティングデバイスを有するユーザの眼鏡、仮想または拡張現実コンピューティングデバイス)であり得る。追加のおよび/または代替的なクライアントデバイスが提供され得る。
【００３５】
自動アシスタント110が図1においてクライアントデバイス106とは別個に示されているが、いくつかの実装形態において、自動アシスタント110のすべてまたは態様は、クライアントデバイス106によって実装され得る。例えば、いくつかの実装形態において、入力処理エンジン112は、クライアントデバイス106によって実装され得る。自動アシスタント110の1つまたは複数の(例えば、すべての)態様がクライアントデバイス106から離れた1つまたは複数のコンピューティングデバイスによって実装される実装形態において、クライアントデバイス106、および自動アシスタント110のそれらの態様は、ワイドエリアネットワーク(WAN)(例えば、インターネット)などの1つまたは複数のネットワークを介して通信する。
【００３６】
1つのクライアントデバイス106のみが自動アシスタント110と組み合わされて示されているが、多くの実装形態において、自動アシスタント110は、遠方にあり得、同じユーザの複数のクライアントデバイスの各々および/または複数のユーザの複数のクライアントデバイスの各々とインターフェースし得る。例えば、自動アシスタント110は、異なるセッションを介して複数のデバイスの各々との通信を管理し得、複数のセッションを並行して管理し得る。例えば、いくつかの実装形態における自動アシスタント110は、例えば、複数のユーザからの大量の要求を処理するのに適したソフトウェアを実行する高性能コンピュータのサーバファームまたはクラスタを使用して、クラウドインフラストラクチャを用いるクラウドベースのサービスとして実装され得る。しかしながら、簡単にするために、本明細書における多くの例について、単一のクライアントデバイス106に関して説明する。
【００３７】
自動アシスタント110は、APIを介しておよび/または1つもしくは複数の通信チャネル(例えば、内部通信チャネルおよび/またはWANなどのネットワーク)を介して複数のエージェント140A〜Nの各々と通信する。いくつかの実装形態において、エージェント140A〜Nのうちの1つまたは複数は、自動アシスタント110を管理するパーティとは別個のそれぞれのパーティによって各々が管理される。本明細書で使用されるとき、「エージェント」は、自動アシスタント110によって利用される1つまたは複数のコンピューティングデバイスおよび/またはソフトウェアを指す。いくつかの状況において、エージェントは、自動アシスタント110から分離され得、および/または、1つまたは複数の通信チャネルを介して自動アシスタント110と通信し得る。それらの状況のうちのいくつかにおいて、自動アシスタント110は、第1のネットワークノードから、エージェントの機能のすべてまたは態様を実装する第2のネットワークノードにデータ(例えば、エージェントコマンド)を送信し得る。いくつかの状況において、エージェントは、それが自動アシスタント110を管理するパーティとは別個のパーティによって管理されるという点で、サードパーティ(3P)エージェントであり得る。いくつかの他の状況において、エージェントは、それが自動アシスタント110を管理する同じパーティによって管理されるという点で、ファーストパーティ(1P)エージェントであり得る。
【００３８】
エージェントは、自動アシスタント110から呼び出し要求および/または他のエージェントコマンドを(例えば、ネットワークを介しておよび/またはAPIを介して)受信するように構成される。エージェントコマンドを受信することに応答して、エージェントは、エージェントコマンドに基づいて応答コンテンツを生成し、応答コンテンツに基づくユーザインターフェース出力の提供のため、および/または1つもしくは複数の周辺デバイスを制御するため、応答コンテンツを送信する。例えば、エージェントは、1つまたは複数のIoTデバイス(例えば、スマートライト、サーモスタット、アプライアンス、カメラ)などの1つまたは複数の周辺デバイスを制御するために応答コンテンツを送信することができる。別の例として、エージェントは、応答コンテンツに基づく自動アシスタント110による出力の提供のために、応答コンテンツを自動アシスタント110へ送信し得る。別の例として、エージェントは、それ自体が出力を提供することができる。例えば、ユーザは、クライアントデバイス106のアシスタントインターフェースを介して自動アシスタント110と対話することができ(例えば、自動アシスタントは、クライアントデバイス106においておよび/またはクライアントデバイス106とのネットワーク通信において実装され得る)、エージェントは、クライアントデバイス106上にインストールされたアプリケーション、またはクライアントデバイス106から離れて実行可能であるが、クライアントデバイス106上で「ストリーミング可能」なアプリケーションであり得る。アプリケーションが呼び出されると、アプリケーションは、クライアントデバイス106によって実行され得、および/または、クライアントデバイス106によって最前面にされ得る(例えば、そのコンテンツがクライアントデバイス106のディスプレイを引き継ぐことができる)。
【００３９】
自動アシスタント110は、入力処理エンジン112と、出力エンジン116と、呼び出し/対話エンジン118とを含む。自動アシスタント110は、コマンドバンドルエンジン120と、推奨エンジン125も含む。推奨エンジン125は、フィルタリングモジュール126と、埋め込みモジュール127と、スコアリングモジュール128と、推奨モジュール129とを含む。いくつかの実装形態において、自動アシスタント110のエンジン(および/またはモジュール)のうちのいくつかは、省略され得、結合され得、および/または、自動アシスタント110とは別個の構成要素において実装され得る。さらに、自動アシスタント110は、簡単にするために本明細書において示されていない追加のエンジン(および/またはモジュール)を含み得る。
【００４０】
自動アシスタント110は、クライアントデバイス106からユーザ入力のインスタンスを受信する。様々なタイプのユーザ入力が、ユーザによって、ユーザインターフェース入力デバイスを介して、自動アシスタント110へ提供され得る。場合によっては、入力は、1つまたは複数のユーザインターフェース入力デバイスを介してユーザによって生成されたユーザインターフェース入力に基づく(例えば、物理キーボードもしくは仮想キーボードを介して入力されたタイピングされた入力に基づく、またはマイクロフォンを介して提供された発話入力に基づく)テキスト入力などの、自由形式の自然言語入力である「ユーザの発話」であり得る。本明細書で使用されるとき、自由形式の入力は、ユーザによって定式化され、ユーザによる選択のために提示されるオプションのグループに制約されない(例えば、ドロップダウンメニュー内に提示されたオプションのグループに成約されない)入力である。
【００４１】
一例として、自動アシスタント110は、トークンのシーケンスを含む自然言語データストリームの形式においてユーザの発話を受信し得る。例えば、自動アシスタント110は、タイピングされたユーザ入力に応答して自然言語データストリームを受信することができ、または、ストリーミングオーディオ記録の形式において自然言語音声入力データストリームを受信することができる。ストリーミングオーディオ記録は、クライアントデバイス106のユーザの発話入力をキャプチャするクライアントデバイス106のマイクロフォンから受信された信号に応答してクライアントデバイス106によって生成され得る。いくつかの実装形態において、ユーザ入力は、クライアントデバイス106のユーザによる自動アシスタント110の明示的な呼び出しに応答して、クライアントデバイス106によって生成され得、および/または自動アシスタント110へ提供され得る。例えば、呼び出しは、ユーザの特定の音声入力のクライアントデバイス106による検出(例えば、「ハイ、アシスタント」などの自動アシスタント110のホットワード/フレーズ)、ハードウェアボタンおよび/もしくは仮想ボタンとのユーザ相互作用(例えば、ハードウェアボタンのタップ、クライアントデバイス106によって表示されたグラフィカルユーザインターフェースの選択)、ならびに/または他の特定のユーザインターフェース入力であり得る。
【００４２】
自動アシスタント110は、クライアントデバイス106からのユーザ入力のインスタンスを受信することに応答して出力のインスタンスを提供する。出力のインスタンスは、例えば、自然言語出力を含む「システム発話」であり得る。システム発話は、クライアントデバイス106によって聞こえるように提示されるべき(例えば、クライアントデバイス106のスピーカを介して出力されるべき)音声として、ならびに/またはクライアントデバイス106によってグラフィカルに提示されるべき(クライアントデバイス106のディスプレイを介してレンダリングされるべき)テキストおよび/もしくはグラフィカルコンテツなどとして提供され得る。本明細書で説明したように、出力のいくつかのインスタンスは、ユーザ入力によって呼び出されたコマンドバンドルに基づいて決定されたシステム発話であり得る。同様に本明細書で説明したように、出力のいくつかのインスタンスは、1つまたは複数のコマンドバンドルに関する推奨事項であり得る。推奨事項は、オプションで、ユーザに「プッシュ」(すなわち、推奨事項を明示的に要求するユーザ入力の受信なしで提供)され得、または、利用可能なコマンドバンドルを探索しようとする入力などのユーザ入力に応答してユーザへ提供され得る。また、出力のいくつかのインスタンスは、エージェント140A〜Nのうちの選択された1つによって(すなわち、コマンドバンドルの呼び出しに応答して送信されたエージェントコマンドに応答して)生成された応答コンテンツに基づき得る。
【００４３】
自動アシスタント110入力処理エンジン112は、自然言語入力(例えば、クライアントデバイス106から受信された自然言語入力)を処理し、自動アシスタント110の1つまたは複数の他の構成要素による使用のための注釈付き出力を生成する。例えば、入力処理エンジン112は、クライアントデバイス106の1つまたは複数のユーザインターフェース入力デバイスを介してユーザによって生成された自然言語の自由形式入力を処理し得る。生成された注釈付き出力は、自然言語入力に基づくトークンを含むことができ、オプションで、自然言語入力の1つまたは複数の注釈を含むことができる。
【００４４】
いくつかの実装形態において、入力処理エンジン112は、(例えば、デジタルオーディオデータの形式において)音声入力のインスタンスを受信し、音声入力を1つまたは複数のテキストの単語またはフレーズを含むテキストに変換する音声-テキストモジュール114を含む。変換されたテキストは、次いで、トークンおよび/または他のデータを生成するために入力処理エンジン112によって利用され得る。いくつかの実装形態において、音声-テキストモジュール114は、音声入力に基づいてテキストを生成するために1つまたは複数の音声-テキストアルゴリズムを使用するストリーミング音声-テキストエンジンである。音声-テキストモジュール114は、各々が音声信号と言語における音声単位との間の関係を言語における単語シーケンスとともにモデル化し得る1つまたは複数の記憶された音声-テキストモデル(言語モデルとも呼ばれる)に依存し得る。
【００４５】
いくつかの実装形態において、入力処理エンジン112は、自然言語入力内の様々なタイプの文法情報を識別して注釈付けするように構成される。例えば、入力処理エンジン112は、用語にそれらの文法的役割を注釈付けするように構成された品詞タグ付け器を含み得る。例えば、品詞タグ付け器は、各々の用語に「名詞」、「動詞」、「形容詞」、「代名詞」などのその品詞をタグ付けし得る。また、例えば、いくつかの実装形態において、入力処理エンジン112は、加えておよび/または代替的に、自然言語入力内の用語間の構文関係を決定するように構成された係り受け解析器を含み得る。例えば、係り受け解析器は、どの用語が他の用語、文の主語および動詞などを変更するか(例えば、解析木)を判定し得、そのような依存関係の注釈を作成し得る。
【００４６】
いくつかの実装形態において、入力処理エンジン112は、加えておよび/または代替的に、人、組織、場所などへの参照などの、1つまたは複数のセグメント内のエンティティ参照に注釈を付けるように構成されたエンティティタグ付け器を含み得る。エンティティタグ付け器は、高いレベルの粒度(例えば、人などのエンティティクラスへのすべての参照の識別を可能にする)および/またはより低いレベルの粒度(例えば、特定の人物などの特定のエンティティへのすべての参照の識別を可能にする)においてエンティティへの参照に注釈を付け得る。エンティティタグ付け器は、特定のエンティティを解決するために自然言語入力のコンテンツに依存し得、および/または、特定のエンティティを解決するために知識グラフもしくは他のエンティティとオプションで通信し得る。いくつかの実装形態において、トークンに対して解決されたエンティティは、それらのスロットに対応すると判定されたトークに加えて、またはその代わりに、対応するスロットに関するスロット値として利用され得る。
【００４７】
いくつかの実装形態において、入力処理エンジン112は、加えておよび/または代替的に、1つまたは複数の文脈上のキューに基づいて同じエンティティへの参照をグループ化または「クラスタ化」するように構成された同一指示リゾルバ(coreference resolver)を含み得る。例えば、同一指示リゾルバは、ユーザ入力のインスタンス内の「それ」という用語をユーザ入力の直前のインスタンス内の「レストランA」の以前の言及に解決するために利用され得る。それらの実装形態のうちのいくつかにおいて、入力処理エンジン112によって供給されるトークンは、代名詞自体の代わりに代名詞の指示対象を含み得る。例えば、「レストランA」は、「それ」の代わりにトークンとして提供され得る。
【００４８】
いくつかの実装形態において、入力処理エンジン112の1つまたは複数の構成要素は、入力処理エンジン112の1つまたは複数の他の構成要素からの注釈に依存し得る。例えば、いくつかの実装形態において、名前付きエンティティタグ付け器は、特定のエンティティへのすべての言及に注釈を付ける際に、同一指示リゾルバおよび/または係り受け解析器からの注釈に依存し得る。また、例えば、いくつかの実装形態において、同一指示リゾルバは、同じエンティティへの参照をクラスタ化する際に、係り受け解析器からの注釈に依存し得る。いくつかの実装形態において、特定の自然言語入力を処理する際に、入力処理エンジン112の1つまたは複数の構成要素は、1つまたは複数の注釈を決定するために、関連する事前入力、および/または特定の自然言語入力以外の他の関連データを使用し得る。
【００４９】
出力エンジン116は、出力のインスタンスをクライアントデバイス106へ提供する。出力のインスタンスは、例えば、推奨エンジン125によって、または(自動アシスタント110がそのエージェントのための仲介者として機能する場合)コマンドバンドルバンドルエンジン120によるコマンドバンドルの実行中のエージェント140A〜Nのうちの1つもしくは複数からの応答エンジンに基づいて生成されたコマンドバンドルに関する推奨事項であり得る。いくつかの実装形態において、出力エンジン116は、応答コンテンツのテキスト成分をオーディオフォーマットに変換するテキスト-音声エンジンを含み得、出力エンジン116によって提供される出力は、(例えば、ストリーミングオーディオとして)オーディオフォーマットである。いくつかの実装形態において、応答コンテンツは、すでにオーディオフォーマットである場合がある。いくつかの実装形態において、出力エンジン116は、加えてまたは代替的に、(オプションで、クライアントデバイス106による音声への変換のための)出力としてテキスト応答コンテンツを提供し、および/または、クライアントデバイス106によるグラフィカル表示のための出力として他のグラフィカルコンテンツを提供する。
【００５０】
呼び出し/対話エンジン118は、エージェントコマンドをエージェント140A〜Nのうちの1つまたは複数へ送信する。例えば、複数のエージェント140A〜Nに関する複数のアクションを含むコマンドバンドルが呼び出されると、呼び出し/対話エンジン118は、それらのアクションの実行を引き起こすために、エージェントコマンドを生成し、複数のエージェント140A〜Nへ送信することができる。エージェントコマンドは、関連するスロット内のスロット値と、オプションで、ドメインの表示(例えば、エージェントが複数のドメインにわたって動作する場合)、ユーザ識別子、セッション識別子などの追加のデータとを含む構造化コマンドであり得る。いくつかの実装形態または状況において、エージェントコマンドは、選択されたエージェントを呼び出す呼び出しコマンドである。選択されたエージェントは、エージェントコマンドに応答して応答コンテンツを生成することができる。いくつかの実装形態において、応答コンテンツは、選択されたエージェントによって、自動アシスタント110へ送信され、出力エンジン116は、応答コンテンツに基づいて出力を生成する。例えば、出力エンジン116は、変更のない応答コンテンツを出力として提供することができ、または、応答コンテンツのテキスト-音声変換(または他の変換)を実行し、変換されたコンテンツを出力として提供することができる。いくつかの実装形態において、応答コンテンツは、選択されたエージェントによって、クライアントデバイス106に直接送信される。他の実装形態において、選択されたエージェントは、クライアントデバイス106上でローカルに動作し得(例えば、クライアントデバイス106上にインストールされたアプリケーションであり得)、クライアントデバイス106における直接表示のための応答コンテンツを生成することができる。さらに他の実装形態において、応答コンテンツは、1つまたは複数の周辺デバイスへ送信され得、周辺デバイス(例えば、IoTデバイス)のうちの1つまたは複数の状態を変更させることができる。
【００５１】
エージェント140A〜Nの各々は、それ自体のコンテンツエンジン、および/または他のエンジンを含み得る。さらに、多くの実装形態において、エージェントは、応答コンテンツを生成する際に、様々な記憶されたモデルおよび/または他のリソース(例えば、それ自体の文法モデルおよび/またはコンテンツモデル)にアクセスし得る。
【００５２】
コマンドバンドルエンジン120は、入力処理エンジン112からの注釈付き入力、および/またはクライアントデバイス106からの直接入力を受信し、受信された入力がコマンドバンドルデータベース152のコマンドバンドルを呼び出すかどうかを判定する。コマンドバンドルは、自動アシスタントアプリケーションによって実行され得る複数の個別アクションを備える。例えば、「おやすみ」バンドルは、自動アシスタント110に、1つまたは複数のネットワーク化照明をオフにするコマンドを送信する第1のアクションと、ユーザのコンピューティングデバイスのアラームを午前8:00に鳴るように設定するコマンドを送信する第2のアクションと、「明日の」局地的な天気を要求するコマンドを送信し、応答コンテンツを聞こえるように提示するコマンドを送信する第3のアクションとを実行させることができる。例えば、呼び出し/対話エンジン118は、3つの異なるエージェントコマンドを3つの異なるエージェント140A〜Nへ送信することができ、エージェントコマンドの各々は、3つのアクションのうちの対応する1つを実行させる。
【００５３】
コマンドバンドルエンジン120は、受信された入力が様々なキューに基づいてコマンドバンドルを呼び出すことを判定することができる。例えば、コマンドバンドルは、呼び出しフレーズに関連付けられ得、コマンドバンドルエンジン120は、入力処理エンジン112から注釈付き入力を受信することができ、コマンドバンドルエンジン120は、注釈付き入力がコマンドバンドルに関する呼び出しフレーズを含むことを判定することができる。また、例えば、コマンドバンドルエンジン120は、受信された入力がコマンドバンドルを直接示すことを判定することができる。例えば、入力は、クライアントデバイス106においてグラフィカルユーザインターフェース要素(例えば、選択可能な「グラフィカルショートカット」)を選択するユーザに応答して受信され得、そのような入力は、コマンドバンドルに直接マッピングされ得る。また、例えば、コマンドバンドルエンジン120は、受信された入力がコマンドバンドルに対応することと、コマンドバンドルに関する1つまたは複数の文脈上の条件が満たされていることとを判定することができる。例えば、コマンドバンドルエンジン120は、受信された入力がコマンドバンドルに対応し、1つまたは複数の文脈上の条件も満たされている(例えば、現在の時間が特定の時間窓内にあり、それは特定の曜日であり、クライアントデバイス106の場所が特定の地理的境界内にある)場合にのみ、受信された入力がコマンドバンドルを呼び出すと判定することができる。さらに他の実装形態において、コマンドバンドルエンジン120は、クライアントデバイス106からのいかなる入力への参照もなしにコマンドバンドルが呼び出されることを判定することができる。例えば、特定のコマンドバンドルは、特定の文脈上の条件が満たされていることのみを判定することに応答して呼び出され得る。
【００５４】
受信された入力がコマンドバンドルを呼び出すと判定することに応答して、コマンドバンドルエンジン120は、自動アシスタント110にコマンドバンドルのアクションを実行させる。コマンドバンドルエンジン120は、コマンドバンドルのアクションの実行時にエージェントコマンドをエージェント140A〜Nのうちの1つまたは複数へ提供させるために、呼び出し/対話エンジン118と対話することができる。いくつかの実装形態において、コマンドバンドルのアクションのうちの1つまたは複数は、コマンドバンドルを呼び出したユーザに特定化された値で実行され得る。例えば、コマンドバンドルのアクションの実行時に提供されるべきエージェントコマンドのスロットに関する値は、本明細書で説明したようにユーザに特定化され得る。コマンドバンドルエンジン120は、所与のユーザに特定化された、コマンドバンドルに関するスロットに関する値を決定する際に、ユーザデータデータベース156のユーザデータを参照することができる。
【００５５】
推奨エンジン125は、コマンドバンドルデータベース152から、所与のユーザに関連する可能性が高いコマンドバンドルを決定し、それらのコマンドバンドルに関連する情報を推奨事項として所与のユーザへ提示する。いくつかの実装形態において、推奨エンジン125は、自動アシスタントの一部であり、および/または、自動アシスタント110との他の対話においても利用されるクライアントデバイス106のアシスタントインターフェースを介して推奨事項を提示する。いくつかの実装形態において、推奨エンジン125は、代替的には、自動アシスタント110とは別個の構成要素であり、および/または、クライアントデバイス106のアシスタントインターフェースとは別個のインターフェースを介して推奨事項を提示する。
【００５６】
ここで図2Aを参照し、推奨エンジン125およびそのモジュール126〜129の追加の説明が提供される。図2Aにおいて、フィルタリングモジュール126は、埋め込みモジュール127へ提供するために、コマンドバンドルデータベース152から複数のフィルタリングされたコマンドバンドル172を選択する。フィルタリングされたコマンドバンドル172は、データベース152内に含まれるコマンドバンドルのコーパスのサブセットである。
【００５７】
フィルタリングモジュール126は、フィルタリングされたコマンドバンドル172のコマンドバンドルを選択する際に様々な基準を利用することができる。例えば、フィルタリングされたコマンドバンドル172のコマンドバンドルを選択する際に、図2Aにおいて考慮されている所与のユーザに関連付けられたユーザデバイス171は、コマンドバンドルデータベース152内のコマンドバンドルに関連して記憶されたデータと比較され得る。例えば、ユーザデバイス171は、所与のユーザに関連付けられた周辺デバイス(例えば、IoTデバイス)を示すことができ、所与のユーザに関連付けられていない周辺デバイスを必要とするコマンドバンドルは、フィルタリングされたコマンドバンドル172から除外され得る。1つの具体的な例として、ユーザデバイス171は、考慮されているユーザがスマートサーモスタットとのどのような記憶された関連付けもないことを示すことができ、結果として、フィルタリングモジュール126は、フィルタリングされたコマンドバンドル172から、スマートサーモスタットを必要とする任意のコマンドバンドルを除外することができる。スマートサーモスタットを必要とするコマンドバンドルは、スマートサーモスタットを必要とするものとして(例えば、「必要な周辺デバイス」フィールドにおいて)明示的に示され得、または、それらのコマンドバンドルのアクションに基づいて(例えば、エージェントコマンドを「サーモスタット」エージェントへ送信させるアクションを各々が有するコマンドバンドルに基づいて)推論され得る。
【００５８】
本明細書で使用されるとき、コマンドバンドルの1つまたは複数のアクションが周辺デバイスの状態の変更を結果として生じる場合、周辺デバイスは、コマンドバンドルにとって必要とされる。いくつかの実装形態において、ユーザは、周辺デバイスが自動アシスタント110によって「発見」され、自動アシスタント110によって制御され得る場合に周辺デバイスに関連付けられ得る。いくつかの実装形態において、ユーザは、周辺デバイスが自動アシスタント110によってまだ明示的に「発見」されていない場合でも、ユーザ入力および/または1つもしくは複数のネットワークパケットが周辺デバイスの存在を示す場合、周辺デバイスに関連付けられ得る。
【００５９】
いくつかの実装形態において、フィルタリングモジュール126は、フィルタリングされたコマンドバンドル172内に含めるためにコマンドバンドルを選択する際、および/またはフィルタリングされたコマンドバンドル172からコマンドバンドルを除外する際に、1つまたは複数の追加のおよび/または代替の基準を利用し得る。例えば、1つまたは複数のコマンドバンドルは、それらの(複数のユーザによる)評価が閾値を満たさない場合、ならびに/または、(ユーザの母集団全体で)コマンドバンドルの使用量および使用頻度が閾値を満たさない場合、除外され得る。
【００６０】
フィルタリングされたコマンドバンドル172は、埋め込みモジュール127へ提供される。埋め込みモジュール127は、フィルタリングされたコマンドバンドル172に関するコマンドバンドル埋め込み175を決定する。すなわち、フィルタリングされたコマンドバンドル172の各々について、埋め込みモジュール127は、対応するコマンドバンドル埋め込みを決定する。埋め込みモジュール127は、コマンドバンドルのアクションおよび/または他の特徴を使用し、アクションモデル154を使用して、コマンドバンドル埋め込みを決定することができる。例えば、コマンドバンドルのアクションの指標は、アクションモデル154への入力として(入力の一部としてまたは入力の全体として)適用され得、コマンドバンドル埋め込みを生成するためにアクションモデル154で処理され得る。コマンドバンドル埋め込みは、対応するコマンドバンドル埋め込みの意味表現を提供する多次元空間にマッピングされ得る複数の値であり得る。例えば、コマンドバンドル埋め込みは、256個の値のベクトルであり得る。いくつかの実装形態において、埋め込みモジュール127は、コマンドバンドル埋め込み175を事前生成し、コマンドバンドル埋め込み175をそれらの対応するコマンドバンドルと関連付けてコマンドバンドルデータベース152内に記憶することができる。例えば、埋め込みモジュール127は、コマンドバンドルの作成に応答してコマンドバンドルに関するコマンドバンドル埋め込みを生成し、それをコマンドバンドルと関連付けてコマンドバンドルデータベース152内に記憶し、その後、コマンドバンドルデータベース152から記憶されたコマンドバンドル埋め込みを取得することによって、コマンドバンドルに関するコマンドバンドル埋め込みを決定することができる。コマンドバンドル埋め込みを生成する実装形態の追加の説明、およびユーザアクション埋め込みについて、図3Aおよび図3Bを参照して以下で説明する。
【００６１】
埋め込みモジュール127は、ユーザアクション埋め込み174も生成する。埋め込みモジュール127は、自動アシスタント110によってユーザに対して実行された複数の履歴アクション(およびオプションでアクションの他の特徴)を示す、ユーザに関するアシスタント対話データ173に基づいて、ユーザアクション埋め込み174を生成する。例えば、実行された履歴アクションの指標は、アクションモデル154への入力として(入力の一部としてまたは入力の全体として)適用され得、ユーザアクション埋め込み174を生成するためにアクションモデル154で処理され得る。ユーザアクション埋め込み174は、履歴アクションおよび/または他の履歴特徴の意味表現を提供する多次元空間にマッピングされ得る複数の値であり得る。例えば、ユーザアクション埋め込み174は、256個の値のベクトルであり得る。ユーザアクション埋め込みを生成する実装形態の追加の説明、およびコマンドバンドル埋め込みについて、図3Aおよび図3Bを参照して以下で説明する。
【００６２】
スコアリングモジュール128は、フィルタリングされたコマンドバンドル172に関するスコアを生成するために、ユーザアクション埋め込み174とコマンドバンドル埋め込み175とを利用する。例えば、フィルタリングされたコマンドバンドル172のうちの1つに関するスコアは、ユーザアクション埋め込み174とそのフィルタリングされたコマンドバンドルに関するコマンドバンドル埋め込みとの比較に基づき得る。例えば、スコアは、2次元空間における、2つの埋め込み間のユークリッド距離(例えば、コサイン類似度尺度)に基づき得る。コマンドバンドルに関するスコアは、オプションで、コマンドバンドルの(複数のユーザによる)評価、コマンドバンドルの(ユーザの母集団全体の)使用量および/または使用頻度などの追加の尺度にさらに基づき得る。例えば、コマンドバンドルに関するスコアは、ユーザアクション埋め込みとコマンドバンドルのコマンドバンドル埋め込みとの間のコサイン類似度尺度と、コマンドバンドルのユーザが割り当てた評価を示す尺度、および/またはコマンドバンドルの人気を示す尺度との関数に基づくことができる。
【００６３】
コマンドバンドル176に関するスコアは、推奨モジュール129へ提供される。推奨モジュール129は、コマンドバンドル176に関するスコアに基づいてクライアントデバイス106に推奨事項177を提供する。推奨事項177の各々は、対応するコマンドバンドル用であり得、クライアントデバイス106のユーザへの可聴および/またはグラフィカルな提示のために提供され得る。例えば、推奨事項177のうちの1つは、所与のコマンドバンドル用であり得、所与のコマンドバンドルに関する呼び出しフレーズ、所与のコマンドバンドルによって実行されるアクションの要約、および/または所与のコマンドバンドルに関連する他の情報を含むことができる。
【００６４】
推奨モジュール129は、コマンドバンドル176に関するスコアに基づいて推奨事項177を提供する際に様々な技法を利用することができる。例えば、推奨モジュール129は、そのコマンドバンドルに関するスコアが閾値を満たす場合にのみ、所与のコマンドバンドルに関する推奨事項を提供することができる。また、例えば、推奨モジュール129は、複数のコマンドバンドルのうちの対応する1つごとに複数の推奨事項を提供することができ、複数のコマンドバンドルに関するスコアに基づく方法で複数の推奨事項を提供することができる。例えば、最高スコアのコマンドバンドルに関する推奨事項が最も目立つように(例えば、上部に)提示され得、次に最高のスコアのコマンドバンドルに関する追加の推奨事項が次に最も目立つように(例えば、2番目に)提示され得る、などである。さらに別の例として、Xの最高スコアのコマンドバンドルに関する推奨事項がクライアントデバイス106における最初の提示のために提供され得、次のYの最高スコアのコマンドバンドルが、追加の推奨事項を受信する要望を示すさらなるユーザインターフェース入力に応答してのみ提供され得る。
【００６５】
いくつかの実装形態において、推奨モジュール129は、推奨事項に関する1つまたは複数の検索基準を指定するクエリとは無関係に推奨事項を提供する。例えば、推奨モジュール129は、推奨事項に関する検索基準を示すユーザの自然言語入力に基づく任意のクエリを受信することなく(例えば、「照明制御を含む推奨事項を表示して」などのクエリとは無関係に)、クライアントデバイス106における「推奨事項」インターフェースにおける表示のための(および/または可聴提示のための)推奨事項を提供することができる。いくつかの他の実装形態において、推奨モジュール129は、推奨事項に関する1つまたは複数の検索基準を指定するクエリに応答して推奨事項を提供する。それらの実装形態のうちのいくつかにおいて、クエリは、推奨事項をフィルタリングするための1つまたは複数の基準を識別するために解析され得、基準は、フィルタリングされたコマンドバンドル172を生成する際にフィルタリングモジュール126によって適用され得る。例えば、「照明制御を含む推奨事項を表示して」のクエリに応答して、フィルタリングされたコマンドバンドル172は、「照明制御」アクションを含むバンドルのみを含むことができ、スコアリングモジュール128は、クライアントデバイス106に推奨事項を提供するフィルタリングされたコマンドバンドル172を決定する際、および/または推奨事項を提供する方法を決定する際(例えば、推奨事項に関する順序および/または他の提示卓越性を決定する際)に、それらのフィルタリングされたコマンドバンドル172に関するスコアを生成することができる。
【００６６】
ここで図2Bを参照し、コマンドバンドルが呼び出されたことを判定することに応答して、コマンドバンドルエンジン120がどのように応答するかの実装形態の例が提供される。図2Bにおいて、コマンドバンドル呼び出し180がクライアントデバイス106から受信される。コマンドバンドル呼び出し180は、特定のコマンドバンドルを呼び出し、例えば、推奨事項177(図2A)のうちの対応する1つを選択していること、および/または、推奨事項177のうちの対応する1つに関する呼び出しフレーズを含む自然言語入力を提供していることができる。
【００６７】
コマンドバンドルエンジン120は、コマンドバンドル呼び出し180、または、コマンドバンドル呼び出し180に対応する(入力処理エンジン112からの)注釈付き入力を受信する。コマンドバンドルエンジン120は、コマンドバンドル呼び出し180に対応するコマンドバンドルを決定する。例えば、コマンドバンドルエンジン120は、コマンドバンドルデータベース152を参照してコマンドバンドルを決定することができる。
【００６８】
いくつかの実装形態において、コマンドバンドルの少なくとも1つのアクションは、固定値を欠く少なくとも1つのスロット(すなわち、明示的な「未定義」もしくは「可変」の値を有するスロット、またはスロットに関する任意の値の定義を欠くスロット)を含む。それらの実装形態のうちのいくつかにおいて、例えば、コマンドバンドル呼び出し180がユーザによるコマンドバンドルの最初の呼び出しである場合、コマンドバンドルエンジン120は、スロット(すなわち、任意の固定値を欠くスロット)に関する値に対するプロンプト181を提供する。プロンプト181に応答して、クライアントデバイス106のユーザは、1つまたは複数の応答182を提供するために1つまたは複数のユーザインターフェース入力デバイスを利用することができる。コマンドバンドルエンジン120は、それらのスロット187(任意の固定値を欠くスロット)に関する決定された解決された値に対する応答を利用することができる。例えば、入力処理エンジン112は、生成された注釈付き入力に対する応答を処理することができ、コマンドバンドルエンジン120は、そのような注釈付き入力に基づいて値を解決することができる。コマンドバンドルエンジン120は、スロット187に関する解決された値をユーザデータ156(または他のデータベース)内に記憶することができる。これは、コマンドバンドルエンジン120が、(クライアントデバイス106またはユーザの他のクライアントデバイスを介する)ユーザによるコマンドバンドル呼び出し180の将来のインスタンスに応答して、値についてユーザを再び促すことなく、および/または値のどのような以降のユーザ確認も必要とすることなく、コマンドバンドルのアクションを、解決された値187を用いて実行させることを可能にする。
【００６９】
コマンドバンドルエンジン120は、エージェントコマンド183をエージェント140Aへ送信させ、エージェントコマンド185をエージェント140Bへ送信させることもできる。例えば、コマンドバンドルエンジン120は、読み出し/対話エンジン118(図1)に、コマンドをエージェント140Aおよび140Bへ送信させることができる。エージェントコマンド183および/またはエージェントコマンド185は、応答182を利用して決定されるように、各々オプションで、スロットに関する解決された値の1つまたは複数の対応付けを含む。エージェント140Aは、エージェントコマンド183に応答して応答コンテンツ184を生成する。応答コンテンツ184は、1つまたは複数の周辺デバイスの状態を変更させ(例えば、照明をオン/オフさせ、輝度レベルを調整し、出力色を調整し)得、および/または、出力エンジン116へ提供され得、出力エンジン116は、対応するコンテンツをクライアントデバイス106において可聴および/またはグラフィカルへ提供させることができる。エージェント140Bは、エージェントコマンド185に応答して応答コンテンツ186を生成する。応答コンテンツ186は、1つまたは複数の周辺デバイスの状態を変更させることができ、および/または、出力エンジン116へ提供され得、出力エンジン116は、対応するコンテンツをクライアントデバイス106において可聴および/またはグラフィカルに提供させることができる。
【００７０】
ここで図3Aおよび図3Bに向かうと、アクションモデル154(図1)の実装形態の例154Aおよび154Bが、ユーザのアシスタント対話データ173Aおよび173Bがユーザアクション埋め込み174Aおよび174Bを生成するためにアクションモデル154Aおよび154Bを使用してどのように処理され得るかの例とともに示されている。アクションモデル154Aおよび154Bがコマンドバンドルに関するコマンドバンドル埋め込みを生成するためにどのように利用され得るかについての説明も提供される。
【００７１】
図3Aにおいて、アクション対話データ173Aが示されており、複数のアクション指示173A1〜Nを含む。複数のアクション指示173A1〜Nは、自動アシスタントと対話する自動アシスタントインターフェースを介して所与のユーザによって提供されたユーザインターフェース入力に応答して、自動アシスタントによってそのユーザに対して実行されたNの最新アクションを示すことができる。図3Aのアクション指示173A1〜Nは、比較的粗い粒度で示されている。しかしながら、よりきめ細かいアクション指示が提供され得る。例えば、アクション指示173A1によって示される「音楽を再生して」の代わりに、アクション指示173A1は、再生された音楽のジャンル(例えば、レゲエまたはクラシックロック)、および/または「音楽を再生して」アクションを実行する際に対話したエージェント(例えば、音楽エージェント1または音楽エージェント2)を追加で示すことができる。アクション指示173A1〜Nを説明するテキストが、簡単にするために図3Aに示されており、テキストは、いくつかの実装形態において入力として適用され得る。しかしながら、他の値が利用され得ることが理解される。1つの非限定的な例として、「音楽を再生して」アクションは、代わりにバイナリ値「0010」によって示され得、「照明を制御して」アクションは、代わりにバイナリ値「0011」によって示され得る、などである。
【００７２】
図3Aにおいて、複数のアクション指示173A1〜Nの各々がアクションモデル154AのN個の入力1541A1〜Nのうちの対応する1つに適用され、オプションで任意の順序で適用され得る。いくつかの他の実装形態において、N個の入力1541A1〜Nは、最新性に基づいた順序で適用される。例えば、アクション指示173A1は、最新のアクションに対応することができ、173A2は、2番目に最新のアクションに対応することができる、などである。また、図3Aにおいて、複数のアクション指示173A1〜Nの各々は、等しく重み付けされる。しかしながら、他の実装形態において、より最新のアクション指示は、より最新でないアクション指示よりも重く重み付けされ得る。
【００７３】
1つまたは複数のプロセッサは、ユーザアクション埋め込み174Aを生成するために、符号化層1542Aで入力アクション指示173A1〜Nを処理することができる。符号化層1542Aは、フィードフォワードニューラルネットワーク層などの1つまたは複数のニューラルネットワーク層を含むことができる。いくつかの実装形態において、符号化層1542Aは、適用されたアクション指示を再生成するために大量のトレーニング例を利用してトレーニングされたエンコーダ-デコーダネットワークからの符号化層である。例えば、トレーニング例の各々は、対応するアクション指示を含むトレーニング例入力と、対応するアクション指示を含むトレーニング例出力とを含むことができる。トレーニング中、トレーニング例のトレーニング例入力は、符号化層1542Aに適用され得、符号化層1542Aの隠れ状態は、トレーニング例入力と同じ次元を有する予測出力を生成するために復号層に適用され得る。次いで、予測出力を(トレーニング例入力と同じ)トレーニング例出力と比較することに基づいて誤差が決定され得、誤差は、復号層および符号化層1542Aの重みを更新するために、復号層および符号化層1542Aを介して逆伝播され得る。このようにして、符号化層1542Aは、入力として適用されるアクション指示の凝縮された表現を生成し、それによって、復号層がアクション指示を再生成する予測を生成することができるようにトレーニングされる。エンコーダ-デコーダネットワークのトレーニング後、「エンコーダ部分」は、符号化層1542Aとして利用され得、符号化層1542Aの出力は、次いで、ユーザアクション埋め込みとコマンドバンドル埋め込みとを生成する際に利用され得る。
【００７４】
図3Aには示されていないが、コマンドバンドル埋め込みは、アクションモデル154Aへの入力としてコマンドバンドルのアクションのアクション指示を適用し、オプションで、コマンドバンドル内に存在しないN個のアクション指示のうちのいずれかに関する「パディング」値を利用することによって、アクションモデル154Aを使用して生成され得る。例えば、Nが50であり、コマンドバンドルが5つのアクションのみを含む場合、「パディング」値は、アクション指示のうちの45個に対して利用され得る。1つまたは複数のプロセッサは、コマンドバンドルに関するコマンドバンドル埋め込みを生成するために、符号化層1542Aを介してコマンドバンドルの入力アクション指示を処理することができる。
【００７５】
図3Bにおいて、複数のアクション指示173B1〜Nの各々は、対応するアクションと、対応するアクションに関する重みとを示す。例えば、アクション指示173B1は、「アラームを設定して」アクションと「0.2」の重みとを示す。各アクション指示に関する重みは、ユーザに関するアクションの実行の最新性、ユーザに関するアクションの実行の発生量、および/またはユーザに関するアクションの発生の頻度に基づくことができる。例えば、アクション指示173B3の「照明を制御して」アクションに関する0.3の重みは、そのアクションが、図3Bに明示的に示された他のアクション(すべてより小さい重みを有する)よりも最近、より多い回数、および/または、より高い頻度で実行されていることに基づくことができる。
【００７６】
図3Bにおいて、アクションモデル154BのN個の入力1514B1〜Nの各々は、一意のアクション指示に対応する。すなわち、入力1514B1は、「アラームを設定して」アクションに対応し、入力1514B2は、「サーモスタットを調整して」アクションに対応する、などである。図3Bにおいて、アクション指示173B1〜Nの各々に関する重みは、それらの対応する入力1514B1〜Nに適用され、ユーザアクション埋め込み174Bを生成するために符号化層1542Bを介して処理される。対応するアクションがユーザに対して実行されていない、および/または、その他の点で重みが「ヌル」である任意の入力1541B1〜Nに対して、「0」の重みまたは他のヌル重みが利用され得る。いくつかの実装形態において、符号化層1542Bは、アクション指示に関する適用された重みを再生成するために大量のトレーニング例を利用してトレーニングされたエンコーダ-デコーダネットワークからの符号化層である。
【００７７】
図3Bには示されていないが、コマンドバンドル埋め込みは、アクションモデル154Bへの入力として、コマンドバンドルのアクションに対応する入力1541B1〜Nに関して「1」または他の値を適用し、他の入力1541B1〜Nに関して「0」または他のヌル重みを適用することによって、アクションモデル154Bを使用して生成され得る。例えば、「サーモスタットを調整して」アクションおよび「照明を制御して」アクションのみを含むコマンドバンドルについて、「1」が入力1541B2および1541B3に適用され得、「0」がすべての他の入力に適用され得る。
【００７８】
ここで図4Aおよび図4Bに向かうと、クライアントデバイス106(図1)の例106Aが示されている。クライアントデバイス106Aは、ディスプレイスクリーン140を含み、ディスプレイスクリーン140は、図4Aにおいて、第1のコマンドバンドルに関する第1の推奨事項177Aと、第2のコマンドバンドルに関する第2の推奨事項177Bと、オプションで、1つまたは複数の追加の推奨事項(図4Aの省略記号によって示される)とをグラフィカルに表示している。図4Bにおいて、ディスプレイスクリーン140は、図4Aの推奨事項177Aのコマンドバンドルの最初の呼び出し時に発生し得るダイアログの例と、そのコマンドバンドルのその後の呼び出し時に発生し得るダイアログの例とを表示している。
【００７９】
図4Aおよび図4Bのディスプレイスクリーン140は、仮想キーボードを介してユーザインターフェース入力を生成するためにユーザが選択し得るテキスト応答インターフェース要素188と、マイクロフォンを介してユーザインターフェース入力を生成するためにユーザが選択し得る音声応答インターフェース要素189とをさらに含む。いくつかの実装形態において、ユーザは、音声応答インターフェース要素189の選択なしで、マイクロフォンを介してユーザインターフェース入力を生成し得る。例えば、ダイアログ中、ユーザが音声応答インターフェース要素189を選択する必要性を不要にするために、マイクロフォンを介する可聴ユーザインターフェース入力に対する能動的な監視が行われ得る。それらのうちのいくつかおよび/または他の実装形態において、音声応答インターフェース要素189は、省略され得る。さらに、いくつかの実装形態において、テキスト応答インターフェース要素188は、追加でおよび/または代替的に省略され得る(例えば、ユーザは、可聴ユーザインターフェース入力のみを提供し得る)。図4Aおよび図4Bのディスプレイスクリーン140は、クライアントデバイス106Aに1つまたは複数のアクションを実行させるためにユーザと対話し得るシステムインターフェース要素190A、190B、190Cも含む。他の実装形態において、発話入力のみを受け入れ、可聴出力のみを提供する「オーディオインターフェースのみの」コンピューティングデバイス(すなわち、ディスプレイスクリーンを欠くコンピューティングデバイス)が提供され得る。
【００８０】
図4Aにおいて、第1の推奨事項177Aは、第1のコマンドバンドルによって実行されるアクションの指標とともに、第1のコマンドバンドルに関する呼び出しフレーズ(「おやすみ」)を表示する。同様に、第2の推奨事項177Bは、第2のコマンドバンドルによって実行されるアクションの指標とともに、第2のコマンドバンドルに関する呼び出しフレーズ(「おやすみ」)を表示する。推奨事項177Aおよび177Bは、本明細書で説明したように、それらの対応するコマンドバンドルのスコアリングに基づいて提示のために選択され得る。さらに、いくつかの実装形態において、推奨事項177Aは、それらの対応するコマンドバンドルのスコアリングに基づいて、推奨事項177Bの上に提示され得る。例えば、推奨事項は、それらの対応するコマンドバンドルのスコアに基づいてランク付けされ得、推奨事項177Aは、それが最高のスコアリングのコマンドバンドルに対応することに基づいて最初に提示され得る。
【００８１】
図4Bにおいて、第1の推奨事項177A(図4A)に関連付けられたコマンドバンドルは、ユーザインターフェース入力に応答して最初に呼び出された。例えば、コマンドバンドルは、推奨事項177Aのユーザによる選択(例えば、推奨事項177Aの「タップ」)に基づいて、または、ユーザが呼び出しフレーズ「おやすみ」を発話する(またはタイピングする)ことに基づいて最初に呼び出され得る。いくつかの実装形態において、ユーザが自分自身の好みの呼び出しフレーズをコマンドバンドルへ割り当てさせることができることに留意されたい。そのような呼び出しフレーズは、「おやすみ」呼び出しフレーズの代わりに、または追加の呼び出しフレーズとして利用され得る。例えば、追加のインターフェース要素が提供され、ユーザのための呼び出しフレーズを「おやすみ」に変更するためにユーザによって選択され得、または、ユーザは、アシスタントインターフェースを介して自動アシスタントへ提供される発話コマンドを通じて呼び出しフレーズを変更することができる(例えば、「「ナイティナイト」と言ったら「おやすみ」バンドルを実行して」)。
【００８２】
図4Bにおいて、第1の推奨事項177Aに関連付けられたコマンドバンドルは、「照明をオフにして」アクションの「ライト識別子」スロットに関する固定値を欠いている。これに基づいて、自動アシスタントによってユーザにプロンプト482Aが提供され、プロンプト482Aは、「ライト識別子」スロットに関する値の解決を可能にするためにユーザに入力を提供するように求める。それに応じて、ユーザは、「すべて」の入力480Aを提供し、これは、自動アシスタントに関連付けられたユーザのすべての照明を識別する値に解決され得る。
【００８３】
図4Bにおいて、第1の推奨事項177Aに関連付けられたコマンドバンドルは、「アラームを設定して」アクションの「アラーム時間」スロットに関する固定値も欠いている。これに基づいて、自動アシスタントによってユーザにプロンプト482Bが提供され、プロンプト482Bは、「アラーム時間」スロットに関する値の解決を可能にするためにユーザに入力を提供するように求める。それに応じて、ユーザは、「午前8:00」の入力480Bを提供し、これは、対応する時間値に解決され得る。
【００８４】
自動アシスタントは、次いで、出力482Cを提供し、これは、値が解決されたことを示し、また、解決された値を変更するためおよび/またはコマンドバンドルに関する呼び出しフレーズを変更するために提供され得るさらなるユーザインターフェース入力をユーザに指示する。いくつかの実装形態において、自動アシスタントは、ユーザに関して、解決された値をコマンドバンドルに関する「デフォルト」として記憶することをユーザが望むことを確認するようにユーザにさらに促すことができ、それを行う前に応答して肯定のユーザインターフェース入力をオプションで必要とすることができる。さらに、それらの実装形態のうちのいくつかにおいて、自動アシスタントは、加えてまたは代替的に、「ライト識別子」スロットおよび/または「アラーム時間」スロットに関してそのインスタンスのために使用することをユーザが望む値について、コマンドバンドルの各呼び出し時に、ユーザが代わりに促されることを選択することを可能にする出力を提供することができる。
【００８５】
図4Bは、より後の時間に「おやすみ」の後続の入力480Cを提供するユーザも示す。自動アシスタントは、入力480Cがコマンドバンドルに関する呼び出しフレーズであると判定し、それに応じて、プロンプト482A、482B、ならびに入力480Aおよび480Bを通して決定された解決された値を用いてコマンドバンドルのアクションを実行させることができる。自動アシスタントは、次いで、「照明をオフにして」アクションおよび「アラームを設定して」アクションが解決された値を用いて実行されたことを示す出力482Dをさらに提供し、「明日の天気予報を取得して」アクション(固定「局地的な天気」値が利用され得る)に応答してエージェントから受信された「明日は82度で晴れるようです」の出力を提供する。他の実装形態において、さらなる出力482Dは、オプションで、解決された値が「照明をオフにして」アクションおよび「アラームを設定して」アクションに利用されという確認を欠く場合がある。例えば、「照明はオフにされました。明日は82度で晴れるようです」の出力が代わりに提供され得る。
【００８６】
図5は、本明細書で開示した実装形態による例示的な方法500を示すフローチャートである。便宜上、図5のフローチャートの動作について、動作を実行するシステムを参照して説明する。このシステムは、自動アシスタント110のうちの1つまたは複数などの様々なコンピュータシステムの様々な構成要素を含み得る。さらに、方法500の動作は、特定の順序で示されているが、これは、限定することを意味しない。1つまたは複数の動作は、並び替えられ、省略され、または追加され得る。
【００８７】
ブロック550において、システムは、コマンドバンドルのコーパスを識別する。
【００８８】
ブロック552において、システムは、1つまたは複数の基準に基づいて、コマンドバンドルのサブセットを識別する。基準は、例えば、コマンドバンドルが、ユーザに関して自動アシスタントアプリケーションとまだペアリングされていない任意の周辺デバイスを必要とするアクションを含む場合、それらのコマンドバンドルをサブセットから除外することを含むことができる。周辺デバイスがアシスタントアプリケーションによって「発見」されており、アシスタントアプリケーションによって制御され得る場合、周辺デバイスは、ユーザに関して、自動アシスタントアプリケーションとペアリングされる。いくつかの実装形態において、基準は、代替的には、例えば、コマンドバンドルが、ユーザ入力および/または1つもしくは複数のネットワークパケットを介して、ユーザについて、その存在がまだ検出されていない任意の周辺デバイスを必要とするアクションを含む場合、それらのコマンドバンドルをサブセットから除外することを含むことができる。そのような例では、所与の周辺デバイスを必要とするアクションを含むコマンドバンドルは、周辺デバイスが明示的にペアリングされていなくても、依然として含まれ得る。例えば、所与の周辺デバイスは、(例えば、明示的なユーザインターフェース入力に応答して開始された「発見要求」に応答して)周辺デバイスが自動アシスタントによってまだ明示的に「発見」されていない場合でも、(例えば、ユーザが周辺デバイスを有することを示す)ユーザ入力および/または(周辺デバイスによる生成を示す特性を有する)ネットワークパケットに基づいて検出され得る。本明細書の他の場所で説明した1つまたは複数などの追加のおよび/または代替の基準が考慮され得る。いくつかの実装形態において、ブロック552は、省略され得、コーパスのすべてのコマンドバンドルが後続のブロックにおいて考慮され得る。
【００８９】
ブロック554において、システムは、方法500の反復において考慮されているユーザに関するアシスタント対話データを識別する。
【００９０】
ブロック556において、システムは、ブロック554において識別されたアシスタント対話データに基づいて、ユーザに関するユーザアクション埋め込みを生成する。
【００９１】
ブロック558において、システムは、ブロック552のサブセットのコマンドバンドルのコマンドバンドル埋め込みを決定する。例えば、システムは、コマンドバンドル埋め込みを事前に生成し、事前に生成されたコマンドバンドル埋め込みをそれらの対応するコマンドバンドルと関連付けて記憶し、ストレージからそれらの事前に生成されたコマンドバンドル埋め込みを取得し得る。
【００９２】
ブロック560において、システムは、サブセットのコマンドバンドルの各々について、ユーザアクション埋め込みとコマンドバンドル埋め込みとに基づいて類似性スコアを生成する。例えば、所与のコマンドバンドルについて、類似性スコアは、ユーザアクション埋め込みと所与のコマンドバンドルに関するコマンドバンドル埋め込みとの間のコサイン類似度尺度に少なくとも部分的に基づくことができる、
【００９３】
ブロック562において、システムは、ブロック560の類似性スコアのうちの1つまたは複数に基づいて、コマンドバンドルのうちの1つまたは複数に関する1つまたは複数の推奨事項を提示する。例えば、システムは、類似性スコアに少なくとも部分的に基づいてコマンドバンドルをランク付けし、ランク付けに基づいてコマンドバンドルのうちの1つまたは複数を選択し、選択されたコマンドバンドルに関連する情報を推奨事項として提示することができる。
【００９４】
ブロック564において、システムは、オプションで、推奨事項のうちの1つのコマンドバンドルのうちの1つのアクションに関する未解決スロット(もしあれば)をユーザへ適合させる。いくつかの実装形態において、システムは、1つまたは複数のプロンプトを提示し、スロットに関する値を解決するためにプロンプトに対する1つまたは複数の応答を利用し、それによって未解決スロットを適合させる。それらの実装形態のうちのいくつかにおいて、プロンプトは、推奨事項のうちの1つの選択、推奨事項のうちの1つのコマンドバンドルに関する呼び出しフレーズの受信、ならびに/または、コマンドバンドルのアクションの実行を引き起こすおよび/もしくはコマンドバンドルをユーザに関連付ける希望を示す他のユーザインターフェース入力に応答して提示される。
【００９５】
ブロック566において、システムは、コマンドバンドルの呼び出しに応答して、推奨事項のうちの1つのコマンドバンドルのアクションを実行する。アクションは、オプションで、ブロック564の適合された値のうちの1つまたは複数を使用して実行され得る。いくつかの実装形態において、アクションを実行することは、1つまたは複数のエージェントコマンドを1つまたは複数のエージェントへ送信することと、オプションで、エージェントコマンドのうちの1つまたは複数の中に、エージェントコマンドのスロットに関する適合された値のうちの1つまたは複数を含めることとを備える。
【００９６】
図6は、本明細書で説明した技法の1つまたは複数の態様を実行するためにオプションで利用され得る例示的なコンピューティングデバイス610のブロック図である。いくつかの実装形態において、クライアントデバイス106、自動アシスタント110、エージェント、および/または他の構成要素のうちの1つまたは複数は、例示的なコンピューティングデバイス610の1つまたは複数の構成要素を備え得る。
【００９７】
コンピューティングデバイス610は、典型的には、バスサブシステム612を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ614を含む。これらの周辺デバイスは、例えば、メモリサブシステム625とファイル記憶サブシステム626とを含む記憶サブシステム624と、ユーザインターフェース出力デバイス620と、ユーザインターフェース入力デバイス622と、ネットワークインターフェースサブシステム616とを含み得る。入力デバイスおよび出力デバイスは、コンピューティングデバイス610とのユーザ対話を可能にする。ネットワークインターフェースサブシステム616は、外部ネットワークへのインターフェースを提供し、他のコンピューティングデバイス内の対応するインターフェースデバイスに結合される。
【００９８】
ユーザインターフェース入力デバイス622は、キーボード、マウス、トラックボール、タッチパッド、またはグラフィックタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システムなどのオーディオ入力デバイス、マイクロフォン、および/または他のタイプの入力デバイスを含み得る。一般に、「入力デバイス」という用語は、コンピューティングデバイス610または通信ネットワークに情報を入力するすべての可能なタイプのデバイスおよび方法を含むことを意図している。
【００９９】
ユーザインターフェース出力デバイス620は、ディスプレイサブシステム、プリンタ、ファックス機、または、オーディオ出力デバイスなどの非視覚的ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、プロジェクションデバイス、または、視覚的画像を作成するためのなにか他のメカニズムを含み得る。ディスプレイサブシステムは、オーディオ出力デバイスなどの非視覚的ディスプレイも提供し得る。一般に、「出力デバイス」という用語の使用は、コンピューティングデバイス610からユーザまたは別の機械もしくはコンピューティングデバイスに情報を出力するすべての可能なタイプのデバイスおよび方法を含むことを意図している。
【０１００】
記憶サブシステム624は、本明細書で説明したモジュールのうちのいくつかまたはすべての機能を提供するプログラミングおよびデータ構造を記憶する。例えば、記憶サブシステム624は、図5の方法および/または本明細書で説明した他の方法の選択された態様を実行するロジックを含み得る。
【０１０１】
これらのソフトウェアモジュールは、一般に、プロセッサ614単独によって、または他のプロセッサと組み合わせて実行される。記憶サブシステム624において使用されるメモリ625は、プログラム実行中の命令およびデータの記憶のためのメインランダムアクセスメモリ(RAM)630と、固定された命令が記憶される読み出し専用メモリ(ROM)632とを含むいくつかのメモリを含むことができる。ファイル記憶サブシステム626は、プログラムおよびデータファイルのための永続的ストレージを提供することができ、ハードディスクドライブ、関連するリムーバブルメディアを伴うフロッピーディスクドライブ、CD-ROMドライブ、光学ドライブ、またはリムーバブル媒体カートリッジを含み得る。特定の実装形態の機能を実装するモジュールは、記憶サブシステム624内のファイル記憶サブシステム626によって、またはプロセッサ614によってアクセス可能な他の機械内に記憶され得る。
【０１０２】
バスサブシステム612は、意図したようにコンピューティングデバイス610の様々な構成要素およびサブシステムを互いに通信させるためのメカニズムを提供する。バスサブシステム612は、単一のバスとして概略的に示されているが、バスサブシステムの代替的な実装形態は、複数のバスを使用し得る。
【０１０３】
コンピューティングデバイス610は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または、任意の他のデータ処理システムもしくはコンピューティングデバイスを含む、様々なタイプのものであり得る。コンピュータおよびネットワークの絶えず変化する性質のために、図6に示すコンピューティングデバイス610の説明は、いくつかの実装形態を例示する目的のための具体的な例としてのみ意図されている。図6に示すコンピューティングデバイスよりも多いまたは少ない構成要素を有するコンピューティングデバイス610の多くの他の構成が可能である。
【符号の説明】
【０１０４】
106  クライアントデバイス
106A  クライアントデバイス
110  自動アシスタント
112  入力処理エンジン
114  音声-テキストモジュール
116  出力エンジン
118  呼び出し/対話エンジン
120  コマンドバンドルエンジン
125  推奨エンジン
126  フィルタリングモジュール
127  埋め込みモジュール
128  スコアリングモジュール
129  推奨モジュール
140  エージェント
140A〜N  エージェント
152  コマンドバンドルデータベース
154  アクションモデル
154A  アクションモデル
154B  アクションモデル
156  ユーザデータベース、ユーザデータ
171  ユーザデバイス
172  コマンドバンドル
173  アシスタント対話データ
173A  アシスタント対話データ
173A1〜N  アクション指示
173B  アシスタント対話データ
173B1〜N  アクション指示
174  ユーザアクション埋め込み
174A  ユーザアクション埋め込み
174B  ユーザアクション埋め込み
175  コマンドバンドル埋め込み
176  コマンドバンドル
177  推奨事項
177A  推奨事項
177B  推奨事項
180  コマンドバンドル呼び出し
181  プロンプト
182  応答
183  エージェントコマンド
184  応答コンテンツ
185  エージェントコマンド
186  応答コンテンツ
188  テキスト応答インターフェース要素
189  音声応答インターフェース要素
190A  システムインターフェース要素
190B  システムインターフェース要素
190C  システムインターフェース要素
480A  入力
480B  入力
480C  入力
482A  プロンプト
482B  プロンプト
482C  出力
482D  出力
610  コンピューティングデバイス
612  バスサブシステム
614  プロセッサ
616  ネットワークインターフェースサブシステム
620  ユーザインターフェース出力デバイス
622  ユーザインターフェース入力デバイス
624  記憶サブシステム
625  メモリサブシステム、メモリ
626  ファイル記憶サブシステム
630  メインランダムアクセスメモリ(RAM)
632  読み出し専用メモリ(ROM)
1541A1〜N  入力
1541B1〜N  入力
1542A  符号化層
1542B  符号化層
【図１】
0006978520.tif 000002
【図２Ａ】
0006978520.tif 000003
【図２Ｂ】
0006978520.tif 000004
【図３Ａ】
0006978520.tif 000005
【図３Ｂ】
0006978520.tif 000006
【図４Ａ】
0006978520.tif 000007
【図４Ｂ】
0006978520.tif 000008
【図５】
0006978520.tif 000009
【図６】
0006978520.tif 000010