(57)【要約】  実装が、カスタマイズされた対話型ダイアログアプリケーションを生成および/または実行することに関する。カスタマイズされた対話型ダイアログアプリケーションは、ユーザがカスタム状態およびカスタム状態間のカスタム遷移を生成することを可能にする状態マッピングツールから生成され得る。次いで、生成されたカスタム状態およびカスタム遷移に基づいて、カスタマイズされた構成記述が生成される。さらに、追加または代替の状態および遷移を含むデフォルト構成記述が識別される。カスタマイズされた対話型ダイアログアプリケーションを生成する際に、状態および遷移情報に基づいてダイアログターンが生成され、カスタマイズされた構成記述が優先し、デフォルト構成記述が、任意の未定義の状態および/または遷移について利用される。追加または代替として、実装は、生成されたカスタム状態およびカスタム遷移と、デフォルト構成記述とに基づいて、カスタムエージェントを生成および/または実行することに関する。
2020530606.tif 000002
【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサによって実施される方法であって、
ユーザが作成したカスタマイズされた対話型ダイアログアプリケーションについてのグラフィカル状態アプリケーションから、対話型ダイアログアプリケーションの指示と、カスタム状態の状態マップと、カスタム状態遷移とを受け取るステップであって、前記カスタム状態の各々が、前記カスタム状態のうちの対応する1つについてのカスタム状態情報を定義し、前記カスタム状態遷移の各々が、前記カスタム状態のうちの対応する1つからのカスタム遷移情報を定義する、ステップと、
前記カスタム状態およびカスタム状態遷移に基づいて、カスタマイズされた構成記述を生成するステップと、
前記対話型ダイアログアプリケーションの前記指示に基づいてデフォルト構成記述を識別するステップであって、前記デフォルト構成記述が、1つまたは複数のデフォルト状態についてのデフォルト状態情報およびデフォルト遷移情報を含む、ステップと、
追加のユーザによって操作される追加のクライアントデバイスのアシスタントインターフェースを介して与えられた自然言語入力を受け取るステップと、
前記自然言語入力が前記対話型ダイアログアプリケーションを参照すると判定するステップと、
前記自然言語入力が前記対話型ダイアログアプリケーションを参照するとの判定に応答して、
前記カスタマイズされた構成記述と前記デフォルト構成記述の両方に基づいて、カスタマイズされた対話型ダイアログアプリケーションを実行するステップであって、前記カスタマイズされた対話型ダイアログアプリケーションを実行するステップが、
前記追加のユーザと前記カスタマイズされた対話型ダイアログアプリケーションとの間の対話型ダイアログ中に、前記アシスタントインターフェースを介するレンダリングのために複数の出力のインスタンスを生成するステップであって、
前記複数の出力のインスタンスの各々が、前記カスタマイズされた対話型ダイアログアプリケーションの実行中の前記対話型ダイアログの複数のダイアログターンのうちの対応する1つについてのものであり、
前記複数の出力のインスタンスの少なくとも一部が、前記カスタマイズされた構成記述を使用して生成され、前記複数の出力のインスタンスの少なくとも一部が、前記デフォルト構成記述を使用して生成される、ステップ
を含む、ステップと
を含む方法。
【請求項２】
前記複数のダイアログターンのうちの所与のダイアログターンにおいて、前記複数の出力のインスタンスのうちの所与の出力のインスタンスを生成するステップが、
前記所与のダイアログターンにおける前記対話型ダイアログの現状態を識別するステップと、
前記対話型ダイアログの前記現状態が前記カスタマイズされた構成記述の前記カスタム状態のうちの1つであるかどうかを判定するステップと、
前記ダイアログの前記現状態が前記カスタマイズされた構成記述の前記カスタム状態のうちの1つであるとの判定に応答して、
前記カスタム状態のうちの前記1つについて定義された前記カスタム状態情報に基づいて、前記所与の出力のインスタンスを生成するステップと
を含む請求項1に記載の方法。
【請求項３】
前記複数のダイアログターンのうちの所与の追加のダイアログターンにおいて、前記複数の出力のインスタンスのうちの追加の所与の出力のインスタンスを生成するステップが、
前記追加のダイアログターンにおける前記対話型ダイアログの追加の現状態を識別するステップと、
前記対話型ダイアログの前記追加の現状態が前記カスタマイズされた構成記述の前記カスタム状態のうちの1つであるかどうかを判定するステップと、
前記ダイアログの前記追加の現状態が前記カスタマイズされた構成記述の前記カスタム状態のうちの1つではないとの判定に応答して、
前記追加の現状態に合致する前記デフォルト状態のうちの1つを識別するステップと、
前記デフォルト状態のうちの前記1つについて定義された前記デフォルト状態情報に基づいて、前記追加の所与の出力のインスタンスを生成するステップと
を含む請求項2に記載の方法。
【請求項４】
前記追加の現状態に合致する前記デフォルト状態のうちの前記1つを識別したことに応答して、
前記デフォルト状態のうちの前記1つについての前記デフォルト遷移情報を使用して、前記カスタマイズされた構成記述の前記カスタム状態のさらなるカスタム状態に遷移するステップと、
前記デフォルト状態のうちの前記1つについて定義された前記デフォルト状態情報に基づいて、前記追加の所与の出力のインスタンスを生成するステップの後、
前記追加の所与の出力のインスタンスに応答して、追加のクライアントデバイスの前記アシスタントインターフェースを介して与えられた応答ユーザインターフェース入力を受け取るステップと、
前記さらなるカスタム状態に遷移したことに基づいて、前記さらなるカスタム状態を使用して、前記複数のダイアログターンの所与のさらなるダイアログターンにおいて、前記複数の出力のインスタンスのうちのさらなる出力のインスタンスを生成するステップと
をさらに含む請求項3に記載の方法。
【請求項５】
前記デフォルト状態のうちの前記1つがデフォルトエラー状態であり、前記デフォルトエラー状態について定義された前記デフォルト状態情報がデフォルトエラー状態情報である請求項3または4に記載の方法。
【請求項６】
前記デフォルト状態のうちの前記1つがデフォルト開始状態であり、前記デフォルト開始状態について定義された前記デフォルト状態情報がデフォルト開始状態情報である請求項3から5のいずれか一項に記載の方法。
【請求項７】
前記複数のダイアログターンのうちの所与のダイアログターンにおいて、前記複数の出力のインスタンスのうちの所与の出力のインスタンスを生成するステップが、
前記所与のダイアログターンにおける前記対話型ダイアログの現状態を識別するステップと、
前記対話型ダイアログの前記現状態が前記カスタマイズされた構成記述の前記カスタム状態のうちの1つであるかどうかを判定するステップと、
前記ダイアログの前記現状態が前記カスタマイズされた構成記述の前記カスタム状態のうちの1つであるとの判定に応答して、
前記カスタム状態のうちの前記1つについて定義された前記カスタム状態情報に基づいて、前記所与の出力のインスタンスを生成するステップであって、
前記カスタム状態のうちの前記1つについて定義された前記カスタム状態情報がカスタムオーディオを含み、前記所与の出力のインスタンスを生成するステップが前記追加のクライアントデバイスの1つまたは複数のスピーカを介して前記カスタムオーディオをレンダリングさせるステップを含む、ステップと
を含む請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記複数のダイアログターンのうちの所与のダイアログターンにおいて、前記複数の出力のインスタンスのうちの所与の出力のインスタンスを生成するステップが、
前記所与のダイアログターンにおける前記対話型ダイアログの現状態を識別するステップと、
前記対話型ダイアログの前記現状態が前記カスタマイズされた構成記述の前記カスタム状態のうちの1つであるかどうかを判定するステップと、
前記ダイアログの前記現状態が前記カスタマイズされた構成記述の前記カスタム状態のうちの1つであるとの判定に応答して、
前記カスタム状態のうちの前記1つについて定義された前記カスタム状態情報に基づいて、前記所与の出力のインスタンスを生成するステップであって、
前記カスタム状態のうちの前記1つについて定義された前記カスタム状態情報が、前記所与の出力のインスタンスを生成する際に使用するための外部リソースを含み、前記所与の出力のインスタンスを生成するステップが、前記外部リソースとインターフェースするステップを含む、ステップと
を含む請求項1から6のいずれか一項に記載の方法。
【請求項９】
前記外部リソースとインターフェースするステップが、ネットワークを介して、アプリケーションプログラミングインターフェースを使用して、前記外部リソースと通信するステップを含む請求項8に記載の方法。
【請求項１０】
前記カスタム状態のうちの所与のカスタム状態についての前記カスタム遷移情報が、予想される応答と、前記予想される応答を受け取った場合に遷移することになる、前記カスタム状態のうちの追加のカスタム状態とを含む請求項1から9のいずれか一項に記載の方法。
【請求項１１】
前記所与のカスタム状態についての前記カスタム遷移情報が、代替の予想される応答と、前記代替の予想される応答を受け取った場合に遷移することになる、前記カスタム状態のうちの代替カスタム状態とをさらに含む請求項10に記載の方法。
【請求項１２】
前記カスタム状態のうちの所与のカスタム状態についての前記カスタム遷移情報が、少なくとも1つの可能な応答についての定義のいくつかが欠けており、前記複数のダイアログターンのうちの所与のダイアログターンにおいて、前記複数の出力のインスタンスのうちの所与の出力のインスタンスを生成するステップが、
前記所与のカスタム状態の間に、前記追加のクライアントデバイスの前記アシスタントインターフェースを介して与えられたユーザインターフェース入力を受け取るステップと、
前記ユーザインターフェース入力が前記所与のカスタム状態についての前記カスタム遷移情報に準拠していないと判定するステップと、
前記ユーザインターフェース入力が前記所与のカスタム状態についての前記カスタム遷移情報に準拠していないと判定したことに応答して、
前記ユーザインターフェース入力に準拠する前記デフォルト状態のうちの1つを識別するステップと、
前記デフォルト状態のうちの前記1つに基づいて、前記所与の出力のインスタンスを生成するステップと
を含む請求項10または11に記載の方法。
【請求項１３】
1つまたは複数のプロセッサによって実施される方法であって、
ユーザが作成したカスタマイズされた対話型ダイアログアプリケーションについてのグラフィカル状態アプリケーションから、対話型ダイアログアプリケーションの指示と、カスタム状態の状態マップと、カスタム状態遷移とを受け取るステップであって、前記カスタム状態の各々が、前記カスタム状態のうちの対応する1つについてのカスタム状態情報を定義し、前記カスタム状態遷移の各々が、前記カスタム状態のうちの対応する1つからのカスタム遷移情報を定義する、ステップと、
前記カスタム状態および前記カスタム状態遷移に基づいて、カスタマイズされた構成記述を生成するステップと、
前記対話型ダイアログアプリケーションの前記指示に基づいてデフォルト構成記述を識別するステップであって、前記デフォルト構成記述が、デフォルト状態と、前記デフォルト状態の各々についてのデフォルト状態情報および少なくとも1つのデフォルト状態遷移とを含む、ステップと、
前記カスタマイズされた構成記述および前記デフォルト構成記述に基づいてマージされた構成記述を生成するステップであって、前記マージされた構成記述を生成するステップが、
前記カスタマイズされた構成記述に含まれ、前記デフォルト構成記述内の前記デフォルト状態のうちの対応する所与のデフォルト状態を含む、前記カスタム状態のうちの所与のカスタム状態を識別するステップと、
前記所与のカスタム状態が前記カスタマイズされた構成記述に含まれることに基づいて、
前記マージされた構成記述内に前記対応する所与のデフォルト状態を含めることなく、前記マージされた構成記述内に前記所与のカスタム状態を含めるステップと
を含む、ステップと
前記マージされた構成記述に基づいて、カスタマイズされたエージェントを生成するステップであって、前記カスタマイズされたエージェントが、対話型ヒューマンコンピュータダイアログに関与する際に自動化アシスタントとインターフェースするように、1つまたは複数のコンピュータのシステムによって実行可能である、ステップと
を含む方法。
【請求項１４】
前記マージされた構成記述を生成するステップが、
前記カスタマイズされた構成記述に含まれ、前記デフォルト構成記述内の前記デフォルト状態遷移のうちの対応する所与のデフォルト状態遷移を含む、前記カスタム状態遷移のうちの所与のカスタム状態遷移を識別するステップと、
前記所与のカスタム状態遷移が前記カスタマイズされた構成記述に含まれることに基づいて、
前記マージされた構成記述内に前記対応する所与のデフォルト状態遷移を含めることなく、前記マージされた構成記述内に前記所与のカスタム状態遷移を含めるステップと
を含む請求項13に記載の方法。
【請求項１５】
前記対話型ヒューマンコンピュータダイアログに関与する際に前記自動化アシスタントとインターフェースするとき、前記カスタマイズされたエージェントが、クライアントデバイスを介して前記自動化アシスタントに与えられたユーザインターフェース入力に基づいて生成される要求を前記自動化アシスタントから受け取り、前記カスタマイズされたエージェントが、応答内容を生成し、前記応答内容に基づく出力のプロビジョニングのために前記自動化アシスタントに前記応答内容を送る請求項13または14に記載の方法。
【請求項１６】
前記デフォルト構成が前記自動化アシスタントに特有のものであり、前記カスタマイズされたエージェントが前記自動化アシスタントに対して個別化される請求項13から15のいずれか一項に記載の方法。
【請求項１７】
追加の自動化アシスタントに特有の追加のデフォルト構成を識別するステップであって、前記追加のデフォルト構成記述が、追加のデフォルト状態と、前記追加のデフォルト状態の各々についての追加のデフォルト状態情報および少なくとも1つの追加のデフォルト状態遷移とを含む、ステップと、
前記カスタマイズされた構成記述および前記追加のデフォルト構成記述に基づいて追加のマージされた構成記述を生成するステップであって、前記追加のマージされた構成記述を生成するステップが、
前記カスタマイズされた構成記述に含まれ、前記追加のデフォルト構成記述内の前記追加のデフォルト状態のうちの対応する追加の所与のデフォルト状態を含む、前記カスタム状態のうちの所与の追加のカスタム状態を識別するステップと、
前記所与の追加のカスタム状態が前記カスタマイズされた構成記述に含まれることに基づいて、
前記追加のマージされた構成記述内に前記対応する追加の所与のデフォルト状態を含めることなく、前記追加のマージされた構成記述内に前記所与の追加のカスタム状態を含めるステップと
を含む、ステップと、
前記マージされた構成記述に基づいて追加のカスタマイズされたエージェントを生成するステップであって、前記追加のカスタマイズされたエージェントが、対話型ヒューマンコンピュータダイアログに関与する際に前記追加の自動化アシスタントとインターフェースするように、1つまたは複数のコンピュータの追加のシステムによって実行可能である、ステップと
をさらに含む請求項16に記載の方法。
【請求項１８】
前記マージされた構成記述を生成するステップが、
前記デフォルト構成記述内の前記デフォルト状態のうちの追加のデフォルト状態が、前記カスタマイズされた構成記述に含まれる前記カスタム状態内の対応する1つを含まないと判定するステップと、
前記追加のデフォルト状態が前記カスタム状態内の対応する1つを含まないと判定したことに基づいて、
前記マージされた構成記述内に前記追加のデフォルト状態を含めるステップと
をさらに含む請求項13に記載の方法。
【請求項１９】
前記追加のデフォルト状態が前記デフォルト構成記述内で必須として示されると判定するステップをさらに含み、前記マージされた構成記述内に前記追加のデフォルト状態を含めるステップが、前記追加のデフォルト状態が必須として示されると判定するステップにさらに基づく請求項18に記載の方法。
【請求項２０】
請求項1から19のいずれか一項に記載の方法を実施するように構成されたコンピューティング装置。
【請求項２１】
コンピューティング装置によって実行されるとき、請求項1から18のいずれか一項に記載の方法をコンピューティング装置に実施させる機械可読命令。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ユーザ構成され、カスタマイズされた対話型ダイアログアプリケーションに関する。
【背景技術】
【０００２】
自動化アシスタント(「パーソナルアシスタント」、「モバイルアシスタント」などとも呼ばれる)が、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス、自動車システム、スタンドアロンパーソナルアシスタントデバイスなどの様々なクライアントデバイスを介してユーザと対話され得る。自動化アシスタントは、ユーザからの入力(たとえば、タイプおよび/または発話された自然言語入力)を受け取り、応答内容(たとえば、視覚および/または可聴自然言語出力)で応答する。クライアントデバイスを介して対話される自動化アシスタントが、クライアントデバイス自体を介して、かつ/またはクライアントデバイスとネットワーク通信している1つまたは複数のリモートコンピューティングデバイス(たとえば、「クラウド」内のコンピューティングデバイス)を介して実装され得る。
【発明の概要】
【課題を解決するための手段】
【０００３】
本明細書は一般に、ユーザインターフェース入力に基づいて生成されるカスタマイズされた構成記述に基づいて、カスタマイズされた対話型ダイアログアプリケーションを作成および実行するための方法、装置、およびコンピュータ可読媒体を対象とする。いくつかの実装では、ユーザは、マッピングツールを利用して、カスタマイズされた対話型ダイアログアプリケーションについてのカスタム状態のセットを生成し、カスタマイズされた対話型ダイアログアプリケーションについての、カスタム状態間のカスタム遷移を生成する。カスタマイズされた構成記述は、マッピングツールとの対話を介してユーザによって指定された、カスタム状態および状態間のカスタム遷移に基づいて生成され得る。対応するデフォルト構成記述が(たとえば、複数の候補デフォルト構成記述から)選択される。たとえば、デフォルト構成記述は、生成されている対話型ダイアログアプリケーションのクラスに基づいて、かつ/またはカスタマイズされた対話型ダイアログアプリケーションが生成されている(複数の候補自動化アシスタントのうちの)特定の自動化アシスタントに基づいて選択され得る。選択されたデフォルト構成記述は、デフォルト状態およびデフォルト遷移を含み得、そのうちの一部(またはすべて)は、カスタマイズされた構成記述に含まれない。次いで、カスタマイズされた構成記述およびデフォルト構成記述が一緒に利用され、ヒューマンコンピュータダイアログに関与する際に、カスタマイズされた対話型ダイアログアプリケーションが実行され得る。得られるダイアログのダイアログターン中に、カスタマイズされた構成記述は、カスタマイズされた構成記述内に明示的に記述される状態に基づく、いくつかのダイアログターンのために利用され得、デフォルト構成記述は、カスタマイズされた構成記述内に明示的に記述されない状態に基づく、いくつかの他のダイアログターンのために利用され得る。
【０００４】
本明細書において説明されるいくつかの実装の一例として、展開ユーザは、起動ユーザが自動化アシスタントを介して(たとえば、起動ユーザのクライアントデバイスのアシスタントインターフェースを介して)カスタマイズされたアプリケーションと対話することを可能にするカスタマイズされたアプリケーションを構成することに関心を有し得、カスタマイズされたアプリケーションは、ユーザとの対話型ダイアログに関与し、対話型ダイアログの部分としてユーザにファクトを提供するように構成される。展開ユーザは、グラフィカルユーザインターフェースベースのマッピングアプリケーションを利用して、カスタム「Serve Fact」状態を生成し得、状態は、起動ユーザとの対話型ダイアログ中の状態の発生時に、起動ユーザに対してレンダリングするための、自動化アシスタントによって提供され得るファクトの1つまたは複数のステートメントを含む。さらに、展開ユーザは、自動化アシスタントが起動ユーザにファクトをレンダリングさせた後に自動的に遷移される「Prompt For Next Fact」状態を定義し得る。「Prompt For Next Fact」状態は、自動化アシスタントに、起動ユーザに出力として(可聴に、かつ/またはグラフィカルに)レンダリングさせるための質問を含み得る。たとえば、質問は、別のファクトの提供を受けることに起動ユーザが関心を有するかどうかを、起動ユーザにプロンプト指示し得る。さらに、「Prompt For Next Fact」状態は、質問のレンダリングに応答して、起動ユーザからの肯定的ユーザインターフェース入力が受け取られた場合に、自動化アシスタントに「Serve Fact」状態に再び遷移させるための遷移情報を含み得る。任意選択で、展開ユーザは、起動ユーザによるカスタマイズされたアプリケーションの初期起動時にウェルカムメッセージをレンダリングさせ得る「Welcome」状態、および/または(任意選択で、グッドバイメッセージのレンダリング後に)カスタマイズされたアプリケーションとの対話型ダイアログを終了させる「Goodbye」状態を定義し得る。展開ユーザはまた、カスタマイズされたアプリケーションと関連付けるための1つまたは複数の起動語句を定義し得る。展開ユーザがカスタム状態およびカスタム遷移の定義を完了すると、カスタム状態およびカスタム遷移に基づいて、カスタマイズされた構成記述が生成される。さらに、対話型ダイアログアプリケーションの選択されたクラスに特有であり得、またはすべてのアプリケーションについての単一のデフォルト構成記述であり得る、ファクトサービングアプリケーションについてのデフォルト構成記述が識別される。その後で、起動ユーザがカスタマイズされたアプリケーションを起動させるとき、カスタマイズされた構成記述は、ダイアログの状態がカスタマイズされた構成記述のカスタマイズされた状態によって定義されるときに、起動ユーザとの対話型ダイアログに関与する際に利用され、一方、デフォルト構成記述は、カスタマイズされた構成記述内で定義されないダイアログ状態に直面したときに利用される。たとえば、カスタマイズされた構成記述は、「GOODBYE」状態についての定義を含まないことがあり、したがって、その代わりにデフォルト構成記述内で定義された「GOODBYE」状態が利用され、ダイアログアプリケーションのイン��タンスについての最終ダイアログターンが生成され得る。さらに、デフォルト構成記述は、(カスタマイズされた構成記述内で定義され、または定義されないことがある)すべての状態に当てはまり得る1つまたは複数のパラメータについてのデフォルト定義を含み得る。たとえば、デフォルト構成記述は、デフォルトで、カスタマイズされた構成記述内で定義されない場合、すべての状態のパラメータであり得る、定義済みの「No Input」パラメータを含み得る。したがって、デフォルトの「No Input」パラメータは、すべての状態と共に含まれ得、ユーザ入力が理解されなかった場合、かつ/またはダイアログアプリケーションが任意の状態にあるときに、予想される入力を与えることなくユーザがある期間待機する場合にダイアログを生成するために利用され得る。いくつかの実装では、起動ユーザは、展開ユーザのユーザインターフェース入力を介して、カスタマイズされたアプリケーションに関連する起動語句を含む自然言語入力(たとえば、発話)を自動化アシスタントに与えることによって、カスタマイズされたアプリケーションを起動させる。たとえば、展開ユーザは、カスタマイズされたアプリケーションに関連付けるために「ボブのトリビアゲーム」という起動語句を与え得、自動化アシスタントは、カスタマイズされたアプリケーションが起動語句に関連して記憶されることに基づいて、起動ユーザの「ボブのトリビアゲームをプレイする」という発話に応答して、カスタマイズされたアプリケーションを識別し得る。
【０００５】
代替または追加として、エージェントは、ユーザが作成した構成記述に基づいて、かつ/またはマッピングツールから生成され得、エージェントは後で実行され得る。たとえば、システムは、状態および遷移情報を受け取り、カスタマイズされた構成記述を生成し、デフォルト構成記述を識別し、記述に基づいてエージェントを生成し得る。次いでエージェントは、様々な自動化アシスタント対話において利用され得る。たとえば、自動化アシスタントは、ユーザ入力を受け取り、ユーザ入力に基づいてエージェントコマンドを生成し、エージェントにエージェントコマンドを送り得、エージェントは、エージェントコマンドに基づいて応答内容を生成し得、ユーザ入力に応答して応答内容(またはその変換)が提供される。
【０００６】
本明細書において説明される実装は、展開ユーザがユーザインターフェース入力を介して機能的かつ/またはロバストなアプリケーションおよび/またはエージェントのために必要な状態のうちの一部だけを定義する状況において、カスタマイズされた対話型ダイアログアプリケーションおよび/またはカスタマイズされた対話型エージェントを生成することを可能にし得る。たとえば、それらの実装は、機能的および/またはロバストなアプリケーションおよび/またはエージェントのために必要な様々な状態および/または状態遷移を明示的に定義する追加のユーザインターフェース入力の必要をなくすためにデフォルト構成記述を活用し得る。これらおよび他の方式において、アプリケーションおよび/またはエージェントの作成に必要なユーザインターフェース入力の量が削減され得、そのことは、カスタマイズされた対話型ダイアログアプリケーションを生成する際に展開ユーザによって利用されるクライアントデバイスの様々なリソースを節約し得る。さらに、クライアントデバイスによって、カスタマイズされた対話型ダイアログアプリケーションを生成するリモートコンピュータシステムに、様々な状態および/または状態遷移に対応するデータを送る必要がないので、ネットワークリソースが削減され得る。さらに、削減されるユーザインターフェース入力の量は、器用でない展開ユーザにとって恩恵となり得る。
【０００７】
さらに、本明細書において説明されるように、複数の異種のカスタマイズされた対話型ダイアログアプリケーションの各々についての様々な実装において同一のデフォルト構成記述が利用され得る。これは、異種のカスタマイズされたアプリケーションの各々について別々のインスタンスを完全に別々に記憶することを必要とすることなく、同一のデフォルト構成記述を利用することを可能にする。このようにして、異種のカスタマイズされたアプリケーションの各々について別々のインスタンスを別々に記憶することを必要とするのではなく、複数の異種のカスタマイズされたアプリケーションが構成記述を共有し得るので、記憶リソースが節約され得る。さらに、本明細書において説明される様々な実装は、デフォルト構成記述を活用して、カスタマイズされた対話型ダイアログアプリケーションおよび/またはエージェントを生成する際に定義されたカスタム状態およびカスタム遷移を補足する。それらの実装では、デフォルト構成記述の活用は、生成されたアプリケーションおよび/またはエージェントを機能的にし、かつ/またはよりロバストにする。生成されたアプリケーションおよび/またはエージェントを機能的にし、かつ/またはよりロバストにすることにより、アプリケーションを実行している、かつ/またはエージェントとインターフェースしている自動化アシスタントとのヒューマン対話を介して(たとえば、クライアントデバイスのアシスタントインターフェースを介して)関与する対話型ダイアログ中に行われる対話などのヒューマンコンピュータ対話が改善され得る。たとえば、デフォルト構成記述の利用により、自動化アシスタントが様々なエラー条件、予期しないユーザインターフェース入力、および/または普通なら障害が発生しているはずの他の状況に応答することが可能となり得、それによって、ヒューマンコンピュータ対話の改善が実現される。
【０００８】
上記の説明は、本明細書において説明されるほんのいくつかの実装の概要として与えられるものである。追加および代替の実装が以下でより詳細に説明される。
【０００９】
いくつかの実装では、1つまたは複数のプロセッサによって実施される方法が提供され、方法は、ユーザが作成したカスタマイズされた対話型ダイアログアプリケーションについてのグラフィカル状態アプリケーションから、対話型ダイアログアプリケーションの指示と、カスタム状態の状態マップと、カスタム状態遷移とを受け取ることを含む。カスタム状態の各々は、カスタム状態のうちの対応する1つについてのカスタム状態情報を定義し、カスタム状態遷移の各々は、カスタム状態のうちの対応する1つからのカスタム遷移情報を定義する。方法は、カスタム状態およびカスタム状態遷移に基づいて、カスタマイズされた構成記述を生成することをさらに含む。方法は、対話型ダイアログアプリケーションの指示に基づいてデフォルト構成記述を識別することをさらに含む。デフォルト構成記述は、1つまたは複数のデフォルト状態についてのデフォルト状態情報およびデフォルト遷移情報を含む。方法は、追加のユーザによって操作される追加のクライアントデバイスのアシスタントインターフェースを介して与えられた自然言語入力を受け取ること、および自然言語入力が対話型ダイアログアプリケーションを参照すると判定することをさらに含む。方法は、自然言語入力が対話型ダイアログアプリケーションを参照するとの判定に応答して、カスタマイズされた構成記述とデフォルト構成記述の両方に基づいて、カスタマイズされた対話型ダイアログアプリケーションを実行することをさらに含む。いくつかの実装では、カスタマイズされた対話型ダイアログアプリケーションを実行することは、追加のユーザとカスタマイズされた対話型ダイアログアプリケーションとの間の対話型ダイアログ中に、アシスタントインターフェースを介するレンダリングのために複数の出力のインスタンスを生成することを含む。複数の出力のインスタンスの各々は、カスタマイズされた対話型ダイアログアプリケーションの実行中の対話型ダイアログの複数のダイアログターンのうちの対応する1つについてのものであり、複数の出力のインスタンスのうちの少なくとも一部が、カスタマイズされた構成記述を使用して生成され、複数の出力のインスタンスのうちの少なくとも一部が、デフォルト構成記述を使用して生成される。いくつかの実装では、出力の1つまたは複数のインスタンスは、カスタマイズされた構成記述とデフォルト構成記述の両方に基づいて生成され得る。
【００１０】
一例として、対話型ダイアログでの出力のインスタンスが、カスタマイズされた構成記述内で定義された状態を使用して生成され得、対話型ダイアログでの出力の追加のインスタンスが、デフォルト構成記述内で定義された追加の状態を使用して生成され得、対話型ダイアログでのさらなる出力のインスタンスが、デフォルト構成記述とカスタマイズされた構成記述の両方からの内容に基づく別の状態を使用して生成され得る。
【００１１】
任意選択で、本明細書において開示される技術のこれらおよび他の実装は、以下の特徴のうちの1つまたは複数を含み得る。
【００１２】
いくつかの実装では、複数のダイアログターンのうちの所与のダイアログターンにおいて、複数の出力のインスタンスのうちの所与の出力のインスタンスを生成することが、その所与のダイアログターンにおける対話型ダイアログの現状態を識別すること、対話型ダイアログの現状態がカスタマイズされた構成記述のカスタム状態のうちの1つであるかどうかを判定すること、およびダイアログの現状態がカスタマイズされた構成記述のカスタム状態のうちの1つであるとの判定に応答して、カスタム状態のうちのその1つについて定義されたカスタム状態情報に基づいて、出力のその所与のインスタンスを生成することを含む。それらの実装のうちのいくつかのバージョンでは、複数のダイアログターンのうちの所与の追加のダイアログターンにおいて、複数の出力のインスタンスのうちの追加の所与の出力のインスタンスを生成することが、追加のダイアログターンにおける対話型ダイアログの追加の現状態を識別すること、対話型ダイアログの追加の現状態がカスタマイズされた構成記述のカスタム状態のうちの1つであるかどうかを判定すること、ならびにダイアログの追加の現状態がカスタマイズされた構成記述のカスタム状態のうちの1つではないとの判定に応答して、追加の現状態に合致するデフォルト状態のうちの1つを識別すること、およびデフォルト状態のうちの1つについて定義されたデフォルト状態情報に基づいて、追加の所与の出力のインスタンスを生成することを含む。それらのバージョンのうちのいくつかでは、方法は、追加の現状態に合致するデフォルト状態のうちの1つを識別したことに応答して、デフォルト状態のうちの1つについてのデフォルト遷移情報を使用して、カスタマイズされた構成記述のカスタム状態のさらなるカスタム状態に遷移すること、デフォルト状態のうちの1つについて定義されたデフォルト状態情報に基づいて、追加の所与の出力のインスタンスを生成した後、追加の所与の出力のインスタンスに応答して、追加のクライアントデバイスのアシスタントインターフェースを介して与えられた応答ユーザインターフェース入力を受け取ること、およびさらなるカスタム状態に遷移したことに基づいて、そのさらなるカスタム状態を使用して、複数のダイアログターンの所与のさらなるダイアログターンにおいて、複数の出力のインスタンスのうちのさらなる出力のインスタンスを生成することをさらに含む。
【００１３】
いくつかの実装では、複数のダイアログターンのうちの所与のダイアログターンにおいて、複数の出力のインスタンスのうちの所与の出力のインスタンスを生成することは、その所与のダイアログターンにおける対話型ダイアログの現状態を識別すること、対話型ダイアログの現状態がカスタマイズされた構成記述のカスタム状態のうちの1つであるかどうかを判定すること、およびダイアログの現状態がカスタマイズされた構成記述のカスタム状態のうちの1つであるとの判定に応答して、カスタム状態のうちのその1つについて定義されたカスタム状態情報に基づいて、出力のその所与のインスタンスを生成することを含む。一例として、カスタム状態のうちの1つについて定義されたカスタム状態情報はカスタムオーディオを含み得、所与の出力のインスタンスを生成することは、追加のクライアントデバイスの1つまたは複数のスピーカを介してカスタムオーディオをレンダリングさせることを含み得る。別の例として、追加または代替として、カスタム状態のうちの1つについて定義されたカスタム状態情報は、前記所与の出力のインスタンスを生成する際に使用するための外部リソースを含み得、所与の出力のインスタンスを生成することは、外部リソースとインターフェースすることを含み得る。たとえば、外部リソースとインターフェースすることは、外部リソースと通信することを含み得る。
【００１４】
いくつかの実装では、カスタム状態のうちの所与のカスタム状態についてのカスタム遷移情報は、予想される応答と、予想される応答を受け取った場合に遷移することになる、カスタム状態のうちの追加のカスタム状態とを含む。それらの実装のうちのいくつかのバージョンでは、所与のカスタム状態についてのカスタム遷移情報は、代替の予想される応答と、代替の予想される応答を受け取った場合に遷移することになる、カスタム状態のうちの代替カスタム状態とをさらに含む。それらの実装のうちのいくつかの追加または代替のバージョンでは、カスタム状態のうちの所与のカスタム状態についてのカスタム遷移情報は、少なくとも1つの可能な応答についての定義のいくつかが欠けており、複数のダイアログターンのうちの所与のダイアログターンにおいて、複数の出力のインスタンスのうちの所与の出力のインスタンスを生成することは、その所与のカスタム状態の間に、追加のクライアントデバイスのアシスタントインターフェースを介して与えられたユーザインターフェース入力を受け取ること、ユーザインターフェース入力がその所与のカスタム状態についてのカスタム遷移情報に準拠していないと判定すること、ユーザインターフェース入力がその所与のカスタム状態についてのカスタム遷移情報に準拠していないと判定したことに応答して、ユーザインターフェース入力に準拠するデフォルト状態のうちの1つを識別すること、およびデフォルト状態のうちの1つに基づいて、所与の出力のインスタンスを生成することを含む。
【００１５】
いくつかの実装では、1つまたは複数のプロセッサによって実施される方法が提供され、ユーザが作成したカスタマイズされた対話型ダイアログアプリケーションについてのグラフィカル状態アプリケーションから、対話型ダイアログアプリケーションの指示と、カスタム状態の状態マップと、カスタム状態遷移とを受け取ることを含む。カスタム状態の各々は、カスタム状態のうちの対応する1つについてのカスタム状態情報を定義し、カスタム状態遷移の各々は、カスタム状態のうちの対応する1つからのカスタム遷移情報を定義する。方法は、カスタム状態およびカスタム状態遷移に基づいて、カスタマイズされた構成記述を生成することをさらに含む。方法は、対話型ダイアログアプリケーションの前記指示に基づいてデフォルト構成記述を識別することをさらに含む。デフォルト構成記述は、デフォルト状態と、デフォルト状態の各々についてのデフォルト状態情報および少なくとも1つのデフォルト状態遷移とを含む。方法は、カスタマイズされた構成記述およびデフォルト構成記述に基づいてマージされた構成記述を生成することをさらに含む。マージされた構成記述を生成することは、カスタマイズされた構成記述に含まれ、デフォルト構成記述内のデフォルト状態のうちの対応する所与のデフォルト状態を含む、カスタム状態のうちの所与のカスタム状態を識別すること、およびその所与のカスタム状態がカスタマイズされた構成記述に含まれることに基づいて、マージされた構成記述内に対応する所与のデフォルト状態を含めることなく、マージされた構成記述内にその所与のカスタム状態を含めることを含み得る。方法は、マージされた構成記述に基づいて、カスタマイズされたエージェントを生成することをさらに含み得る。カスタマイズされたエージェントは、対話型ヒューマンコンピュータダイアログに関与する際に自動化アシスタントとインターフェースするように、1つまたは複数のコンピュータのシステムによって実行可能である。
【００１６】
任意選択で、本明細書において開示される技術のこれらおよび他の実装は、以下の特徴のうちの1つまたは複数を含み得る。
【００１７】
いくつかの実装では、マージされた構成記述を生成することは、カスタマイズされた構成記述に含まれ、デフォルト構成記述内のデフォルト状態遷移のうちの対応する所与のデフォルト状態遷移を含む、カスタム状態遷移のうちの所与のカスタム状態遷移を識別すること、およびその所与のカスタム状態遷移がカスタマイズされた構成記述に含まれることに基づいて、マージされた構成記述内に対応する所与のデフォルト状態遷移を含めることなく、マージされた構成記述内にその所与のカスタム状態遷移を含めることを含む。
【００１８】
いくつかの実装では、対話型ヒューマンコンピュータダイアログに関与する際に自動化アシスタントとインターフェースする際に、カスタマイズされたエージェントは、クライアントデバイスを介して自動化アシスタントに与えられたユーザインターフェース入力に基づいて生成される要求を自動化アシスタントから受け取り、カスタマイズされたエージェントは応答内容を生成し、応答内容に基づく出力のプロビジョニングのために自動化アシスタントに応答内容を送る。
【００１９】
いくつかの実装では、デフォルト構成は自動化アシスタントに特有のものであり、カスタマイズされたエージェントが自動化アシスタントに対して個別化される。それらの実装のうちのいくつかのバージョンでは、方法は、追加の自動化アシスタントに特有の追加のデフォルト構成を識別することをさらに含む。追加のデフォルト構成記述は、追加のデフォルト状態と、追加のデフォルト状態の各々についての追加のデフォルト状態情報および少なくとも1つの追加のデフォルト状態遷移とを含む。それらのバージョンでは、方法は、カスタマイズされた構成記述および追加のデフォルト構成記述に基づいて追加のマージされた構成記述を生成すること、およびマージされた構成記述に基づいて追加のカスタマイズされたエージェントを生成することをさらに含む。追加のカスタマイズされたエージェントは、対話型ヒューマンコンピュータダイアログに関与する際に追加の自動化アシスタントとインターフェースするように、1つまたは複数のコンピュータの追加のシステムによって実行可能である。追加のマージされた構成記述を生成することは、カスタマイズされた構成記述に含まれ、追加のデフォルト構成記述内の追加のデフォルト状態のうちの対応する追加の所与のデフォルト状態を含む、カスタム状態のうちの所与の追加のカスタム状態を識別すること、その所与の追加のカスタム状態がカスタマイズされた構成記述に含まれることに基づいて、追加のマージされた構成記述内に対応する追加の所与のデフォルト状態を含めることなく、追加のマージされた構成記述内にその所与の追加のカスタム状態を含めることを含み得る。
【００２０】
いくつかの実装では、マージされた構成記述を生成することは、デフォルト構成記述内のデフォルト状態のうちの追加のデフォルト状態が、カスタマイズされた構成記述に含まれるカスタム状態内のどんな対応する1つも含まないと判定すること、および追加のデフォルト状態がカスタム状態内のどんな対応する1つも含まないと判定したことに基づいて、マージされた構成記述内に追加のデフォルト状態を含めることをさらに含む。それらの実装のうちのいくつかでは、方法は、追加のデフォルト状態がデフォルト構成記述内で必須として示されると判定することをさらに含み、マージされた構成記述内に追加のデフォルト状態を含めることが、追加のデフォルト状態が必須として示されると判定することにさらに基づく。
【００２１】
さらに、いくつかの実装は、1つまたは複数のコンピューティングデバイスの1つまたは複数のプロセッサを含み、1つまたは複数のプロセッサは、関連するメモリ内に記憶された命令を実行するように動作可能であり、命令は、前述の方法のいずれかを実施させるように構成される。追加または代替として、いくつかの実装は、前述の方法のいずれかを実施するように1つまたは複数のプロセッサによって実行可能なコンピュータ命令を記憶する1つまたは複数の非一時的コンピュータ可読記憶媒体を含む。
【００２２】
前述の概念と、本明細書においてより詳細に説明する追加の概念のすべての組合せが、本明細書において開示される主題の部分として企図されることを理解されたい。たとえば、本開示の終わりに現れる、特許請求される主題のすべての組合せが、本明細書において開示される主題の部分として企図される。
【図面の簡単な説明】
【００２３】
【図１】本明細書において開示される実装が実装され得る例示的環境のブロック図である。
【図２】本明細書において開示される実装において利用され得るグラフィカル状態図の一例である。
【図３】図2に示される状態図についての例示的なカスタマイズされた構成記述を示す図である。
【図４】例示的デフォルト構成記述を示す図である。
【図５】本明細書において開示される実装による例示的方法を示すフローチャートである。
【図６】本明細書において開示される実装による、ユーザ、クライアントデバイス、およびユーザと対話型ダイアログアプリケーションを実行するクライアントデバイスに関連する自動化アシスタントとの間の例示的ダイアログを示す図である。
【図７】コンピューティングデバイスの例示的アーキテクチャを示す図である。
【発明を実施するための形態】
【００２４】
いくつかの例では、ユーザが、カスタマイズされた対話型ダイアログアプリケーションを生成することに関心を有し得、ユーザは、状態マッピングの形態の内容と、カスタマイズされた対話型ダイアログアプリケーションの指示とを自動化アシスタントに与え得る。内容は、たとえば、ユーザが1つまたは複数のカスタム状態を定義することを可能にする視覚開発ツールから入力され、マッピングツールを利用して定義済みの状態間を遷移するための遷移条件を示し得る。いくつかの実装では、状態は、カスタマイズされた対話型ダイアログアプリケーション(本明細書では単に「カスタマイズされたアプリケーション」とも呼ばれる)の実行時に自動化アシスタントによって後続のユーザに提供され得るプロンプト、ステートメント、音、および/またはカスタムオーディオを含み得る。さらに、カスタマイズされた対話型ダイアログアプリケーションの指示に基づいて、カスタマイズされたアプリケーションを実行している間に後続のユーザが直面し得る1つまたは複数のデフォルト状態を含むデフォルト構成記述が識別され得る。たとえば、状態マッピングを作成するとき、ユーザは、カスタマイズされたアプリケーションの後続のユーザが予期しない応答を与えるときに、インスタンスを扱うために1つまたは複数の状態および/または遷移を定義しないことがある。しかしながら、デフォルト構成記述は、それらのインスタンスを扱うためにすべての生成された状態についての1つまたは複数の状態および/またはデフォルトパラメータを含み得る。ユーザがカスタムである状態だけを定義することを必要とし、任意選択で、ユーザが状態のデフォルト挙動をカスタマイズすることを可能にすることによって、得られるカスタム対話型ダイアログアプリケーションはよりロバストとなり、エラーとなる傾向が低くなる。さらに、本明細書において説明されるように、デフォルト構成記述が、複数の異種のカスタマイズされたアプリケーションの各々について利用され得、それによって、異種のカスタマイズされたアプリケーションの各々について別々のインスタンスを完全に別々に記憶することを必要とすることなく、同一の構成記述を利用することが可能となる。このようにして、異種のカスタマイズされたアプリケーションの各々について別々のインスタンスを別々に記憶することを必要とするのではなく、複数の異種のカスタマイズされたアプリケーションが構成記述を共有し得るので、記憶リソースが節約され得る。本明細書において開示される実装を利用して、たとえば、ゲーミング、対話型音声応答、および/または顧客サポートバーチカルなどの様々なバーチカルにわたって様々なタイプのカスタマイズされたアプリケーションが作成され得る。
【００２５】
いくつかの実装では、デフォルト構成記述および1つまたは複数のカスタマイズされた構成記述に基づいて、単一の構成記述が生成され得る。したがって、本明細書において別々の記述として説明されるが、カスタマイズされた状態、デフォルト状態、カスタマイズされた遷移、デフォルト遷移、状態のカスタマイズされたパラメータ、状態のデフォルトパラメータ、および/またはカスタマイズされたダイアログアプリケーションについての状態の他の属性を含むマージされたダイアログアプリケーション記述が生成され得る。たとえば、状態が、デフォルト記述内でのみ定義された状態の1つまたは複数のパラメータと共に、カスタマイズされた構成記述とデフォルト構成記述の両方において定義され得る。マージされた構成記述は、デフォルト記述内でのみ定義されたパラメータをさらに含む、カスタマイズされた構成記述からの定義済み状態を含み得る。
【００２６】
ここで図1を参照すると、本明細書において開示される技法が実装され得る例示的環境が示されている。例示的環境は、クライアントデバイス106、自動化アシスタント110、カスタムアプリケーションエンジン120、および状態マッピングアプリケーション170を含む。クライアントデバイス106は、たとえば、スタンドアロン音声活動化スピーカデバイス、デスクトップコンピューティングデバイス、ラップトップコンピューティングデバイス、タブレットコンピューティングデバイス、携帯電話コンピューティングデバイス、ユーザの車両のコンピューティングデバイス、および/またはコンピューティングデバイスを含むユーザのウェアラブル装置(たとえば、コンピューティングデバイスを有するユーザの腕時計、コンピューティングデバイスを有するユーザの眼鏡、仮想または拡張現実コンピューティングデバイス)であり得る。追加および/または代替のクライアントデバイスが提供され得る。
【００２７】
自動化アシスタント110がクライアントデバイス106とは別々に図1に示されているが、いくつかの実装では、自動化アシスタント110のすべてまたは各側面が、クライアントデバイス106によって実施され得る。たとえば、いくつかの実装では、入力処理エンジン112がクライアントデバイス106によって実施され得る。自動化アシスタント110の1つまたは複数の(たとえば、すべての)側面が、クライアントデバイス106からリモートの1つまたは複数のコンピューティングデバイスによって実施される実施形態では、クライアントデバイス106と自動化アシスタント110のそれらの側面は、広域ネットワーク(WAN)(たとえば、インターネット)などの1つまたは複数のネットワークを介して通信する。さらに、状態マッピングアプリケーション170がクライアントデバイス106および自動化アシスタント110から別々のものとして示されているが、いくつかの実装では、状態マッピングアプリケーション170は、クライアントデバイス106および/または自動化アシスタント110上で実行中のアプリケーションであえり得る。同様に、カスタムアプリケーションエンジン120およびその構成要素が自動化アシスタント120の部分として示されているが、これは必須ではなく、これらの構成要素のうちの1つまたは複数が別々に実装され得、かつ/またはカスタムアプリケーションエンジン120のサブコンポーネントであり得る。
【００２８】
ただ1つのクライアントデバイス106が自動化アシスタント110と共に示されているが、多くの実装では、自動化アシスタント110はリモートであり得、複数のユーザの複数のクライアントデバイスの各々とインターフェースし得る。たとえば、自動化アシスタント110は、異なるセッションを介して複数のデバイスの各々との通信を管理し得、複数のセッションを並列に管理し得る。たとえば、いくつかの実装では、自動化アシスタント110は、たとえば複数のユーザからの大量の要求を扱うのに適したソフトウェアを実行中の高性能コンピュータのサーバファームまたはクラスタを使用する、クラウドインフラストラクチャを利用するクラウドベースのサービスとして実装され得る。しかしながら、簡単のために、本明細書での多くの例は、単一のクライアントデバイス106に関連して説明される。
【００２９】
自動化アシスタント110は、入力処理エンジン112、内容入力エンジン130、出力エンジン135、および起動エンジン160を含む。いくつかの実装では、自動化アシスタント110のエンジンのうちの1つまたは複数が省略され、組み合わされ、かつ/または自動化アシスタント110とは別々の構成要素として実装され得る。さらに、自動化アシスタント110は、簡単のために本明細書では示されていない追加のエンジンを含み得る。
【００３０】
自動化アシスタント110は、クライアントデバイス106からユーザ入力のインスタンスを受け取る。たとえば、自動化アシスタント110は、ストリーミングオーディオ記録の形態のフリーフォーム自然言語音声入力を受け取り得る。本明細書での「フリーフォーム自然言語入力」とは、オプションの列挙されたリストに制限されないユーザ入力を指す。ストリーミングオーディオ記録は、クライアントデバイス106のユーザの音声入力を取り込むクライアントデバイス106のマイクロフォンから受け取った信号に応答して、クライアントデバイス106によって生成され得る。別の例として、自動化アシスタント110はフリーフォーム自然言語タイプ入力を受け取り得る。いくつかの実装では、クライアントデバイス106のユーザによる自動化アシスタント110の明示的起動に応答して、ユーザ入力がクライアントデバイス106によって生成され、かつ/または自動化アシスタント110に与えられ得る。たとえば、起動は、クライアントデバイス106によるユーザの一定の音声入力(たとえば、「Hey Assistant」などの自動化アシスタント110ホットワード/語句)の検出、ハードウェアボタンおよび/または仮想ボタンとのユーザ対話(たとえば、ハードウェアボタンのタップ、クライアントデバイス106によって表示されたグラフィカルインターフェース要素の選択)、ならびに/あるいは他の特定のユーザインターフェース入力であり得る。
【００３１】
いくつかの実装では、自動化アシスタント110は、ユーザからの入力と共に特定のアプリケーションの指示を受け取り得る。たとえば、自動化アシスタント110は、対話型ダイアログアプリケーションのカスタマイズされたバージョンを生成するのに状態情報が利用されるべきことを示す、対話型ダイアログアプリケーションの指示と状態情報とを受け取り得る。対話型ダイアログアプリケーションの指示は、アプリケーションの複数のクラスのうちのどれを生成する際に状態および遷移情報が利用されるべきかの記述を含み得る。いくつかの実装では、入力処理エンジン112は、与えられたオーディオが動的対話型ダイアログアプリケーションの指示を含むことを識別し、さらなる処理のために後続のオーディオを起動エンジン160に提供し得る。たとえば、入力処理エンジン112は、「Assistant、Facts Serverを実行して」という入力を受け取り得、入力処理エンジン112は、「Facts Server」アプリケーションが起動中であることを識別し得る。したがって、入力処理エンジン112は、受け取ったオーディオを構文解析し、構文解析した内容を起動エンジン160に提供して、どのアプリケーションが起動中であるかを決定し得る。いくつかの実装では、起動エンジン160は、対応するカスタマイズされた構成記述を識別し、カスタマイズされた構成記述およびデフォルト構成記述を利用してアプリケーションを実行することによって、アプリケーションを起動し得る。いくつかの実装では、起動エンジン160は、カスタマイズされた構成記述およびデフォルト構成記述に基づいて以前に生成されたエージェントを識別し得る。
【００３２】
自動化アシスタント110は、クライアントデバイス106からユーザ入力のインスタンスを受け取ったことに応答して、出力のインスタンスを提供する。出力のインスタンスは、たとえば、デバイス106によって可聴に提示される(たとえば、クライアントデバイス106のスピーカを介して出力される)オーディオ、デバイス106によってグラフィカルに提示される(たとえば、クライアントデバイス106のディスプレイを介してレンダリングされる)テキストおよび/またはグラフィカル内容などであり得る。本明細書において説明されるように、出力のいくつかのインスタンスは、状態マッピングアプリケーション170を介して、またはカスタム構成記述を介して、ユーザによって定義された1つまたは複数のカスタム状態に基づき得る。
【００３３】
自動化アシスタント110の入力処理エンジン112は、クライアントデバイス106を介して受け取ったユーザの自然言語入力を処理し、カスタムアプリケーションエンジン120などの自動化アシスタント110の1つまたは複数の他の構成要素による使用のために注釈付き出力を生成する。たとえば、入力処理エンジン112は、クライアントデバイス106の1つまたは複数のユーザインターフェース入力デバイスを介してユーザによって生成される自然言語フリーフォーム入力を処理し得る。生成された注釈付き出力は、自然言語入力の1つまたは複数の注釈、および任意選択で自然言語入力の用語のうちの1つまたは複数(たとえば、すべて)を含み得る。別の例として、追加または代替として、入力処理エンジン112は、(たとえば、デジタルオーディオデータの形態の)音声入力のインスタンスを受け取り、音声入力を、1つまたは複数のテキスト語または語句を含むテキストに変換する音声テキスト変換モジュール(「音声テキスト変換(speech to text)」または「STT」モジュールとも呼ばれる)を含み得る。いくつかの実装では、音声テキスト変換モジュールはストリーミング音声テキスト変換エンジンである。音声テキスト変換モジュールは、一言語での語順と共に、その言語でのオーディオ信号と音声単位の間の関係をそれぞれモデル化し得る、1つまたは複数の記憶された音声テキスト変換モデル(言語モデルとも呼ばれる)に依拠し得る。
【００３４】
いくつかの実装では、入力処理エンジン112は、自然言語入力内の様々なタイプの文法情報を識別し、注釈するように構成される。たとえば、入力処理エンジン112は、用語をその文法的役割で注釈するように構成された音声タガーの部分を含み得る。たとえば、音声タガーの部分は、各用語を「名詞」、「動詞」、「形容詞」、「代名詞」などの音声のその部分でタグ付けし得る。さらに、たとえば、いくつかの実装では、追加および/または代替として、入力処理エンジン112は、自然言語入力内の用語間の構文関係を決定するように構成された依存関係パーサを含み得る。たとえば、依存関係パーサは、どの用語が他の用語を修飾するか、文の主語および動詞など(たとえば、構文木)を決定し得、そのような依存関係の注釈を作成し得る。
【００３５】
内容入力エンジン130は、カスタム対話型ダイアログアプリケーションを生成するために利用される、状態マッピングアプリケーション170を操作するユーザによって定義された状態情報および遷移情報を含む、ユーザによって定義されたカスタム状態情報を処理する。たとえば、図2を参照すると、状態マッピングアプリケーション170を使用して、ユーザによって生成され得る状態マッピングの一例が与えられる。状態マッピング200は、アプリケーションを起動した後続のユーザに(たとえば、可聴に、かつ/またはグラフィカルに)レンダリングするために提供され得るウェルカムメッセージ206および音207を定義する「Welcome」状態205を含む。「Serve Fact」状態210は、起動ユーザにレンダリングするために提供され得る一連のファクト211を含む。「Welcome」状態205と「Serve Fact」状態210との間の遷移は条件付きではなく、「Welcome」状態は「パススルー」状態であり、それによって、ユーザからの入力の如何に関わらず、「Serve Fact」状態210は常に「Welcome」状態205の後に続く。同様に、「Ask For Another」状態215は常に「Serve Fact」状態205の後に続く。しかしながら、「Ask For Another」状態215は、「yes/no」型の状態である。本明細書において説明されるように、この状態でのダイアログターン時に、ユーザは、対応するクライアントデバイスにおいてレンダリングされたプロンプトを通じて、入力を求めるプロンプト指示を受け、アプリケーションは、入力として「yes」または「no」のどちらかを予期する。ユーザからの入力に基づいて、アプリケーションは、回答が「yes」である場合、「Serve Fact」状態205に遷移し、回答が「no」である場合、「Goodbye」状態220に遷移する。いくつかの実装では、ダイアログモジュール126および/または入力処理エンジン112は、他の入力を「yes」または「no」に準拠するものとして識別し、それに応じて遷移し得る。たとえば、ユーザは、応答として「もちろん(sure)」を与え得、ダイアログモジュール126は、「もちろん」が「yes」と同義語であると判定し得、その結果、回答が「yes」と同義語であるので、「Ask For Another」状態215から「Serve Fact」状態205に遷移し得る。いくつかの実装では、その代わりに、内容入力エンジン130は、カスタムアプリケーションエンジン120の構成要素であり得る。たとえば、内容入力エンジン130は、カスタマイズされたダイアログアプリケーションを生成するために与えられる内容を扱い得るだけであり、自動化アシスタント110に与えられ得る他の内容を扱わないことがある。
【００３６】
出力エンジン135は、出力のインスタンスをクライアントデバイス106に提供する。いくつかの実装では、出力のインスタンスは、カスタムアプリケーションエンジン120を操作するユーザによって生成された、カスタマイズされた対話型ダイアログアプリケーションに基づき得る。いくつかの実装では、出力エンジン135は、応答内容のテキスト構成要素をオーディオフォーマットに変換するテキスト音声変換(text to speech)(「TTS」)エンジンを含み得、出力エンジン135によって提供される出力はオーディオフォーマット(たとえば、ストリーミングオーディオとして)である。いくつかの実装では、応答内容は既にオーディオフォーマットであり得る。いくつかの実装では、追加または代替として、出力エンジン135は、(任意選択で、デバイス106によるオーディオへの変換のために)テキスト応答内容を出力として提供し、かつ/またはクライアントデバイス106によるグラフィカルディスプレイのために他のグラフィカル内容を出力として提供する。
【００３７】
カスタムアプリケーションエンジン120は、構成ビルダモジュール124、ダイアログモジュール126、および外部ソースモジュール128を含む。いくつかの実装では、カスタムアプリケーションエンジン120のモジュールが省略され、組み合わされ、かつ/またはカスタムアプリケーションエンジン120とは別々の構成要素として実装され得る。さらに、カスタムアプリケーションエンジン120は、簡単のために本明細書では示されていない追加のモジュールを含み得る。
【００３８】
ダイアログモジュール126は、クライアントデバイス106を介してユーザと対話する際に、入力処理エンジン112からの1つまたは複数の文法モデル、規則、および/または注釈を利用し得る。ダイアログモジュール126は、プロンプトを生成して、実行中の対話型ダイアログアプリケーションに関する別のユーザ入力を求め得る。ダイアログモジュール126によって生成された任意のプロンプトが、出力エンジン135によって(たとえば、クライアントデバイス106でのレンダリングを通じて)ユーザへの提示のために提供され得、別の応答ユーザ入力を受け取る。本明細書においてより詳細に説明されるように、ダイアログモジュール126は、カスタマイズされた対話型ダイアログアプリケーションを作成しているユーザ(以後、「展開ユーザ」とも呼ばれる)に内容を提供する際に1つまたは複数のカスタム構成記述を利用し得る。
【００３９】
構成ビルダ124は、展開ユーザから(状態マッピングアプリケーション170から、または1つまたは複数の他の構成要素から)入力を受け取り、状態マップおよび遷移に基づいて、カスタマイズされた構成記述を生成する。カスタマイズされた構成記述は、展開ユーザによって明示的に定義された状態と、対話型ダイアログアプリケーションがある状態から別の状態に遷移する条件とを含むドキュメントである。たとえば、図3を参照して、例示的なカスタマイズされた構成記述が提供される。記述は「Welcome」状態305を含み、「Welcome」状態305は、アプリケーションを起動するユーザ(以後、「起動ユーザ」)に提供されるウェルカム語句を含む。さらに、「Welcome」状態305は状態外に遷移することについての条件を含む。このケースでは、すべての遷移は「Serve Fact」状態310へのものであり、起動ユーザからの入力を必要としない。次に、状態マッピングアプリケーション170を介して、展開ユーザによって提供されたファクトを含む「Serve Fact」状態310が定義される。さらに、「Serve Fact」状態310記述は、ユーザからの入力なしに「Ask Another」状態315への遷移を含む。「Ask Another」状態315は、起動ユーザに提供するためのプロンプト、ならびに起動ユーザからの入力に基づいてどの状態に遷移するかに関する条件を含む。「Ask Another」状態315記述は、起動ユーザが「yes」と応答した場合は「Serve Fact」状態310への遷移を、起動ユーザが「no」と応答した場合は「Goodbye」状態320への遷移を示す。「Goodbye」状態320は(「type:STATE_TYPE.FINAL」によって示されるように)最終状態であり、アプリケーションが実行を終了したことを示すので、遷移を有さない。
【００４０】
図3において説明される状態に加えて、任意の数の追加の状態および/または状態のタイプが、カスタマイズされた構成記述に含まれ得る。たとえば、1つまたは複数の状態は、ユーザのボイスコマンドを介して、または他のユーザ入力を介して、数を入力として受け取り得る。さらに、たとえば、状態は、厳密な予想される入力を指定することなく、ユーザから「任意の」入力を受け取り得る。一例として、カスタマイズされたダイアログアプリケーションは、一定のタイプの入力を必要としない自由回答式の質問をユーザに提供し得、カスタム状態は、ユーザから受け取った「任意の」入力が新しい状態に遷移するために受け入れられることを示し得る。
【００４１】
いくつかの実装では、構成ビルダ124によって生成された、カスタマイズされた構成記述は、1つまたは複数の異種の自動化アシスタントプラットフォーム(たとえば、別々のパーティによってそれぞれ制御される異種の自動化アシスタントプラットフォーム)の各々について、カスタマイズされたアプリケーションおよび/またはエージェントを生成するために利用され得る。たとえば、カスタマイズされた構成記述の単一のセットが、構成ビルダ124によって生成され、複数の異種の自動化アシスタントの各々について、対応するカスタマイズされたアプリケーションおよび/またはエージェントを生成するために利用され得る。たとえば、第1の自動化アシスタントプラットフォームに特有の第1のデフォルト構成が、第1の自動化アシスタントプラットフォームについての対応するカスタマイズされたアプリケーションおよび/またはエージェントを生成するために利用され得る。さらに、第2の自動化アシスタントプラットフォームに特有の(しかし、第1のデフォルト構成との間の、1つまたは複数の重複する状態および/または状態遷移を有し得る)第2のデフォルト構成が、第2の自動化アシスタントプラットフォームについての、対応するカスタマイズされたアプリケーションおよび/またはエージェントを生成するために利用され得る。これらのおよび他の方式では、ユーザが複数のプラットフォームの各々についてのユーザインターフェース入力の複数の異種のインスタンスを与えることを必要とすることなく、展開ユーザによって与えられ、カスタマイズされた構成記述を生成するために利用されるユーザインターフェース入力が、複数のプラットフォームについての複数のエージェントおよび/またはアプリケーションを生成するために利用され得る。
【００４２】
いくつかの実装では、状態名および/または遷移名のうちの1つまたは複数が事前定義され得る。たとえば、いくつかの実装では、すべての開始状態は「Welcome」と呼ばれ得、かつ/またはすべての終了状態は「Goodbye」と呼ばれ得る。さらに、いくつかの実装では、状態および/または遷移の1つまたは複数のカテゴリが事前定義され得る。たとえば、「Ask Another」状態315は、「User Input」状態としての状態の定義を含み、「User Input」状態は、アプリケーションがカスタムアプリケーションエンジン120を介して実行中であるとき、次のダイアログターンについてどの状態に遷移するかを判定するために、起動ユーザからの入力を待機するようにダイアログモジュール126に示し得る。起動ユーザに提供される出力が、起動ユーザのための選択のリスティングを含み得る、「Multiple Choice」状態タイプなどの他のタイプの状態が定義され得る。
【００４３】
いくつかの実装では、所与のカスタマイズされた対話型ダイアログアプリケーションについての状態マッピングには、その所与のカスタマイズされた対話型ダイアログアプリケーションが属する特定のクラスの対話型ダイアログアプリケーションの指示が伴い得る。たとえば、対話型ダイアログアプリケーションは、「クイズ」アプリケーション、「ファクトサービング」アプリケーション、および/または「会話」アプリケーションを含み得る。アプリケーションの各々は、アプリケーションのそのクラスに合わせて調整される1つまたは複数の状態および/または遷移を有し得る。たとえば、「クイズ」アプリケーションは、ユーザに質問を提供し、次いでユーザからの入力を待機する「Serve Question」状態を含み得る。「ファクトサービング」アプリケーションは、その代わりに、いつファクトサービングを停止するかを示すために、ユーザからの「yes」または「no」を必要とするだけであり得る。さらに、いくつかの実装では、1つまたは複数の状態は、対話型ダイアログアプリケーションのすべてのクラスに共通であり得る。いくつかの実装では、カスタマイズされた対話型ダイアログアプリケーションについてのカスタマイズされた構成記述は、たとえば、ファイルの先頭付近に(たとえば、ヘッダとして)クラス識別を含み得る。
【００４４】
いくつかの実装では、1つまたは複数のデフォルト状態がデフォルト構成記述内で定義され得る。デフォルト構成記述は、状態マッピングアプリケーション170を介してユーザが明示的に定義する必要のない1つまたは複数の状態および遷移を含み得る。いくつかの実装では、デフォルト構成記述の状態および遷移は、カスタマイズされた対話型ダイアログアプリケーションを作成するときにユーザによって(意図的に、または意図せずに)残されたギャップを埋める働きをし得る。
【００４５】
たとえば、図4を参照すると、例示的デフォルト構成記述が提供される。デフォルト構成は「Goodbye」状態400を含み、「Goodbye」状態400は、アプリケーションを終了するためのデフォルト挙動を定義する。さらに、デフォルト構成記述は、アプリケーションの実行中にユーザが合致しない入力を3回与えた場合にアプリケーションを終了するために利用され得る「Exit on Error」状態405を含む。さらに、「No Match」デフォルト状態パラメータ410が、ユーザが非準拠入力(すなわち、入力処理エンジン112が注釈することができない入力、および/またはカスタム構成記述内で定義される予想される応答ではない入力)を与えたときの、すべての状態のデフォルト挙動として含まれる。さらに、「No Match」デフォルト状態パラメータ410は、ユーザが入力を与えるようにプロンプト指示され、そのように行わないときのデフォルト挙動を与え得る。デフォルト状態パラメータは、たとえば、すべての状態のパラメータであるルーピング遷移(すなわち、マシンに同じ状態に戻るように指示する遷移)であり得る。したがって、ユーザがパラメータのうちのいずれかについての挙動を定義しているかどうかに関わらず、すべてのユーザが作成した状態が、ユーザからの予期しない入力、ユーザからの入力なしなどの、デフォルト構成記述によって定義された様々なパラメータを扱うことができることになる。デフォルト状態と同様に、任意選択で、デフォルト状態パラメータが、展開ユーザによって、カスタマイズされた構成記述を生成するときに、かつ/または状態マッピングアプリケーションを介して定義され得る。状態がカスタム状態であっても、デフォルト状態であっても、デフォルトパラメータがすべての状態に適用され得る。
【００４６】
1つまたは複数のデフォルト構成記述がデフォルト構成データベース156内に記憶され得る。追加または代替として、1つまたは複数のデフォルト構成記述が、デフォルトテンプレートとして利用され得、1つまたは複数の追加のデフォルト構成記述が、デフォルトテンプレートに基づいて生成され得る。たとえば、デフォルト構成記述が、すべての「No Match」インスタンスについての「Behavior A」を含み得る。展開ユーザは、その代わりに「No Match」インスタンスについてのデフォルトとして「Behavior B」を列挙するようにデフォルト構成記述を編集し、新しいデフォルト構成記述を「Default Description B」として記憶し得る。したがって、「Default Description B」を利用する将来のどんな対話型ダイアログアプリケーションも、「No Match」インスタンスについてのデフォルト挙動として、修正後の「Behavior B」を有することになる。
【００４７】
いくつかの実装では、構成ビルダ124は、カスタマイズされた構成記述およびデフォルト構成記述を、カスタマイズされた対話型ダイアログアプリケーションについての単一の実行可能な構成記述にマージし得る。記述をマージする際に、構成ビルダ124は、カスタマイズされた構成記述内で定義される任意の状態、遷移、および/または他の挙動に、デフォルト構成記述に勝る優先順位を与えることになる。そのようにすることによって、構成ビルダ124は、ユーザによって定義される任意のカスタマイズされた挙動が、実行される構成記述に含まれ、デフォルト状態、遷移、および/または挙動によって上書きされないことを保証する。たとえば、図3のカスタマイズされた構成記述を参照すると、「Goodbye」状態320が、展開ユーザによって定義され、図4のデフォルト構成記述内でも定義される(「Goodbye」状態400)。したがって、「Goodbye」状態320の定義によって、展開ユーザは、デフォルト挙動とは異なる「Goodbye」状態についてのカスタマイズされた挙動を含めることを選んでいる。構成ビルダ124は、構成記述を、カスタマイズされた構成記述からの「Goodbye」状態320の定義のみを含む(かつ、デフォルト構成記述「Goodbye」状態400に基づく任意の定義を除外する)、単一の実行される構成記述にマージし得る。
【００４８】
いくつかの実装では、構成ビルダ124は、マージされた構成記述に基づいてエージェントを生成し得る1つまたは複数の構成要素にマージされた構成記述を提供する。たとえば、エージェントジェネレータは、1つまたは複数のライブラリを利用して、マージされた構成記述内に記述された、カスタマイズされた挙動を実施するエージェントを生成し得、後でエージェントが1つまたは複数の追加の起動ユーザによって起動され得る。したがって、構成ビルダ124は、ロバストな対話型ダイアログアプリケーションを完全に開発するために普通なら必要とされるはずの基礎となるライブラリの詳細な知識なしに、展開ユーザがエージェントにおいてカスタマイズされた挙動を生成することを可能にするツールとして利用され得る。
【００４９】
いくつかの実装では、構成ビルダ124は、複数の以前に生成されたカスタマイズされた構成記述に基づいて、カスタマイズされた構成記述を生成し得る。たとえば、構成ビルダ124は、トリビアゲームについての状態および遷移を含む「Trivia」のカスタマイズされた構成記述を以前に生成するのに利用された可能性がある。さらに、構成ビルダ124は、「Fun Facts」ダイアログアプリケーションについての第2のカスタム構成記述を以前に生成するのに利用された可能性がある。構成記述の両方の状態マッピングおよび遷移に基づいて、構成ビルダ124は、「Trivia」アプリケーションと「Fun Facts」アプリケーションの両方のカスタム挙動を含む「Trivia/Fun Facts」ダイアログアプリケーションについての新しいカスタム構成記述を生成するために利用され得る。いくつかの例では、展開ユーザは、構成ビルダ124にカスタム構成記述を与え得る。いくつかの例では、カスタム構成記述の一方または両方は、1つまたは複数の他の構成要素によって識別され得る。たとえば、ユーザは、「Trivia/Fun Facts」アプリケーションに関心を有し、「Fun Facts」構成記述を与え得、構成ビルダ124は、「Trivia」のカスタマイズされた構成記述を識別して、与えられた「Fun Facts」構成記述とマージし得る。いくつかの実装では、3つ以上の構成記述がマージされ、新しい構成記述が生成され得る。
【００５０】
別の例として、1つまたは複数の展開ユーザは、構成ビルダ124を以前に利用して、自動化アシスタントを介してユーザから支払い情報を受け取ることを扱う「Payment」ダイアログアプリケーションについてのカスタム構成記述を生成した可能性がある。さらに、1つまたは複数の展開ユーザは、構成ビルダ124を以前に利用して、製品注文情報を受け取ることを扱う「Ordering」ダイアログアプリケーションについてのカスタム構成記述を生成した可能性がある。所与の展開ユーザは、2つの以前に生成された構成記述を、ユーザが注文を行い、支払い情報を与えることを可能にするダイアログアプリケーションについての単一のカスタム構成記述として組み合わせることに関心を有し得る。
【００５１】
複数の構成記述をマージすることは、両方の構成記述が両方の記述内で定義される状態、マッピング、および/または遷移を含むときに競合を含み得る。たとえば、マージされる2つの構成記述が、異なるプロンプトおよび異なる遷移を有する、異なる「Welcome」状態を含み得る。構成ビルダ124は、マージされる複数の構成記述間の状態、マッピング、および/または遷移を比較することに基づいて、そのような競合を判定し得る。さらに、構成ビルダ124は、そのような競合を示し、マージされた構成記述が生成され得る前にそのような競合を解決する必要があり得ることをさらに示すプロンプトを、展開ユーザに提供し得る。追加または代替として、展開ユーザは、競合が識別されたときに構成記述内に含めるための状態および/または遷移情報を含む追加の構成記述を提供し得る。いくつかの例では、展開ユーザは、競合がある場合に優先するための構成記述のうちの1つを示し得る。たとえば、展開ユーザは、「Fun Facts」構成記述に含まれる競合する状態および/または遷移に優先して、任意の状態または遷移について「Trivia」構成記述情報が利用されることを示し得る。
【００５２】
いくつかの実装では、ダイアログアプリケーションによって利用される1つまたは複数のオブジェクトについての必須データを求めて、ダイアログアプリケーションを介してプロンプト指示するために、1つまたは複数の任意選択の状態が利用され得る。一例として、「Ordering」のカスタマイズされた構成記述では、「Name」、「Phone Number」、および「Address」を含むユーザプロファイルについてオブジェクトが作成され得る。オブジェクトが作成され、たとえば外部データベースからデータが取り出されたとき、オブジェクトのフィールドのうちの1つまたは複数が定義されないことがある。オブジェクトの必須フィールドのいずれかを定義するために、構成記述は、ユーザプロファイルを完成させるために必須情報を提供するようにユーザにプロンプト指示するダイアログをダイアログモジュール126が提供することを可能にする1つまたは複数の状態を含み得る。代替または追加として、構成記述は、1つまたは複数の追加のソースに対する参照を含み得、ユーザにプロンプト指示する前に、またはユーザにプロンプト指示する代わりに、欠落している情報を1つまたは複数のソースからまず取り出すように試み得る。
【００５３】
いくつかの実装では、必須データを求めてユーザにプロンプト指示するために単一の状態が利用され得る。すべての必須データが提供され、かつ/またはユーザが別の状態への遷移を示すまで、ダイアログアプリケーションは状態にとどまり得る。たとえば、前述の「Ordering」状態についての記述は、注文を行うために必要とされる各必須データフィールドを求めるプロンプトの定義を含み得る。得られるダイアログは、名前を与えるようにとのユーザに対するプロンプト、住所を与えるようにとのプロンプト、および電話番号を与えるようにとのプロンプトを含み得る。すべての必須データが与えられ、またはユーザが異なる遷移(たとえば、「Quit」または「Start over」)を示すまで、ダイアログアプリケーションは「Ordering」状態にとどまり得る。
【００５４】
カスタマイズされた構成記述が生成されると、カスタマイズされた構成記述はカスタム構成データベース158内に記憶され、アプリケーションについての起動語句によって索引付けされ、かつ/または起動語句にマッピングされ得る。代替として、本明細書において説明されるように、マージされた構成記述はカスタム構成データベース158内に記憶され得る。いくつかの実装では、カスタム構成データベース158はユーザの構成記述のみを含み得る。いくつかの実装では、カスタム構成データベース158は、複数のユーザからのアプリケーションの構成記述を含み得る。後続の(または「起動する」)ユーザが、自動化アシスタント110にフリーフォーム自然言語入力を与え得る。フリーフォーム自然言語入力に含まれる起動語句に基づいて、自動化アシスタント110は、カスタム構成データベース158内の記憶されたカスタマイズされた対話型ダイアログアプリケーションを識別し得る。代替として、起動語句に基づいて、展開ユーザのカスタマイズされた構成記述に基づいて生成されたエージェントが識別され得る。カスタマイズされた対話型ダイアログアプリケーションが識別されると、カスタマイズされた対話型ダイアログアプリケーションに関連する特定の対話型ダイアログアプリケーションクラスが、デフォルト構成データベース156内のデフォルト構成記述を識別するために使用され得る。起動エンジン160は、起動要求を処理して、展開ユーザまたは他のユーザによってそれぞれサブミットされ、カスタム構成データベース158内に記憶された、対話型ダイアログアプリケーションの複数の以前にサブミットされたカスタマイズされたバージョンのうちのどれが起動されているかを判定する。いくつかの実装では、カスタマイズされたアプリケーションが生成されるとき、ユーザは、アプリケーションを起動するために将来に利用される起動語句を与え得る。いくつかの実装では、1つまたは複数のエンティティが与えられた起動語句に関係すると識別され得、起動エンジン160は、ユーザ入力および関係するエンティティに基づいて、カスタマイズされたバージョンのうちの1つまたは複数を選択し得る。本明細書において説明されるように、いくつかの状況では、カスタマイズされた対話型ダイアログアプリケーションが起動されたとき、自動化アシスタント110は依然として媒介として働き得る。たとえば、ユーザの自然言語入力が音声入力である場合に媒介として働く際に、自動化アシスタント110の入力処理エンジン112は、音声入力をテキストに変換し得、起動エンジン160は、テキストを利用して、カスタム構成データベース158内のカスタマイズされた対話型ダイアログアプリケーションのうちのどれが起動されているかを判定し、起動されたカスタマイズされた対話型ダイアログアプリケーションから応答内容を受け取り得、出力エンジン135は、クライアントデバイス106を介してユーザに提示するために、カスタム対話型ダイアログアプリケーションに基づく出力を提供し得る。
【００５５】
いくつかの実装では、ダイアログモジュール126は、起動ユーザからの現入力および現状態に基づいて、次の状態が現カスタム構成記述内で定義されるかどうかを識別し得る。状態が定義される場合、ダイアログモジュール126は、ユーザに提供するためにレンダリングされる次の出力を決定する。次の状態が定義されない場合、ダイアログモジュール126は、起動されたダイアログアプリケーションのクラスに適用可能である1つまたは複数の適用可能デフォルト構成記述内で、合致する状態が定義されるかどうかを判定し得る。いくつかの実装では、他の場所で定義されないすべての状態/遷移を扱うために、「Error」または「No Match」状態がデフォルト構成記述内で定義され得る。
【００５６】
いくつかの実装では、デフォルト構成記述とカスタム構成記述の両方において状態が定義され得る。たとえば、「Goodbye」状態がデフォルト構成記述内で定義され得、その結果、展開ユーザがカスタム構成記述内で終了状態を定義したかどうかに関わらず、カスタマイズされた対話型ダイアログアプリケーションは実行を停止するための状態を有する(たとえば、「キャッチオール」または「フォールバック」)。しかしながら、ダイアログモジュール126は、まずカスタム構成記述内をチェックし、ユーザが「Goodbye」状態も定義している場合、デフォルト構成記述を調べない。したがって、アプリケーションが実行中のとき、ダイアログモジュール126は、任意のユーザ定義の挙動が任意のデフォルト挙動に優先することを保証する。代替として、本明細書において説明されるように、ダイアログモジュール126は、その代わりに、デフォルト構成記述とカスタマイズされた構成記述の両方を含むマージされた構成記述を利用し得、カスタマイズされた状態および遷移情報だけが、両方の記述に含まれる状態について提供される。
【００５７】
いくつかの例では、カスタマイズされた構成記述は、明示的な状態情報を含まず、その代わりに状態情報の位置の指示を含み得る。たとえば、「Trivia」ダイアログアプリケーションは、カスタマイズされた構成記述内にトリビア質問を含まず、その代わりに、自動化アシスタントの内部または外部のデータベースから情報を取り出すための、データベースおよび/または関数呼出しに対する参照を含み得る。ダイアログモジュール126が状態情報以外の別のソースの指示を含む状態を識別したとき、外部ソースモジュール128は関数を処理し、状態情報を取り出す。たとえば、「Trivia」ダイアログアプリケーションを再び参照すると、質問および/または回答は、カスタマイズされた構成記述内に明示的に含まれないことがあり、その代わりに、情報データベース157および/または他の外部リソース内に記憶される。構成記述の「Fetch Next Question」状態は、外部リソースから質問を取り出すための関数呼出しを含み得る。たとえば、外部ソースモジュール128は、トリビア質問リソースについてのAPIを識別し、APIを介してトリビア質問リソースとインターフェースして、次のトリビア質問を識別し得る。別の例として、外部ソースモジュール128は、情報データベース157がトリビア質問を含むと識別し得、情報データベース157に直接呼出しを行って、次のトリビア質問を取り出し得る。任意のトリビア質問が、ダイアログの部分として提供するためにローカルに記憶され得、またはダイアログの継続のために必要とされるときに動的に取り出され得る。次いで、質問が、本明細書で説明されるように(たとえば、出力エンジン135を介して)、起動ユーザに提供され得る。
いくつかの実装では、ダイアログアプリケーションが実行中のとき、1つまたは複数の構成要素が情報を追跡および/または更新し得る。たとえば、「Trivia」ダイアログアプリケーションでは、スコアが保たれ得る。したがって、「Correct Answer」状態が、スコアカウンタを増分するための命令を含み得る。スコアは構成記述内に記憶され得、または代替として、1つまたは複数の他の構成要素によって、情報データベース157内などに記憶され得る。
【００５８】
いくつかの実装では、カスタマイズされた構成記述および/またはデフォルト構成記述が、すべての状態によって共有される遷移の定義を含み得る。次いで遷移は、異なる状態に一時的に移動し、ダイアログアプリケーションの現状態の如何に関わらずダイアログを生成し、次いで同一の状態に戻るために利用され得る。たとえば、カスタマイズされた構成記述は「Help」アクションを含み得る。ユーザが「ヘルプ」(または類似の語句)の入力を与えるときはいつでも、ダイアログアプリケーションは、ユーザにヘルプ情報を提供し、かつ/または「Help」状態に遷移して、1つまたは複数の後続のダイアログターンにおいてユーザにヘルプ情報を提供し得る。次いで、ダイアログアプリケーションは、ユーザが「ヘルプ」コマンドを起動したときと同一の状態に戻り得る。いくつかの実装では、異なる状態に永続的に遷移するアクションが定義され得る。たとえば、「Restart」アクションが起動されたときにダイアログアプリケーションがどんな状態にあるかの如何に関わらず、ダイアログアプリケーションの開始状態に遷移する「Restart」アクションが定義され得る。
【００５９】
いくつかの実装では、カスタマイズされた構成記述および/またはデフォルト構成記述が、ダイアログアプリケーションが任意の状態にあるときに起動され得るサブダイアログの定義を含み得る。サブダイアログは、ダイアログアプリケーションが任意の状態にある間に起動され得る、状態間の1つまたは複数の状態および遷移を含み得る。ダイアログアプリケーションは、サブダイアログが起動されたときの現状態の指示を記憶し得る。サブダイアログが完了すると、ダイアログアプリケーションは、サブダイアログが起動されたときの状態に戻り得る。たとえば、カスタマイズされたトリビアダイアログアプリケーションが「Joke」サブダイアログを含み得、カスタマイズされた構成記述が、「Joke」サブダイアログについての起動語句を含み得る。トリビアダイアログアプリケーションが実行中の間に、ユーザは、ユーザが任意の状態にある間に起動語句を与え得、「Joke」サブダイアログは(サブダイアログの定義済みの状態および遷移に応じて)1つまたは複数のジョークを提供し得る。ユーザが「Joke」終了語句を起動すると、ダイアログアプリケーションは、「Joke」サブダイアログが最初に起動されたときと同一の状態に戻り得る。
【００６０】
図5は、本明細書において開示される実装による例示的方法のフローチャートを示す。1つまたは複数のステップが省略され、異なる順序で実施され得、かつ/または1つまたは複数の追加のステップが様々な実装に含まれ得る。
【００６１】
ステップ505において、対話型ダイアログアプリケーションクラスの指示が、状態および遷移情報と共に受け取られる。指示は、展開ユーザがダイアログアプリケーションの複数のクラスのうちのどれを作成することに関心を有するかを判定するために利用され得る。いくつかの実装では、状態および遷移情報が、状態マッピングアプリケーション170などの1つまたは複数の状態マッピングアプリケーションを利用して、ユーザによってあらかじめ生成され得る。
【００６２】
ステップ510において、ステップ505において受け取られた状態および遷移に基づいて、カスタム構成記述が生成される。いくつかの実装では、カスタム構成記述は、アプリケーションがある状態から別の状態に遷移することを可能にする、起動ユーザからの入力についてのカスタム状態名および条件を含む。たとえば、図3に示されるカスタム構成記述と1つまたは複数の特性を共有するカスタム構成記述が生成され得る。次いで、カスタム構成記述が記憶され、展開ユーザによって追加で与えられ得る起動語句によって索引付けされる。
【００６３】
ステップ515において、ステップ505において受け取られた指示に基づいて、デフォルト構成記述が識別される。いくつかの実装では、ダイアログアプリケーションの各クラスは、アプリケーションのそのクラスに固有のデフォルト状態に関する状態情報を含む、それ自体のデフォルト構成記述を有し得る。いくつかの実装では、すべてのアプリケーションは同一のデフォルト構成記述を共有し得る。
【００６４】
ステップ520において、追加のユーザ(すなわち、起動ユーザ)からの自然言語入力が受け取られる。自然言語入力が構文解析され、展開ユーザによって与えられた起動語句が自然言語入力に含まれるかどうかが判定される。起動語句が識別された場合、対応するカスタム構成記述およびデフォルト構成記述が取り出され、カスタムアプリケーションが構成される。
【００６５】
ステップ525において、カスタマイズされたアプリケーションが追加のユーザに提供される。カスタマイズされたアプリケーションは、カスタマイズされた構成アプリケーションにおいて提供された情報に基づくダイアログターンを含む。1つまたは複数の状態および/または遷移をカスタム構成記述内で識別することができない場合、デフォルト構成記述が利用されて、アプリケーションの現状態およびユーザの入力に基づいてどのように進めるかが判定され得る。
【００６６】
図6は、ユーザ101と、音声対応クライアントデバイス606と、ユーザ101とカスタマイズされた対話型ダイアログアプリケーションにアクセスできるクライアントデバイス606に関連する自動化アシスタントとの間で行われ得るダイアログの一例とを示す。クライアントデバイス606は、1つまたは複数のマイクロフォンおよび1つまたは複数のスピーカを含む。図1の自動化アシスタント110の1つまたは複数の態様が、クライアントデバイス606および/またはクライアントデバイス606とネットワーク通信している1つまたは複数のコンピューティングデバイス上で実装され得る。したがって、説明がしやすいように、図6の説明では自動化アシスタント110が参照される。
【００６７】
ユーザ入力600Aは、カスタマイズされた動的対話ファクトサービングアプリケーションについての起動語句である。入力処理エンジン112は、前述のように、構文解析された入力を起動エンジン160に提供する。次いで、1つまたは複数の構成要素が、起動語句に合致するカスタムダイアログアプリケーションについてのカスタム構成記述およびデフォルト構成記述を識別し得る。
【００６８】
出力602Aにおいて、アプリケーションは、図3のカスタム構成記述内で定義された「Welcome」状態を実行する。「Welcome」状態はパススルー状態であり、次の状態に遷移するために、起動ユーザからの入力を必要としない。
【００６９】
出力602Bにおいて、ファクトが、図2に示される「Serve Fact」状態からサービスされ、図3のカスタマイズされた構成記述内で提供される。この場合も、「Serve Fact」状態はパススルー状態であり、次の状態にアプリケーションを移動するために、起動ユーザからの入力を必要としない。
【００７０】
602Cにおいて、アプリケーションは「Ask For Another」状態に入っており、図2の状態マッピングおよび図3のカスタマイズされた構成記述内で定義されるように、ユーザが追加のファクトを確認することに関心を有するかどうかに関して、起動ユーザにプロンプト指示する。この状態は「yes/no」状態であり、別の状態に移動するために、それらの応答の一方を必要とする。
【００７１】
その代わりに、ユーザ入力600Bはあいまいな「たぶん」であり、これは、カスタマイズされた構成記述内の「Ask For Another」状態によって扱われない。したがって、アプリケーションは、非準拠入力が受け取られる場合のインスタンスを扱う、デフォルト構成記述内の「Ask For Another」状態についての「No Match」デフォルト状態パラメータを識別した。出力602Dにおいて、アプリケーションは、「No Match」入力についてのデフォルト状態挙動を提供する。いくつかの実装では、展開ユーザは、カスタマイズされた構成記述内の「No Match」パラメータを定義することによって、非準拠入力を扱うためのカスタマイズされたアプリケーションについてのカスタム挙動を定義し得る。
【００７２】
ユーザ入力600Cにおいて、ユーザは、状態についての予想される入力に準拠する入力を与える。「No」で応答することによって、アプリケーションは、カスタマイズされた構成記述内で定義される「Goodbye」状態に遷移する。デフォルト構成記述は「Goodbye」状態をも含むが、アプリケーションは、状態がカスタマイズされた構成記述内で定義されるかどうかをまず識別し、カスタム状態が識別されなかった場合、デフォルト構成記述をチェックするだけであることに留意されたい。
【００７３】
本明細書では、2つの別々の記述からの状態、遷移、および挙動を識別するものとして図6が説明されたが、いくつかの実装では、カスタマイズされた構成記述およびデフォルト構成記述が、アプリケーションの実行時に利用される単一の記述にマージされ得る。代替として、図6において与えられるダイアログは、ユーザ101と、ユーザのカスタマイズされた構成記述およびデフォルト構成記述に基づいて以前に生成されたエージェントとの間のものであり得る。さらに、本明細書では、カスタマイズされた構成記述およびデフォルト構成記述が、デフォルト状態に優先してカスタマイズされた状態を選択することによって解決される、同一の状態を含むものとして説明されるが、いくつかの例では、カスタマイズされた構成記述は、ユーザが作成した状態のみを含み、デフォルト構成記述内で定義されるものから、後続のアプリケーションのデフォルト挙動のいずれも変更しない。
【００７４】
本明細書において一般的に説明され、図6に示されるように、自動化アシスタントは、音声コマンドを介してユーザと対話するスタンドアロンデバイス上で実行中であり得る。しかしながら、いくつかの例では、デバイスは、ユーザが音声を介する以外の形態で自動化アシスタントと対話することを可能にするように、追加のハードウェアおよび/またはソフトウェアを含み得る。したがって、本明細書においていくつかの例では、音声がユーザとダイアログアプリケーションとの間の対話の一形態として説明されるが、ユーザは、音声コマンドに加えて、または音声コマンドの代わりに、ユーザインターフェース(UI)の要素を介して入力を与え得る(たとえば、タッチスクリーン上のUI要素をタッチすること、マウスを介してUI要素をクリックすること、ハードウェアキーボードおよび/または仮想キーボードを介してタイプすること)。
【００７５】
いくつかの実装では、1つまたは複数の状態は、ユーザに出力を提供するための複数の形態を含み得、出力が提供される形態は、出力を提供しているデバイスのプラットフォームおよび/またはインターフェースに基づいて変動し得る。たとえば、状態定義がオプションのリストを含み得、アシスタントを実行中のデバイスが画面を有さない場合、リストが自動化アシスタントを介して音声のみとしてユーザに提供され得る。代替として、デバイスが視覚的出力をサポートする場合、構成記述は、ユーザに同一のリストを提供するためにグラフィックスおよび/または他の視覚的要素を含み得る。別の例として、トリビアダイアログアプリケーションが、トリビア質問についての現カテゴリを示すために画面に提供するためのグラフィックスを含み得る。実行中のデバイスが画面を含まない場合、ダイアログアプリケーションはその代わりに、ユーザに質問を提供する前にカテゴリのオーディオ出力を提供し得る。いくつかの実装では、カスタム構成記述は、出力をどのように提供するかの階層を含み得、ダイアログアプリケーションは、階層に基づいてどれを使用するか、かつ/またはどの形態の出力が、出力がそれを介して提供されるべきデバイスによってサポートされるかを判定し得る。階層は、デバイスによってサポートされる場合、出力がどのように提供されるべきかについての順序付けられたプリファレンスを定義し得る。たとえば、階層は、最も好ましくはカルーセル(すなわち、画面上に部分的に見える、1つまたは複数の以前の、および/または後続の視覚的イメージと共に視覚的情報を提供すること)を介して、その後に、1つまたは複数の次に好ましい出力を提供する形態を介して出力を提供すべきであることを定義し得る。デバイスがカルーセルフォーマットの出力のプロビジョンをサポートする場合、出力は、最も好ましいカルーセルフォーマットを介して提供され得る。しかしながら、デバイスがカルーセルを介して出力を提供することをサポートしない場合、次に好ましい(かつサポートされる)出力を提供するフォーマットがその代わりに利用され得る(たとえば、静的イメージ、メディアカード、可聴に)。
【００７６】
図7は、本明細書において説明される技法のうちの1つまたは複数の態様を実施するために任意選択で利用され得る例示的コンピューティングデバイス710のブロック図である。いくつかの実装では、デバイス106、自動化アシスタント110、および/または他の構成要素のうちの1つまたは複数は、例示的コンピューティングデバイス710の1つまたは複数の構成要素を含み得る。
【００７７】
コンピューティングデバイス710は通常、バスサブシステム712を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ714を含む。これらの周辺デバイスは、たとえばメモリサブシステム725およびファイル記憶サブシステム726を含む記憶サブシステム724と、ユーザインターフェース出力デバイス720と、ユーザインターフェース入力デバイス722と、ネットワークインターフェースサブシステム716とを含み得る。入力および出力デバイスはコンピューティングデバイス710とのユーザ対話を可能にする。ネットワークインターフェースサブシステム716は、外部ネットワークに対するインターフェースを提供し、他のコンピューティングデバイス内の対応するインターフェースデバイスに結合される。
【００７８】
ユーザインターフェース入力デバイス722は、キーボードと、マウス、トラックボール、タッチパッド、グラフィックスタブレットなどのポインティングデバイスと、スキャナと、ディスプレイ内に組み込まれたタッチスクリーンと、音声テキスト変換システム、マイクロフォン、および/または他のタイプの入力デバイスなどのオーディオ入力デバイスとを含み得る。一般には、「入力デバイス」という用語の使用は、すべての可能なタイプのデバイスと、およびコンピューティングデバイス710内に、または通信ネットワーク上に情報を入力する方式とを含むものとする。
【００７９】
ユーザインターフェース出力デバイス720は、ディスプレイサブシステム、プリンタ、ファックスマシン、またはオーディオ出力デバイスなどの非視覚的ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、投影デバイス、または視覚的イメージを生み出すための何らかの他の機構を含み得る。ディスプレイサブシステムはまた、オーディオ出力デバイスを介するような非視覚的ディスプレイを提供し得る。一般には、「出力デバイス」という用語の使用は、すべての可能なタイプのデバイスと、コンピューティングデバイス710からユーザまたは別のマシンもしくはコンピューティングデバイスに情報を出力するための方式とを含むものとする。
【００８０】
記憶サブシステム724は、本明細書において説明されるモジュールのうちの一部またはすべての機能を提供するプログラミングおよびデータ構成を記憶する。たとえば、記憶サブシステム724は、図5の方法および/または本明細書において説明される他の方法の選択された態様を実施するための論理を含み得る。
【００８１】
これらのソフトウェアモジュールは一般に、プロセッサ714だけで、または他のプロセッサと組み合わせて実行される。記憶サブシステム724内で使用されるメモリ725は、プログラム実行中の命令およびデータの記憶のためのメインランダムアクセスメモリ(RAM)730と、固定の命令が記憶される読取り専用メモリ(ROM)732とを含む、いくつかのメモリを含み得る。ファイル記憶サブシステム726は、プログラムおよびデータファイルについての永続的記憶を実現し得、ハードディスクドライブ、フロッピィディスクドライブおよび関連する取外し可能媒体、CD-ROMドライブ、光学ドライブ、または取外し可能媒体カートリッジを含み得る。いくつかの実装の機能を実装するモジュールは、記憶サブシステム724内のファイル記憶サブシステム726、またはプロセッサ714によってアクセス可能な他のマシン内に記憶され得る。
【００８２】
バスサブシステム712は、コンピューティングデバイス710の様々な構成要素およびサブシステムに、所期の通りに互いに通信させるための機構を提供する。バスサブシステム712が単一のバスとして概略的に示されているが、バスサブシステムの代替実装は複数のバスを使用し得る。
【００８３】
コンピューティングデバイス710は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む様々なタイプのものであり得る。コンピュータおよびネットワークの常に変化する性質のために、図7に示されるコンピューティングデバイス710の説明は、いくつかの実装を示すための特定の例に過ぎないものとする。図7に示されるコンピューティングデバイスよりも多くの、または少ない構成要素を有する、コンピューティングデバイス710の多くの他の構成が可能である。
【符号の説明】
【００８４】
204  ノード
101  ユーザ
106  クライアントデバイス
110  自動化アシスタント
112  入力処理エンジン
120  カスタムアプリケーションエンジン
124  構成ビルダモジュール
126  ダイアログモジュール
128  外部ソースモジュール
130  内容入力エンジン
135  出力エンジン
156  デフォルト構成データベース
157  情報データベース
158  カスタム構成データベース
160  起動エンジン
170  状態マッピングアプリケーション
200  状態マッピング
205  「Welcome」状態
206  ウェルカムメッセージ
207  音
210  「Serve Fact」状態
211  ファクト
215  「Ask For Another」状態
220  「Goodbye」状態
606  音声対応クライアントデバイス
710  コンピューティングデバイス
712  バスサブシステム
714  プロセッサ
716  ネットワークインターフェースサブシステム
720  ユーザインターフェース出力デバイス
722  ユーザインターフェース入力デバイス
724  記憶サブシステム
725  メモリサブシステム
726  ファイル記憶サブシステム
730  メインランダムアクセスメモリ(RAM)
732  読取り専用メモリ(ROM)
【図１】
2020530606.tif 000003
【図２】
2020530606.tif 000004
【図３】
2020530606.tif 000005
【図４】
2020530606.tif 000006
【図５】
2020530606.tif 000007
【図６】
2020530606.tif 000008
【図７】
2020530606.tif 000009
【国際調査報告】
2020530606.tif 000010
2020530606.tif 000011