まず、図1では、本開示の様々な側面を実際に説明する例示的実施形態のブロック図が示され、ここに開示する実施例が実装され得る。クライアントデバイス110は、図1に示され、様々な実施例では、ユーザ入力エンジン111と、レンダリングエンジン112と、ボイスボット開発システムクライアント113とを備える。クライアントデバイス110は、例えば、独立型アシスタント装置(例えば、マイクロフォン、スピーカ、および/またはディスプレイを具備)、ラップトップ、デスクトップコンピュータ、タブレット、ウェアラブルコンピュータ装置、車両コンピュータ装置、および/または、ボイスボット開発システムクライアント113を実装可能な、任意の他のクライアントデバイスであり得る。
ユーザ入力エンジン111は、クライアントデバイス110において、各種のユーザ入力を検出可能である。クライアントデバイス110にて検出されたユーザ入力は、クライアントデバイス110のマイクロフォンにより検出された口頭入力、クライアントデバイス110のユーザインターフェース入力装置(例えば、タッチスクリーン)により検出されたタッチ入力、および/または、クライアントデバイス110のユーザインターフェース入力装置により(例えば、タッチスクリーン上の仮想キーボード、物理キーボード、マウス、スタイラス、および/またはクライアントデバイス110における任意の他のユーザインターフェース入力装置により)検出されたキー入力を、含み得る。
レンダリングエンジン112は、クライアントデバイス110において、ユーザインターフェース出力により、出力を視覚的かつ/または聴覚的に、レンダリング可能である。出力は、例えば、クライアントデバイス110の各種のユーザインターフェース(例えば、図3A、図3Bおよび図3Cを参照して説明)により視覚的にレンダリングされたものでありうる、ボイスボット開発システムクライアント113と関連付けられた各種のユーザインターフェース、ボイスボット開発システムクライアント113と関連付けられ、クライアントデバイス110のユーザインターフェースにより視覚的に、かつ/またはクライアントデバイス110のスピーカにより聴覚的にレンダリングされたものでありうる通知、および/または、視覚的かつ/または聴覚的にレンダリングされた、ここに説明する任意の他の出力を、含み得る。
ボイスボット開発システムクライアント113は、様々な実施例において、自動音声認識(ASR)エンジン130Aと、自然言語理解(NLU)エンジン140A1と、テキスト音声(TTS)エンジン150A1を、含み得る。さらに、ボイスボット開発システムクライアント113は、ボイスボット開発システム120と、1つまたは複数のネットワーク1991(例えば、Wi-Fi、Bluetooth、近距離無線通信(NFC)、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、イーサネット、インターネット、および/または他のネットワークの任意の組み合わせ)を通して、通信可能である。ボイスボット開発システムクライアント113およびボイスボット開発システム120は、クライアントデバイス110とやりとりするユーザの視点からすると、ボイスボット開発プラットフォームの論理インスタンスである。図1に示すボイスボット開発システム120は、クライアントデバイス110から(例えば、1つまたは複数のサーバを介して)遠隔で実装されているが、例示として、かつ限定の意味にではなく理解されたい。例えば、代替的には、ボイスボット開発システム120は、クライアントデバイス110において、ローカルで実装され得る。
ボイスボット開発プラットフォームは、サードパーティディベロッパ(例えば、クライアントデバイス110のユーザ)に利用されて、ここで説明するように、サードパーティディベロッパと関連付けられたサードパーティの代わりに、サードパーティと関連付けられた通話用に会話を行うために展開されるボイスボットを、訓練し得る。特に、ボイスボット開発プラットフォームは、第1の当事者により提供され得るものであり、サードパーティディベロッパは、ボイスボット開発プラットフォームを利用して、サードパーティディベロッパと関連付けられたサードパーティについて、ボイスボットを訓練し得る。ここで用いるように、第1の当事者という用語は、ボイスボット開発プラットフォームを発行する実体(entity)を示す。一方、サードパーティという用語は、第1の当事者と関連付けられた実体とは区別されて、ボイスボット開発システムを発行しない実体を示す。このため、サードパーティディベロッパは、ボイスボット開発プラットフォームとやりとりして、サードパーティと関連付けられたボイスボットを訓練するユーザを示す。
ここに説明する通話は、様々な音声通信プロトコル(例えば、ボイスオーバーインターネットプロトコル、公衆交換電話網(PSTN)、および/または他の電話通信プロトコル)を用いて行われ得る。ここに説明するように、合成音声は、支援通話(assisted telephone call)の一部としてレンダリングされ得る。支援通話は、支援通話の参加者のうちの少なくとも1人が知覚できるように、合成音声を通話に埋め込むことを、含み得る。合成音声は、所与の通話の一方の終端であるクライアントデバイス110により、生成され、かつ/もしくは埋め込まれ、かつ/または、通話に接続したサーバ(例えば、ボイスボット開発システム120を実装)により生成かつ/または埋め込まれ得る。
ボイスボット開発システム120は、様々な実施例では、ASRエンジン130A2と、NLUエンジン140A2と、TTSエンジン150A2と、ボイスボット訓練エンジン160と、ボイスボットエンジン170と、エラー識別エンジン180と、会話要約エンジン185とを含む。ボイスボット訓練エンジン160は、サードパーティと関連付けられた通話用に、サードパーティの代わりに会話を行うために展開されるボイスボットを訓練するために、利用され得るものであり、様々な実施例では、訓練インスタンスエンジン161と、訓練エンジン162とを、備え得る。さらに、ボイスボットエンジン170は、次に、訓練されたボイスボットを利用して、サードパーティと関連付けられた通話用に、サードパーティの代わりに会話することができ、様々な実施例では、応答エンジン171と、遠隔手続き呼出(RPC)エンジン172とを、備え得る。
訓練インスタンスエンジン161は、複数の訓練インスタンスを取得可能であり、これら訓練インスタンスは、サードパーティディベロッパにより提供されて、ユーザ入力エンジン111を介してクライアントデバイス110にて検出された、ユーザ入力に基づいて、ボイスボットを訓練するためのものである。複数の訓練インスタンスは、訓練インスタンスデータベース161A内に、複数の訓練インスタンスに基づいて訓練されるボイスボットの指示と関連付けられて、格納され得る。複数の訓練インスタンスの各々は、訓練インスタンス入力および訓練インスタンス出力を、含み得る。訓練インスタンス入力は、対応会話の一部(例えば、オーディオデータ、および/またはこれに対応する複数の音声仮定)、対応会話と関連付けられた先行文脈、着信の指示、発信の実行を開始する活動もしくはコマンド、RPCインバウンド要求、または、1つもしくは複数の特徴強調入力のうちの1つまたは複数を含み得る。訓練インスタンス出力は、対応会話の一部に対するグラウンドトゥルース応答(例えば、オーディオデータ、および/もしくは、これに対応する複数の音声仮定)、着信に対する導入部、発信の実行の開始、もしくは、RPCアウトバウンド要求のうちの、1つまたは複数を含み得る。
ある種の実施例では、複数の訓練インスタンスのうちの1つまたは複数が、ユーザ入力に基づいて、既出通話のコーパスから取得可能である。サードパーティディベロッパは、ユーザ入力により、既出通話のコーパスからの1つまたは複数の訓練インスタンスに、ラベルを付す必要があってもよい。既出通話は、複数人および/または一人と、対応ボイスボットとの間の対応会話を取り込んだオーディオデータを、含み得る。訓練インスタンスエンジン161は、既出通話を処理して、訓練インスタンスの1つまたは複数を生成し得る。例えば、既出通話は、第1の型の人(例えば、顧客)と第2の型の人(例えば、従業員)との間の対応会話を取り込んだオーディオデータを、含むものと想定する。この例では、訓練インスタンスエンジン161は、顧客と関連付けられた対応会話の一部に対応するオーディオデータを、特定可能であり、従業員と関連付けられた対応応答に対応して顧客と関連付けられた対応会話の一部に応答するオーディオデータを、特定可能である。顧客と関連付けられた対応会話の一部は、訓練インスタンス入力の一部として利用可能であり、従業員と関連付けられた対応応答は、訓練インスタンス出力の一部として利用可能である。さらに、対応会話の先行文脈は、訓練インスタンス入力の一部としても利用可能である。対応会話の先行文脈は、対応会話についての先行オーディオデータ(および/または、これに対応する複数の音声仮定、もしくは、これに対応する認識されたテキスト)、会話と関連付けられたメタデータ(例えば、顧客の位置、対応通話が開始した時刻、パラメータの値が求められたかどうか等)、および/または、既出通話と関連付けられた他の文脈情報を、含み得る。
各実施例のある種のものでは、既出通話は、ボイスボットが訓練されているサードパーティと関連付けられてもよい。例えば、サードパーティが、様々な製品を販売する仮想マーケットという名称の架空の小売業者であるものと想定する。既出通話は、第1の型の人(例えば、顧客)と、第2の型の人の1人または複数人(例えば、仮想マーケットの従業員)との間の対応会話を取り込んだオーディオデータ、仮想マーケットと関連付けられたボイスボット、または、仮想マーケットと関連付けられた音声自動応答(IVR)システムを、含み得る。各実施例の追加例または代替例では、既出通話が、ボイスボットが訓練されているサードパーティとは区別された、1人または複数人の他のサードパーティと、関連付けられてもよい。これらの実施例の別の例では、訓練インスタンスエンジン161により得られた、1人または複数人の他のサードパーティと関連付けられた既出通話は、ボイスボットが訓練されているサードパーティと同種の実体である、他のサードパーティ(例えば、小売業者、航空事業者、レストラン業者、学校もしくは大学、供給業者、荷送業者、政府機関、および/または任意の他の種類の人、場所または物)に、制限されてもよい。上述の例を続けて、仮想マーケットと関連付けられたボイスボットについての訓練インスタンスを生成するために利用可能である、既出通話は、他の小売業者と、そして場合によっては、同一または任意選択で同種の製品を販売する他の小売業者と、関連付けられたものに、制限されてもよい。
追加的または代替的実施例では、複数の訓練インスタンスのうちの1つまたは複数が、ユーザ入力に基づいてなされたデモ会話から、取得可能である。デモ会話は、1人または複数人(例えば、サードパーティディベロッパが含まれても含まれていなくてもよい)間の対応デモ会話を取り込んだオーディオデータおよび/またはテキストを、含み得る。例えば、サードパーティが、様々な製品を販売する仮想マーケットという名称の架空の小売業者であるものと想定する。この例では、人は、ユーザ入力を提供して、対応会話を、仮想マーケットの顧客の視点から開始可能であり、その人および別の人は、後続のユーザ入力を、仮想マーケットの従業員の視点から提供可能であり、その人は、さらに後続のユーザ入力を、従業員の視点から提供可能であり、その人または別の人は、さらに別の後続のユーザ入力を、顧客の視点から提供可能である、などであることができる(例えば、図3Bを参照して説明)。訓練インスタンスエンジン161は、デモ会話を処理して、訓練インスタンスのコーパスを参照し、上記と同様に、訓練インスタンスの1つまたは複数を、生成可能である。
追加的または代替的実施例では、複数の訓練インスタンスのうちの1つまたは複数が、ユーザ入力に直接基づいて、取得可能である。例えば、サードパーティディベロッパは、所与の訓練インスタンスについて、訓練インスタンス入力として利用する対応会話の一部を少なくとも定義してもよく、所与の訓練インスタンスについて、訓練インスタンス出力として利用する対応会話の一部に対するグラウンドトゥルース応答を、定義してもよい。さらに、サードパーティディベロッパは、所与の訓練インスタンスについて、訓練インスタンス入力の一部として利用する対応会話の先行文脈、または対応会話の「先行」部分の会話要約を、任意に定義することもできる。特に、サードパーティディベロッパが、会話におけるこれらの部分を定義したとしても、サードパーティディベロッパは、デモ会話のように会話の全てを、定義する必要があるわけではない。その結果、サードパーティディベロッパは、タスクのパラメータの特定の値を求めること(例えば、レストラン予約タスク、フライト変更タスク、在庫確認タスク、および/または対応通話中になされる他のタスク)、RPCの性能、導入部、および/または対応会話の他の側面等、会話の特定の部分に向けられた1つまたは複数の訓練インスタンスを、定義し得る。
様々な実施例では、1つまたは複数の対応特徴強調入力は、複数の訓練インスタンスの1つまたは複数と関連付けられてもよい。1つまたは複数の対応特徴強調入力は、例えば、なぜ特定の訓練インスタンスの1つまたは複数の部分が、ボイスボットを訓練するのに重要なのかを示す自然言語入力(例えば、口頭および/またはキー入力)であり得るものであり、それは、訓練インスタンス入力の1つまたは複数の部分などであり、時間的特徴、日付的特徴、名前的特徴(name feature)、アカウント番号的特徴、電子メールアドレス的特徴、電話番号的特徴、金銭的特徴、量的特徴、製品名的特徴、位置的特徴、RPC要求的特徴、および/または、訓練インスタンス入力の任意の他の特徴、もしくは、所与の訓練インスタンスについての訓練インスタンス出力であり得る。1つまたは複数の対応特徴強調入力は、対応訓練インスタンスについての訓練インスタンス入力内に含まれて、訓練インスタンス入力の処理後に訓練されるボイスボットに対応する、複数のMLレイヤの更新を、バイアスさせるために利用されてもよく、かつ/または、訓練の際に、ボイスボットが、1つまたは複数の対応特徴強調入力に注目することを特定するために、ポインタネットワークへの入力として利用されてもよい。その結果、訓練されたボイスボットは、次に、ボイスボットが、サードパーティによって会話を行うために展開されるときに、これらの特徴の発生に注目し得る。
1つまたは複数の対応特徴強調入力がポインタネットワークへの入力に利用される実施例では、対応会話の一部(またはその表現、例えば、会話の符号化、会話の埋込、会話ベクトル、および/または他の表現など)および/または対応会話の先行文脈(またはその表現、例えば、文脈の符号化、文脈の埋込、文脈ベクトル、および/もしくは他の表現)は、訓練の際にポインタネットワークを用いて処理され得る。対応会話の一部の1つまたは複数のトークンに対して、1つまたは複数の値(例えば、確率、対数尤度、2進値、および/または他の値)でラベル付けがなされ得るものであり、1つまたは複数の値が、対応会話の一部の1つまたは複数のトークンが、1つまたは複数の対応特徴強調入力に対応するものと予測されるかどうかを示す。さらに、対応会話の一部の1つまたは複数のトークンが、1つまたは複数の対応特徴強調入力に対応するものと予測されるかどうかを示す、1つまたは複数の値は、サードパーティディベロッパにより提供された1つまたは複数の特徴強調入力に基づいて決定された1つまたは複数のグラウンドトゥルース値と、比較され得る。
例えば、訓練されるボイスボットが、仮想マーケットと関連付けられていると想定し、訓練インスタンス入力が、少なくとも「もしあれば、製品Xを購入したいです」に対応する対応会話の一部を含むものと想定し、サードパーティディベロッパにより提供された、1つまたは複数の対応特徴強調入力が、製品の特徴および入手可能性を示すものと想定する。この例では、「製品X」および「入手可能」に対応する1つまたは複数のトークンは、これらの特徴が、対応会話の一部に対して正確に応答するのに意味があることを示す値と、関連付けられてもよい。しかし、ポインタネットワークは、「購入」が、予測値に伴う処理に基づいて、特徴強調入力に対応すると予測され(例えば、「購入」が注目されるべき確率0.5)、「製品X」が、予測値に伴う処理に基づいて、特徴強調入力に対応すると予測される(例えば、「製品X」が注目されるべき確率0.6)ものと判断する。この例では、「購入」と関連付けられた予測値0.5は、「購入」が、サードパーティディベロッパにより、対応特徴強調入力としては提供されておらず、第1のロスを生成するため、確率0.0等のグラウンドトゥルース値と比較され得るものであり、「製品X」と関連付けられた予測値0.6は、「製品X」が、サードパーティディベロッパにより、対応特徴強調入力としては提供されていて、第2のロスを生成するため、確率1.0などのグラウンドトゥルース値と比較され得る。これらのグラウンドトゥルース値は、サードパーティディベロッパにより提供される、1つまたは複数の対応特徴強調入力に基づいて、決定され得る。さらに、ポインタネットワークは、少なくとも第1のロスおよび第2のロスに基づいて(例えば、逆伝播により)更新され得る。換言すれば、ポインタネットワークは、所与の訓練インスタンスについての訓練インスタンス入力を処理して、注目されるべき訓練インスタンス入力内に含まれた、対応会話の特定の一部および/または対応会話の先行文脈(または、その表現)、を学習し得る。このため、訓練の際、ポインタネットワークは、ボイスボットに対する複数のMLレイヤを訓練するために利用される、同じ訓練インスタンスに基づいて、訓練され得る。
ある種の実施例では、ボイスボットに対応する複数のMLレイヤは、ポインタネットワークに対応するMLレイヤを、さらに含んでもよい。ポインタネットワークに対応するMLレイヤは、注目レイヤに対応するものと同様であるものの、差異を含んでもよい。例えば、変換MLモデルの注目レイヤは、従来、シーケンス毎の処理に利用されて、変換MLモデルを入力シーケンスに注目させる(例えば、オーディオデータのストリーム)一方で、出力シーケンス(例えば、オーディオデータのストリームに対応するテキストのストリーム)を生成する。同様に、ポインタネットワークに対応するMLレイヤは、変換MLモデルを入力シーケンスに注目させるとともに、出力シーケンスを生成するために、利用され得る。しかし、ポインタネットワークは、変換MLモデルを、入力シーケンスの特定の部分(例えば、入力シーケンスに含まれる特定の語句)に注目させる。ある種の実施例では、ポインタネットワークに対応するMLレイヤは、ここに説明する変換MLモデルの一部であってもよい。追加的または代替的な実施例では、ポインタネットワークに対応するMLレイヤは、ここに説明する変換MLモデルとは区別されるものの、組み合わせて用いられてもよい。
このため、ポインタネットワークは、ボイスボットに対応する複数のMLレイヤにとって、ユーザへの応答について、かつ/または、なぜボイスボットがユーザに対して特定の方式で応答したのかを説明するのに意味のある、会話の各部分を予測するために、利用され得る。さらに、ボイスボットに対応する複数のMLレイヤは、ポインタネットワークにより決定されたこれらの予測部分を、応答すべく提供された候補応答の選択をバイアスさせるのに、利用し得る。仮想マーケットの例を続けると、「もしあれば、製品Xを購入したいです」に対応する対応会話の部分が、訓練インスタンス入力として利用されるものと、さらに想定し、「製品X」が、実際に販売中で「入手可能」であるものと、さらに想定する。この入手可能性に基づき、予測応答は、「それは入手可能です」、「それは入手可能で、製品Xをお買い上げですか?」等に対応していてもよい。本例の予測応答を選択する際、サードパーティディベロッパにより提供される1つまたは複数の対応特徴強調入力は、予測応答に向けてバイアスがかかるように、利用されてもよい。このため、1つまたは複数の特徴強調入力は、ポインタネットワークを最初に訓練して、訓練中に意味のある対応会話の1つまたは複数の特定の部分を予測するのに、利用されるだけでなく、ボイスボットに対応する複数のMLレイヤによって、対応会話の部分に対する予測応答を選択するのに、利用されてもよい。
換言すれば、サードパーティディベロッパは、ボイスボット開発システム120とやりとりして、特徴強調入力を提供可能である。ボイスボットは、ポインタネットワークを推定で使うことで、対応会話にとって重要である対応会話の特定の特徴を学習するだけでなく、ボイスボットは、ポインタネットワークを推定で使用して生成された出力に基づいて、どのように予測応答が変更されるか、または予測応答にバイアスがかけられるのかを学習することも可能である。その結果、訓練されたボイスボットは、推定において、なぜ特定の方式で応答したのかについての指示をサードパーティディベロッパに提供し得る(例えば、以下に説明するような会話要約エンジン185により)。
ここに説明する対応特徴強調入力を用いることにより、様々な技術的利点が達成可能である。非限定的な一例として、ボイスボットは、対応特徴強調入力を含むことにより、所与の量の訓練インスタンスに基づく、所与のレベルの正確性および/または堅牢性を達成可能である。対応特徴強調入力を含まなければ、さらに大量の訓練インスタンスが、所与のレベルの正確性および/もしくは堅牢性を達成するために必要とされ、そうでなければ、所与のレベルの正確性および/または堅牢性は、達成不能である。その結果、ボイスボットは、より迅速かつ効率的に訓練されてもよく、それにより、ボイスボットを訓練するのに利用するクライアントデバイスのコンピュータ資源、ならびに/または、訓練インスタンス、訓練ロスおよび/もしくは他の訓練データが1つまたは複数のネットワークで送信される、実施例のネットワーク資源を、節約し得る。
様々な実施例では、複数の訓練インスタンスのうちの1つまたは複数は、RPC訓練インスタンスであってもよい。ここで用いられるように、RPC訓練インスタンスは、少なくとも対応RPCインバウンド要求を含む対応訓練インスタンス入力、および/または、少なくとも対応RPCアウトバウンド要求を含む対応訓練インスタンス出力を有する、訓練インスタンスを含む。対応訓練インスタンス出力に含まれるRPCアウトバウンド要求は、ボイスボットが、RPC要求を生成すべきことを示してもよく、RPC要求を、1つまたは複数のサードパーティシステム190(例えば、予約システム、在庫システム、状態確認システム、および/または任意の他のサードパーティシステム)へ、1つまたは複数のネットワーク1992を介して、送信してもよい。対応訓練インスタンス入力に含まれるRPCインバウンド要求は、ボイスボットが、1つまたは複数のサードパーティシステム190からの、1つまたは複数のネットワーク1992を介したRPC要求に対する応答を受信して、その応答を処理して、その応答に基づいて出力を生成すべきことを、示してもよい。ネットワーク1992は、図1のネットワーク1991とは区別して示されているが、例示として、かつ限定の意味にではなく理解されたい。例えば、ネットワーク1992およびネットワーク1991は、同一のネットワークであっても、ここに説明するネットワークの別の組み合わせであってもよい。RPC要求が、ボイスボットを訓練するための複数の訓練インスタンスが生成される対応会話と、直接的には関連付けられていない(例えば、会話の口頭入力またはキー入力に直接的には取り込まれていない)ので、サードパーティディベロッパは、訓練インスタンスについてのRPCアウトバウンド要求およびRPCインバウンド要求、RPCアウトバウンド要求の宛先である1つまたは複数のサードパーティシステム190のうちの特定のサードパーティシステム、RPC要求のフォーマット、RPC要求に対する応答のフォーマット、および/またはRPCと関連付けられた任意の他の情報を、定義する必要があってもよい。
上述のように訓練インスタンスを取得するのに、ユーザ入力エンジン111が、ユーザの口頭入力を、クライアントデバイス110のマイクロフォンにより検出する実施例では、口頭入力を取り込んだオーディオデータが、処理され得る。ある種の実施例では、クライアントデバイス110のASRエンジン130A1は、ASRモデル130Aを用いて、口頭入力を取り込んだオーディオデータを、処理し得る。追加的または代替的な実施例では、クライアントデバイス110は、オーディオデータを、ボイスボット開発システム120へ、ネットワーク1991を介して送信可能であり、ASRエンジン130A2は、ASRモデル130Aを用いて、口頭入力を取り込んだオーディオデータを、処理可能である。音声認識エンジン130A1および/または130A2は、口頭入力について、複数の音声仮定を、オーディオデータの処理に基づいて生成可能であり、特定の音声仮定を、口頭入力についての認識テキストとして、複数の音声仮定の各々と関連付けられた対応値(例えば、確率値、対数尤度値、および/または他の値)に基づき、任意に選択可能である。様々な実施例では、ASRモデル130Aは、終端間音声認識モデルであり、ASRエンジン130A1および/または130A2が、このモデルを直接利用して、複数の音声仮定を生成可能としている。例えば、ASRモデル130Aは、複数の音声仮定の各々を、文字毎に(または他のトークン毎に)生成するために用いられる、終端間モデルであり得る。認識テキストを文字毎に生成するのに用いられる、このような終端間モデルの非限定的な一例は、リカレントニューラルネットワークトランスデューサ(recurrent neural network transducer: RNN-T)モデルである。RNN-Tモデルは、注目機構を用いていないシーケンス毎のモデルの一形態である。他の実施例では、ASRモデル130Aは、終端間音声認識モデルではなく、ASRエンジン130A1および/または130A2が予測音素(および/または他の表現)を代わりに生成可能としている。そして、例えば、予測音素(および/または他の表現)は、ASRエンジン130A1および/または130A2により利用されて、予測音素に従う複数の音声仮定を決定してもよい。このようにして、ASRエンジン130A1および/または130A2は、復号グラフ、辞書(lexicon)、および/または他の資源を、任意に採用し得る。様々な実施例では、対応する文字起こしは、クライアントデバイス110にてレンダリング可能である(例えば、訓練インスタンス入力、訓練インスタンス出力、対応特徴強調入力、デモ会話、および/または、ボイスボット開発プラットフォームの他の側面と関連付けられる)。
各実施例のある種のものでは、クライアントデバイス110のNLUエンジン140A1、および/またはボイスボット開発システム120のNLUエンジン140A2は、NLUモデル140Aを用いて、ASRエンジン130A1および/または130A2により生成された認識テキストを処理して、口頭入力に含まれた意図を、判断することができる。例えば、クライアントデバイス110は、サードパーティディベロッパからの「『午後6:30に2人の予約がありますか』という訓練インスタンス入力を追加する」という口頭入力を(例えば、訓練インスタンス入力を定義する独立型口頭入力の一部として)検出し、クライアントデバイス110は、ASRモデル130A1および/または130A2を用いて、口頭入力を取り込んでこの口頭入力に対応する認識テキストを生成するオーディオデータを、処理することができ、NLUモデル140Aを用いて、認識テキストを処理して、少なくとも、訓練インスタンス入力(例えば、オーディオデータおよび/または口頭入力についての対応音声仮定を、含んでもよい)を追加する意図を判断することができる。
各実施例のある種のものでは、クライアントデバイス110のTTSエンジン150A1および/またはボイスボット開発システム120のTTSエンジン150A2は、合成音声を取り込んだ合成音声オーディオデータを生成することができる。合成音声は、クライアントデバイス110において、レンダリングエンジン112を用いて、クライアントデバイス110のスピーカにより、レンダリング可能である。合成音声は、ここに説明するボイスボット開発により生成された任意の出力を取り込んでもよく、例えば、訓練インスタンスが追加された(または、特定の訓練インスタンス入力、訓練インスタンス出力、特徴強調入力等を繰り返す)という指示、サードパーティディベロッパが、1つまたは複数の追加の訓練インスタンスまたは訓練インスタンス群(場合によっては、特定の特徴と関連付けられたもの)を追加することを要求する通知、サードパーティディベロッパが、1つまたは複数の既存の訓練インスタンスまたは訓練インスタンス群(場合によっては、特定の特徴と関連付けられたもの)を修正することを要求する通知、ボイスボットの訓練が開始され、完了したという指示、もしくはボイスボットの訓練の状態更新、および/または、ボイスボットもしくはサードパーティディベロッパに対して音声的に伝達可能なボイスボット開発プラットフォームに関連する任意の他の情報を含んでもよい。
訓練エンジン162は、訓練インスタンスエンジン161により取得された複数の訓練インスタンス(例えば、訓練インスタンスデータベース161A内に格納)を利用して、ボイスボット(例えば、そのMLレイヤ)を訓練することができる。ボイスボットは、サードパーティと関連付けられた通話用に、サードパーティの代わりに会話を行うために、1つまたは複数の機械学習(ML)モデル(例えば、MLレイヤデータベース170A1内に格納)の複数のMLレイヤを利用する、1つまたは複数のプロセッサに、対応し得る。複数のMLレイヤは、変換MLモデルにおけるもの(例えば、入力レイヤ、符号化レイヤ、復号レイヤ、フィードフォワードレイヤ、注目レイヤ、出力レイヤ、および/または他のMLレイヤ)、単方向および/もしくは双方向RNNモデル(例えば、入力レイヤ、隠れレイヤ、出力レイヤおよび/または他のMLレイヤ)、および/または他のMLモデルの他のMLレイヤに、対応してもよい。ある種の実施例では、ポインタネットワークに対応するMLレイヤは、ここに説明する変換MLモデルの一部であってもよい。追加的または代替的な実施例では、ポインタネットワークに対応するMLレイヤは、ここに説明する変換MLモデルとは区別されるものの、組み合わせて用いられてもよい。
例えば、図2Aを参照すると、ボイスボットを訓練する例示的処理フロー200Aが示されている。ある種の実施例では、訓練インスタンスエンジン161は、所与の訓練インスタンスを、訓練インスタンスデータベース161A内に格納されたボイスボットと関連付けられた複数の訓練インスタンスから、取得することができる。ある種の実施例では、所与の訓練インスタンスについて、訓練インスタンス入力は、少なくとも、対応会話の一部に対応するオーディオデータ201と、対応会話についての会話文脈202とを、含み得る。さらに、所与の訓練インスタンスについて、訓練インスタンス出力は、会話の一部に対するグラウンドトゥルース応答203を、含み得る。オーディオデータ201は、ASRエンジン130A1および/または130A2により、ASRモデル130Aを用いて処理されて、複数の音声仮定204が生成され得る。他の実施例では、訓練インスタンス入力は、オーディオデータ201に基づいて生成された複数の音声仮定204を含んでもよいが、オーディオデータ201自体を含まなくてもよい。
ある種の実施例では、符号化エンジン162A1は、MLレイヤデータベース170A1内の複数のMLレイヤのうちの第1のMLレイヤ、複数の音声仮定204を用いて、第1の符号化を生成可能である。符号化エンジン162A1は、MLレイヤデータベース170A1内に格納された複数のMLレイヤのうちの第2のMLレイヤを用いて、会話文脈202を処理して、第2の符号化を生成可能である。さらに、連結エンジン162A2は、第1の符号化と第2の符号化とを連結して、連結符号化を生成可能である。連結符号化は、対応会話の現在の状態を表してもよい。例えば、連結符号化は、会話の履歴と、会話の最新の部分とを符号化して、全会話を全体として符号化可能である。
対応会話の現在の状態を符号化することにより、会話における対話部分が、追跡されてもよく、これにより、ボイスボットが、対応会話の状態をモデル化し、かつ/または学習することが可能となる。このため、結果として得られる訓練されたボイスボットは、対応電話によりなされているタスクと関連付けられたパラメータについて、対応値を求めるために学習してもよい。例えば、訓練インスタンス入力が、少なくとも、「すみません。製品Xは売っていますか」に対応する対応会話の一部を、含むものと想定する。この例では、ボイスボットは、人が製品Xについての在庫確認を要求していることを理解するように、訓練される。さらに、対応会話の会話文脈202を符号化することにより、ボイスボットは、製品Xが入手可能であれば、人は、製品Xの購入または取り置きと関連付けられた名前パラメータについて、製品Xの購入と関連付けられた金銭パラメータについて、人が自宅への製品Xの配送を望む場合の住所パラメータについてなど、対応する値を何も提供していないことを理解するようにも、訓練される。このように、ボイスボットは、次に人に対して、対応会話の状態を追跡することによってこれらのパラメータの1つまたは複数についての対応値を求めるように、訓練され得る。
さらに、埋込エンジン162A3は、複数のMLレイヤの1つまたは複数を用いて、連結符号化を処理し、予測応答205と関連付けられた予測埋込を、生成することができる(例えば、サードパーティシステムでのRPC実行、訓練インスタンス入力に応じた合成音声またはテキストの提供、着信に対する応答、発信の開始、および/または、訓練インスタンス入力に応じて予測された他の応答)。予測応答205は、候補応答データベース171A(例えば、グラウンドトゥルース応答203、および複数の追加の候補応答を含む)内の複数の候補応答から、選択されてもよい。予測埋込を生成する際、連結符号化の規模が、規定の大きさにまで減少してもよい。これにより、予測応答205と関連付けられた予測埋込は、埋込空間内で、ロスエンジン162A4について説明される他の埋込と、容易に比較可能となる。
各実施例のある種のものでは、複数の音声仮定204の処理に先立って、訓練エンジン162は、複数の音声仮定を、調整することができる。例えば、複数の音声仮定が、「午後4時に」という口頭入力を取り込むものと想定する。この例では、複数の音声仮定は、複数の調整音声仮定の各々が、次に、互いに組み合わされて処理されるように、[~に、#空、4PM。~に、4、午後。4、4、午後]として調整されうる。これらの実施例の別の例では、訓練エンジン162は、さらに、複数の調整音声仮定に注記を付すことができる。上述の例を続けると、複数の調整音声仮定には、[~に、#空(@null)、4PM(@時刻)。~に、4(@時刻)、午後(@時刻)。4(@時刻)、4(@時刻)、午後(@時刻)]として注記が付される。
訓練インスタンス入力が、オーディオデータ201も含む実施例では、符号化エンジン162A1は、複数の音声仮定に基づいて生成された符号化に加えて、あるいはその代わりに、オーディオデータ201と関連付けられた符号化を、生成することができる。これらの実施例では、連結エンジン162A2は、オーディオデータ201と関連付けられた符号化、および会話文脈202と関連付けられた符号化を処理して、連結符号化を生成することができる。さらに、埋込エンジン162A3は、複数のMLレイヤの1つまたは複数を用いて、連結符号化を処理して、予測応答205と関連付けられた予測埋込を、生成することができる。
様々な実施例では、図2Aには示していないが、訓練エンジン162は、さらに、MLレイヤデータベース170A1に格納されたMLレイヤに対応するポインタネットワークを訓練することができる。これらの実施例では、訓練の際、1つまたは複数の対応特徴強調入力は、サードパーティディベロッパから受信されて、ポインタネットワークを訓練するために利用することができる。まず、訓練エンジン162は、ポインタネットワークに、オーディオデータ201、会話文脈202、および/または複数の音声仮定204を処理させて、出力を生成することができる。出力は、例えば、オーディオデータ201内に取り込まれた会話の一部にどのように応答するかを判断するのに意味があるものと予測される会話の1つまたは複数の特徴(例えば、日付的特徴、時間的特徴、RPC的特徴等)の指示と、オーディオデータ201内に取り込まれた会話の一部にどのように応答するかを判断するのに、会話の特定の一部がどの程度意味があるものと予測されるのかを示す対応値(例えば、2進値、確率、対数尤度等)とを含み得る。1つまたは複数の特徴(および、対応値)は、1つまたは複数の対応特徴強調入力(および、1つまたは複数の対応特徴強調入力の各々についての対応グラウンドトゥルース値)と比較されて、ポインタネットワークを更新する際の1つまたは複数のロスを生成し得る。
さらに、所与の訓練インスタンスについての1つまたは複数の対応特徴強調入力に基づくポインタネットワークの訓練に加えて、符号化エンジン162A1および/または埋込エンジン162A3は、補足入力として提供された、所与の訓練インスタンスと関連付けられた、1つまたは複数の対応特徴強調入力を、オーディオデータ201、会話文脈、および/または複数の音声仮定204とともに、処理してもよい。1つまたは複数の対応特徴強調入力を処理する際、結果として得られる予測埋込には、1つまたは複数の対応特徴強調入力と関連付けられた候補応答に向けて、バイアスがかけられ得る。例えば、1つまたは複数の対応特徴強調入力が、レストラン予約の時間的特徴を含む場合、候補応答には、アウトバウンドRPC要求の開始と関連付けられた候補応答に向けて、バイアスがかけられて、時間的特徴により示された時刻が、レストラン予約に利用可能であるかどうか、判断することができる。
さらに、符号化エンジン162A1、連結エンジン162A2、および埋込エンジン162A3は、特定の機能を特定の順に実行するものとして、ここに説明されるが、これらの具体的実行は、その順番が変更されてもよく、かつ/または1つまたは複数のこれらのエンジンが、省略されてもよいことを、理解されたい。例えば、符号化エンジン162A1が、省略されてもよく、埋込エンジン162A3が、複数のMLモデルのそれぞれのMLレイヤを用いて、複数の音声仮定204および会話文脈202を処理して、複数の音声仮定と関連付けられた対応会話の少なくとも一部に対する予測応答と関連付けられた、予測埋込を生成してもよい。
さらに、ロスエンジン162A4は、様々な実施例では、埋込空間において、予測応答205と関連付けられた予測埋込を、グラウンドトゥルース応答203と関連付けられたグラウンドトゥルース埋込と比較して、1つまたは複数のロス206を生成し得る。予測埋込およびグラウンドトゥルース埋込は、予測応答205およびグラウンドトゥルース応答203のより低次元の表現に、それぞれ対応し得る。埋込空間により、これらの低次元埋込が、比較可能となる。さらに、予測応答205と関連付けられた予測埋込は、埋込空間において、対応グラウンドトゥルース応答203と関連付けられた対応グラウンドトゥルース埋込に、近接することになっている。換言すれば、少なくとも対応会話の一部、および会話の先行文脈を処理する際、システムは、少なくとも対応会話の一部に対する実際の応答に似た応答を、予測するようになっている。例えば、予測埋込と対応グラウンドトゥルース埋込との間の距離計量(例えば、コサイン類似度距離、ユークリッド距離、および/または他の距離計量)は、埋込空間内で判断され、1つまたは複数のロス206が、距離計量に基づいて、生成され得る。
ある種の実施例では、グラウンドトゥルース応答203と関連付けられたグラウンドトゥルース埋込が、生成可能であるとともに、ボイスボットが、所与の訓練インスタンスに基づき、予測応答205と関連付けられた予測埋込を生成するのに利用される複数のMLレイヤとは区別される、別々のMLモデル(図示せず)の別々のMLレイヤを用いて、訓練される(例えば、ドットプロダクトアーキテクチャ(dot product architecture)。そして、グラウンドトゥルース埋込は、推定の際の複数の候補応答の一つとして利用されるように、候補応答データベース171A内に格納されてもよい。特に、別々のMLレイヤは、1つまたは複数のロス206に基づいて、追加的または代替的に更新されることで、別々のMLレイヤが、埋込空間のそれぞれの部分を学習し、グラウンドトゥルース埋込に割り当ててもよい(複数のMLレイヤの1つまたは複数および/または別々のMLレイヤが、場合によっては固定されていてもよい)。さらに、対応会話の一部に対する間違った応答である1つまたは複数の応答と関連付けられた対応埋込は、追加的または代替的に、否定的な例として利用されて、さらに、埋込空間内で、対応会話の一部についての正確な埋込を、区別してもよい。別々のMLレイヤの更新後、複数の追加の候補応答が、更新された別々のMLレイヤを用いて処理され、対応候補応答埋込を生成し得る。また、これらの候補応答埋込、および対応候補応答は、ボイスボットの訓練に利用されなくとも、候補応答データベース171A内に格納され得る。このため、推定の際、候補応答埋込および対応候補応答が既知であるので、別々のMLレイヤは省略されてもよい。追加的または代替的な実施例では、グラウンドトゥルース埋込は、所与の訓練インスタンスについてのグラウンドトゥルース応答と関連付けて、訓練インスタンスデータベース161A内に格納され得る。
更新エンジン162A5は、複数のMLレイヤの1つまたは複数を、1つまたは複数のロス206に基づいて、更新可能である(複数のMLレイヤの1つまたは複数は、場合によっては固定されていてもよい)。例えば、更新エンジン162A5は、1つまたは複数のロス206を、1つまたは複数のMLレイヤにわたり逆伝播させ、複数のMLレイヤの1つまたは複数のそれぞれの重みを更新し得る。ある種の実施例では、更新エンジン162A5は、所与の訓練インスタンスについて、対応特徴強調入力の1つまたは複数を利用して、複数のMLレイヤの1つまたは複数の更新にバイアスをかけることができる。複数のMLレイヤの1つまたは複数は、訓練インスタンスエンジン161により取得された追加の訓練インスタンスに基づき、上述と同じかまたは同様に、さらに更新され得る。ある種の実施例では、ボイスボットは、1つまたは複数の条件が満たされるまで、このように訓練されてもよい。1つまたは複数の条件は、例えば、更新された複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数の検証、更新された複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数の集約(例えば、ゼロロスまたはゼロロスの閾値範囲内)、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数が、現在利用されているボイスボット(もしあれば)のインスタンスよりもよいとの判断(例えば、精度および/または再現性)、少なくとも訓練インスタンスの閾値量に基づく訓練の発生、および/または訓練インスタンスに基づく訓練の継続時間を、含み得る。
ボイスボットは、特定の方式で、特定のアーキテクチャで、訓練されているものとして説明されているが、これは、例示のためのものであり、限定を意味しないことを、理解されたい。例えば、仮想マーケットと関連付けられたボイスボットの訓練では、仮想カフェという名称の架空のレストランと関連付けられたボイスボットは、基本的なボイスボットとして利用され得る。この例では、1つまたは複数の転移学習技術(例えば、メタ学習)は、仮想カフェと関連付けられたボイスボット(または、それらの訓練インスタンスに基づいて生成された出力)を、仮想マーケットと関連付けられたボイスボットに適応させるために、用いられてもよい。例えば、訓練インスタンス入力は、仮想カフェと関連付けられた元々のボイスボットが、レストランの目的のために訓練されているのに対して、仮想マーケットと関連付けられたボイスボットを示す追加入力が、他の小売関連目的のために訓練されていることを示す追加入力を、含んでもよい。
図1を簡潔に再び参照すると、ボイスボットの訓練後に、ボイスボットエンジン170は、次に、訓練されたボイスボットを利用して、サードパーティと関連付けられた通話用に、サードパーティの代わりに会話することができ、様々な実施例では、応答エンジン171と、遠隔手続き呼出(RPC)エンジン172とを、備え得る。訓練されたボイスボットは、それぞれの追加クライアントデバイスにより、着信を開始したか、または発信に応答した、人または追加ボイスボットとの通話が、可能である。通話は、1つまたは複数のネットワーク1993を介して、音声通信プロトコル(例えば、ボイスオーバーインターネットプロトコル(VoIP)、公衆交換電話網(PSTN)、および/または他の電話通信プロトコル)を用いて行われ得る。特に、これらの通話は、ボイスボットを訓練するのに利用されているクライアントデバイス110が、対応通話の終端ではないような、クラウドベースの通話であってもよい。あるいは、ボイスボット開発システム120(例えば、1つまたは複数のサーバ)は、追加クライアントデバイス195の1つとともに、通話の終端として働いてもよい。
例えば、特に図2Bを参照して、ボイスボットが訓練されているサードパーティが、仮想マーケットという名称で、様々な製品を販売している架空の小売業者であるものと想定する。さらに、人が、追加クライアントデバイス195のそれぞれの1つにおいて、ユーザ入力を提供し、仮想マーケットとの通話を開始し、ボイスボットが、その人によって開始された通話の着信に応答し、ボイスボット用の特定の導入部に対応した合成音声を取り込んだ(例えば、TTSモデル150Aを用いて生成された)合成音声オーディオデータを、合成音声が、追加クライアントデバイス195の1つにおいて、スピーカを通して人に知覚できるように、追加クライアントデバイス195の1つにて聴覚的にレンダリングすることを、想定している。さらに、人が、合成音声オーディオデータの聴覚的レンダリングに応答して、「すみません。製品Xは売っていますか」という口頭発話を提供するものと想定する。口頭発話は、1つまたは複数のネットワークを通して、図1のボイスボット開発システム120へと送信されるオーディオデータ207内に、取り込まれていてもよい。
ASRエンジン130A2は、ASRモデル130Aを用いて、オーディオデータ207を処理して、口頭発話に対応する複数の音声仮定209を生成することができる。ボイスボットエンジン170は、場合によっては、複数の音声仮定209が、調整されるか、かつ/または注記が付され得るようにする。さらに、応答エンジン171は、MLレイヤデータベース170A1内に格納された複数のMLレイヤを用いて、複数の音声仮定209のうちの1つまたは複数、人により開始された着信についての会話文脈208(例えば、音声活動データベース170A2内に格納)、および/または、オーディオデータ207を処理して、応答埋込を生成することができる。ある種の実施例では、ASRエンジン130A2および/または複数の音声仮定209によってのみ処理されたオーディオデータ207は、ユーザによって提供された口頭発話が完了したとの判断に応じて、応答エンジン171によってのみ処理されてもよい。例えば、ボイスボット開発システム120は、人が口頭発話を提供して、人が「販売」という単語を発した後に、口頭発話を提供したと検出するために訓練されている、終端モデルを用いて、オーディオデータを処理することができる。
ある種の実施例では、応答エンジン171は、応答埋込を、候補応答データベース171A内に格納された、複数の候補応答と関連付けられた、複数の候補応答埋込と、比較することができる。さらに、応答エンジン171は、埋込空間における、対応埋込と、複数の候補応答と関連付けられた複数の候補応答埋込のうちの1つまたは複数との間の距離計量に基づいて、複数の候補応答のうちの所与の1つを、口頭発話に対する応答210として、選択することができる。例えば、距離閾値を満たす対応距離計量と関連付けられた候補応答が、応答210として選択されてもよい。応答210は、TTSエンジン150A2により、TTSモデル150Aを用いて処理されて、応答210を取り込んだ合成音声オーディオデータ212を、生成し得る。さらに、合成音声オーディオデータ212は、追加クライアントデバイス195の1つにおいて、聴覚的にレンダリングされ得る。
様々な実施例では、オーディオデータ207、会話文脈208、および/または複数の音声仮定209は、図1および図2Aを参照して上述したように訓練される、訓練されたポインタネットワークを用いて、処理され得る。ポインタネットワークは、オーディオデータ207に応じて提供される応答を選択することに、かつ/またはオーディオデータ207に応じたRPCアウトバウンド要求を生成することに、意味のあるものと予測された、会話の特定の部分または会話文脈を、特定することができる(例えば、特徴強調出力)。これらの実施例では、ポインタネットワークを用いて特定された、会話の特定の部分または会話文脈は、応答エンジン171に対する入力として、提供され得る(例えば、訓練されたボイスボットに対応する複数のMLレイヤへの補足入力として)。さらに、応答エンジン171は、応答210の選択、および/またはRPCアウトバウンド要求211Aの生成を、バイアスさせることができる。そのうえ、会話要約エンジン185についてさらに詳述したように、特徴強調出力は、訓練されたボイスボットがなぜ特定の方式で働くのかについて、会話および説明の概要を提供する会話の会話要約を、生成することに利用可能である。
ある種の実施例では、応答エンジン171は、RPC要求が、オーディオデータ207に取り込まれた口頭発話に応答することが必要とされているものと、判断し得る。各実施例のある種のものでは、RPCエンジン172は、RPCアウトバウンド要求211Aを生成し、RPCアウトバウンド要求を、1つまたは複数のサードパーティシステム190へ、送信することができる。上述の例を続けると、応答エンジン171は、RPC要求が、仮想マーケットに販売中の「製品X」の在庫があるかどうか判断することが必要であると、判断してもよい。このため、RPCエンジン172は、構造化要求(例えば、在庫=製品X、意図=販売)を、在庫サードパーティシステム190へ送信されるRPCアウトバウンド要求211Aとして、生成することができる。RPCエンジン172は、RPCアウトバウンド要求211Bに応答して、RPCインバウンド要求211Bを受信することができる。例えば、RPCインバウンド要求211Bは、仮想マーケットにおける販売で、「製品X」が、入手可能であるか入手不能であるか、示してもよい。RPC要求が必要であると応答エンジン171が判断する実施例では、RPCアウトバウンド要求211Aと関連付けられた合成音声オーディオデータの1つまたは複数のインスタンス(例えば、「確認致しますので、お待ち下さい」)、および/または、RPCインバウンド要求211Bと関連付けられた合成音声オーディオデータの1つまたは複数のインスタンス(例えば、「はい。販売用の製品Xはございます。購入なさいますか?」)が、追加クライアントデバイス195の1つにおいて、上述と同じかあるいは同様に、レンダリングされ得る。
通話が完了するまで、この処理が繰り返されて、人によって提供された口頭発話についての対応応答が生成されてもよい。人との通話は、音声活動データベース170A2内に格納されてもよい。例えば、音声活動データベース170A2は、所与の通話について、人の口頭発話に対応するオーディオデータ、音声通話の合成音声に対応する合成音声オーディオデータ、所与の通話の結果、所与の通話の継続時間、所与の通話と関連付けられた時刻および/もしくは日付、ならびに/または所与の通話から得られた他の情報を、含んでもよい。ある種の実施例では、ボイスボットは、人から、会話を始める前にボイスボットとやりとりすることにつき、同意を求めてもよい。人が、通話中にボイスボットと会話することについて、同意した実施例では、ボイスボットは、ユーザとの会話に関与してよい。人が、通話中にボイスボットと会話することについて、同意しない実施例では、ボイスボットは、通話を終了するか、または、サードパーティと関連付けられた別の人が、通話に参加することを要求する。
再び図1を参照し、エラー識別エンジン180は、MLレイヤデータベース180Aに格納されたMLモデルの複数のMLレイヤを用いて、ボイスボット活動データベース170A2内に格納されたボイスボット活動を処理して、ボイスボットのあらゆる行動エラーを、特定することができる。特定された行動エラーは、複数のMLレイヤを用いて生成された出力に基づき、1つまたは複数の個別のエラー区分に分類され得る。1つまたは複数の個別のエラー区分は、例えば、ボイスボットが、早期に通話を切断、ボイスボットが、応答に失敗してタイムアウト、ボイスボットが、人との所望の活動を完了するのに必要なパラメータの対応値を求めることに失敗、ボイスボットが、人の所望の活動を完了するために人により提供されたパラメータの対応値の認識に失敗、ボイスボットが、RPCの実行が必要なときに失敗、ボイスボットが、間違ったサードパーティシステムとRPCを実行、および/または、対応通話の際に発生し得るボイスボットの任意の他の行動エラーを、含み得る。換言すれば、特定された行動エラーの主要因が同じであれば、特定された行動エラーは、同じ個別エラー区分の1つまたは複数に分類され得る。
ある種の実施例では、エラー識別エンジン180は、1つまたは複数の活動を自動的に行って、これらの特定された行動問題を修正し得る。1つまたは複数の活動は、例えば、ボイスボットの再訓練のために、新規の訓練インスタンスを合成すること、および/または、ボイスボットの再訓練のために、既存の訓練インスタンスを修正することを、含み得る。例えば、エラー識別エンジン180は、ボイスボットは、対応会話の部分に含まれる複数の特徴について混乱したが、訓練インスタンスには、ボイスボットが複数の特徴を一貫して区別可能であることを妨げる特徴を含む、希薄性の問題(sparsity issue)があるものと、判断してもよい。この例では、エラー識別エンジン180は、希薄性の問題に対処する複数の特徴のうちの1つまたは複数を含み、ボイスボットが、ボイスボットと関連付けられた複数の訓練インスタンスに基づいて、再訓練されるようにする、合成訓練インスタンスを生成してもよく、生成された合成訓練インスタンスを含んでいてもよい。他の例では、エラー識別エンジン180は、追加的または代替的に、1つまたは複数の既存の訓練インスタンスを修正して改めてラベル付けをして、複数の特徴の1つまたは複数を、さらに区別してもよい。
ある種の追加的または代替的実施例では、エラー識別エンジン180は、通知を、サードパーティディベロッパに対して提示させる。通知は、サードパーティディベロッパにより行われると、識別された行動問題を修正する1つまたは複数の活動の指示を含み得る。通知は、対応通話の会話要約とともに、あるいは、個別のインターフェース(例えば、ポップアップ通知、通知インターフェース等)を通じて、レンダリングされ得る。1つまたは複数の活動は、例えば、ボイスボットの再訓練のために、新規の訓練インスタンスを追加すること、および/または、ボイスボットの再訓練のために、既存の訓練インスタンスを修正することを、含み得る。例えば、エラー識別エンジンは、1つまたは複数の訓練インスタンスを提示し、サードパーティディベロッパに、複数の訓練インスタンスのうちの1つまたは複数について、1つまたは複数の対応特徴強調入力を識別するように促し、訓練インスタンスの1つまたは複数の特徴を含む、1つまたは複数の訓練インスタンスを追加し、訓練インスタンスに対して、1つまたは複数の個別のラベルを含むように再びラベル付を行い、かつ/または特定された行動エラーの主要因を修正する任意の他の行動を行ってもよい。
会話要約エンジン185は、ボイスボット活動データベース170A2内に格納されたボイスボット活動に基づいて、ボイスボットによりなされた各通話の対応会話要約を生成することができる。対応会話要約は、クライアントデバイス110のユーザインターフェースにおいて、レンダリングエンジン112を用いてレンダリングされ得る。ある種の実施例では、対応会話要約は、例えば、各対応通話の自然言語要約、対応通話の継続時間、対応通話の結果もしくは成果、対応通話と関連付けられた金銭情報、および/または通話と関連付けられた他の情報を、含み得る。その情報は、ボイスボットが、会話中に生成された1つまたは複数の特徴強調出力に基づいて、なぜ特定の出力を提供したのかについての特定の理由などである。仮想マーケットの例を続けると、対応会話要約は、例えば、「ユーザは、通話して、製品Xの入手可能性について問い合わせ、私は製品Xが入手可能であることを確認し、ユーザは、製品Xを100ドルで購入した」というものであってもよい。ある種の追加的または代替的実施例では、対応会話要約は、選択された場合には、対応通話の文字起こしが、レンダリングエンジン112を用いて、クライアントデバイス110のユーザインターフェースにおいて、レンダリングされるようにしてもよい。対応会話要約について、以下に説明する(例えば、図3C参照)。
このため、ここに説明するボイスボット開発プラットフォームにより、サードパーティと関連付けられたサードパーティディベロッパは、ボイスボットを訓練し、ボイスボットの実行を監視した後、ボイスボットを、ボイスボットの任意の特定された行動エラーに基づいて更新することが可能となる。特に、ボイスボット開発プラットフォームは、用例ベースであり、そこにおいて、ボイスボットが、会話の各部分に基づいて訓練され、ボイスボットが、用例のさらなる追加、または既存の用例の修正に基づいて、更新される。その結果、サードパーティディベロッパは、ルールベースのボイスボット開発に必要となる、MLについての広範な知識や、様々な意図スキーマをどのように定義するのかを、知る必要がない。
ボイスボットは、サードパーティと関連付けられた通話用に、以後、サードパーティの代わりに会話を行うために展開されるものとしてここに説明するが、これは、例示のためのものであり、限定を意味しないことを、理解されたい。例えば、ここに説明するボイスボットは、所与のボイスボットで、人間とコンピュータとの対話を、ある人が始めることができる任意のシナリオにおいて、展開可能である。例えば、所与のボイスボットは、ドライブスルーにおいて、ドライブスルーシステムにより、会話するように、自動化アシスタントとしての人と、その人のクライアントデバイスにより、かつ/または、人が所与のボイスボットで人間とコンピュータとの対話に参加可能な、通話外の任意の他の領域で、人と会話するように、訓練され得る。このため、これらのボイスボットの行動が、対応するボイスボットを訓練するのに利用された訓練インスタンスに基づくものである場合もあることを、理解されたい。
ここに説明する技術を用いることにより、様々な技術的利点が達成可能である。非限定的な一例として、ボイスボット開発プラットフォームにより、ボイスボットは、予め定義された意図スキーマというよりは、会話の用例に基づいて、訓練可能となる。これにより、ボイスボットの行動が、新規の訓練インスタンスを追加することや、既存の訓練インスタンスを修正することにより、容易に追加または修正可能となる。その結果、ここに説明するボイスボット開発プラットフォームを用いて訓練されたボイスボットは、より拡張性が高くなり、大量の意図スキーマを定義する必要がなくなるため、メモリ消費が低減する。このため、訓練されて利用されるMLモデルは、メモリ消費量がより少なくなり、より堅固および/または正確となり得る。さらに、ボイスボット開発プラットフォームを用いた訓練されたボイスボットでは、高いレベルの精度と再現性が得られ、それにより、通話が、より迅速かつ効率的になされることが可能となる。これは、ボイスボット開発プラットフォームを用いた訓練されたボイスボットが、人の音声のニュアンスをよりよく理解可能であることで、よりよく応答することができるようになるためである。
図3A、図3Bおよび図3Cを参照すると、ボイスボットディベロッパプラットフォームと関連付けられた、ユーザインターフェース300の様々な非限定的な例が示されている。サードパーティディベロッパは、ボイスボット開発システムクライアントまたはボイスボット開発システム(例えば、図1のクライアントデバイス110)を備えたクライアントデバイスを用いて、ボイスボット開発プラットフォームと、やりとりすることができる。ボイスボット開発プラットフォームとやりとりすることにより、サードパーティディベロッパは、展開された場合に、サードパーティ宛の着信、および/またはサードパーティの代わりに開始された発信用に、サードパーティディベロッパと関連付けられたサードパーティの代わりに、会話を行うことができるようになるボイスボットを、訓練することができる。図3A、図3Bおよび図3Cを通じての例示のため、サードパーティディベロッパが、架空のレストランである仮想カフェと関連付けられた通話で会話を行うために、新規のボイスボットを作成していることを想定する。
特に図3Aを参照すると、ボイスボット開発プラットフォームのホーム画面またはランディングページは、ユーザインターフェース300上に視覚的にレンダリングされたものとして、図示されている。様々な実施例では、サードパーティディベロッパには、ホーム画面またはランディングページ上で、様々なグラッフィク要素が、提示されていてもよい。例えば、ユーザインターフェース300は、サードパーティディベロッパにより開発されるボイスボット、および/またはサードパーティ(例えば、仮想カフェ)と関連付けられた任意のボイスボットと関連付けられた、任意の一意の識別子のスニペットを提供する、ボイスボットグラフィック要素310を、含んでもよい。新規のボイスボットを作成する際、サードパーティディベロッパは、開発中の新規ボイスボットと関連付けられた一意の識別子を、テキスト入力フィールド318内に提供し得る。例えば、図3Aに示すように、サードパーティディベロッパは、キー入力である「仮想カフェ」を、テキスト入力フィールド318内に、あるいは、「仮想カフェ」に対応するオーディオデータを取り込んだ口頭入力を(場合によっては、マイクロフォンインターフェース要素350をユーザが選択したことに応答して)、提供してもよい。ある種の実施例では、サードパーティディベロッパは、図3Aに示すような「続きを見る」というグラフィック要素を選択して、ボイスボットのスニペット(もし他にあれば)を展開し、ユーザインターフェース300上に、追加ボイスボットを含めるか、またはボイスボットインターフェースを立ち上げてもよい。
さらに、ユーザインターフェース300は、追加的または代替的に、新規ボイスボットを作成するのに利用される複数の訓練インスタンスのスニペットを提供する、訓練インスタンスグラフィック要素320を、含んでもよい。複数の訓練インスタンスの各々は、訓練インスタンス入力および訓練インスタンス出力を、含み得る。訓練インスタンス入力は、例えば、少なくとも対応会話の一部および対応会話の先行文脈を、含み得るものであり、訓練インスタンス出力は、例えば、少なくとも対応会話の一部に対する対応グラウンドトゥルース応答を、含み得る。複数の訓練インスタンスは、例えば、仮想カフェ(または他のレストラン業者)と関連付けられた通話の既存のコーパスから、1人または複数の人(例えば、ディベロッパを含んでも、含まなくてもよい)の間のデモ会話から、かつ/または、会話のスニペットに対応する、1人または複数の人(例えば、ディベロッパを含んでも、含まなくてもよい)の1つまたは複数の他の口頭発話から、入手可能である。複数の訓練インスタンスを取得し、仮想カフェと関連付けられたボイスボットを訓練することにつき、以下に説明する(例えば、図3B参照)。ある種の実施例では、サードパーティディベロッパは、「訓練インスタンスを追加」という図3Aに示すグラフィック要素を選択して、仮想カフェと関連付けられたボイスボットを訓練するために、訓練インスタンスを追加するか、または、ユーザインターフェース300上に訓練インスタンスインターフェースを立ち上げてもよい。
さらに、ユーザインターフェース300は、追加的または代替的に、訓練されたボイスボットと関連付けられたボイスボット活動のスニペットを提供する、ボイスボット活動グラフィック要素330を、備えていてもよい。ボイスボット活動は、訓練されたボイスボットにより、仮想カフェの代わりになされる各対応通話に関連した情報を、含み得る。例えば、ボイスボット活動は、各対応通話と関連付けられた時刻および/もしくは日付、各対応通話の継続時間、各対応通話と関連付けられた要約、各対応通話と関連付けられた文字起こし、ならびに/または、訓練されたボイスボットにより、仮想カフェの代わりになされた、各対応通話に関連した任意の他の情報を、含み得る。ある種の実施例では、ボイスボット活動は、対応通話中、かつ/または対応通話の各々の後に、生成され得る。ボイスボット活動により、サードパーティディベロッパは、ボイスボットの実行を監視することができる。ボイスボット活動について、以下に説明する(例えば、図3C参照)。ある種の実施例では、サードパーティディベロッパは、図3Aに示すような「続きを見る」というグラフィック要素を選択して、ボイスボット活動のスニペット(もしあれば)を展開し、ユーザインターフェース300上に、追加ボイス活動を含めるか、またはボイスボット活動インターフェースを立ち上げてもよい。
そのうえ、ユーザインターフェース300は、追加的または代替的に、訓練されたボイスボットと関連付けられた特定されたボイスボット行動エラーのスニペットを提供する、ボイスボット行動エラーグラフィック要素330を、備えていてもよい。ボイスボット行動エラーは、仮想カフェの代わりになされた対応通話中に、訓練されたボイスボットにより生じたエラーを、含み得る。ボイスボット行動エラーは、例えば、レストラン予約が不可の時刻を、受け付けるかまたは提案すること、間違った営業時間を提供すること、利用不能な食品の注文を受け付けること、および/または、訓練されたボイスボットの間違った行動に対応する任意の他のエラーを、含み得る。ボイスボット行動エラーにより、ボイスボット開発プラットフォームは、これらのボイスボット行動エラーの対応主要因を特定することが可能となる。ある種の実施例では、ボイスボット開発プラットフォームは、1つまたは複数の活動を引き受けて、対応主要因を自動的に修正してもよく、これは例えば、ボイスボットを再訓練するのに用いられる、複数の訓練インスタンスの1つまたは複数に、ラベルを改めて付すこと、1つまたは複数の特徴強調入力を、ボイスボットを再訓練するのに用いられる、複数の訓練インスタンスのうちの1つまたは複数に追加すること、および/または、特定されたボイスボット行動エラーの対応主要因を修正するために、ボイスボット開発プラットフォームが引き受ける任意の他の活動などである。追加的または代替的な実施例では、ボイスボット開発プラットフォームは、サードパーティディベロッパに対して、特定されたボイスボット行動エラーの主要因を通知するための、1つまたは複数の通知を、生成してもよい。これらの通知は、サードパーティディベロッパにより実行されるとなされる、1つまたは複数の活動の指示を任意に含み得るものであり、それは、特定されたボイスボット行動エラーの対応主要因を修正することであってもよく、これは例えば、サードパーティディベロッパに対して、ボイスボットを再訓練するために用いられる複数の訓練インスタンスのうちの1つまたは複数に、改めてラベルを付すことを要求すること、サードパーティディベロッパに対して、1つまたは複数の特徴強調入力を、ボイスボットを再訓練するのに用いられる複数の訓練インスタンスのうちの1つまたは複数に追加することを要求すること、サードパーティディベロッパに対して、ボイスボットを再訓練するために用いられる1つまたは複数の追加訓練インスタンスを(場合によっては、1つまたは複数の特定のラベルまたは特定の特徴強調入力とともに)追加することを要求すること、および/または、特定されたボイスボット行動エラーの対応主要因を修正するために、サードパーティディベロッパによって行われ得る他の活動等である。ある種の実施例では、サードパーティディベロッパは、図3Aに示すような「続きを見る」というグラフィック要素を選択して、特定されたボイスボット行動エラーのスニペット(もしあれば)を展開するか、または、ユーザインターフェース300上に、ボイスボット行動エラーインターフェースを立ち上げてもよい。
サードパーティディベロッパは、図3Aに示すボイスボットについてのホームページまたはランディングページを、閲覧して、新規のボイスボットを作成する。例えば、サードパーティディベロッパが、テキスト入力フィールド318内のボイスボットに、「仮想カフェ」という一意の識別子を提供し、「訓練インスタンス追加」というグラフィック要素を、選択するものと想定する。図3Bに示すように、サードパーティディベロッパに対して、訓練インスタンスインターフェースが、ユーザインターフェース300を通して提示される。サードパーティディベロッパは、訓練インスタンスインターフェースとやりとりして、ボイスボットを訓練するために、訓練インスタンスを定義してもよい。
ある種の実施例では、訓練インスタンスは、訓練インスタンスのコーパスから、取得され得る。訓練インスタンスのコーパスは、例えば、仮想カフェと関連付けられたユーザ(例えば、従業員)と追加ユーザ(例えば、顧客)との間の対応既出通話中の1つまたは複数の既出会話、仮想カフェとは関連付けられていない他のユーザ間の対応既出通話(例えば、他のレストラン業者と関連付けられた通話)中の1つまたは複数の既出会話、および/または、訓練インスタンスが生成され得る他の会話を、含み得る。例えば、訓練インスタンスコーパスインターフェース要素380宛のユーザ入力の受信に応答して、サードパーティディベロッパは、訓練インスタンスのコーパスにアクセスして、対応会話の一部を選択して、所与の訓練インスタンスについての訓練インスタンス入力321A(対応会話の任意の先行文脈)として利用することができ、対応会話の一部に対する対応応答を選択して、所与の訓練インスタンスについての訓練インスタンス出力322Aとして利用することができる。訓練インスタンスコーパスインターフェース要素380に対するユーザ入力は、例えば、タッチスクリーンを通してまたはユーザインターフェース入力装置(例えば、マウスまたはスタイラス)を通して検出されたタッチ入力であってもよく、かつ/または、クライアントデバイスのマイクロフォンにより(場合によっては、音声インターフェース要素350に対するユーザ入力に応答して)検出された口頭入力であってもよい。様々な実施例では、サードパーティディベロッパは、所与の訓練インスタンスについて、特徴強調入力323Aを、任意に定義し得る。これらの実施例では、特徴強調入力323Aは、図1および図2Aを参照して上述したように、ポインタネットワーク、および/または、ボイスボットに対応した複数のMLレイヤを訓練するために、利用され得る。ポインタネットワークは、ボイスボットに対応する複数のMLレイヤの一部、または、ボイスボットに対応する複数のMLレイヤと組み合わせて利用される個別のMLレイヤであり得る。
ある種の追加的または代替的実施例では、訓練インスタンスは、ユーザインターフェース300を通してユーザに対して提示された、訓練インスタンスインターフェースにて受信されたユーザ入力から、取得可能である。訓練インスタンスインターフェースにて受信されたユーザ入力は、例えば、タッチスクリーンを通してまたはユーザインターフェース入力装置(例えば、マウス、スタイラス、キーボード等)を通して検出されたタッチ入力またはキー入力であってもよく、かつ/または、クライアントデバイスのマイクロフォンにより(場合によっては、音声インターフェース要素350に対するユーザ入力に応答して)検出された口頭入力であってもよい。例えば、ユーザは、1つまたは複数の訓練インスタンス入力321A、および訓練インスタンス出力322Aを含むユーザ入力(場合によっては、特徴強調入力323A)を、図3Bに示す訓練インスタンスのテーブルにおいて、提供可能である。
ある種の追加的または代替的実施例では、訓練インスタンスは、デモ会話352Bから、取得可能である。そして、デモ会話352Bは、仮想カフェと関連付けられたボイスボットの訓練用の複数の訓練インスタンスを、生成するために利用されてもよい。例えば、図3Bにおいてもデモ会話により示されるように、サードパーティディベロッパ(および場合によっては他の人)は、別々の役割に従って活動して、ユーザ入力を、デモ会話に対して提供する(例えば、キー入力または口頭入力)ことにより、仮想カフェと関連付けられた人(例えば、従業員)と他の人(例えば、顧客)との間の実際の会話のシミュレーションを行い得る。例えば、サードパーティディベロッパは、従業員グラフィック要素362Aを選択して、ユーザ入力352B1である「仮想カフェでございます、いらっしゃいませ」を提供し、顧客グラフィック要素362Bを選択して、ユーザ入力354B1である「どうも、テーブル席4人で今夜午後6時に予約したいのですが」を提供し、従業員グラフィック要素362Aを選択して、ユーザ入力352B2である「確認いたします」を、そして後続のユーザ入力352B3である「申し訳ございません、4名様ですと午後7時と午後8時のみ可能でございます」を提供し、顧客グラフィック要素362Bを選択して、ユーザ入力354B2である「午後7時で大丈夫です」を提供し、従業員グラフィック要素362Aを選択して、ユーザ入力352B4である「お名前をお願いします」を提供し、顧客グラフィック要素362Bを選択して、ユーザ入力354B3である「ジョンスミスです」を提供し、従業員グラフィック要素362Aを選択して、ユーザ入力352B5である「ジョンさんですね、ありがとうございます。明晩お待ちしております」を提供することができる。ボイスボット開発プラットフォームは、自動的に、デモ会話352Bに基づいて、複数の訓練インスタンスを、生成し得る。しかし、サードパーティディベロッパは、デモ会話352Bに基づいて生成された訓練インスタンスにつき、任意の特徴強調入力を、特定する必要があるものとしてもよい。
例えば、デモ会話352Bに基づいて生成された訓練インスタンス入力321A1が、着信があるという指示を含むものと想定し、訓練インスタンス出力322A1が、着信に応答して、ユーザ入力352B1に対応する出力を提供するというような、着信に対する対応応答を含むものと想定する。この例では、特徴強調入力323A1は、着信についての導入部の特徴に、対応してもよい。着信のための導入部は、ユーザ入力352B1、場合によっては、音声自動応答(IVR)システムを通して提供された選択肢、および/または、サードパーティディベロッパがボイスボットに学習させたい他の導入部であってもよい。特に、訓練インスタンス入力321A1についての先行会話文脈はない。これは、デモ会話352Bに先行部分がないためである。その結果、この訓練インスタンス上で訓練されたボイスボットは、着信にどのように応答するのかを学習することができる。訓練インスタンス入力および/または訓練インスタンス出力がユーザ入力に基づいている実施例では、ユーザ入力は、ユーザ入力を取り込んだオーディオデータ、オーディオデータを処理することに基づいて生成された複数の音声仮定、および/または、ユーザ入力に対応したテキストに、対応してもよい。
他の例としては、デモ会話352Bに基づいて生成された訓練インスタンス入力321A2が、ユーザ入力354B1に対応するデモ会話352Bの一部、および、「$文脈」で示す先行会話文脈(例えば、ユーザ入力354B1の前に発生するデモ会話352B内のユーザ入力、および/またはデモ会話352Bと関連付けられたメタデータ)を含むものと想定し、訓練インスタンス出力322A1は、ユーザ入力352B2、および利用可能性についての遠隔手続き呼出(RPC)アウトバウンド要求を開始するという指示等、ユーザ入力354B1に対する対応応答を含むものと想定する。この例では、特徴強調入力323A2は、構成人数的特徴(例えば、訓練インスタンス入力321A2の破線ボックスにより示されるような「4人」)、時間的特徴(例えば、訓練インスタンス入力321A2の破線ボックスにより示されるような「午後6時」)、およびRPCアウトバウンド要求特徴等のユーザ入力354B1の特徴に対応してもよい。特に、訓練インスタンス出力322A2は、利用可能性についてのRPCアウトバウンド要求を開始するという指示も含んでもよい。訓練インスタンスは、RPC訓練インスタンスと考えられ、RPC訓練インスタンスの種類は、RPCアウトバウンド要求訓練インスタンスと考えられてもよい。
利用可能性についてのRPCアウトバウンド要求は、例えば、特定の構成人数で、要求時刻でのレストランの予約可能性について問い合わせる構造化要求(例えば、利用可能:[構成人数]=4;[時刻]=午後6、または構造化要求の任意の他の形式)を生成すること、および仮想カフェのレストラン予約管理と関連付けられたサードパーティシステムに対する構造化要求を送信することを、含み得る。RPCアウトバウンド要求が、デモ会話352B内に明確には含まれていないが、サードパーティディベロッパは、利用可能性についてのRPCアウトバウンド要求を、訓練インスタンス出力322A2内に追加または埋込可能である。また、RPCアウトバウンド要求が、サードパーティシステムへ送信されるが(デモ会話352B内の「顧客」へではなく)、ボイスボットは、それでもなお、利用可能性についてのRPCアウトバウンド要求を生成して送信するために、デモ会話352Bの際に、訓練され得るものであり、これは、レストランの予約可能性について要求する訓練インスタンス入力321A2に基づいており、この入力が、RPCアウトバウンド要求訓練インスタンスである。さらに、RPCアウトバウンド要求は、レストランの予約可能性と関連付けられたものとして説明されているが、これは例示のためであり、限定を意味しないことを、理解されたい。例えば、RPCアウトバウンド要求は、食品/在庫利用可能性、営業時間問い合わせ、通話転送、および/または、通話中に1つまたは複数のサードパーティシステムとのやりとりを要求する任意の他の機能と、関連付けられてもよい。その結果、このRPCアウトバウンド要求訓練インスタンス上で訓練されたボイスボットは、いつどのようにRPCアウトバウンド要求を開始するかを学習することができる。
さらに別の例としては、デモ会話352Bに基づいて生成された訓練インスタンス入力321A3が、RPCインバウンド要求に対応するデモ会話352Bの一部、および、「$文脈」で示す先行会話文脈(例えば、RPCインバウンド要求および/またはデモ会話352Bと関連付けられたメタデータの前に発生した、デモ会話352B内のユーザ入力)を含むものと想定し、訓練インスタンス出力322A3が、ユーザ入力352B3等、RPCインバウンド要求に対する対応応答を、含むものと想定する。この例では、特徴強調入力323A3は、RPCインバウンド要求の特徴に、対応してもよい。特に、訓練インスタンス出力322A2は、利用可能性についてのRPCアウトバウンド要求を開始するという指示も含んでもよい。訓練インスタンスは、RPC訓練インスタンスと考えられ、RPC訓練インスタンスの種類は、RPCインバウンド要求訓練インスタンスと考えられてもよい。
利用可能性についてのRPCインバウンド要求は、例えば、予約要求のパラメータ(例えば、構成人数4、および時刻午後6時)を満たすレストラン予約があるどうか、任意的には、予約要求のパラメータを満たす代替の1つまたは複数の代替時刻または時間帯があるかどうかの指示を含む構造化応答の受信を含み得る。ある種の実施例では、1つまたは複数の親和的特徴(affinity feature)が、デモ会話352Bの現在の状態に基づいて、生成され得る。例えば、レストラン予約の要求時刻が、デモ会話352B内に含まれるように、午後6時であり、要求時刻が利用可能であるものと想定する。この例では、要求時刻が利用可能であることを示す、1つまたは複数の親和的特徴が、生成され得る。これとは反対に、レストラン予約の要求時刻が、利用不能であると推定する。この例では、要求時刻が利用不能であることを示すとともに、要求時刻を代替時刻(例えば、利用可能性が、要求時刻の午後6時ではなく、午後7時および午後8時に対応している場合、要求時刻の1時間後、および要求時刻の2時間後)と関連付ける、1つまたは複数の親和的特徴となる。
上述のRPCアウトバウンド要求と同様、RPCインバウンド要求が、デモ会話352B内に明確には含まれていないが、サードパーティディベロッパは、利用可能性についてのRPCインバウンド要求を、訓練インスタンス入力321A3内に追加または埋込可能である。また、RPCインバウンド要求が、サードパーティシステム(デモ会話352B内の「顧客」ではなく)から受信されるが、ボイスボットは、それでもなお、利用可能性についてのRPCインバウンド要求を受信するために、デモ会話352Bの際に、訓練され得るものであり、これは、レストランの予約可能性を含む訓練インスタンス入力321A3に基づくものであり、RPCインバウンド要求訓練インスタンスとなる。さらに、RPCインバウンド要求は、レストランの予約可能性と関連付けられたものとして説明されているが、これは例示のためであり、限定を意味しないことを、理解されたい。例えば、RPCインバウンド要求は、1つまたは複数のサードパーティシステムへ送信される、対応RPCアウトバウンド要求に、基づくものであってもよい。その結果、RPCインバウンド要求訓練インスタンス上で訓練されたボイスボットは、RPCインバウンド要求をどのように処理するか、および、会話の文脈およびRPCインバウンド要求に含まれたデータに基づいて、どのように応答するかを、学習することができる。
ここに説明するRPC訓練インスタンスで、様々な技術的利点が達成可能である。非限定的な一例として、ボイスボットは、要求をサードパーティシステムへ、どのように、かつ/またはいつ送信するのか、そして、ボイスボットによりなされている通話のタスクを解決するのに、要求に対する応答をどのように利用するかを、学習し得る。その結果、タスクは、ボイスボットにより、会話中に解決可能であり、効率的に、かつ、会話に別の人を関与させる必要なく、解決可能である。さらに、RPC訓練インスタンスを利用することにより、間違ったRPC要求が減るため、RPC要求の量が低減可能となり、それにより、そうでなければRPC要求を生成するのに使われたはずのコンピュータ資源、および/または、そうでなければ1つまたは複数のネットワークでのRPC要求の送信に使われたはずのネットワーク資源を、節約することが可能となる。
さらに別の例としては、デモ会話352Bに基づいて生成された訓練インスタンス入力321A4が、ユーザ入力354B3に対応するデモ会話352Bの一部、および、「$文脈」で示す先行会話文脈(例えば、ユーザ入力354B3および/またはデモ会話352Bと関連付けられたメタデータの前に発生した、デモ会話352B内のユーザ入力)を含むものと想定し、訓練インスタンス出力322A4が、ユーザ入力352B5に対応する応答等、着信に対する対応応答を、含むものと想定する。この例では、特徴強調入力323A4は、名前的特徴(例えば、訓練インスタンス入力321A4の破線ボックスに示された「ジョンスミス」)に、対応してもよい。特に、デモ会話352Bでは、「顧客」は、「従業員」によりそのように促されるまでは、レストラン予約の氏名を提供するものではない。その結果、この訓練インスタンスで訓練されたボイスボットは、「顧客」が名前パラメータの値(例えば、ジョンスミス)を提供していない場合、名前パラメータの値が、レストラン予約をするのに求められるべきことを、学習することができる。
様々な実施例において、訓練インスタンスの定義後、仮想カフェと関連付けられたボイスボットが、訓練され得る。例えば、訓練ボイスボットグラフィック要素382宛のユーザ入力の受信に応答して、ユーザ入力により定義された訓練インスタンスに基づき、ボイスボットが訓練され得る(例えば、図1のボイスボット訓練エンジン160を参照して説明するように)。仮想カフェと関連付けられたボイスボットは、MLモデル(例えば、RNNモデル、変換モデル、ポインタネットワーク、LSTMモデル、および/または他のMLモデル)の複数のレイヤに対応してもよい。特に、訓練ボイスボットでは、MLモデルの複数のレイヤのうちの1つまたは複数は、複数の訓練インスタンスのうちの1つまたは複数と関連付けられた対応特徴強調入力に、ポインタネットワークの使用を通して、注目が向けられ得る。例えば、ボイスボットは、少なくとも、構成人数的特徴、時間的特徴、名前的特徴、RPCアウトバウンド要求の特徴、RPCインバウンド要求の特徴、ならびに/または、図3Bとともに説明した訓練インスタンスの対応特徴強調入力により定義された他の特徴、および、図3Bとともに説明されてはいない追加訓練インスタンスに、注目が向けられ得る。ポインタネットワークは、訓練インスタンス入力312Aに基づいて、どのように応答するのかを判断するのに意味があるものとして予測される、これらの特徴を特定するために、訓練され得る。
ボイスボット展開後、サードパーティディベロッパは、ボイスボットの進行を監視することができる。例えば、ボイスボット活動インターフェース要素384宛のユーザ入力の受信に応答して、ユーザインターフェース300は、図3Cに示す、ボイスボット活動インターフェースを、提供してもよい。他の例としては、ホームインターフェース要素386宛のユーザ入力の受信に応答して、ユーザインターフェース300は、図3Aに示すホームページまたはランディングページに戻ってもよく、ユーザインターフェース300は、サードパーティディベロッパからのボイスボット活動グラフィック要素330(または、図3Aを参照して上述した、対応する「続きを見る」のグラフィック要素)の選択に応じて、図3Cに示すボイスボット活動インターフェースを、提示してもよい。サードパーティディベロッパは、ボイスボット活動インターフェースとやりとりして、仮想カフェと関連付けられたボイスボットについてのボイスボット活動を見てもよい。ボイスボット活動は、クライアントデバイスがアクセス可能な1つまたは複数のデータベース(例えば、図1の音声活動データベース170A2)内に格納され得る。
例えば、ユーザは、訓練されたボイスボットにより、仮想カフェの代わりになされた通話の会話要約331Aを、見ることができる。ある種の実施例では、サードパーティディベロッパは、図3Cにて330Aで示すようなボイスボットの全ボイスボット活動を、見ることができる。ある種の追加的または代替的実施例では、サードパーティディベロッパは、全ボイスボット活動を見ることと、330Bで示すボイスボットの特定された行動エラーを含むボイスボット活動のみを見ることとの間で、切り換えることができる。330Aおよび330Bと関連付けられたテキストは、選択可能であってもよく、サードパーティディベロッパを、ボイスボット活動のこれらの異なる表示間で切り換えることを可能としてもよい。様々な実施例では、サードパーティディベロッパは、ボイスボット活動ログを検索可能である。例えば、サードパーティディベロッパは、1つまたは複数の言葉を、テキスト入力フィールド330Cに入力して、ボイスボット活動を検索してもよい。さらに、様々な実施例では、1つまたは複数のソート基準は、ユーザに提示された会話要約331Aを、ソートするために利用されてもよい。1つまたは複数のソート基準は、例えば、対応通話の最新性、対応会話要約がサードパーティディベロッパに閲覧されてからの最新性、および/または任意の他のソート基準を、含み得る。
ある種の実施例では、会話要約は、仮想カフェの代わりにボイスボットによりなされる、対応通話の自然言語の説明を、提供する。例えば、会話要約331A1は、「ユーザが予約のために電話し、要求された時刻が利用不能であり、私は代替時刻を提案し、ユーザは、予約について提案された代替時刻を承認し、予約が完結した」ことを示す。この例では、会話要約331A1は、通話が、図3Bのデモ会話352Bに類似していることを示す。会話要約331A1は、RPCが行われて、要求時刻の利用可能性を確認し、代替時刻、および/または対応通話と関連付けられた他の情報を(例えば、ポインタネットワークを用いて生成された特徴強調出力に基づき)特定するという指示を追加的または代替的に含み得るものであり、これは例えば、対応通話がなされた時刻および日付、対応通話の継続時間、対応通話と関連付けられた金銭情報(例えば、持ち帰り注文の費用)、対応通話と関連付けられた予約情報、および/または、対応通話から得られた任意の他の情報等である。
ある種の追加的または代替的実施例では、仮想カフェの代わりにボイスボットによりなされた対応通話と関連付けられた文字起こしは、音声通話活動インターフェースからアクセス可能である(場合によっては、ボイスボットと会話している人が、対応通話のボイスボット活動の監視に同意しているときのみ)。例えば、会話要約331A2は、「ユーザが電話して持ち帰りの注文を行い、私は全食品が入手可能であることを確認し、持ち帰りの注文が完了した」ことを示す。会話要約331A2は、図3Cに示す会話352Cに基づいて、生成されてもよい。例えば、ボイスボットが、仮想カフェ宛の着信に応答すること、および、それはある人により、それぞれのクライアントデバイスを通して開始されたことを想定する。さらに、通話に応答して、ボイスボットが、合成音声352C1である「仮想カフェでございます、いらっしゃいませ」を取り込んだ合成音声オーディオデータをレンダリングするものと想定する。さらに、ボイスボットが、口頭発話354C1である「どうも、持ち帰りの注文をお願いします」(および、会話352Cの先行文脈)を取り込んだオーディオデータを処理し、合成音声352C2である「はい、何に致しましょうか?」を口頭発話352C2に対する応答として取り込んだ、合成音声オーディオデータを、生成することを想定する。会話352Cは、図3Cに示すように継続し得る。特に、会話は、口頭発話354C2内の持ち帰りの注文に含まれた特定の商品の利用可能性を確認するための、RPC関連サードパーティ在庫システムを含む(例えば、豆入りアーススープ(Peas on Earth Soup)および今日のおすすめ、ゴーントマトラザニア(Gone Tomato Lasagna))。RPC関連サードパーティ在庫システムは、合成音声352C3による会話352(例えば、「スープがあるか確認させて下さい」)内に示されるような、RPCアウトバウンド要求を含み得るものであり、合成音声352C4による会話352(例えば、「はい、ございます」)内に示されるような、RPCインバウンド要求を含むものである。さらに、ボイスボットは、合成音声(例えば、「40分」)でも示される、持ち帰りの注文が準備できる推定時間を、含み得る。
ある種の追加的または代替的実施例では、所与の通話について特定された何らかのボイスボット行動エラーが、対応会話要約内に含まれ得る。例えば、会話要約331A3は、「ユーザが通話で、テラス席があるかどうか問い合わせ、通話が切れた」ことを示す。会話要約331A3は、ボイスボットが人により提供された口頭発話に対する応答を生成不能であるときか、あるいは、十分信用できる口頭発話に対する応答を、生成不能であるときに、通話が切れたことを示してもよい(例えば、図1のエラー識別エンジン180を参照して説明)。ボイスボット行動エラーが、所与の通話について特定される実施例では、会話要約331A3は、ボイスボット開発プラットフォームにより自動的に実行されて、ボイスボットの特定された行動エラーを修正する、1つまたは複数の活動を含み得る。ボイスボット行動エラーが、所与の通話について特定される、追加的または代替的な実施例では、会話要約331A3は、サードパーティディベロッパによりなされた場合にボイスボットの特定された行動エラーを修正する、1つまたは複数の活動を、含み得る。1つまたは複数の活動は、1つまたは複数の追加の訓練インスタンスを加えて、ボイスボットを再訓練すること、または、仮想カフェと関連付けられたボイスボットを訓練するのに利用された、既存の訓練インスタンスを修正することを、含み得る。例えば、訓練インスタンスインターフェース要素388宛のユーザ入力の受信に応答して、ユーザインターフェース300は、図3Bに示す、訓練インスタンスインターフェースに戻ってもよい。他の例としては、ホームインターフェース要素386宛のユーザ入力の受信に応答して、ユーザインターフェース300は、図3Aに示すホームページまたはランディングページに戻ってもよく、ユーザインターフェース300は、サードパーティディベロッパからの訓練インスタンスグラッフィク要素320(または、図3Aを参照して上述した、対応する「続きを見る」のグラフィック要素)の選択に応じて、図3Bに示す訓練インスタンスインターフェースを、提示してもよい。1つまたは複数の追加の訓練インスタンスは、仮想カフェと関連付けられたボイスボットについての訓練インスタンスに対して、追加されてもよく、かつ/または、既存の訓練インスタンスが、修正されてもよい。訓練ボイスボットグラフィック要素382宛のユーザ入力の受信に応答して、ボイスボットは、追加の訓練インスタンスおよび/または修正訓練インスタンスに基づき、再訓練され得る(例えば、図1のボイスボット訓練エンジン160を参照して説明)。
仮想カフェと関連付けられたボイスボットの単一のインスタンスのみにつき、図3A、図3Bおよび図3Cを参照して説明するが、これは例示のためであり、限定を意味しないことを、理解されたい。例えば、ボイスボットの複数のインスタンスは、1つまたは複数のコンピュータ装置(例えば、クライアントデバイス、サーバ、および/または他のコンピュータ装置)により、ボイスボットの複数のインスタンスが、対応する人(または他のボイスボット)との会話に同時に参加できるように、同時に実行されてもよい。ボイスボットの各インスタンスは、ボイスボットの複数のMLレイヤの対応インスタンスを利用する、対応プロセッサを、含み得る。さらに、仮想カフェと関連付けられたボイスボットにつき、図3A、図3Bおよび図3Cを参照して、着信に対する応答として説明するが、これは例示のためであり、限定を意味しないことを、理解されたい。例えば、音声は、追加的または代替的に訓練されて、様々な当事者に対する発信を開始することができる。例えば、所与の訓練用例について、訓練インスタンス入力は、特定のタスクを行うための特定の実体との対応通話を開始する活動またはコマンドを含み得るものであり、訓練インスタンス出力は、所与の訓練インスタンスについて、発信の開始と関連付けられた対応グラウンドトゥルース応答を、含み得る。この方式では、仮想カフェと関連付けられたボイスボットは、発信を開始して実行し、供給者からより多くの商品を発注し、ソフトウェアの問題について情報技術より問い合わせ、常連客のレストラン予約を確認し、および/またはボイスボットが訓練される任意の他の機能を実行するために、利用可能である。
図4を参照すると、少なくとも部分的には特徴強調入力に基づいて、ボイスボットを訓練する、例示的方法400を示すフローチャートが示される。便宜上、方法400の動作について、動作を行うシステムを参照して説明する。この方法400のシステムは、少なくとも1つのプロセッサ、少なくとも1つのメモリ、および/またはコンピュータ装置の他の構成要素(例えば、図1のクライアントデバイス110、図1のボイスボット開発システム120、および/もしくは、図6のコンピュータ装置610、サーバ、ならびに/または他のコンピュータ装置)を備える。さらに、方法400の動作は、特定の順で示されているが、これは、限定を意味しない。1つまたは複数の動作が、並べ替え、排除、および/または追加されてもよい。
ブロック452では、システムは、ボイスボットを訓練するために、複数の訓練インスタンスを取得し、複数の訓練インスタンスの各々は、訓練インスタンス入力と、訓練インスタンス出力とを含む。ある種の実施例では、訓練インスタンス入力は、少なくとも対応会話の一部および対応会話の先行文脈を、含み得るものであり、訓練インスタンス出力は、会話の一部に対する対応グラウンドトゥルース応答を、含み得る。ある種の追加的または代替的実施例では、訓練インスタンス入力は、着信の指示を含み得るものであり、訓練インスタンス出力は、着信への応答と関連付けられた対応グラウンドトゥルース応答(および、場合によっては、着信に対する応答と関連付けられた導入部)を含み得る。ある種の追加的または代替的実施例では、訓練インスタンス入力は、特定のタスクを行うための特定の実体との発信の実行を開始する活動またはコマンドを含み得るものであり、訓練インスタンス出力は、発信の開始と関連付けられた対応グラウンドトゥルース応答を、含み得る。様々な実施例では、複数の訓練インスタンスは、ボイスボットが訓練されているサードパーティ(または、他のサードパーティ( (例えば、レストラン業者、航空事業者、小売業者等)と同じ種類の実体であるサードパーティ)と関連付けられた既出通話に基づいて生成される訓練インスタンスのコーパス、サードパーティと関連付けられたサードパーティディベロッパからのユーザ入力、および/または、1人または複数人(例えば、サードパーティディベロッパを含んでも含まなくてもよい)により提供されたデモ会話から、取得可能である。ボイスボットを訓練するための複数の訓練インスタンスの取得について、図3A、図3Bおよび図3Cを参照して上記に説明されている。
ブロック454では、システムは、複数の訓練インスタンスの1つまたは複数と関連付けられた、対応特徴強調入力を取得する。対応特徴強調入力は、複数の訓練インスタンスのうちの1つまたは複数について、サードパーティディベロッパにより定義され得る。さらに、特徴強調入力により、ボイスボットは、所与の訓練インスタンスについて、対応会話の一部の特定の特徴に、注目するようになる。例えば、ボイスボットが訓練されているサードパーティが、仮想航空という名称の架空の航空事業者であることを想定し、所与の訓練インスタンスについて、訓練インスタンス入力は、対応会話の一部である「私のSDFからDCAへの航空便を、今日の正午から明日の正午に変更したいのですが」を含む。この例では、特徴強調入力は、航空便変更の特徴(例えば、「私の航空便を変更」)、出発地の特徴(例えば、「SDF」)、到着地の特徴(例えば、「DCA」)、元々の時刻および日付(例えば、「今日の正午」)、および所望の時間および日付の特徴(例えば、「明日の正午」)を、含み得る。この訓練インスタンス入力と関連付けられたこれらの特徴強調入力は、1つまたは複数のデータベース内の所与の訓練インスタンスと関連付けて、格納可能であり(例えば、図1の訓練インスタンスデータベース161A)、ここに説明したようなポインタネットワークを訓練するために、任意的に利用され得る(例えば、図1および図2Aを参照)。
ブロック456では、システムは、機械学習(ML)モデルの複数のMLレイヤを用いて、所与の訓練インスタンスについて、訓練インスタンス入力(および、場合によっては、サードパーティディベロッパにより提供される対応特徴強調入力)を処理して、所与の訓練インスタンスと関連付けられた対応会話の現在の状態と関連付けられた埋め込みを生成する。ある種の実施例では、訓練インスタンス入力内に含まれた対応会話の一部は、少なくとも対応会話の一部についての複数の音声仮定に対応する。これらの実施例のある種のものでは、複数の音声仮定は、複数のMLレイヤのうちの第1のMLレイヤを用いて処理されて、第1の埋込を生成し得るものであり、先行会話文脈は、複数のMLレイヤのうちの第2のMLレイヤを用いて処理されて、第2の埋込を生成し得る。第1の埋込と第2の埋込とが連結されて、対応会話の現在の状態と関連付けられた埋込を、生成してもよい。ある種の追加的または代替的実施例では、訓練インスタンス入力内に含まれた対応会話の一部は、対応会話の一部を取り込んだオーディオデータに対応する。これらの実施例のある種のものでは、オーディオデータは、自動音声認識(ASR)モデルを用いて処理されて、少なくとも対応会話の一部について、複数の音声仮定を生成し得る。これらの実施例のある種のものでは、複数の音声仮定(および、場合によっては、オーディオデータを伴って)は、複数のMLレイヤのうちの第1のMLレイヤを用いて処理されて、第1の埋込を生成し得るものであり、先行会話文脈は、複数のMLレイヤのうちの第2のMLレイヤを用いて処理されて、第2の埋込を生成し得る。第1の埋込と第2の埋込とが連結されて、対応会話の現在の状態と関連付けられた埋込を、生成してもよい。
ブロック458では、システムは、対応会話の現在の状態に基づいて、1つまたは複数の親和的特徴を生成する。1つまたは複数の親和的特徴は、対応会話の先行文脈内に含まれた特徴および/または会話の現在の状態と関連付けられた特徴間の関係を、表し得る。例えば、ボイスボットが訓練されているサードパーティが、仮想航空という名称の架空の航空事業者であることを想定し、所与の訓練インスタンスについて、訓練インスタンス入力は、対応会話の一部である「私のSDFからDCAへの航空便を、今日の正午から明日の正午に変更したいのですが」を含む。この例では、親和的特徴は、元々の日時的特徴(「今日の正午」)と所望の日時的特徴(例えば、「明日の正午」)との24時間の差と関連付けられた時間的親和的特徴、対応する常用航空番号(対応する常用航空番号は、以前に提供され、対応会話の先行文脈内に含まれたものと想定)と関連付けられたユーザに対する航空便変更要求と関連付けられたアカウントの親和的特徴、および/または、他の親和的特徴を、含み得る。
ブロック460では、システムは、MLモデルまたは追加MLモデルの複数の追加MLレイヤを用いて、対応会話の現在の状態と関連付けられた埋込、および1つまたは複数の親和的特徴を処理して、少なくとも対応会話の一部に対する予測応答と関連付けられた予測埋込を生成する。ある種の実施例では、サードパーティディベロッパが、1つまたは複数の対応特徴強調入力を提供するときなどには、少なくとも対応会話の一部に対する予測応答と関連付けられた予測埋込は、サードパーティディベロッパにより提供された1つまたは複数の対応特徴強調入力に基づいて、バイアスがかけられ得る。
ブロック462では、システムは、埋込空間において、予測応答と関連付けられた予測埋込と、対応グラウンドトゥルース応答と関連付けられた対応グラウンドトゥルース埋込とを比較して、1つまたは複数のロスを生成する。予測埋込およびグラウンドトゥルース埋込は、予測応答およびグラウンドトゥルース応答のより低次元の表現に、それぞれ対応し得る。埋込空間により、これらの低次元埋込が、比較可能となる。さらに、予測応答と関連付けられた予測埋込は、埋込空間において、対応グラウンドトゥルース応答と関連付けられた対応グラウンドトゥルース埋込に、近接することになっている。換言すれば、少なくとも対応会話の一部、および会話の先行文脈を処理する際、システムは、少なくとも対応会話の一部に対する実際の応答に似た応答を、予測するようになっている。例えば、予測埋込と対応グラウンドトゥルース埋込との間の距離計量(例えば、コサイン距離、ユークリッド距離、および/または他の距離計量)は、埋込空間内で判断され、1つまたは複数のロスが、距離計量に基づいて、生成され得る。
ブロック464では、システムは、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数を、所与の訓練インスタンスで、ロスのうちの1つまたは複数に基づいて更新する。例えば、システムは、1つまたは複数のロスを、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数にわたり、逆伝播させ得る。さらに、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数を更新することにより、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数は、1つまたは複数の対応特徴強調入力が示す特徴等、所与の訓練インスタンスについてサードパーティディベロッパが示していて重要な、所与の訓練インスタンスに含まれる特徴へと、注目が向けられてもよい。その結果、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数が訓練されて、これらの特定の特徴、および、これらの特定の特徴が会話の文脈中で全体として何を意味しているのかが、特定される。
ブロック466では、システムは、ボイスボット訓練用の追加の訓練インスタンスがあるかどうか判断する。ブロック466の繰り返しにおいて、システムがボイスボット用の追加の訓練インスタンスがあると判断した場合、システムは、ブロック456に戻り、追加の訓練インスタンスに基づいて、ブロック456~ブロック464の処理を繰り返してもよい。ある種の実施例では、追加の訓練インスタンスが利用可能であるとき、システムは、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数の更新を、1つまたは複数の条件が成立するまで、継続してもよい。1つまたは複数の条件は、例えば、更新された複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数の検証、更新された複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数の集約(例えば、ゼロロスまたはゼロロスの閾値範囲内)、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数が、現在利用されているボイスボット(もしあれば)のインスタンスよりもよいとの判断(例えば、精度および/または再現性)、少なくとも訓練インスタンスの閾値量に基づく訓練の発生、および/または訓練インスタンスに基づく訓練の継続時間を、含み得る。ある種の追加的または代替的実施例では、システムは、ボイスボットが、ボイスボットの訓練用に取得された複数の訓練インスタンスの各々について、訓練されるまで、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数の更新を継続してもよい。ブロック466の繰り返しで、システムが、ボイスボット用の追加の訓練インスタンスがないと判断したとき、または、1つもしくは複数の条件が成立するに至ると、システムは、ブロック468へと進んでもよい。
ブロック468において、システムは、訓練されたボイスボットを、サードパーティの代わりに会話を行うために、展開させる。例えば、訓練されたボイスボットは、サードパーティと関連付けられた通話のために、サードパーティの代わりに会話するために、展開され得る。ある種の実施例では、訓練されたボイスボットは、サードパーティの代わりに着信に応答し、人(または、その人と関連付けられた追加ボイスボット)との対応会話を行うことができる。追加的または代替的な実施例では、訓練されたボイスボットは、サードパーティの代わりに発信を開始し、人または実体(または、人または人と関連付けられた音声自動応答(IVR)システムと関連付けられた追加ボイスボット)との対応会話を行うことができる。他の例では、訓練されたボイスボットは、ドライブスルーにおいて、または任意の他のサービスシナリオで、サードパーティの代わりに、会話を実行するように展開し得る。特に、訓練されたボイスボットの複数のインスタンスは、サードパーティにより同時に展開されてもよい。訓練されたボイスボットの複数のインスタンスを展開することにより、複数の着信と複数の発信の任意の組み合わせが、同時に取り扱われる。
図5を参照すると、少なくとも部分的には遠隔手続き呼出(RPC)に基づいて、ボイスボットを訓練する、例示的方法500を示すフローチャートが示される。便宜上、方法500の動作について、動作を行うシステムを参照して説明する。この方法500のシステムは、少なくとも1つのプロセッサ、少なくとも1つのメモリ、および/またはコンピュータ装置の他の構成要素(例えば、図1のクライアントデバイス110、図1のボイスボット開発システム120、および/もしくは、図6のコンピュータ装置610、サーバ、ならびに/または他のコンピュータ装置)。さらに、方法500の動作は、特定の順で示されているが、これは、限定を意味しない。1つまたは複数の動作が、並べ替え、排除、かつ/または追加されてもよい。
ブロック552では、システムは、ボイスボットを訓練するために、複数のRPC訓練インスタンスを取得し、複数の訓練インスタンスの各々は、訓練インスタンス入力と、訓練インスタンス出力とを含む。複数のRPC訓練インスタンスは、ボイスボットと関連付けられた訓練インスタンスのスーパーセットから、選択され得る(例えば、図1の訓練インスタンスデータベース161A)。ブロック554では、システムは、複数のRPC訓練インスタンスのうちの所与のRPC訓練インスタンスについてのRPC要求の種類を、ボイスボットを訓練するために判断する。
ある種の実施例では、所与のRPC訓練インスタンスについて、RPC要求の種類は、RPCアウトバウンド要求であってもよい。システムは、RPC要求の種類が、サブブロック552A1に示すように、少なくとも対応グラウンドトゥルースRPCアウトバウンド要求を含む、所与のRPC訓練インスタンスについて、訓練インスタンス出力に基づくRPCアウトバウンド要求であると、判断してもよい。ブロック554の繰り返しにおいて、システムが、所与の訓練インスタンスについて、RPC要求の種類がRPCアウトバウンド要求であると判断した場合、システムは、処理をブロック556Aへ進めてもよい。
ブロック556Aでは、システムは、機械学習(ML)モデルの複数のMLレイヤを用いて、所与のRPC訓練インスタンスについて、訓練インスタンス入力を処理して、対応会話の現在の状態と関連付けられた埋込を生成する。訓練インスタンス入力は、少なくとも対応会話の一部を含み得る。訓練インスタンス入力は、図4のブロック456を参照して上述したものと同じかまたは同様の方式で、処理され得る。
ブロック558Aでは、システムは、MLモデルまたは追加MLモデルの複数の追加MLレイヤを用いて、埋込、および1つまたは複数の親和的特徴を処理して、少なくとも、訓練インスタンス入力に含まれた対応会話の一部に対する予測応答と関連付けられた、予測埋込を生成する。システムは、親和的特徴の1つまたは複数を、図4のブロック458を参照して上述したものと同じかまたは同様の方式で、生成することができる。さらに、システムは、対応会話の現在の状態と関連付けられた埋込、および1つまたは複数の親和的特徴を、複数の追加MLレイヤを利用して、図4のブロック460を参照して上述したものと同じかまたは同様の方式で、処理し得る。
ブロック560Aでは、システムは、埋込空間において、予測埋込と、対応グラウンドトゥルースRPCアウトバウンド要求と関連付けられたグラウンドトゥルース埋込とを比較して、1つまたは複数のロスを生成する。システムは、予測埋込と、グラウンドトゥルース埋込とを比較して、1つまたは複数のロスを、図4のブロック462を参照して上述したものと同じかまたは同様の方式で、生成し得る。特に、グラウンドトゥルース埋込は、(図4を参照して上述した、少なくとも対応会話の一部に対するグラウンドトゥルース応答とは異なり)RPCアウトバウンド要求と、関連付けられる。RPCアウトバウンド要求は、所与のRPC訓練インスタンスについて、特定のサードパーティシステム(例えば、サードパーティ予約システム、サードパーティ在庫システム、および/または他の特定のサードパーティシステム)と関連付けられてもよい。その結果、これらの特定のサードパーティシステムの各々と関連付けられたRPCアウトバウンド要求は、埋込空間のそれぞれの部分と、関連付けられてもよい。例えば、対応RPCアウトバウンド要求が、サードパーティ予約システムと関連付けられていると想定する。この例では、グラウンドトゥルース埋込は、例えば、サードパーティ在庫システムと関連付けられた埋込とは異なり、サードパーティ予約システムと関連付けられ得る。システムはブロック562へ進む。ブロック562について、以下に説明する。
他の実施例では、所与のRPC訓練インスタンスについて、RPC要求の種類は、RPCインバウンド要求であってもよい。システムは、RPC要求の種類が、サブブロック552A2に示すように、少なくとも対応RPCインバウンド要求を含む、所与のRPC訓練インスタンスについて、訓練インスタンス入力に基づくRPCインバウンド要求であると、判断してもよい。ブロック554の繰り返しにおいて、システムが、所与の訓練インスタンスについて、RPC要求の種類がRPCインバウンド要求であると判断した場合、システムは、処理をブロック556Bへ進めてもよい。
ブロック556Bでは、システムは、MLモデルの複数のMLレイヤを用いて、少なくとも対応RPCインバウンド要求を処理して、対応会話の現在の状態と関連付けられた埋込を生成する。訓練インスタンス入力は、少なくとも対応会話の一部を、追加的に含んでもよい。訓練インスタンス入力は、図4のブロック456を参照して上述したものと同じかまたは同様の方式で、処理され得る。特に、訓練インスタンス入力は、(少なくとも図4を参照して上述した対応会話の一部とは単に異なり)RPCインバウンド要求を含む。RPCインバウンド要求は、所与のRPC訓練インスタンスについて、特定のサードパーティシステム(例えば、サードパーティ予約システム、サードパーティ在庫システム、および/または他の特定のサードパーティシステム)と関連付けられてもよい。その結果、RPCインバウンド要求は、会話にてもたらされる構造化情報であり得るものであり、ブロック560Aを参照して上述した対応RPCアウトバウンド要求に対するものとして、受信される。
ブロック558Bでは、システムは、MLモデルまたは追加MLモデルの複数の追加MLレイヤを用いて、埋込、および1つまたは複数の親和的特徴を処理して、少なくとも、RPCインバウンド要求に対する予測応答と関連付けられた、予測埋込を生成する。システムは、親和的特徴の1つまたは複数を、図4のブロック458を参照して上述したものと同じかまたは同様の方式で、生成することができる。さらに、システムは、対応会話の現在の状態と関連付けられた埋込、および1つまたは複数の親和的特徴を、複数の追加MLレイヤを利用して、図4のブロック460を参照して上述したものと同じかまたは同様の方式で、処理し得る。
ブロック560Bでは、システムは、埋込空間において、予測埋込と、訓練インスタンス出力と関連付けられたグラウンドトゥルース埋込とを比較して、1つまたは複数のロスを生成する。訓練インスタンス出力は、RPCインバウンド要求に対する対応グラウンドトゥルース応答を、含み得る。システムは、予測埋込と、グラウンドトゥルース埋込とを比較して、1つまたは複数のロスを、図4のブロック462を参照して上述したものと同じかまたは同様の方式で、生成し得る。システムはブロック562へ進む。
ブロック562では、システムは、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数を、ブロック560Aまたは560Bで生成されたロスのうちの1つまたは複数に基づいて更新する。システムは、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数を、図4のブロック464を参照して上述したものと同じかまたは同様の方式で、更新し得る。
ブロック564では、システムは、ボイスボットを訓練するための追加のRPC訓練インスタンスがあるかどうか判断する。ブロック564の繰り返しにおいて、システムがボイスボット用の追加のRPC訓練インスタンスがあると判断した場合、システムは、ブロック554に戻り、追加のRPC訓練インスタンスに基づいて、ブロック554~ブロック562の処理を繰り返してもよい。ある種の実施例では、追加のRPC訓練インスタンスが利用可能であるとき、システムは、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数の更新を、1つまたは複数の条件が成立するまで、継続してもよい。1つまたは複数の条件は、例えば、更新された複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数の検証、更新された複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数の集約(例えば、ゼロロスまたはゼロロスの閾値範囲内)、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数が、現在利用されているボイスボット(もしあれば)のインスタンスよりもよいとの判断(例えば、精度および/または再現性)、少なくとも訓練インスタンスの閾値量に基づく訓練の発生、および/または訓練インスタンスに基づく訓練の継続時間を、含み得る。ある種の追加的または代替的実施例では、システムは、ボイスボットが、ボイスボットの訓練用に取得された複数のRPC訓練インスタンスの各々について、訓練されるまで、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数の更新を継続してもよい。ブロック564の繰り返しで、システムが、ボイスボット用の追加の訓練インスタンスがないと判断したとき、または、1つもしくは複数の条件が成立するに至ると、システムは、ブロック556へと進んでもよい。
ブロック556において、システムは、訓練されたボイスボットを、サードパーティの代わりに会話を行うために、展開させる。例えば、訓練されたボイスボットは、サードパーティと関連付けられた通話のために、サードパーティの代わりに会話するために、展開され得る。ある種の実施例では、訓練されたボイスボットは、サードパーティの代わりに着信に応答し、人(または、その人と関連付けられた追加ボイスボット)との対応会話を行うことができる。追加的または代替的な実施例では、訓練されたボイスボットは、サードパーティの代わりに発信を開始し、人または実体(または、人または人と関連付けられた音声自動応答(IVR)システムと関連付けられた追加ボイスボット)との対応会話を行うことができる。他の例では、訓練されたボイスボットは、ドライブスルーにおいて、または任意の他のサービスシナリオで、サードパーティの代わりに、会話を行うように展開し得る。特に、訓練されたボイスボットの複数のインスタンスは、サードパーティにより同時に展開されてもよい。訓練されたボイスボットの複数のインスタンスを展開することにより、複数の着信と複数の発信の任意の組み合わせが、同時に取り扱われる。
図5について、複数のRPC訓練インスタンスのみを参照してここに説明したが、これは説明のためであり、限定を意味しないことを、理解されたい。例えば、複数のRPC訓練インスタンスは、図4で上述したもの等、サードパーティ用のボイスボットを訓練するために利用される複数の追加非RPC訓練インスタンスと、混合され得る。さらに、複数のRPC訓練インスタンスの1つまたは複数は、対応特徴強調入力とも、関連付けられてもよい。(例えば、図1、図2A、図3Bおよび図4を参照)。
図6は、ここに説明する技術の1つまたは複数の側面を行うために任意的に利用されることがある、コンピュータ装置610の一例のブロック図である。ある種の実施例では、1つまたは複数のクライアントデバイスは、クラウドベースの自動化アシスタント構成要素、および/または他の構成要素は、例示的コンピュータ装置610の1つまたは複数の構成要素を、備えてもよい。
コンピュータ装置610は、通例、バスサブシステム612を介していくつもの周辺機器と通信する少なくとも1つプロセッサ614を、備えている。これらの周辺機器は、例えば、メモリサブシステム625およびファイル記憶サブシステム626を具備した記憶サブシステム624と、ユーザインターフェース出力装置620と、ユーザインターフェース入力装置622と、ネットワークインターフェースサブシステム616とを、備えてもよい。入力および出力装置により、ユーザとコンピュータ装置610とのやりとりが、可能となる。ネットワークインターフェースサブシステム616は、外部のネットワークとのインターフェースを提供し、他のコンピュータ装置内の対応インターフェース装置と、接続する。
ユーザインターフェース入力装置622は、キーボード、マウス、トラックボール、タッチパッドまたはグラフィックタブレット等のポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォン、および/または他の種類の入力装置等のオーディオ入力装置を、備えてもよい。一般に、「入力装置」という用語の使用は、情報をコンピュータ装置610または通信ネットワークへ入力する、あらゆる種類の装置および方法を含むことを、意図している。
ユーザインターフェース出力装置620は、ディスプレイサブシステム、プリンタ、ファックス装置、またはオーディオ出力装置のような非視覚的ディスプレイを、備えてもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)等のフラットパネル装置、投影装置、または他の機構の可視画像作成機構を、含んでもよい。また、ディスプレイサブシステムは、オーディオ出力装置を介するなど、非視覚的ディスプレイを、提供してもよい。一般に、「出力装置」という用語の使用は、コンピュータ装置610から、ユーザまたは他の機器またはコンピュータ装置へと、情報を出力するあらゆる種類の装置および方法を、含むことを意図している。
記憶サブシステム624は、ここに説明するモジュールの機能のいくつかまたは全てを提供する、プログラムおよびデータを格納する。例えば、記憶サブシステム624は、ここに開示する方法のうちの選択された側面を実行するとともに、図1に示す様々な構成要素を実装するためのロジックを、含んでもよい。
ソフトウェアモジュールは、一般に、プロセッサ614単独で、または他のプロセッサとの組み合わせにより、実行される。記憶サブシステム624内で用いられるメモリ625は、プログラム実行中に命令およびデータを格納するためのメインランダムアクセスメモリ(RAM)630と、固定の命令が格納された読み取り専用メモリ(ROM)632とを具備した、いくつものメモリを、備えうる。ファイル記憶サブシステム626は、プログラムおよびデータファイルを格納するための持続型のストレージを提供可能であり、ハードディスクドライブ、フロッピーディスクドライブとともに、関連する着脱可能メディア、CD-ROMドライブ、光ドライブ、着脱可能メディアカートリッジを、備えてもよい。ある種の実施例の機能を実施するモジュールは、記憶サブシステム624内のファイル記憶サブシステム626により、またはプロセッサ614がアクセス可能な他の装置内に、格納されてもよい。
バスサブシステム612は、コンピュータ装置610の様々な構成要素およびサブシステムを、意図されたとおりに通信可能とする、機構を提供する。バスサブシステム612は、模式的に単一バスとして図示されているが、バスサブシステム612の代替的な実施例は、複数のバスを用いてもよい。
コンピュータ装置610は、ワークステーション、サーバ、コンピュータクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピュータ装置等、様々な種類のものであり得る。コンピュータおよびネットワークの性質は常に変化しているため、図6に示すコンピュータ装置610の説明は、いくつかの実施例を説明する目的の具体例という意図でしかない。図6に示すコンピュータ装置よりも、構成要素が多いかまたは少ない、コンピュータ装置610の他の多くの構成がありうる。
ここに説明するシステムがユーザの個人情報を収集あるいは監視する(あるいは、個人のかつ/または監視下の情報を利用することもある)状況では、ユーザは、プログラムまたは特徴がユーザ情報(例えば、ユーザのソーシャルネットワークの情報、ソーシャル活動や行動、職業、ユーザの好み、またはユーザの現在の地理的位置)を収集するかどうかを制御するか、あるいはユーザとの関連性がより高いコンテンツサーバからコンテンツを受信できるかどうか、かつ/またはどのように受信するかを制御する機会が設けられてもよい。また、ある種のデータは、格納または使用前に1つまたは複数の方法で取り扱われて、個人識別情報が削除されてもよい。例えば、ユーザについて個人識別情報が決定されないように、または、地理的位置情報が取得されるユーザの地理的位置が一般化されるように(都市、郵便番号、または州レベル等)、ユーザの具体的な地理的位置が決定されないように、ユーザの身元が取り扱われる。このように、ユーザは、情報がどのようにユーザについて収集され、かつ/または使用されるか、制御していてもよい。
ある種の実施例では、1つまたは複数のプロセッサにより実行される方法が提供され、この方法は、ボイスボット開発プラットフォームを通して、複数の訓練インスタンスを取得することを含む。複数の訓練インスタンスの各々は、訓練インスタンス入力および訓練インスタンス出力を含む。訓練インスタンス入力は、少なくとも対応会話の一部および対応会話の先行文脈を含み、訓練インスタンス出力は、少なくとも対応会話の一部に対する対応グラウンドトゥルース応答を含む。この方法は、ボイスボット開発プラットフォームにより、複数の訓練インスタンスのうちの1つまたは複数と関連付けられた対応特徴強調入力を取得すること、ボイスボット開発プラットフォームにより、複数の訓練インスタンス、および複数の訓練インスタンスのうちの1つまたは複数と関連付けられた対応特徴強調入力に基づいて、ボイスボットを訓練することを、さらに含む。複数の訓練インスタンスのうちの1つまたは複数と関連付けられた対応特徴強調入力は、ボイスボットを、対応会話の一部の具体的な特徴に注目させる。この方法は、ボイスボットの訓練後、サードパーティの代わりに会話を行うように、訓練されたボイスボットが展開されるようにすることを含む。
ここに開示した技術におけるこれらのまたは他の実施例は、1つまたは複数の以下の特徴を、任意的に含み得る。
ある種の実施例では、ボイスボットの訓練は、機械学習(ML)モデルの複数のMLレイヤを用いて、複数の訓練インスタンスのうちの所与の訓練インスタンスについて、少なくとも対応会話の一部および対応会話の先行文脈を処理して、対応会話の現在の状態と関連付けられた埋込を生成することを、含んでもよい。
これらの実施例のある種のものでは、対応会話の一部は、少なくとも対応会話の一部についての複数の音声仮定を、含んでもよい。少なくとも対応会話の一部、および対応会話の先行文脈を処理して、対応会話の現在の状態と関連付けられた埋込を生成することは、複数のMLレイヤのうちの第1のMLレイヤを用いて、複数の音声仮定を処理して、第1の埋込を生成することと、複数のMLレイヤのうちの第2のMLレイヤを用いて、対応会話の先行文脈を処理して、第2の埋込を生成することと、第1の埋込と第2の埋込とを連結して、対応会話の現在の状態と関連付けられた埋込を生成することを、含んでもよい。
これらの実施例の別の例では、方法は、ボイスボット開発プラットフォームにより、対応会話の現在の状態と関連付けられた埋込に基づき、複数の親和的特徴を生成することを、さらに含んでもよい。これらの実施例のさらに別の例では、ボイスボットの訓練は、MLモデルまたは追加MLモデルの複数の追加MLレイヤを用いて、複数の親和的特徴、および対応会話の現在の状態と関連付けられた埋込を処理して、少なくとも対応会話の一部に対する予測応答と関連付けられた予測埋込を生成することを、さらに含んでもよい。これらの実施例のさらに別の例では、ボイスボットの訓練は、埋込空間において、対応会話の一部に対する予測応答と関連付けられた予測埋込と、少なくとも対応会話の一部に対する対応グラウンドトゥルース応答と関連付けられた対応グラウンドトゥルース埋込とを比較すること、予測埋込と対応グラウンドトゥルース埋込との比較に基づいて、1つまたは複数のロスを生成すること、ロスのうちの1つまたは複数、および所与の訓練インスタンスと関連付けられた対応特徴強調入力に基づき、MLモデルを更新することを、さらに含んでもよい。これらの実施例のさらに別の例では、MLモデルは、1つまたは複数の注目機構を含む変換モデルであってもよく、変換モデルを、1つまたは複数のロス、および所与の訓練インスタンスと関連付けられた対応特徴強調入力に基づいて更新することは、複数のMLレイヤまたは複数の追加MLレイヤの1つまたは複数の重みを、1つまたは複数のロスに基づいて更新させること、および、変換モデルの注目機構のうちの1つまたは複数を、所与の訓練インスタンスと関連付けられた対応特徴強調入力に基づき、少なくとも対応会話の一部の1つまたは複数の特徴に対して注目させることとを、含んでもよい。
これらの実施例の別の追加例または代替例では、対応会話の一部は、少なくとも対応会話の一部を取り込んだ口頭発話に対応するオーディオデータを、含んでもよい。複数の音声仮定は、自動音声認識(ASR)モデルを用いて、口頭発話に対応するオーディオデータを処理することに基づいて生成され、少なくとも対応会話の一部についての複数の音声仮定が、生成されてもよい。これらの実施例のさらに別の例では、この方法は、複数の音声仮定の各々と関連付けられた1つまたは複数の対応テキストセグメントを調整することと、1つまたは複数の対応テキストセグメントの各々に対して、少なくとも1つの対応ラベルの注記を付して、複数の注記音声仮定を生成することを、さらに含んでもよい。複数の音声仮定を処理して、複数のMLレイヤのうちの第1のMLレイヤを用いて、第1の埋込を生成することは、複数の注記音声仮定を処理して、第1の埋込を生成することを、含んでもよい。
これらの実施例の別の追加例または代替例では、対応会話の先行文脈は、少なくとも対応会話の1つまたは複数の先行部分を、含んでもよい。対応会話の1つまたは複数の先行部分は、対応会話において、少なくとも対応会話の一部の前で発生する。
ある種の実施例では、複数の訓練インスタンスのうちの1つまたは複数と関連付けられた対応特徴強調入力を取得することは、自然言語入力を、サードパーティと関連付けられた1人または複数の人から受信することと、自然言語入力を処理して、複数の訓練インスタンスの1つまたは複数と関連付けられた、対応特徴強調入力を取得することとを、含んでもよい。自然言語入力は、自由形式口頭入力や自由形式キー入力のうちの1つまたは複数であってもよい。
ある種の実施例では、複数の訓練インスタンスのうちの1つまたは複数は、訓練インスタンスのコーパスから取得されてもよい。訓練インスタンスのコーパスは、複数人の間の複数の既出会話を、含んでもよい。ある種の追加的または代替的実施例では、複数の訓練インスタンスのうちの1つまたは複数が、1人または複数人の間の対応デモ会話から、取得されてもよい。複数人のうちの1人または複数人は、サードパーティと関連付けられていてもよい。ある種の追加的または代替的実施例では、複数の訓練インスタンスのうちの1つまたは複数が、ボイスボット開発を通して受信された口頭発話から、取得されてもよい。口頭発話は、サードパーティと関連付けられた1人または複数人から、受信されてもよい。
ある種の実施例では、訓練されたボイスボットを、サードパーティの代わりに会話するために展開させることは、訓練されたボイスボットを、サードパーティと関連付けられた通話のための会話を行うために展開させることを、含んでもよく、訓練されたボイスボットを、サードパーティと関連付けられた通話のための会話を行うために展開させることは、ボイスボットを、対応着信に対して応答させて、各クライアントデバイスを通して、対応する着信を開始させた対応する人と、会話を行わせることを含む。これらの実施例のある種のものでは、この方法は、着信完了後、対応着信中になされた会話の対応会話要約を生成することと、会話の対応会話要約を、ボイスボット開発プラットフォームによりレンダリングさせることとを、さらに含んでもよい。
ある種の実施例では、訓練されたボイスボットを、サードパーティの代わりに会話するために展開させることは、訓練されたボイスボットを、サードパーティと関連付けられた通話のための会話を行うために展開させることを、含んでもよく、訓練されたボイスボットを、サードパーティと関連付けられた通話のための会話を行うために展開させることは、ボイスボットに対応発信を開始させて、各クライアントデバイスを通して、対応する発信に応答した対応する人との会話を行わせることを含む。これらの実施例のある種のものでは、この方法は、発信完了後、対応発信中になされた会話の対応会話要約を生成することと、会話の対応会話要約を、ボイスボット開発プラットフォームによりレンダリングさせることとを、さらに含んでもよい。
ある種の実施例では、ボイスボット開発プラットフォームは、ボイスボットを展開するサードパーティとは区別される第1の当事者により提供される。
ある種の実施例では、1つまたは複数のプロセッサにより実行される方法が提供され、この方法は、ボイスボット開発プラットフォームを通して、複数の遠隔手続き呼出(RPC)訓練インスタンスを取得することを含む。複数のRPC訓練インスタンスの各々は、訓練インスタンス入力および訓練インスタンス出力を含む。訓練インスタンス入力は、少なくとも対応会話の一部および対応会話の先行文脈を含み、訓練インスタンス出力は、少なくとも対応会話の一部に対する対応グラウンドトゥルース応答を含む。この方法は、ボイスボット開発プラットフォームにより、少なくとも複数のRPC訓練インスタンスに基づいて、ボイスボットを訓練することを、さらに含む。複数のRPC訓練インスタンスに基づいて、ボイスボットを訓練することにより、ボイスボットをサードパーティシステムとやりとりさせる。この方法は、ボイスボットの訓練後、サードパーティの代わりに会話を行うように、訓練されたボイスボットが展開されるようにすることを含む。
ここに開示した技術におけるこれらのまたは他の実施例は、1つまたは複数の以下の特徴を、任意的に含み得る。
ある種の実施例では、複数のRPC訓練インスタンスのうちの所与のRPC訓練インスタンスに対する対応グラウンドトゥルース応答は、少なくとも対応RPCアウトバウンド要求を含んでもよい。ボイスボットの訓練は、機械学習(ML)モデルの複数のMLレイヤを用いて、所与の訓練インスタンスについて、少なくとも対応会話の一部および対応会話の先行文脈を処理して、対応会話の現在の状態と関連付けられた埋込を生成することを、含んでもよい。
これらの実施例のある種のものでは、対応会話の一部は、少なくとも対応会話の一部についての複数の音声仮定を、含んでもよい。少なくとも対応会話の一部、および対応会話の先行文脈を処理して、対応会話の現在の状態と関連付けられた埋込を生成することは、複数のMLレイヤのうちの第1のMLレイヤを用いて、複数の音声仮定を処理して、第1の埋込を生成することと、複数のMLレイヤのうちの第2のMLレイヤを用いて、対応会話の先行文脈を処理して、第2の埋込を生成することと、第1の埋込と第2の埋込とを連結して、対応会話の現在の状態と関連付けられた埋込を生成することを、含んでもよい。
これらの実施例の別の例では、方法は、ボイスボット開発プラットフォームにより、対応会話の現在の状態と関連付けられた埋込に基づき、複数の親和的特徴を生成することを、さらに含んでもよい。
これらの実施例のさらに別の例では、ボイスボットの訓練は、MLモデルまたは追加MLモデルの複数の追加MLレイヤを用いて、複数の親和的特徴、および対応会話の現在の状態と関連付けられた埋込を処理して、少なくとも対応会話の一部に対する予測応答と関連付けられた予測埋込を生成することを、さらに含んでもよい。
これらの実施例のさらに別の例では、ボイスボットの訓練は、埋込空間において、対応会話の一部に対する予測応答と関連付けられた予測埋込と、対応RPCアウトバウンド要求と関連付けられた対応グラウンドトゥルース埋込とを比較すること、予測埋込と対応グラウンドトゥルース埋込との比較に基づいて、1つまたは複数のロスを生成すること、ロスのうちの1つまたは複数に基づき、MLモデルを更新することを、さらに含んでもよい。
ある種の実施例では、少なくとも、複数のRPC訓練インスタンスのうちの所与のRPC訓練インスタンスに対する対応会話の一部は、少なくとも対応RPCインバウンド要求を含んでもよい。ボイスボットの訓練は、機械学習(ML)モデルの複数のMLレイヤを用いて、所与の訓練インスタンスについて、少なくとも対応RPCインバウンド要求および対応会話の先行文脈を処理して、対応会話の現在の状態と関連付けられた埋込を生成することを、含んでもよい。
これらの実施例のある種のものでは、少なくとも対応会話の一部、および対応会話の先行文脈を処理して、対応会話の現在の状態と関連付けられた埋込を生成することは、複数のMLレイヤのうちの第1のMLレイヤを用いて、少なくともRPCインバウンド要求を処理して、第1の埋込を生成することと、複数のMLレイヤのうちの第2のMLレイヤを用いて、対応会話の先行文脈を処理して、第2の埋込を生成することと、第1の埋込と第2の埋込とを連結して、少なくとも対応会話の一部に対する予測応答と関連付けられた予測埋込を生成することを、含んでもよい。
これらの実施例の別の例では、ボイスボットの訓練は、埋込空間において、対応会話の一部に対する予測応答と関連付けられた予測埋込と、対応グラウンドトゥルース応答と関連付けられた対応グラウンドトゥルース埋込とを比較すること、予測埋込と対応グラウンドトゥルース埋込との比較に基づいて、1つまたは複数のロスを生成すること、ロスのうちの1つまたは複数に基づき、MLモデルを更新することを、含んでもよい。
ある種の実施例では、ボイスボットを展開するサードパーティは、サードパーティシステムと関連付けられた追加のサードパーティとは区別される。
ある種の実施例では、訓練されたボイスボットを、サードパーティの代わりに会話するために展開させることは、訓練されたボイスボットを、サードパーティと関連付けられた通話のための会話を行うために展開させることを、含んでもよく、訓練されたボイスボットを、サードパーティと関連付けられた通話のための会話を行うために展開させることは、ボイスボットを、対応着信に対して応答させて、各クライアントデバイスを通して、対応する着信を開始させた対応する人と、会話を行わせることを含む。ボイスボットは、対応する人との会話中、対応RPCを通してサードパーティシステムとやりとりしてもよい。これらの実施例のある種のものでは、この方法は、着信完了後、対応着信中になされた会話の対応会話要約を生成することと、会話の対応会話要約を、ボイスボット開発プラットフォームによりレンダリングさせることとを、さらに含んでもよい。対応会話要約のうちの1つまたは複数は、対応着信中に受信した対応する人の対応口頭発話に基づいて対応RPCが発生したという指示を含んでもよい。
ある種の実施例では、ボイスボット開発プラットフォームが提供され、これは、少なくとも1つのプロセッサと、少なくとも1つのメモリと、複数の訓練インスタンスを含む、少なくとも1つのデータベースと、少なくとも1つのユーザインターフェースを備え、このユーザインターフェースは、ボイスボット開発プラットフォームとやりとりするサードパーティと関連付けられたサードパーティディベロッパが、複数の訓練インスタンスを取得し、複数の訓練インスタンスに基づいてボイスボットを訓練して、ボイスボットのために複数の対応行動を生成し、ボイスボットの訓練後に、サードパーティディベロッパに、少なくとも1つのデータベース内に格納された追加訓練インスタンスを追加させて、ボイスボットのために新規の行動を複数の対応行動に追加することを可能とし、サードパーティディベロッパに、少なくとも1つのデータベースに格納された既存の訓練インスタンスを修正させて、ボイスボットにおける複数の対応行動のうちの既存の行動を修正可能とする。複数の訓練インスタンスの各々は、訓練インスタンス入力および訓練インスタンス出力を含む。訓練インスタンス入力は、少なくとも対応会話の一部および対応会話の先行文脈を含み、訓練インスタンス出力は、少なくとも対応会話の一部に対する対応グラウンドトゥルース応答を含む。
さらに、ある種の実施例は、コンピュータ装置の1つまたは複数のプロセッサ(例えば、中央処理装置(CPU)、グラフィック処理ユニット(GPUおよび/またはテンソル処理ユニット(TPU)))を備え、1つまたは複数のプロセッサは、関連メモリ内に格納された命令を実行するように動作可能であり、命令は、上記方法のうちの任意のものを実行するように構成されている。また、ある種の実施例は、1つまたは複数のプロセッサにより実行可能であり、上記方法の任意のものを実行するコンピュータ命令を格納した、1つまたは複数の非一時的コンピュータ可読記憶媒体を、備えている。また、ある種の実施例は、1つまたは複数のプロセッサにより実行されて、上記方法の任意のものを実行することが可能な、命令を含むコンピュータプログラム製品を、含んでいる。
上述の概念、およびここにより詳細に説明した追加の概念のあらゆる組み合わせは、ここに開示する主題の一部と考えられていることを、理解されたい。例えば、本開示の末尾にある特許請求された主題のあらゆる組み合わせは、ここに開示された主題の一部として考えられている。