(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-09-12
(54)【発明の名称】テキスト分類についての説明を与えるための技術
(51)【国際特許分類】
G06F 16/33 20190101AFI20230905BHJP
G06F 16/35 20190101ALI20230905BHJP
【FI】
G06F16/33
G06F16/35
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023512408
(86)(22)【出願日】2021-08-20
(85)【翻訳文提出日】2023-04-07
(86)【国際出願番号】 US2021046938
(87)【国際公開番号】W WO2022040547
(87)【国際公開日】2022-02-24
(32)【優先日】2020-08-21
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-04-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シンガラジュ,ゴータム
(72)【発明者】
【氏名】ビシュノイ,ビシャル
(72)【発明者】
【氏名】パレック,マニシュ
(72)【発明者】
【氏名】ワン,アレクサンダー
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA01
5B175FA03
5B175HA01
5B175HB03
(57)【要約】
チャットボットシステムは、コードを実行して、チャットボットシステムが、発話についての分類結果と、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に記載のコンピュータにより実現される方法。
【請求項3】
前記トレーニングデータセットは、前記1つ以上の特定の合成発話の前記サブセットの信頼度値と閾値信頼度値との間の比較に基づいて、前記1つ以上の特定の合成発話の前記サブセットを選択することによって生成される、請求項2に記載のコンピュータにより実現される方法。
【請求項4】
前記1つ以上のアンカーの各アンカーについて前記信頼度値を判断することは、前記発話についての前記分類結果と前記1つ以上の合成発話についての前記1つ以上の分類結果との間の1つ以上の一致を判断することを含む、請求項1に記載のコンピュータにより実現される方法。
【請求項5】
前記1つ以上のアンカーの各アンカーについて前記信頼度値を判断することは、
前記チャットボットシステムが、前記1つ以上の合成発話についての前記1つ以上の分類結果に基づいて、前記1つ以上の合成発話について1つ以上の信頼度値を判断することと、
前記チャットボットシステムが、前記1つ以上の合成発話についての前記1つ以上の信頼度値に基づいて、前記アンカーの前記信頼度値を生成することとを含む、請求項1に記載のコンピュータにより実現される方法。
【請求項6】
前記1つ以上のアンカーを判断することは、ビームサーチ技術を使用して前記1つ以上のアンカーを1つ以上のラウンドにおいて選択することを含む、請求項1に記載のコンピュータにより実現される方法。
【請求項7】
前記報告は、複数のアンカーを含み、前記複数のアンカーの各アンカーは、閾値信頼度値よりも大きい信頼度値に対応する、請求項1に記載のコンピュータにより実現される方法。
【請求項8】
さらに、前記チャットボットシステムが、前記発話についての報告を生成する要求を受信することを含み、前記1つ以上のアンカーを判断することは、前記報告を生成する前記要求を受信することに応答して実行される、請求項1に記載のコンピュータにより実現される方法。
【請求項9】
前記1つ以上の合成発話を生成することは、複数の合成発話を生成することを含み、各合成発話は、前記アンカーの前記1つ以上のアンカー単語と、1つ以上の置換された単語とを含み、前記合成発話の前記置換された単語の各々は、前記発話における非アンカー単語のバリエーションである、請求項1に記載のコンピュータにより実現される方法。
【請求項10】
前記発話に対する前記分類結果は、入力発話に基づく分類結果を出力するよう構成される機械学習モデルに基づき、
前記1つ以上の分類結果は、前記機械学習モデルに基づいて生成される、請求項1に記載のコンピュータにより実現される方法。
【請求項11】
チャットボットシステムであって、
1つ以上のプロセッサと、
コンピュータ実行可能命令を記憶する非一時的なコンピュータ可読記憶媒体とを備え、前記コンピュータ実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに動作を実行させ、前記動作は、
発話について分類結果を判断することと、
前記発話に基づいて1つ以上のアンカーを判断することとを含み、前記1つ以上のアンカーの各アンカーは、前記発話の1つ以上のアンカー単語に対応し、前記動作はさらに、
前記1つ以上のアンカーの各アンカーについて、
前記アンカーおよび前記発話に基づいて、前記アンカーに対応する1つ以上の合成発話を生成することを含み、前記1つ以上の合成発話の各合成発話は、前記アンカーの前記1つ以上のアンカー単語を含み、前記動作はさらに、前記1つ以上のアンカーの各アンカーについて、
前記1つ以上の合成発話についての1つ以上の分類結果と、前記1つ以上の分類結果に基づく前記アンカーについての信頼度値とを判断することを含み、前記動作はさらに、
前記1つ以上のアンカーの特定のアンカーの表現を含む報告を生成することとを含み、前記特定のアンカーは、前記1つ以上のアンカーの中で最も高い信頼度値に対応する、チャットボットシステム。
【請求項12】
前記1つ以上のプロセッサは、さらなる動作を実行し、前記動作は、
前記特定のアンカーに基づいて、前記特定のアンカーに対応する1つ以上の特定の合成発話を判断することと、
前記1つ以上の特定の合成発話に基づいて、機械学習モデルをトレーニングするためのトレーニングデータセットを生成することとを含み、前記トレーニングデータセットは、前記1つ以上の特定の合成発話のサブセットを含み、前記動作はさらに、
前記トレーニングデータセットを用いて前記機械学習モデルをトレーニングすることを含む、請求項11に記載のチャットボットシステム。
【請求項13】
前記トレーニングデータセットは、前記1つ以上の特定の合成発話の前記サブセットの信頼度値と閾値信頼度値との間の比較に基づいて、前記1つ以上の特定の合成発話の前記サブセットを選択することによって生成される、請求項12に記載のチャットボットシステム。
【請求項14】
前記1つ以上のアンカーの各アンカーについて前記信頼度値を判断することは、前記発話についての前記分類結果と前記1つ以上の合成発話についての前記1つ以上の分類結果との間の1つ以上の一致を判断することを含む、請求項11に記載のチャットボットシステム。
【請求項15】
前記1つ以上のプロセッサは、さらなる動作を実行し、前記動作は、
前記1つ以上の合成発話についての前記1つ以上の分類結果に基づいて、前記1つ以上の合成発話について1つ以上の信頼度値を判断することと、
前記1つ以上の合成発話についての前記1つ以上の信頼度値に基づいて、前記アンカーの前記信頼度値を生成することとを含む、請求項11に記載のチャットボットシステム。
【請求項16】
前記1つ以上の合成発話を生成することは、複数の合成発話を生成することを含み、各合成発話は、前記アンカーの前記1つ以上のアンカー単語と、1つ以上の置換された単語とを含み、前記合成発話の前記置換された単語の各々は、前記発話における非アンカー単語のバリエーションである、請求項11に記載のチャットボットシステム。
【請求項17】
コンピュータにより実現される方法であって、
発話に基づいて、1つ以上の合成発話を生成することを含み、前記1つ以上の合成発話の各合成発話は、前記発話との1つ以上の共有単語を含み、1つ以上の信頼度値のうちのある信頼度値に対応し、前記方法はさらに、
前記1つ以上の信頼度値を閾値信頼度値と比較することと、
前記比較に基づいて、前記1つ以上の合成発話のサブセットを判断することとを含み、前記判断は、合成発話が前記閾値信頼度値以下の信頼度値に対応する場合、前記1つ以上の合成発話の前記サブセットのために合成発話を選択することを含み、前記方法はさらに、
1つ以上のトレーニングカテゴリを受信することを含み、前記1つ以上のトレーニングカテゴリの各トレーニングカテゴリは、前記1つ以上の合成発話の前記サブセットのうちのある合成発話に少なくとも対応し、前記方法はさらに、
前記1つ以上の合成発話の前記サブセットおよび1つ以上のトレーニングカテゴリに基づいて、機械学習モデルをトレーニングするためのトレーニングデータセットを生成することを含む、コンピュータにより実現される方法。
【請求項18】
前記トレーニングデータセットに基づいて、機械学習モデルをトレーニングすることをさらに含む、請求項17に記載のコンピュータにより実現される方法。
【請求項19】
前記機械学習モデルは、目的関数の使用によって学習する複数のモデルパラメータを含むインテント分類器として構築され、前記機械学習モデルをトレーニングすることは、前記目的関数を最小化または最大化することを含み、それは、予測されるインテントと正しいインテントとの間の差分を測定する、請求項18に記載のコンピュータにより実現される方法。
【請求項20】
前記閾値信頼度値は、対話型インターフェイスのユーザから、前記閾値信頼度値を対話型インターフェイス要素に入力することによって受信される、請求項17に記載のコンピュータにより実現される方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への参照
本出願は、2020年8月21日に提出された、米国仮出願第63/068,608号、および2021年4月13日に提出された、米国仮出願第63/174,336号の、米国特許法第119(e)条の下の利益および優先権を主張する。上記出願の全内容は、あらゆる目的のためにその全体が参照によりここに組み込まれる。
【0002】
分野
本開示は、概してチャットボットシステムに関し、より詳細には、テキスト分類についての説明を与えるための技術に関する。
【背景技術】
【0003】
背景
世界中の多くのユーザは、即時反応を得るためにインスタントメッセージングまたはチャットプラットフォーム上にいる。組織は、しばしば、これらのインスタントメッセージングまたはチャットプラットフォームを用いて、顧客(またはエンドユーザ)とライブ会話に携わる。しかしながら、顧客またはエンドユーザとのライブ通信に携わるためにサービス人員を雇用することは、組織にとって非常に費用がかかり得る。チャットボット(ここでは「ボット」または「スキル」とも呼ばれる)は、したがって、特にインターネット上で、エンドユーザとの会話に従事するよう開発され始めた。エンドユーザまたは顧客は、エンドユーザが既にインストールし使用しているメッセージングアプリケーションを介してボットと通信することができる。一般に人工知能(AI)によって駆動されるインテリジェントなボットは、ライブ会話において、より知的にかつ文脈に沿って通信することができ、したがって、改善された会話体験のために、ボットとエンドユーザとの間の、より自然な会話を可能にすることができる。ボットが応答の仕方を知っているキーワードまたはコマンドの固定セットをエンドユーザが学習するのではなく、インテリジェントなボットは、自然言語でのエンドユーザ発話に基づいてエンドユーザの意図を理解し、それに応じて応答することができる。
【0004】
しかしながら、これらの自動化されたソリューションは、特定の分野における特定の知識と、専門開発者の能力内のみであり得る特定の技術の適用とを必要とするので、チャットボットを構築することは困難である。このようなチャットボットの構築の一部として、開発者はまず企業およびエンドユーザのニーズを理解してもよい。次いで、開発者は、例えば、分析のために使用されるべきデータセットを選択すること、分析のために入力データセットを準備すること(例えば、データのクレンジング、分析前のデータの抽出、フォーマット化および/または変換、データ特徴量エンジニアリングの実行など)、分析を行うための適切な機械学習(ML)技術またはモデルを識別すること、およびフィードバックに基づいて結果/成果を改善するよう技術またはモデルを改善することに関連する判断を分析および行ってもよい。適切なモデルを識別するタスクは、複数のモデルを場合によっては並行して開発すること、これらのモデルを用いて反復的にテストおよび実験したあとに、特定のモデルを使用のために識別することを含んでもよい。さらに、教師あり学習ベースのソリューションは、典型的には、トレーニング段階と、それに続く適用(すなわち、推論)段階と、トレーニング段階と適用段階との間の反復ループとを含む。開発者は、最適解を達成するために、これらの段階を注意深く実施および監視する責任を負い得る。
【0005】
広範な採用にもかかわらず、ニューラルネットワークモデルを含む機械学習モデルは、概して、入力データに対してある数学的演算または論理演算を行うことによって推論(出力)を行うブラックボックスとして動作する。機械学習モデルの出力は、例えば、予測もしくは分類、および/または対応する信頼度レベルを含んでもよい。しかしながら、機械学習モデルの出力または特定の推論についての出力は、モデルおよび/または特定の予測が信頼できるかどうか、ならびにトレーニングデータおよびモデルをどのように改善するかを判断するために、特定の入力が特定の出力を生成するであろう理由など、機械学習モデルの挙動をユーザが理解し得るように機械学習モデルに対する洞察を提供しない場合がある。加えて、機械学習モデルのために開発されるトレーニングセットは、多くの場合、手動で生成され、次いで、機械学習モデルに入力される。機械学習モデルをトレーニングまたは再トレーニングするための時間は、これらのトレーニングセットを生成する能力によって制約され得る。機械学習モデルを改善するために推論説明システムを再トレーニングシステムに統合する包括的な方法はない。
【発明の概要】
【課題を解決するための手段】
【0006】
概要
ここに開示される技術は、概して、チャットボットに関する。より具体的には、限定ではないが、ここに開示される技術は、たとえば、チャットボットにおいて、テキスト分類のために説明を与えるための技術に関する。チャットボットは、ユーザの発話を、ユーザの事前定義されたインテントなどの異なるクラスに分類することができる。チャットボットの分類器は、入力(たとえば、ユーザ発話)に基づいて出力(たとえば、インテント)を生成するトレーニングされたMLモデルを含んでもよい。分類は、概して、解釈可能性および説明可能性を欠くブラックボックスである。
【0007】
ここにおいて開示される技術は、分類に関する説明を提供し、それにより、チャットボット所有者は、分類器および/または特定の分類が信頼できるかどうか、ならびに説明に基づいてトレーニング用発話および分類器をどのように改善するかを判断してもよい。ここでは、方法、システム、1つ以上のプロセッサによって実行可能なプログラム、コード、または命令を記憶する非一時的コンピュータ可読記憶媒体などを含む様々な実施形態について説明する。
【0008】
様々な実施形態によれば、コンピュータにより実現される方法が提供され、本方法は、チャットボットシステムが、チャットボットシステムのインテント分類器による発話についての推論結果を説明する要求を受信することと、インテント分類器から発話についての推論結果を取得することと、発話に基づいて1つ以上のアンカーを選択することとを含み、1つ以上のアンカーの各アンカーは、発話からの1つ以上のアンカー単語を含み、本方法はさらに、1つ以上のアンカーの各アンカーについて、発話のバリエーションを生成するために、アンカーのアンカー単語ではない、発話の1つ以上の単語を変化させることと、インテント分類器から、発話のバリエーションについての推論結果を取得することと、発話についての推論結果および発話のバリエーションについての推論結果に基づいて、1つ以上のアンカーの各アンカーに関連付けられるそれぞれの信頼度レベルを判断することと、1つ以上のアンカーの中で最も高い信頼度レベルを有するアンカーを含む報告を生成することとを含む。
【0009】
いくつかの実施形態では、信頼度レベルを判断することは、発話についての推論結果と発話のバリエーションについての推論結果の各々との間の一致または不一致を判断することを含む。
【0010】
いくつかの実施形態では、1つ以上のアンカーを選択することは、ビームサーチ技術を使用して1つ以上のラウンドで1つ以上のアンカーを選択することを含む。
【0011】
いくつかの実施形態では、報告は、JavaScript(登録商標)オブジェクト表記(JSON)ファイルを含む。
【0012】
いくつかの実施形態では、報告は、閾値よりも大きい信頼度レベルを有するアンカーを含む。
【0013】
いくつかの実施形態では、コンピュータにより実現される方法はさらに、発話のバリエーションおよび発話のバリエーションについての推論結果をデータベースまたはクラウドベースの記憶構造に記憶することを含む。
【0014】
様々な実施形態によれば、コンピュータにより実現される方法が提供され、本方法は、チャットボットシステムが、複数の発話および複数の対応する信頼度値を含む複数のトレーニング結果を受信することと、複数のトレーニング結果を閾値と比較することと、比較に基づいて、閾値以下の信頼度値を有する1つ以上の発話を取得することと、1つ以上の取得された発話に対応する1つ以上のトレーニングカテゴリを判断することと、1つ以上のトレーニングカテゴリに基づいて、1つ以上の発話を使用して機械学習モデルをトレーニングすることとを含む。
【0015】
いくつかの実施形態では、コンピュータにより実現される方法は、複数の発話のうちのある発話とその発話に対する対応する予測されるトレーニングカテゴリとの間の一致または不一致に基づいて、複数の対応する信頼度値の各対応する信頼度値を判断することをさらに含む。
【0016】
いくつかの実施形態では、コンピュータにより実現される方法はさらに、複数のトレーニング結果の複数の発話に基づいて、1つ以上の合成発話を生成することを含む。
【0017】
いくつかの実施形態では、コンピュータにより実現される方法はさらに、1つ以上の取得された発話に基づいて、1つ以上の合成発話を生成することを含む。
【0018】
いくつかの実施形態では、1つ以上のトレーニングカテゴリを判断することは、1つ以上の発話のうちのある特定の発話および1つ以上のトレーニングカテゴリのうちのある特定の対応するトレーニングカテゴリを示す入力を受信することを含む。
【0019】
いくつかの実施形態では、コンピュータにより実現される方法はさらに、閾値を示す入力を受信することを含む。閾値を対話型インターフェイス要素に入力することによって、対話型インターフェイスのユーザから入力を受信してもよい。
【0020】
いくつかの実施形態では、1つ以上のトレーニングカテゴリは、1つ以上の正しいインテントであり、1つ以上の正しいインテントの各正しいインテントは、機械学習モデルを再トレーニングするための1つ以上の発話のうちのある発話に対応する。
【0021】
いくつかの実施形態では、複数のトレーニング結果を閾値と比較することは、少なくとも1つ以上の信頼度値と閾値との間の数値的差分を表す少なくとも1つ以上の差分値を計算することを含み、1つ以上の発話を取得することは、信頼度値が閾値以下であることを示す差分値を有する発話を選択することを含む。
【0022】
いくつかの実施形態では、コンピュータにより実現される方法はさらに、1つ以上の発話をトレーニングバッチにグループ化することと、トレーニングバッチを機械学習モデルに入力することとを含む。
【0023】
いくつかの実施形態では、機械学習モデルは、目的関数の使用によって学習する複数のモデルパラメータを含むインテント分類器として構築され、機械学習モデルをトレーニングすることは、目的関数を最小化または最大化することを含み、それは、予測されるインテントと正しいインテントとの間の差分を測定する。
【0024】
種々の実施形態によれば、1つ以上のデータプロセッサと、1つ以上のデータプロセッサ上で実行されると1つ以上のデータプロセッサにここに開示される1つ以上の方法の一部またはすべてを実行させる命令を含む非一時的コンピュータ可読記憶媒体とを含む、システムが提供される。
【0025】
様々な実施形態によれば、非一時的な機械可読記憶媒体において有形に具現化され、1つ以上のデータプロセッサにここで開示される1つ以上の方法の一部またはすべてを実行させるように構成される命令を含むコンピュータプログラム製品が提供される。
【0026】
いくつかの実施形態では、機械学習モデルをトレーニングするために使用される複数の発話は、信頼度閾値と比較される。信頼度閾値以下の信頼度値を有する発話の数を判断する。発話の数は、機械学習モデルを再トレーニングするための特定の発話の予想されるインテントの間の対応を選択するために包括的なユーザインターフェイスに提示される。発話の数は、機械学習モデルを再トレーニングするために使用される1つ以上の変更された発話を形成するように、発話生成エンジンによって変更される。1つ以上の変更された発話も、包括的ユーザインターフェイス内に提示されて、再トレーニングのために、同じであるかまたは異なる予想されるインテントを選択してもよい。発話は、インテント分類説明を解釈し、機械学習モデルを改良するための再トレーニングデータセットを生成するための包括的再トレーニングインターフェイスの一部として表示されてもよい。
【0027】
ここに開示される技術およびインフラストラクチャは、発話内の単語の相対的重要度を示すことによって、ボット設計者が、発話が特定のクラスに分類される理由を理解することを可能にし得、これは、ボット設計者が、将来の発話分類のためにボットの分類器を改善することを可能にし得る。
【0028】
上記および以下で説明する技術は、いくつかの方法で、およびいくつかの状況で実現され得る。いくつかの例示的な実現例および状況が、以下でより詳細に説明されるように、以下の図面を参照して提供される。しかしながら、以下の実現例および状況は、多くのうちの少数にすぎない。
【図面の簡単な説明】
【0029】
【
図1】例示的な実施形態を組み込んだ分散環境の簡略化されたブロック図である。
【
図2】
図2は、様々な実施形態による、1つ以上のメッセージングアプリケーションを用いてエンドユーザと通信するためのボットシステムを実現する分散型システムを示す。
【
図3】様々な実施形態による、ボットシステム、ならびにボットシステムの性能を監視、分析、視覚化、および改善するためのボット分析システムを含む統合されたシステムを示す。
【
図4】様々な実施形態による、ボットを開発するためのプロセスの一例を示す簡略化されたフローチャートである。
【
図5】様々な実施形態による、推論結果を説明するためのプロセスの一例を示す簡略化されたフローチャートである。
【
図6】様々な実施形態による、テキスト分類の説明を提供するためのシステムの一例を示す。
【
図7】様々な実施形態による、テキスト分類の説明を提供するためのシステムの一例を示す。
【
図8A】様々な実施形態による、説明計算中のシミュレートされたCPU使用の例を示す。
【
図8B】様々な実施形態による、説明計算中のシミュレートされたメモリ使用の例を示す。
【
図9A】様々な実施形態による、説明計算中のシミュレートされたCPU使用の例を示す。
【
図9B】様々な実施形態による、説明計算中のシミュレートされたメモリ使用の例を示す。
【
図10A】ある実施形態による、説明計算中のシミュレートされたCPU使用の例を示す。
【
図10B】様々な実施形態による、説明計算中のシミュレートされたメモリ使用の例を示す。
【
図11】様々な実施形態による、人工発話を使用してモデルを再トレーニングするためのプロセスの一例を示す簡略化されたフローチャートである。
【
図12】様々な実施形態による、人工発話を使用してモデルを再トレーニングするための例示的なインターフェイスを示す。
【
図13】様々な実施形態による、人工発話を使用してモデルを再トレーニングするための例示的なインターフェイスを示す。
【
図14】様々な実施形態による、推論結果を説明するための例示的インターフェイスを示す。
【
図15】様々な実施形態による、推論結果を説明するための例示的インターフェイスを示す。
【
図16】様々な実施形態による、推論結果を説明するための例示的インターフェイスを示す。
【
図17】様々な実施形態による、推論結果を説明するための例示的インターフェイスを示す。
【
図18】様々な実施形態による、発話の分類のための説明の出力の例を示す。
【
図19】様々な実施形態を実現するための分散型システムの例の簡略化されたブロック図を示す。
【
図20】様々な実施形態を実現するためのクラウドベースのシステム環境の一例の簡略ブロック図である。
【
図21】様々な実施形態を実現するためのコンピュータシステムの一例を示す。
【発明を実施するための形態】
【0030】
詳細な説明
序
本開示は、概してチャットボットに関する。より具体的には、限定するものではないが、本明細書に開示される技術は、チャットボットにおけるテキスト分類の説明を提供することに関する。チャットボットは、ユーザの発話を、ユーザの所定の事前定義されたインテントなどの異なるクラスに分類してもよい。分類器は、概して、解釈可能性および説明可能性を欠くブラックボックスである。ユーザは分類結果を知り得るが、特定の入力が対応するクラスに分類される理由を理解しないかもしれない。本明細書に開示される技法は、トレーニング用発話および分類器が説明に基づいて改善され得、ユーザが分類結果において自信を得得るように、分類に対する説明を提供し得る。本明細書では、方法、システム、1つ以上のプロセッサによって実行可能なプログラム、コード、または命令を記憶する非一時的コンピュータ可読記憶媒体などを含む様々な実施形態について説明する。
【0031】
企業は、様々な目的のためにチャットボットシステムを作成したい場合がある。チャットボットシステムは、ユーザ発話に基づいてエンドユーザインテントを識別するための1つ以上のユーザインテント分類エンジンと、判断されたエンドユーザインテントに従ってユーザ発話に応答するためにメッセージをインテリジェントかつ文脈的に構成するための1つ以上のダイアログエンジンとを含んでもよい。しかしながら、ユーザ発話に基づいてエンドユーザのインテントを判断し得るユーザインテント分類エンジンと、インテリジェントにかつ文脈的に応答を生成するためのダイアログエンジンとの両方を含むチャットボットシステムを構築することは困難なタスクであり、それは、部分的には、自然言語の微妙さおよび曖昧さ、ならびに入力空間の次元(例えば、考えられ得るユーザ発話)および出力空間のサイズ(インテントの数)に起因する。
【0032】
チャットボットの分類器は、エンドユーザの発話からエンドユーザのインテントを推論するトレーニングされた機械学習(ML)モデルを含む場合がある。MLモデルは、概して、入力に対して特定の数学的演算または論理演算を実行することによって、入力(たとえば、ユーザ発話)に基づいて出力(たとえば、インテント)を生成するブラックボックスとして動作する。MLモデルは、概して、解釈可能性および説明可能性を欠き、これは、チャットボットがどのように構築されるかの具体的な知識を欠くチャットボット所有者が、特定の入力を仮定して、チャットボットが特定の出力を生成する理由を理解しない場合があることを意味する。より具体的には、MLモデルの出力は、例えば、分類(または別の予測)および/またはその予測に対する対応する信頼度レベル(すなわち、チャットボットが、予測される出力インテントを、どの程度近く、発話入力に一致する、と判断するか)を含んでもよいが、MLモデルおよび/または特定の予測が信頼できるかどうか、ならびにトレーニングデータおよびMLモデルをどのように改善するかを判断するために、特定の入力が特定の出力を生成するであろう理由など、モデルの挙動をユーザが理解し得るようにMLモデルに対する洞察を提供しない場合がある。
【0033】
加えて、MLモデルの判断された挙動問題を改善するトレーニングデータを自動的かつ包括的に生成および使用する方法はない。例えば、報告を与えると、クライアントは、MLモデルがある誤った予測をどのように行ったかもしれないかを理解するかもしれないが、依然として誤ったモデルとともに取り残されることになる。クライアントは、MLモデルを再トレーニングするために、新たなトレーニングデータセットを探し出すことによって、または自身のトレーニングデータセットを作成しようと試みることによって、これらの問題を改善しようと試みるかもしれない。クライアントには、自身が発見または作成する任意のトレーニングデータセットが報告に提示される特定の問題を改善することを知る術はない。
【0034】
したがって、これらの問題に対処するために異なる手法が必要とされる。様々な実施形態では、コンピュータにより実現される方法が提供され、本方法は、チャットボットシステムのインテント分類器による発話についての推論結果を説明する要求を受信することと、インテント分類器から、発話のバリエーションについての推論結果を取得することと、1つ以上のアンカーを選択することとを含み、1つ以上のアンカーの各アンカーは、発話内の1つ以上のアンカー単語を含んでもよく、本方法はさらに、1つ以上のアンカーの各アンカーについて、発話のバリエーションを生成するために、アンカーのアンカー単語ではない、発話の1つ以上の単語を変化させることと、インテント分類器から発話のバリエーションについての推論結果を取得することと、発話および発話のバリエーションについての推論結果に基づいて、1つ以上のアンカーの各アンカーに関連付けられる信頼度レベルを判断することと、1つ以上のアンカーの中で最も高い信頼度レベルを有するアンカーを含む報告を生成することとを含む。いくつかの実施形態では、1つ以上のアンカーを選択することは、ビームサーチ技術を使用して1つ以上のラウンドで1つ以上のアンカーを選択することを含んでもよい。発話のバリエーション、発話のバリエーションについての推論結果、および報告は、データベース内にあってもよい。
【0035】
ここにおいて開示される技術は、分類に関する説明を提供し、チャットボット所有者は、(分類または予測に基づいてアクションを取るように、)分類器および/または特定の分類が信頼できるかどうか、ならびに説明に基づいてトレーニング用発話および分類器をどのように改善するかを判断するようにしてもよい。例えば、報告を生成する際に利用される新たな発話を使用して、MLモデルを再トレーニングしてもよい。新たな発話は、報告が求められた元の発話に似ている。したがって、新たな発話を入力として与えられて、予測されるべき既知のインテントが与えられると、新たな発話を用いて、将来の予測を改善するようMLモデルを再トレーニングしてもよい。新たな発話はすでに生成されており、それらは報告が求められた元の発話に似ているので、新たな発話を使用して、MLモデルを、より効率的かつ機能的な態様で、再トレーニングしてもよい。
【0036】
ここにおいて使用されるように、「チャットボット」、「ボット」、「スキル」、または「スキルボット」は、特にインターネットを介して、人間のエンドユーザとの会話をシミュレートするように設計されたコンピュータプログラムを指し得る。個々のスキルは、エンドユーザと対話し、食品を注文すること、予約を行うこと、連絡先情報を変更すること、技術サポート、および顧客サービスなど、特定のタイプのタスクを果たすように設計されてもよい。各スキルは、エンドユーザが、視覚メッセージ、音声メッセージ、またはテキストメッセージと、ボタン、テーブル、リスト等のUI要素との組み合わせを通してタスクを完了するのを助けてもよい。
【0037】
ここにおいて使用されるように、用語「インテント」は、エンドユーザがエンドユーザのためにスキルが実行すると期待するアクションまたはタスクのカテゴリを指し得る。用語「エンティティ」は、ユーザ入力から、スキルがタスクを果たすことを可能にする情報を識別する変数を指し得る。用語「コンポーネント」は、テキストを出力すること、バックエンドから情報を返すこと、およびカスタム論理を実行することなど、スキルがエンドユーザに応答するために使用してもよい様々な機能を指し得る。用語「ダイアログフロー」は、スキル-ユーザ対話の定義を指し得、スキルがユーザ入力に従ってどのように応答し、挙動するかを記述してもよい。用語「チャネル」は、スキルがメッセージングプラットフォームまたはクライアントメッセージングアプリにアクセスすることを可能にするプラットフォーム特有の構成を指し得る。単一のスキルは、エンドユーザが使用することを好み得る異なるサービスまたはプラットフォーム上で当該スキルが同時に実行し得るように、当該スキルのために構成されるいくつかのチャネルを有してもよい。
【0038】
ここにおいて使用されるように、「発話」または「メッセージ」は、会話中に交換される1つ以上の文を指し得、会話は、1つ以上の発話またはメッセージを含んでもよい通信セッションを指し得る。会話は、1つ以上の段階または状態を含んでもよい。会話フローは、同じ段階または状態と、段階(または状態)から段階(または状態)への同じ遷移とを含む、複数の会話の抽象化であってもよい。各会話は、対応する会話フローの特定のインスタンスであってもよい。会話(または会話フロー)の状態(または段階)は、他のボットシステムまたは人と会話を行うためにボットシステムによって維持される状態機械の状態と関連付けられてもよい。場合によっては、状態は、エンドユーザのインテントまたは目標に対応してもよい。ここにおいて使用されるように、エンドユーザは、メッセージングアプリケーションまたはプラットフォームを通してボットシステムと会話する人または別のエンティティ等の、ボットシステムのエンドユーザを指してもよい。例えば、エンドユーザは、ボットシステムを所有する企業の顧客またはクライアントであってもよい。ここにおいて使用されるように、ボットシステムのユーザは、ボットシステムの所有者、オペレータ、管理者、または開発者を指してもよい。
【0039】
以下の記載では、説明の目的で、本開示の例の完全な理解のために、特定の詳細が述べられる。しかしながら、様々な例がこれらの具体的な詳細なしに実施されてもよいことは明らかであろう。以下の説明は、例のみを提供するものであり、本開示の範囲、適用可能性、または構成を限定することを意図したものではない。むしろ、以下の例の説明は、例を実現するための実施可能な説明を当業者に提供するであろう。特許請求の範囲に記載の本開示の精神および範囲から逸脱することなく、要素の機能および構成において様々な変更を加えることができることを理解されたい。図および記載は、限定することを意図したものではない。回路、システム、ネットワーク、プロセスおよび他のコンポーネントは、例を不必要な詳細で曖昧にしないように、ブロック図形式におけるコンポーネントとして示され得る。他の例では、周知の回路、プロセス、アルゴリズム、構造および技術は、例を曖昧にすることを回避するために、不必要な詳細なしに示され得る。ここで開示される教示は、モバイルアプリケーション、非モバイルアプリケーション、デスクトップアプリケーション、ウェブアプリケーション、企業アプリケーションなどの様々なタイプのアプリケーションにも適用され得る。さらに、本開示の教示は、特定の動作環境(例えば、オペレーティングシステム、デバイス、プラットフォームなど)に限定されず、代わりに、複数の異なる動作環境に適用され得る。
【0040】
さらに、個々の例は、フローチャート、フロー図、データフロー図、構造図またはブロック図として示されるプロセスとして記載されてもよいことが注記される。フローチャートは動作をシーケンシャルなプロセスとして説明し得るが、動作の多くは並列または同時に実行されてもよい。加えて、動作の順序を入れ替えてもよい。プロセスは、その動作が完了されるときに終結されるが、図に含まれない追加のステップを有し得る。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応してもよい。プロセスが関数に対応している場合、その終了は、その関数を呼出し関数またはmain関数へと戻すことに対応してもよい。
【0041】
「例」または「例示的」という文言は、ここでは、「例、事例、または例示として供される」ことを意味するために用いられる。「例示的」または「例」としてここに記載される任意の実施形態または設計は、必ずしも、他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0042】
「機械可読記憶媒体」または「コンピュータ可読記憶媒体」という語は、命令および/またはデータを記憶したり、含んでいたり、または担持したりすることができる携帯型または固定式のストレージデバイス、光学式ストレージデバイス、およびさまざまな他の媒体を含むが、これらに限定されるものではない。機械可読記憶媒体またはコンピュータ可読記憶媒体は、データが記憶されてもよく、無線または有線接続を介して伝搬する搬送波および/または一時的電子信号を含まない、非一時的媒体を含んでもよい。非一時的媒体の例は、磁気ディスクまたはテープ、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得るが、これらに限定されない。コンピュータプログラム製品は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組合せを表し得るコードおよび/または機械実行可能命令を含んでもよい。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツを受け渡すおよび/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージ受渡し、トークン受渡し、ネットワーク伝送などを含む任意の好適な手段を介して渡されるか、転送されるか、または伝送されてもよい。
【0043】
さらに、例は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実現されるとき、必要なタスクを実行するプログラムコードまたはコードセグメント(たとえばコンピュータプログラム製品)は、機械可読媒体に記憶されてもよい。必要なタスクはプロセッサが実行してもよい。いくつかの図示されているシステムは、さまざまな構成で提供されてもよい。いくつかの例では、システムは、システムの1つ以上のコンポーネントがクラウドコンピューティングシステムの1つ以上のネットワークに分散された分散型システムとして構成されてもよい。コンポーネントが、特定の動作を実行するように「構成される」として記載されている場合、そのような構成は、たとえば、動作を実行するよう電子回路または他のハードウェアを設計すること、電子回路(たとえばマイクロプロセッサまたは他の好適な電子回路)をプログラミングおよび制御して動作を実行すること、またはそれらの任意の組み合わせによって、達成されてもよい。
【0044】
ボットおよび分析システム
ボット(スキル、チャットボット、チャターボット、またはトークボットとも称される)は、エンドユーザとの会話を実行することができるコンピュータプログラムである。ボットは一般に、自然言語メッセージを用いるメッセージングアプリケーションを通じて自然言語メッセージ(例えば質問またはコメント)に応答することができる。企業は、1つ以上のボットシステムを用いて、メッセージングアプリケーションを通じてエンドユーザと通信し得る。メッセージングアプリケーションは、チャネルと呼ばれることもあり、エンドユーザが既にインストールし、慣れ親しんでいる、エンドユーザの好みのメッセージングアプリケーションであり得る。したがって、エンドユーザは、ボットシステムとチャットするために新たなアプリケーションをダウンロードおよびインストールする必要がない。メッセージングアプリケーションは、例えば、オーバーザトップ(OTT)メッセージングチャネル(例えば、Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack,またはSMS)、バーチャルプライベートアシスタント(例えば、Amazon Dot, Echo,またはShow, Google(登録商標) Home, Apple HomePodなど)、チャット機能を有するネイティブもしくはハイブリッド/応答モバイルアプリもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリ拡張、または音声ベースの入力(例えば、Siri, Cortana, Google Voice、または対話のための他の音声入力を用いるインターフェイスを有するデバイスもしくはアプリ)を含むことができる。
【0045】
いくつかの例では、ボットシステムは、統一資源識別子(URI)に関連付けられ得る。URIは、文字列を用いてボットシステムを識別することができる。URIは、1つ以上のメッセージングアプリケーションシステムのためのウェブフックとして用いられ得る。URIは、例えば、統一資源位置指定子(URL)または統一資源名(URN)を含むことができる。ボットシステムは、メッセージングアプリケーションシステムからメッセージ(例えば、ハイパーテキスト転送プロトコル(HTTP)ポストコールメッセージ)を受信するように設計されてもよい。HTTPポストコールメッセージは、メッセージングアプリケーションシステムからURIに向けられてもよい。いくつかの実施形態では、メッセージはHTTPポストコールメッセージとは異なり得る。例えば、ボットシステムは、ショートメッセージサービス(SMS)からメッセージを受信し得る。ここにおける議論は、ボットシステムがメッセージとして受信する通信に言及し得るが、メッセージは、HTTPポストコールメッセージ、SMSメッセージ、または2つのシステム間の任意の他のタイプの通信であり得ることを理解されたい。
【0046】
エンドユーザは、人々間の対話のように、会話による対話(会話によるユーザインターフェイス(UI)と呼ばれることもある)を通じてボットシステムと対話することができる。場合によっては、対話は、エンドユーザがボットに「Hello(こんにちは)」と言い、ボットが「Hi(やあ)」と応答し、エンドユーザをどのように支援できるかをエンドユーザに問い合わせることを含んでもよい。場合によっては、対話はまた、例えば、ある口座から別の口座へ送金するなど、銀行ボットとの取引対話;たとえば、バケーションバランスのチェックなど、HRボットとの情報対話;または、例えば、購入した商品を返品するもしくは技術的サポートを求める議論など、小売店ボットとの対話であってもよい。
【0047】
いくつかの実施形態では、ボットシステムは、ボットシステムの管理者または開発者との対話なしにエンドユーザ対話を知的に扱うことができる。例えば、エンドユーザは、所望の目標を達成するために、ボットシステムに1つ以上のメッセージを送信してもよい。メッセージは、テキスト、絵文字、オーディオ、画像、ビデオ、またはメッセージを伝達する他の方法など、あるコンテンツを含み得る。いくつかの実施形態では、ボットシステムは、コンテンツを標準化された形式(例えば、適切なパラメータを有する企業サービスに対するrepresentational state transfer(REST)コール)に変換し、自然言語応答を生成することができる。ボットシステムはまた、追加の入力パラメータをエンドユーザに促すか、または他の追加の情報を要求することもできる。いくつかの実施形態では、ボットシステムはまた、エンドユーザ発話に受動的に応答するのではなく、エンドユーザとの通信を開始してもよい。ここでは、ボットシステムの明示的な呼出しを識別し、呼び出されるボットシステムに対する入力を決定するための様々な技術が説明される。ある実施形態では、明示的な呼出し分析は、発話における呼出し名の検出に基づいて、マスタボットによって実行される。呼出し名の検出に応答して、発話は、呼出し名に関連付けられるスキルボットへの入力のために精緻化されてもよい。
【0048】
ボットとの会話は、複数の状態を含む特定の会話フローに従うことができる。フローは、入力に基づいて次に起こるものを定義することができる。いくつかの実施形態では、ユーザが定義した状態(例えば、エンドユーザのインテント)と、状態において、または状態から状態にとるべきアクションとを含む状態機械を用いて、ボットシステムを実現することができる。会話は、エンドユーザ入力に基づいて異なる経路をとることができ、これは、ボットがフローについて行う決定に影響を及ぼし得る。例えば、各状態において、エンドユーザ入力または発話に基づいて、ボットは、エンドユーザのインテントを判断して、次にとるべき適切なアクションを決定することができる。ここにおいて、および発話の文脈において、「インテント」という語は、発話を与えたユーザのインテントを指す。例えば、ユーザは、ピザを注文するために会話でボットに関わるつもりであり、ユーザのインテントは、「ピザを注文して」という発話によって表現されてもよい。ユーザのインテントは、ユーザがユーザに代わってチャットボットに実行して欲しい特定のタスクに向けられ得る。したがって、発話は、ユーザのインテントを反映する質問、コマンド、要求などとして表現することができる。インテントは、エンドユーザが達成することを望む目標を含むことができる。
【0049】
チャットの構成の文脈において、「インテント」という語は、ここでは、ユーザの発話を、チャットボットが実行できる特定のタスク/アクションまたはタスク/アクションのカテゴリにマッピングするための設定情報を指すために用いられる。発話のインテント(すなわち、ユーザのインテント)とチャットボットのインテントとを区別するために、後者をここでは「ボットインテント」と呼ぶことがある。ボットインテントは、そのインテントに関連付けられる1つ以上発話のセットを含んでもよい。例えば、ピザを注文することに対するインテントは、ピザの注文を行う要望を表す発話の様々な順列を有することができる。これらの関連付けられた発話は、チャットボットのインテント分類器をトレーニングするために用いられ得、インテント分類器が、その後、ユーザからの入力発話がピザ注文インテントと一致するかどうかを判断することを可能にする。ボットインテントは、ユーザとある状態において会話を開始するための1つ以上のダイアログフローに関連付けられ得る。例えば、ピザ注文インテントに関する第1のメッセージは、「どの種類のピザがよろしいですか?」という質問であり得る。関連付けられた発話に加えて、ボットインテントは、さらに、そのインテントに関連する名前が付けられたエンティティを含み得る。例えば、ピザ注文インテントは、ピザを注文するタスクを実行するために用いられる変数またはパラメータ、例えば、トッピング1、トッピング2、ピザの種類、ピザサイズ、ピザ数量などを含み得る。エンティティの値は、典型的には、ユーザとの会話を通じて取得される。
【0050】
図1は、例示的な実施形態を組み込んだ分散環境100の簡略ブロック図である。分散環境100は、企業が企業のエンドユーザのためにデジタルアシスタントを作成および展開することを可能にするデジタルアシスタントビルダープラットフォーム(DABP)102を含む。DABP102は、1つ以上のデジタルアシスタント(DA)を作成するために用いられ得る。DABP102は、複数の企業によって用いられて、複数の企業のエンドユーザのためのデジタルアシスタントを作成し得る。例えば、
図1に示すように、特定の企業を表すユーザ104は、DABP102を使用して、特定の企業のエンドユーザ用のデジタルアシスタント106を作成および展開し得る。例えば、レストラン(例えば、ピザショップ)は、DABP102を用いて、レストランの顧客が食べ物を注文すること(例えば、ピザを注文すること)を可能にするデジタルアシスタントを作成および展開してもよい。
【0051】
本開示の目的のために、「デジタルアシスタント」は、デジタルアシスタントのエンドユーザが自然言語会話を通じて様々なタスクを達成するのに役立つエンティティを指す。デジタルアシスタントは、ソフトウェア(たとえば、デジタルアシスタントは、1つ以上のプロセッサによって実行可能なプログラム、コード、または命令を用いて実現されるデジタルエンティティである)のみを用いて、ハードウェアを用いて、またはハードウェアとソフトウェアとの組み合わせを用いて、実現されてもよい。デジタルアシスタントは、コンピュータ、携帯電話、腕時計、器具、車両など、様々な物理的システムもしくはデバイスにおいて具現化または実現されてもよい。デジタルアシスタントは、チャットボットシステムとも称されることもある。
【0052】
たとえば、
図1に示されるように、エンドユーザ108は、デジタルアシスタント106を用いて、デジタルアシスタント106との自然言語ベースの会話を介して様々なタスクを実行してもよい。会話の一部として、ユーザは、1つ以上のユーザ入力110を提供し、デジタルアシスタント106から返答112を得ることができる。これらの会話を介して、ユーザは、1つ以上のタスクがデジタルアシスタントによって実行されるよう要求することができ、それに応答して、デジタルアシスタントは、ユーザ要求タスクを実行し、ユーザに適切な応答で応答してもよい。
【0053】
ユーザ入力110は自然言語であってもよく、発話と呼ばれてもよい。ユーザ発話は、テキスト形式(例えば、ユーザがデジタルアシスタント106への入力として何かをタイプする場合)または聴覚的入力もしくは音声形式(例えば、ユーザが何かをデジタルアシスタント106への入力として言う場合)とすることができる。発話は、典型的には、エンドユーザ108によって話される言語である。ユーザ入力が音声形式である場合、ユーザ入力はその特定の言語のテキスト発話に変換されてもよく、テキスト発話はデジタルアシスタント106によって処理される。様々な音声-テキスト処理技術を用いて、音声または聴覚的入力をテキスト発話に変換してもよく、テキスト発話は、その後、デジタルアシスタント106によって処理される。
【0054】
ユーザによって入力される、または音声入力をテキスト形式に変換することによって生成されるテキスト発話は、テキストフラグメント、文、複数の文などであり得る。デジタルアシスタント106は、テキスト発話に自然言語理解(NLU)技術を適用して、ユーザ入力の意味を理解するように構成される。発話に対するNLU処理の一部として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成され、これは、発話に対応する1つ以上のインテントおよび1つ以上のエンティティを識別することを伴う。発話の意味を理解すると、デジタルアシスタント106は、理解された意味またはインテントに応答して1つ以上のアクションまたは動作を実行することができる。
【0055】
例えば、ユーザ入力は、例えば「私はピザを注文したい」のようにピザが注文されることを要求してもよい。デジタルアシスタント106は、発話の意味を理解し、エンドユーザが注文することを望むピザのタイプ、ピザのサイズ、ピザの任意のトッピングなどに対するユーザ入力を要求する質問でエンドユーザに応答することを伴い得る適切なアクションをとるように構成される。デジタルアシスタント106によって提供される応答はまた、デジタルアシスタント106によって実行される自然言語生成(NLG)処理を含み得る、自然言語の形態であってもよい。デジタルアシスタント106がユーザから必要な情報を得ると、デジタルアシスタント106は、ピザを注文させる。デジタルアシスタント106は、ピザが注文されたことを示す情報を出力することによって、エンドユーザとの会話を終了することができる。
【0056】
特定の実施形態では、デジタルアシスタント106によって入力として受信される発話は、処理ステップの連なりまたはパイプラインを通過する。これらのステップは、例えば、発話を解析すること、発話の意味を理解すること、発話を精査および修正して発話のより理解しやすい構造を展開すること、発話に応答して実行されるアクションを決定すること、アクションを実行させること、ユーザ発話に応答してエンドユーザに出力される応答を生成すること、エンドユーザに応答を出力すること、などを含み得る。
【0057】
デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理は、文解析(例えば、トークン化、並べ換え、文に対する品詞タグの識別、文における固有表現の識別、文構造を表すための依存関係ツリーの生成、文の節への分割、個々の節の分析、照応形の解決、チャンク化の実行など)などの様々なNLP関連処理を含み得る。ある実施形態では、NLU処理またはその一部は、デジタルアシスタント106自体によって実行されてもよい。いくつかの他の実施形態では、デジタルアシスタント106は、他のリソースを用いて、NLU処理の一部を実行することができる。例えば、文の構文および構造は、構文解析、品詞タグ付け、および/または固有表現認識を用いて文を処理することによって識別されてもよい。一実現例では、英語の場合、文構造および構文を解析するために、Stanford Natural Language Processing (NLP) Groupによって提供される構文解析、品詞タグ付け、および/または固有表現認識が用いられる。これらは、Stanford CoreNLPツールキットの一部として提供される。
【0058】
本開示で提供される様々な例は英語の発話を示すが、これは単なる例として意味される。特定の実施形態では、デジタルアシスタント106は、英語以外の言語で発話を処理することもできる。特定の実施形態では、デジタルアシスタント106は、異なる言語を処理するために構成されたサブシステム(例えば、NLU機能を実現するコンポーネント)を提供する。これらのサブシステムは、NLUコアサーバからのサービスコールを用いて呼び出され得るプラグ可能ユニットとして実現されてもよい。これは、NLU処理を、異なる順序の処理を可能にすることを含めて、各言語に対して柔軟かつ拡張可能にする。言語パックは、各それぞれの言語に対して提供されてもよく、言語パックは、NLUコアサーバから提供され得るサブシステムのリストを登録することができ、必要に応じて、提供される汎用サブシステムをも利用することができる。
【0059】
デジタルアシスタント106などのデジタルアシスタントは、限定はしないが、特定のアプリケーション(アプリとも称される)を介して、ソーシャルメディアプラットフォームを介して、様々なメッセージングサービスおよびアプリケーションを介して、ならびに他のアプリケーションまたはチャネルを介してなど、様々な異なるチャネルを介してそのエンドユーザに利用可能にすることができる。単一のデジタルアシスタントは、それのためにいくつかのチャネルを構成することができるので、異なるサービス上で同時に実行され、異なるサービスによって同時にアクセスされることができる。
【0060】
デジタルアシスタントは、1つもしくは複数のスキルを含むか、または1つもしくは複数のスキルに関連付けられる。ある実施形態では、これらのスキルは、エンドユーザと対話し、在庫の追跡、タイムカードの提出、経費報告の作成、食品の注文、銀行口座の確認、予約の作成、ウィジェットの購入などの特定の種類のタスクを満たすように設計された個々のチャットボットである。例えば、
図1に示す実施形態では、デジタルアシスタント106は、スキルボット116-1、116-2、116-3…を含む。上述のように、「スキル」という語は、本開示においては、「スキルボット」という語と同義的に用いられる。
【0061】
デジタルアシスタントに関連付けられる各スキルボットは、エンドユーザとの会話を通じて、デジタルアシスタントのエンドユーザがタスクを完了するのを助け、会話は、エンドユーザによって提供されるテキストまたは聴覚的入力と、スキルボットによって提供される応答との組み合わせを含むことができる。これらの応答は、エンドユーザへのテキストメッセージもしくは聴覚メッセージの形態、および/またはエンドユーザが選択を行うようエンドユーザに提示される単純なユーザインターフェイス要素(たとえば、選択リスト)を用いる形態であってもよい。
【0062】
スキルまたはスキルボットをデジタルアシスタントに追加できる様々な方法がある。ある例では、スキルボットは企業によって開発され、次いでDABP102を用いてデジタルアシスタントに追加され得る。他の例では、スキルボットは、DABP102を用いて開発および作成され、次いで、DABP102を用いて作成されたデジタルアシスタントに追加され得る。さらに他の例では、DABP102は、広範囲のタスクに向けられた複数のスキルを提供するオンラインデジタルストア(「スキルストア」と呼ばれる)を提供する。スキルストアを通じて提供されるスキルは、様々なクラウドサービスを公開することができる。DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択されたスキルを、DABP102を用いて作成されたデジタルアシスタントに追加することができる。スキルストアからのスキルは、そのまま、または修正された形態でデジタルアシスタントに追加することができる。例えば、DABP102のユーザは、スキルストアによって提供される特定のスキルを選択してクローニングし、選択されたスキルボットをカスタマイズまたは修正し、次いで、修正されたスキルボットを、DABP102を用いて作成されたデジタルアシスタントに追加することができる。
【0063】
ある実施形態では、DABP102を用いて作成および展開されるデジタルアシスタントは、マスタボット/子(もしくはサブ)ボットパラダイムまたはアーキテクチャを用いて実現される。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つ以上の子ボットと対話するマスタボットとして実現される。例えば、
図1に示す実施形態では、デジタルアシスタント106は、マスタボット114と、マスタボット114の子ボットであるスキルボット116-1、116-2、116-3などを含む。ある実施形態では、デジタルアシスタント106自体がマスタボットとして機能する。
【0064】
マスタ-子ボットアーキテクチャに従って実現されるデジタルアシスタントは、デジタルアシスタントのエンドユーザが統合されたユーザインターフェイスを介して複数のスキルと対話することを可能にする。エンドユーザがデジタルアシスタントに関与すると、ユーザ入力はマスタボットによって受信され、マスタボットは、ユーザ要求を識別するためにユーザ入力を処理する。処理に基づいて、マスタボットは、ユーザ要求がマスタボット自体によって処理され得るかどうかを判断する。ユーザ要求がマスタボット自体によって処理されなくてもよいと判断されると、マスタボットはユーザ要求を処理するために適切なスキルボットを選択し、選択されたスキルボットに会話をルーティングする。これは、エンドユーザが、共通の単一のインターフェイスを介して、特定のタスクを実行するように構成されたいくつかのスキルボットと対話し、それらを用いることを可能にする。例えば、企業のために開発されたデジタル援助の場合、デジタルアシスタントのマスタボットは、特定の機能を有するスキルボット、たとえば、顧客関係管理に関連する機能を実行するための顧客関係管理(CRM)ボット、企業資源計画に関連する機能を実行するための企業資源計画(ERP)ボット、人的資本管理に関連する機能を実行するための人的資本管理(HCM)ボットなどとインターフェイスしてもよい。このように、デジタルアシスタントのエンドユーザまたは消費者は、デジタルアシスタントにどのようにアクセスするかを知るだけでよい。
【0065】
マスタボット/子ボットインフラストラクチャにおいては、マスタボットは、スキルボットのリストを意識するように構成される。マスタボットは、様々な利用可能なスキルボットを識別するメタデータにアクセスすることができ、各スキルボットについて、各スキルボットによって実行することができるタスクを含む各スキルボットの能力にアクセスすることができる。ユーザ要求を発話の形態で受信すると、マスタボットは、複数の利用可能なスキルボットから、ユーザ要求を最もよく処理もしくは取り扱うことができる特定のスキルボットを識別または予測するように構成される。次いで、マスタボットは、その発話(またはその発話の一部分)を、さらなる処理のために、その特定のスキルボットにルーティングする。従って、制御はマスタボットからスキルボットに流れる。マスタボットは、複数の入力および出力チャネルをサポートすることができる。
【0066】
図1の実施形態は、マスタボット114ならびにスキルボット116-1、116-2、および116-3を備えるデジタルアシスタント106を示すが、これは限定を意図するものではない。デジタルアシスタントは、デジタルアシスタントの機能を提供する様々な他のコンポーネント(例えば、他のシステムおよびサブシステム)を含むことができる。これらのシステムおよびサブシステムは、ソフトウェア(例えば、コンピュータ可読媒体上に記憶され、1つ以上のプロセッサによって実行可能なコード、命令)のみ、ハードウェアのみ、またはソフトウェアとハードウェアとの組み合わせを介して実現されてもよい。
【0067】
DABP102は、DABP102を用いて、デジタルアシスタントに関連付けられる1つ以上のスキルボットを含むデジタルアシスタントを作成することを可能にするインフラストラクチャならびに様々なサービスおよび特徴を提供する。例えば、あるスキルボットは、既存のスキルボットをクローニングし、既存のスキルボットをクローニングし、次いで、スキルボットに修正を施すことによって作成することができ、またはDABP102によって提供されるツールおよびサービスを用いてゼロから作成することができる。ある実施形態では、DABP102は、様々なタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットをクローニングし、新たなスキルボットを作成することができる。
【0068】
DABP102はまた、ユーザ(例えば、スキルボット設計者)がゼロからスキルボットを作成することを可能にする。特定の実施形態では、ある高次レベルにおいて、スキルボットを作成することは、以下の動作を含む:
(1)新たなスキルボットに対する設定を設定する
(2)スキルボットに対する1つ以上のインテントを設定する
(3)1つ以上のインテントに対するエンティティを設定する
(4)スキルボットをトレーニングする
(5)スキルボットのためのダイアログフローを作成する
(6)カスタムコンポーネントをスキルボットに追加する、および
(7)スキルボットをテストおよび展開する。
【0069】
(1)新たなスキルボットに対する設定を設定する-スキルボット設計者は、作成されているスキルボットの1つ以上の呼び出し名を指定することができる。これらの呼び出し名は、デジタルアシスタントにおいてスキルボットを明示的に識別し、呼び出すよう、発話において用いることができる。スキルボット設計者は、スキルボットに対して、例示的な発話を指定することもできる。これらの例示的な発話は、スキルボットに対する発話を表す。ユーザ入力が受信されると、デジタルアシスタントのインテント分析エンジンは、ユーザ入力をこれらの例示的な発話と比較し、特定のスキルボットが呼び出されるかどうかを判断する。
【0070】
(2)スキルボットに対する1つ以上のインテントを設定する-スキルボット設計者は、作成されているスキルボットに対する1つ以上のインテント(ボットインテントとも称される)を設定することができる。これらのインテントは、スキルボットがデジタルアシスタントのエンドユーザに対して実行することができるタスクを識別する。各インテントには名前が与えられる。例えば、ユーザが様々な銀行取引を行うのに役立つように構成されたスキルボットの場合、スキルボットの設計者は、「残高照会」、「送金」、「小切手を預け入れ」などのインテントをスキルボットに対して指定することができる。各インテントについて、スキルボット設計者は、インテントの意味を表しかつ示し、典型的には、そのインテントによって実行されるタスクに関連付けられる例示的な発話のセットを指定する。例えば、「残高照会」インテントについては、例示的な発話は、「What's my savings account balance?(私の普通預金口座の残高は?)」、「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」、「How much money do I have in my account(私の口座にはいくらのお金がありますか?)」などを含むことができる。典型的なユーザ要求およびステートメントの順列も、インテントに対する例示的な発話として指定され得る。
【0071】
(3)スキルボットの1つ以上のインテントに対するエンティティを設定する-いくつかの事例では、スキルボットがユーザ要求に適切に応答することを可能にするために、追加のコンテキストが必要であり得る。例えば、2つ以上のユーザ入力発話が、スキルボットにおいて同じインテントに解決する状況があり得る。例えば、上記の例では、発話「What's my savings account balance?(私の普通預金口座の残高は?)」および「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」は両方とも、同じ「残高照会」インテントに解決しているが、これらの発話は、異なることを望む異なる要求である。そのような要求を明確にするために、1つ以上のエンティティがインテントに追加される。銀行業務スキルの例を用いると、エンティティは、「checking(当座)」および「saving(普通)」と呼ばれる値を定義する「口座種類」と呼ばれるエンティティは、スキルボットがユーザ要求を解析し、適切に応答することを可能にし得る。1つ以上のエンティティは、スキルボットに対して設定された特定のインテントのために指定され得る。したがって、エンティティは、コンテキストをインテント自体に追加するために用いられる。エンティティは、インテントをより充分に記述するのに役立ち、スキルがユーザ要求を完了できるようにする。ある実施形態では、2種類のエンティティ、すなわち、(a)DABP102によって提供される組込みエンティティ、および(2)スキルボット設計者によって指定され得るカスタムエンティティがある。組込みエンティティは、多種多様なボットとともに用いることができる汎用エンティティである。組込みエンティティの例は、限定はしないが、時間、日付、アドレス、番号、電子メールアドレス、持続時間、循環期間、通貨、電話番号、URLなどに関連するエンティティを含む。カスタムエンティティは、よりカスタマイズされた用途に用いられる。例えば、銀行業務スキルについては、「口座種類」エンティティは、スキルボット設計者によって、当座、普通およびクレジットカードなどのようなキーワードについてユーザ入力をチェックすることによって様々な銀行取引を可能にするよう定義され得る。
【0072】
(4)スキルボットをトレーニングする-スキルボットは、ユーザ入力を受信し、受信したユーザ入力を解析またはその他の方法で処理し、受信したユーザ入力に関連するインテントを識別または選択するように構成される。これが生じるためには、スキルボットをトレーニングしてもよい。ある実施形態では、スキルボットは、スキルボットに対して設定されたインテント、およびそのインテントに関連付けられる例示的な発話(集合的にトレーニングデータと称する)に基づいてトレーニングされ、それにより、スキルボットは、ユーザ入力を、スキルボットの設定されたインテントの1つに解決することができる。特定の実施形態では、スキルボットは、トレーニングデータを用いてトレーニングされ、エンドユーザが何を言っているか(または場合によっては、何を言おうとしているか)をスキルボットが識別することを可能にするモデルによって表される。DABP102は、様々な機械学習ベースのトレーニング技術、ルールベースのトレーニング技術、および/またはそれらの組み合わせを含む、スキルボットをトレーニングするためにスキルボット設計者によって用いられ得る様々な異なるトレーニング技術を提供する。ある実施形態では、トレーニングデータの一部分(例えば80%)は、スキルボットモデルをトレーニングするために用いられ、別の部分(例えば残りの20%)は、モデルをテストまたは検証するために用いられる。トレーニングされると、スキルボットは、ユーザ発話に対処および応答するよう用いられ得る。ある場合には、ユーザの発話は、単一の回答だけを必要とし、さらなる会話を必要としない質問であり得る。このような状況に対処するために、スキルボットに対してQ&A(質疑応答)インテントを設定することができる。これは、スキルボットがダイアログ定義を更新する必要なしにユーザ要求に対する返答を出力することを可能にする。Q&Aインテントは、通常のインテントと同様に生成される。しかしながら、Q&Aインテントのためのダイアログフローは、通常のインテントとは異なる。
【0073】
(5)スキルボットのためのダイアログフローを作成する-スキルボットに対して指定されるダイアログフローは、スキルボットに対する異なるインテントが受信したユーザ入力に応じて解決される際にスキルボットがどのように反応するかを記述する。ダイアログフローは、スキルボットがとる動作またはアクション(例えば、スキルボットがどのようにユーザ発話に応答するか、スキルボットがどのようにユーザに入力を促すか、スキルボットがどのようにデータを返すか等)を定義する。ダイアログフローは、スキルボットが辿るフローチャートのようなものである。スキルボット設計者は、マークダウン言語などの言語を用いてダイアログフローを指定する。ある実施形態では、OBotMLと呼ばれるYAMLのバージョンを用いて、スキルボットのためのダイアログフローを指定することができる。スキルボットのためのダイアログフロー定義は、スキルボット設計者に、スキルボットとスキルボットが対応するエンドユーザとの間の対話のコレオグラフィを行わせる、会話自体のモデルとして働く。
【0074】
ある実施形態では、ダイアログフロー定義は、以下の3つのセクションを含む:
(a)コンテキストセクション;
(b)デフォルト遷移セクション;および
(c)状態のセクション。
【0075】
コンテキストセクション-スキルボット設計者は、コンテキストセクションにおいて、会話フローで用いられる変数を定義することができる。コンテキストセクションで指名され得る他の変数は、限定されないが、エラー処理のための変数、組込みエンティティまたはカスタムエンティティのための変数、スキルボットがユーザ選好を認識および持続することを可能にするユーザ変数などを含む。
【0076】
デフォルト遷移セクション-スキルボットの遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクションで定義することができる。デフォルト遷移セクションで定義される遷移は、フォールバックとして作用し、状態内に定義される適用可能な遷移がない場合または状態遷移をトリガするために必要な条件を満たせない場合にトリガされる。デフォルト遷移セクションは、スキルボットが予想外のユーザアクションをそつなく処理することを可能にするルーティングを定義するために用いられ得る。
【0077】
状態セクション-ダイアログフローおよびその関連動作は、ダイアログフロー内の論理を管理する一連の一時的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログのその点において必要とされる機能を提供するコンポーネントを指名する。このようにして、コンポーネントの周囲に状態を構築する。状態は、コンポーネント固有の特性を含み、コンポーネントが実行された後にトリガされる他の状態への遷移を定義する。
【0078】
特別なケースのシナリオは、状態セクションを用いて取り扱うことができる。例えば、エンドユーザが取りかかっている第1のスキルを一時的に出て、デジタルアシスタント内で第2のスキルにおいて何かを行うというオプションを、エンドユーザに与えたい場合があるかもしれない。一例では、エンドユーザがショッピングスキルとの会話に関わっている(例えば、ユーザは、購入のために何らかの選択を行った)場合、エンドユーザは、銀行業務スキルにジャンプし(例えば、エンドユーザは、その購入に十分な金額を有することを確かめたい場合がある)、その後、エンドユーザの注文を完了するためにショッピングスキルに戻ることを望む場合がある。これに対処するために、第1のスキルにおけるアクションは、同じデジタルアシスタントにおいて第2の異なるスキルとの対話を開始し、次いで元のフローに戻るように構成されることができる。
【0079】
(6)カスタムコンポーネントをスキルボットに追加する-上述のように、スキルボットのためにダイアログフローにおいて指定される状態は、その状態に対して必要とされる機能を提供するコンポーネントを指名する。コンポーネントは、スキルボットが機能を実行することを可能にする。ある実施形態では、DABP102は、広範囲の機能を実行するための事前設定されたコンポーネントのセットを提供する。スキルボット設計者は、これらの事前設定されたコンポーネントのうちの1つ以上を選択し、それらをスキルボットのためのダイアログフロー内の状態と関連付けることができる。スキルボット設計者はまた、DABP102によって提供されるツールを用いてカスタムまたは新たなコンポーネントを作成し、カスタムコンポーネントをスキルボットのためのダイアログフロー内の1つ以上の状態と関連付けることができる。
【0080】
(7)スキルボットをテストおよび展開する-DABP102は、スキルボット設計者が開発中のスキルボットをテストすることを可能にするいくつかの特徴を提供する。次いで、スキルボットは、デジタルアシスタントにおいて展開され、それに含めることができる。
【0081】
上記の説明は、スキルボットをどのように作成するかについて説明しているが、同様の技術を用いて、デジタルアシスタント(またはマスタボット)を作成することもできる。マスタボットまたはデジタルアシスタントレベルでは、デジタルアシスタントのために組込みシステムインテントを設定することができる。これらの組込みシステムインテントは、デジタルアシスタント自体(すなわち、マスタボット)が、デジタルアシスタントに関連付けられるスキルボットを呼び出すことなく取り扱うことができる一般的なタスクを識別するために用いられる。マスタボットのために定義されるシステムインテントの例は、(1)出口:エンドユーザがデジタルアシスタントにおいて現在の会話またはコンテキストを終了することを望むことを知らせるときに当てはまる;(2)ヘルプ:エンドユーザが支援またはオリエンテーションを要求するときに当てはまる;および(3)未解決のインテント:出口インテントおよびヘルプインテントと上手く一致しないユーザ入力に当てはまる、を含む。デジタルアシスタントはまた、デジタルアシスタントに関連付けられる1つ以上のスキルボットに関する情報を記憶する。
【0082】
マスタボットまたはデジタルアシスタントレベルでは、エンドユーザがデジタルアシスタントにフレーズまたは発話を入力すると、デジタルアシスタントは、会話をどのようにルーティングするかを判断する処理を行うように構成される。デジタルアシスタントは、ルールベース、人工知能ベース、またはそれらの組み合わせとすることができるルーティングモデルを用いて、これを判断する。デジタルアシスタントは、ルーティングモデルを用いて、ユーザ入力に対応する会話が、処理のために特定のスキルにルーティングされるべきか、組込みシステムインテント基づいてデジタルアシスタントまたはマスタボット自体によって処理されるべきか、または現在の会話フローにおいて異なる状態として処理されるべきかを判断する。
【0083】
特定の実施形態では、この処理の一部として、デジタルアシスタントは、ユーザ入力が、スキルボットを、その呼び出し名を用いて識別するかどうかを判断する。ユーザ入力に存在する呼出し名が、呼び出し名に対応するスキルボットの明示的な呼び出しとして扱われてもよい。そのようなシナリオでは、デジタルアシスタントは、ユーザ入力を、さらなる処理のために、明示的に呼び出されたスキルボットにルーティングすることができる。特定の呼び出しがない場合、ある実施形態では、デジタルアシスタントは、受信されたユーザ入力を評価し、システムインテントおよびデジタルアシスタントに関連付けられるスキルボットについて信頼度スコアを計算する。スキルボットまたはシステムインテントについて計算されるスコアは、ユーザ入力が、スキルボットが実行するように構成されるタスクを表すかまたはシステムインテントを表す可能性を表す。関連付けられる計算された信頼度スコアが閾値(例えば、信頼度閾値ルーティングパラメータ)を超えるシステムインテントまたはスキルボットは、さらなる評価の候補として選択される。次いで、デジタルアシスタントは、識別された候補から、ユーザ入力のさらなる処理のために、特定のシステムインテントまたはスキルボットを選択する。特定の実施形態では、1つ以上のスキルボットが候補として識別された後、それらの候補スキルに関連付けられるインテントが(各スキルに対するインテントモデルに従って)評価され、信頼度スコアが各インテントに適用される。一般に、閾値を超える信頼度スコアを有するインテントは、候補フローとして扱われる。特定のスキルボットが選択された場合、ユーザ入力は、さらなる処理のために、そのスキルボットにルーティングされる。システムインテントが選択された場合、選択されたシステムインテントに従って1つ以上のアクションが実行される。
【0084】
上記のように、スキル(ボット、チャットボット、チャターボット、スキルボットまたはトークボットとも称される)は、エンドユーザとの会話を実行することができるコンピュータプログラムである。ボットは一般に、自然言語メッセージを用いるメッセージングアプリケーションを通じて自然言語メッセージ(例えば質問またはコメント)に応答することができる。企業は、1つ以上のボットシステムを用いて、メッセージングアプリケーションを通じてエンドユーザと通信し得る。メッセージングアプリケーションは、チャネルと呼ばれることもあり、エンドユーザが既にインストールし、慣れ親しんでいる、エンドユーザの好みのメッセージングアプリケーションであり得る。したがって、エンドユーザは、ボットシステムとチャットするためにプログラミング言語を学習し、新たなアプリケーションをダウンロードおよびインストールする必要がない。メッセージングアプリケーションは、例えば、オーバーザトップ(OTT)メッセージングチャネル(例えば、Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack,またはSMS)、バーチャルプライベートアシスタント(例えば、Amazon Dot, Echo,またはShow, Google(登録商標) Home, Apple HomePodなど)、チャット機能を有するネイティブもしくはハイブリッド/応答モバイルアプリもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリ拡張、または音声ベースの入力(例えば、Siri, Cortana, Google Voice、または対話のための他の音声入力を用いるインターフェイスを有するデバイスもしくはアプリ)を含むことができる。
【0085】
いくつかの例では、ボットシステムは、統一資源識別子(URI)に関連付けられ得る。URIは、文字列を用いてボットシステムを識別することができる。URIは、1つ以上のメッセージングアプリケーションシステムのためのウェブフックとして用いられ得る。URIは、例えば、統一資源位置指定子(URL)または統一資源名(URN)を含むことができる。ボットシステムは、メッセージングアプリケーションシステムからメッセージ(例えば、ハイパーテキスト転送プロトコル(HTTP)ポストコールメッセージ)を受信するように設計されてもよい。HTTPポストコールメッセージは、メッセージングアプリケーションシステムからURIに向けられてもよい。いくつかの実施形態では、メッセージはHTTPポストコールメッセージとは異なり得る。例えば、ボットシステムは、ショートメッセージサービス(SMS)からメッセージを受信し得る。ここにおける議論は、ボットシステムがメッセージとして受信する通信に言及し得るが、当業者であれば、メッセージは、HTTPポストコールメッセージ、SMSメッセージ、または2つのシステム間の任意の他のタイプの通信であり得ることが理解されるべきである。
【0086】
エンドユーザは、人々間の対話のように、会話による対話(会話によるユーザインターフェイス(UI)と呼ばれることもある)を通じてボットシステムと対話することができる。場合によっては、対話は、エンドユーザがボットに「Hello(こんにちは)」と言い、ボットが「Hi(やあ)」と応答し、エンドユーザをどのように支援できるかをエンドユーザに問い合わせることを含んでもよい。場合によっては、対話はまた、例えば、ある口座から別の口座へ送金するなど、銀行業務ボットとの取引対話であってもよい。対話はまた、たとえば、バケーションバランスのチェックなど、人事(HR)ボットとの情報対話であってもよい。対話は、例えば、購入した商品を返品するもしくは技術的サポートを求める議論など、小売店ボットとの対話であってもよい。
【0087】
いくつかの実施形態では、ボットシステムは、ボットシステムの管理者または開発者との対話なしにエンドユーザ対話を知的に扱うことができる。例えば、エンドユーザは、所望の目標を達成するために、ボットシステムに1つ以上のメッセージを送信してもよい。メッセージは、テキスト、絵文字、オーディオ、画像、ビデオ、またはメッセージを伝達する他の方法など、あるコンテンツを含み得る。いくつかの実施形態では、ボットシステムは、コンテンツを標準化された形式(例えば、適切なパラメータを有する企業サービスに対するrepresentational state transfer(REST)コール)に変換し、自然言語応答を生成することができる。ボットシステムはまた、追加の入力パラメータをエンドユーザに促すか、または他の追加の情報を要求することもできる。いくつかの実施形態では、ボットシステムはまた、エンドユーザ発話に受動的に応答するのではなく、エンドユーザとの通信を開始してもよい。
【0088】
ボットとの会話は、複数の状態を含む特定の会話フローに従うことができる。フローは、入力に基づいて次に起こるものを定義することができる。いくつかの実施形態では、ユーザが定義した状態(例えば、エンドユーザのインテント)と、状態において、または状態から状態にとるべきアクションとを含む状態機械を用いて、ボットシステムを実現することができる。会話は、エンドユーザ入力に基づいて異なる経路をとることができ、これは、ボットがフローについて行う決定に影響を及ぼし得る。例えば、各状態において、エンドユーザ入力に基づいて、ボットは、エンドユーザのインテントを判断して、次にとるべき適切なアクションを決定することができる。
【0089】
インテントは、エンドユーザが達成したい目標を含んでもよい。インテントは、エンドユーザ入力を、バックエンドシステムがエンドユーザに対して実行し得るアクションにマッピングする。したがって、エンドユーザによって自然言語で発話されたフレーズに基づいて、ボットは、エンドユーザ発話を、ピザを注文すること、口座残高を得ること、送金すること、購入を行うこと、返品を行うことなどの特定のユースケースまたはジョブにマッピングしてもよい。人の会話は、本質的に非線形であることが多い。エンドユーザは、会話中に異なる状態に分岐することが多い場合がある。例えば、エンドユーザが口座Aから受取人に資金を移転することを望む場合、エンドユーザは、例えば、ボットに、夕食のために受取人に支払うように求めることによって、ボットシステムとの会話を開始してもよい。ボットは、例えば、「どの口座から?」と応答してもよい。エンドユーザは、当座預金口座を選択してもよいが、その場合、口座内の残高について確信がないことを認識するかもしれない。したがって、エンドユーザは、コンテキストを切り替えて、残高および最近の取引等を尋ねてもよい。言い換えれば、エンドユーザは、例えば、送金から残高確認、次いで最近の取引に、フローおよび状態の変化をトリガしてもよい。ある時点で、エンドユーザは、元のインテント-受取人に支払う-に戻ることを判断してもよい。したがって、ボットシステムの1つのタスクは、自然言語発話からエンドユーザのインテントを動的に判断することである。
【0090】
ボットは、エンドユーザ発話を特定のインテントにマッピングするために、自然言語処理(NLP)エンジンおよび/または機械学習モデル(たとえば、インテント分類器)を使用してもよい。例えば、機械学習ベースのNLPエンジンは、エンドユーザからの自然言語会話を理解および分類し、会話から必要な情報を抽出し、トランザクションを行うこと、またはレコードのバックエンドシステムからデータを検索すること等の正確なアクションをとることができるように学習してもよい。
【0091】
図2は、ある実施形態による、メッセージングアプリケーションを使用してエンドユーザと通信するためにボットシステムを実現する分散型システム200を示す。システム200は、ボットシステム220と、1つ以上のメッセージングアプリケーションシステム215と、1つ以上のモバイルデバイス210等の1つ以上のエンドユーザデバイスとを含んでもよい。いくつかの例では、メッセージングアプリケーションは、電子デバイス(例えば、デスクトップコンピュータ、ラップトップ、モバイルデバイス210など)にインストールされてもよい。ここでの議論は、モバイルデバイスおよびメッセージングアプリケーションを参照するが、当業者は、任意の電子デバイスが使用されてもよく、FACEBOOK(登録商標)メッセンジャ、WHATSAPP(登録商標)インスタントメッセージングソフトウェア、WECHAT(登録商標)モバイルテキストおよび音声メッセージング通信サービス、KIK(登録商標)メッセンジャ、TELEGRAM(登録商標)メッセンジャ、SKYPE MOBILE(登録商標)メッセンジャ、ショートメッセージサービス(SMS)、またはエンドユーザが通信するためのプラットフォームを提供する任意の他のメッセージングアプリケーション等の、任意のメッセージングプラットフォームまたはメッセージングアプリケーションが使用されてもよいことを認識するであろう。他の例では、メッセージングアプリケーションは、モバイルデバイス210にインストールされたブラウザ(例えば、GOOGLE CHROME(登録商標)ブラウザ、MOZILLA(登録商標)FIREFOX(登録商標)ブラウザ、INTERNET EXPLORERブラウザ)を通じて実行されてもよい。いくつかの実施形態では、2つ以上のメッセージングアプリケーションが、2つ以上のメッセージングプラットフォーム(2つ以上のメッセージングアプリケーションシステム215等)を通して通信するために、エンドユーザデバイス上にインストールされてもよい。
【0092】
メッセージングアプリケーションは、メッセージングアプリケーションシステム215などのメッセージングプラットフォームによって容易にされてもよい。モバイルデバイス210は、第1のネットワーク(たとえば、インターネット)によってメッセージングアプリケーションシステム215に接続されてもよい。メッセージングアプリケーションシステム215は、Facebook、Tencent、Google、Microsoftなどの第三者によって提供されるメッセージングプラットフォームであってもよい。メッセージングアプリケーションシステム215は、複数のモバイルデバイスまたは他のエンドユーザデバイスにわたってメッセージングアプリケーションを通じて送受信されるコンテンツを管理してもよい。
【0093】
(例えば、1つ以上のサーバ上に実現される)ボットシステム220も、メッセージングアプリケーションシステム215に通信可能に接続されて、メッセージを送受信してもよい。メッセージングアプリケーションシステム215とボットシステム220との間の通信は、第2のネットワーク(例えばインターネット)を介してもよい。第1のネットワークおよび第2のネットワークは、同じネットワークであってもよく、またはそれらは、類似もしくは完全に異なるネットワークであってもよい。メッセージングアプリケーションシステム215は、インターネットを使用してモバイルデバイス210からボットシステム220にコンテンツ(例えば、メッセージまたはメッセージからの情報)をルーティングしてもよい。いくつかの実施形態では、コンテンツの宛先(例えば、ボットシステム220の識別情報)は、名目アドレス先としてコンテンツに含まれてもよい。いくつかの実施形態では、ボットシステム220も、2つ以上のメッセージングアプリケーションシステム215と通信するよう構成されてもよい。
【0094】
前述のように、エンドユーザ間またはエンドユーザとボットシステムとの間で交換されるコンテンツは、例えば、テキスト、絵文字、音声、媒体(例えば、画像、動画、リンク)、またはメッセージを伝達する任意の他の方法を含んでもよい。例えば、FACEBOOK(登録商標)メッセンジャからボットシステム220によって受信されるメッセージの例は、以下を含んでもよい:
【0095】
【0096】
ボットシステム220は、メッセージングアプリケーションシステム215とボットシステム220との間のインターフェイスとして機能するコネクタ230を使用してメッセージングアプリケーションシステム215からコンテンツを受信してもよい。いくつかの実施形態では、コネクタ230は、ボットシステム220が異なるメッセージングアプリケーションシステムにわたってコンテンツを分析し得るように、メッセージングアプリケーションシステム215からのコンテンツを正規化してもよい。コンテンツ正規化処理は、各タイプのメッセージングアプリケーションからのコンテンツを処理のために共通フォーマットにフォーマットすることを含んでもよい。いくつかの実施形態では、ボットシステム220は、メッセージングアプリケーション(例えば、FACEBOOK(登録商標)メッセンジャ、WHATSAPP(登録商標)インスタントメッセージングソフトウェア、WECHAT(登録商標)モバイルテキストおよび音声メッセージング通信サービス、KIK(登録商標)メッセンジャ、TELEGRAM(登録商標)メッセンジャ、およびSKYPE MOBILE(登録商標)メッセンジャ、ショートメッセージサービス(SMS))の各々について1つ以上のコネクタを含んでもよい。いくつかの実現例では、コネクタ230は、コンテンツをメッセージインキュー240にルーティングしてもよい。メッセージインキュー240は、受信された順序でコンテンツを記憶するバッファ(例えば先入れ先出し(FIFO)バッファ)を含んでもよい。いくつかの実施形態では、各コネクタ230は、1つ以上のメッセージインキューに関連付けられてもよい。
【0097】
メッセージインキュー240は、メッセージプロセッサ250が利用可能になると、メッセージプロセッサ250にコンテンツを送信してもよい。いくつかの実施形態では、メッセージプロセッサ250は、メッセージインキュー240からコンテンツをプルしてもよい。メッセージプロセッサ250は、以下で詳細に説明されるように、メッセージを構文解析し、構文解析されたメッセージのインテントを判断してもよい。いくつかの実施形態では、メッセージプロセッサ250は、自然言語プロセッサ252およびインテント判断サブシステム254を含んでもよい。自然言語プロセッサ252は、メッセージを構文解析し、主語、述語(たとえば、アクション)、および/または目的語を識別するなど、特定の意味解析を実行してもよい。インテント判断サブシステム254は、構文解析されたメッセージに基づいてエンドユーザインテントを判断してもよい。上述したように、インテントはメッセージの目的を含んでもよい。例えば、メッセージの目的は、ピザを注文すること、コンピュータに命令すること、送金すること、配達に関して質問することなどであってもよい。いくつかの実施形態では、エンティティと称されてもよい、取るべきアクションをより具体的に定義または明確化する、インテントと関連付けられるパラメータも、自然言語プロセッサ252および/またはインテント判断サブシステム254によって、メッセージから抽出されてもよい。
【0098】
エンドユーザインテントがメッセージプロセッサ250によってコンテンツに基づいて判断された後、判断されたインテント(およびインテントに関連付けられるパラメータ)は、アクションエンジン260に送信されてもよい。アクションエンジン260は、上述のように、インテント(およびインテントに関連付けられるパラメータ)ならびに上記の状態機械の現在の状態(またはコンテキスト)に基づいて、実行するアクションを判断するために、使用されてもよい。たとえば、アクションエンジン260は、あるアウトバウンドコンテンツをメッセージアウトキュー270に応答として送信してもよく、および/または企業サービス225などのなんらかの企業サービスにコマンドを送信してもよく、もしくははなんらかの企業サービスから情報を取り出してもよい。メッセージアウトキュー270は、アウトバウンドコンテンツをコネクタ230に送信してもよい。次いで、コネクタ230は、アクションエンジン260によって示されるメッセージングアプリケーションシステムにアウトバウンドコンテンツを送信してもよく、そのメッセージングアプリケーションシステムは、メッセージングアプリケーションシステム215と同じであっても異なっていてもよい。次いで、メッセージングアプリケーションシステム215は、アウトバウンドコンテンツをモバイルデバイス210上のメッセージングアプリケーションに転送してもよい。
【0099】
ボットシステム220は、1つ以上の企業サービス(例えば企業サービス225)、ボットシステム220によって受信されたメッセージを記憶および/もしくは分析するための1つ以上の記憶システム、またはコンテンツをボットシステム220に提供するためのコンテンツシステムと通信してもよい。企業サービス225は、コネクタ230、アクションエンジン260、またはそれらの任意の組合せのうちの1つ以上と通信してもよい。企業サービス225は、メッセージングアプリケーションシステム215と同様の態様でコネクタ230と通信してもよい。企業サービス225は、コンテンツを、1人以上のエンドユーザに関連付けられるように、コネクタ230に送信してもよい。企業サービス225はまた、ボットシステム220に、エンドユーザに関連付けられるアクションを実行させるために、コネクタ230にコンテンツを送信してもよい。アクションエンジン260は、企業サービス225と通信して、企業サービス225から情報を取得し、および/またはアクションエンジン260によって識別されたアクションを行うように企業サービス225に命令してもよい。
【0100】
いくつかの実施形態では、ボットシステム220は、1つ以上のタイマを含んでもよい。あるタイマは、ある時間量が経過した後に、アクションエンジン260に、コネクタ230およびメッセージングアプリケーションシステム215を使用してコンテンツをエンドユーザに送信させてもよい。いくつかの実施形態では、あるタイマは、エンドユーザまたは企業サービス225と同様に、ボットシステム220にコンテンツを送信してもよい。例えば、タイマは、エンドユーザからのメッセージが分析されるであろうように分析されるよう、メッセージをボットシステム220に送信してもよい。
【0101】
1つの特定の実施形態では、エンドユーザは、モバイルデバイス210を使用してメッセージングアプリケーションシステム215を介してボットシステム220にメッセージを送信してもよい。メッセージは、「今日は」または「やあ」などの挨拶を含んでもよい。ボットシステムは、新たな会話がエンドユーザと開始したと判断し、状態機械を開始してもよい。いくつかの実施形態では、ボットシステムは、エンドユーザの1つ以上の特性を識別してもよい。例えば、ボットシステムは、メッセージングアプリケーションシステム上でエンドユーザに関連付けられるプロファイルを使用してエンドユーザの名前を識別してもよい。1つ以上の特性を使用して、ボットシステムは、メッセージングアプリケーション上でエンドユーザに応答してもよい。応答は、エンドユーザから受信したメッセージに応答する、エンドユーザへのメッセージを含んでもよい。例えば、応答は、「こんにちは、トム、ご用件は何ですか?」などの、エンドユーザの名前を伴う挨拶を含んでもよい。ボットシステムに関連付けられる企業に応じて、ボットシステムは、企業の目標を達成するように進行してもよい。例えば、ボットシステムがピザ配送企業に関連付けられている場合、ボットシステムは、エンドユーザがピザを注文したいかどうかを尋ねるメッセージをエンドユーザに送信してもよい。ボットシステムとエンドユーザとの間の会話は、そこから、行きつ戻りつ、ボットシステムが会話を完了するまで、またはエンドユーザがボットシステムへの応答を停止するまで、継続してもよい。
【0102】
いくつかの実施形態において、ボットシステムは、エンドユーザとの会話を開始してもよい。ボットシステムによって開始される会話は、エンドユーザとの以前の会話に応答してもよい。例えば、エンドユーザは、以前の会話においてピザを注文してもよい。次いで、ボットシステムは、ピザの準備ができると、会話を開始してもよい。いくつかの実施形態では、ボットシステムは、ボットシステムに関連付けられる企業から指示が受信される(例えば、従業員が、ピザの準備ができたというメッセージをボットシステムに送信する)と、ピザの準備ができた、と判断してもよい。会話は、ピザの準備ができたことを示す、エンドユーザに送信されるメッセージを含んでもよい。
【0103】
いくつかの実施形態では、ボットシステムは、以前のメッセージが受信されたメッセージングアプリケーションとは異なるメッセージングアプリケーション上でエンドユーザにメッセージを送信してもよい。例えば、ボットシステムは、FACEBOOK(登録商標)メッセンジャではなくショートメッセージサービス(SMS)を使用してメッセージを送信するよう判断してもよい。そのような実現例では、ボットシステムは、複数のメッセージングアプリケーションを統合してもよい。
【0104】
いくつかの実施形態では、ボットシステムは、タイマに基づいて会話を開始することを判断してもよい。例えば、ボットシステムは、ピザが注文された後にエンドユーザのために1週間タイマを有するよう判断してもよい。1週間タイマの満了は、ボットシステムに、別のピザを注文することについてのエンドユーザとの新たな会話を開始させてもよい。タイマは、企業によって設定され、ボットシステムによって実現されてもよい。
【0105】
上記で説明したように、いくつかの実施形態では、アクションエンジン260は、いくつかの企業サービス225にコマンドを送信するか、またはいくつかの企業サービスから情報を取り出してもよい。例えば、ボットシステム220(より具体的には、メッセージプロセッサ250)が残高を確認するインテントを判断すると、ボットシステム220は、いくつかの口座(例えば、当座預金口座または普通預金口座)のうちのどれが残高を確認されるかを判断してもよい。エンドユーザが「私の普通預金口座の残高はいくらですか」と入力する場合、ボットシステム220は、「普通預金」を抽出し、残高を確認するためのコマンドを銀行サーバに送信し、次いで、受信した残高情報をメッセージを介してエンドユーザに送信してもよい。エンドユーザが最初に「私の口座の残高はいくらですか」とだけ行った場合、ボットシステム220は、エンドユーザに特定の口座をさらに指定するよう促すメッセージエンドユーザに送信してもよく、またはエンドユーザのすべての口座についての情報を検索し、その口座をエンドユーザに送信して、エンドユーザに選択させてもよい。
【0106】
いくつかの実施形態では、ボットシステムは、会話間の情報を維持してもよい。その情報は、エンドユーザとボットシステムとの間で新たな会話が開始されるたびにボットシステムが何らかの質問をする必要がないように、後で使用されてもよい。例えば、ボットシステムは、エンドユーザによるピザの、以前の注文に関する情報を記憶してもよい。新たな会話において、ボットシステムは、エンドユーザが前回と同じ注文を望むかどうかを尋ねるメッセージをエンドユーザに送信してもよい。
【0107】
いくつかの実施形態において、ボットシステム220は、エンドユーザに関連付けられる情報をキャッシュに記憶してもよい。キャッシュは、アウトバウンドメッセージがコネクタ230からメッセージングアプリケーションシステムに送信された後に情報を保存するためにデータベースに書き込んでもよい。他の実施形態では、キャッシュは、異なる時間(例えば、特定のイベントの後、各イベントの後、ある時間量の後、またはデータベースにいつ書き込むべきかを判断するための任意の他のメトリック)にデータを書き込んでもよい。
【0108】
ボットシステム220は、減速が識別されると、各コンポーネントがスケーリングされることを可能にしてもよい。例えば、ボットシステム220が、コネクタ230に到着しているメッセージの数が閾値を超える、と識別する場合、追加の1つ以上のコネクタがコネクタ230に追加されてもよい。加えて、メッセージインキュー、メッセージプロセッサ、アクションエンジンのインスタンス、およびメッセージアウトキューの数を、減速が生じる場所に応じて、増加してもよい。そのような実現例では、追加のコンポーネントを、他の追加のコンポーネントを追加する必要なく、追加してもよい。例えば、アクションエンジンの追加のインスタンスを追加する必要なく、コネクタを追加してもよい。いくつかの実現例では、ボットシステム220の1つ以上のコンポーネントまたはコンポーネントの一部分は、仮想マシン上で実行されてもよい。仮想マシン上で実行することによって、追加の仮想マシンが所望に応じて起動されてもよい。
【0109】
上記のように、エンドユーザ発話に基づいてエンドユーザのインテントを判断することができるユーザインテント分類エンジンのようなボットシステムを構築することは、部分的には、自然言語の微妙さおよび曖昧さ、ならびに入力空間の次元(例えば、可能性のあるエンドユーザ発話)および出力空間のサイズ(インテントの数)のため、困難なタスクである。したがって、ボットシステムの性能およびボットシステムとのユーザ体験を改善するために、新たなボットシステムを監視、デバッグ、および修正する必要がある場合がある。多くの場合、ボットシステムの所望の性能よりも低い性能の根本原因をより具体的に特定し、分析または最適化ツールを使用することなくボットシステムを改善する方法を判断することは困難である場合がある。
【0110】
いくつかの状況では、ボット所有者、開発者、または管理者は、ボットを改善するために、ボットの動作ステータスを監視し、ボットがどのように使用されているか、およびエンドユーザがどこでボットを放棄したかを理解したい場合がある。例えば、ボット所有者、開発者、または管理者は、ボットシステムの性能不足の要素を識別および診断するために、どのボット会話が成功し、どのボット会話が成功していないかを知りたい場合がある。
【0111】
いくつかの実施形態において、分析システムは、ボットシステムと統合されてもよい。分析システムは、エンドユーザとボットシステムとの間の会話中に発生したイベントを監視し、収集されたイベントを集約および分析し、すべての会話、会話の異なるカテゴリ、および個々の会話など、異なる一般化レベルでグラフィックユーザインターフェイス上でグラフィカルに会話に関する情報を提供してもよい。たとえば、グラフィックユーザインターフェイスは、あるタイプの会話もしくは個々の会話をフィルタリングまたは選択するためのオプションを表示し、たとえば会話の経路を視覚化することによって、選択された情報をグラフィカルに表示してもよい。分析システムはまた、ボットシステムを改善するための提案、オプション、または他の情報を提供してもよい。
【0112】
図3は、ある実施形態による、(ボットシステム220のような)ボットシステム、ならびにボットシステムの性能を監視、分析、可視化、および改善するためのボット分析システムを含む、統合されたシステム300を示す。図示のように、ボットシステムは、コネクタ330と、ダイアログエンジン312、インテントモデラ314、エンティティリゾルバ316、およびカスタムコンポーネント318などの複数のボットエンジン310とを含み得る。ボットシステムはまた、データベース340、管理アプリケーションプログラミングインターフェイス(API)350、ユーザインターフェイス354、およびUIサーバ352を含み得る。ボット分析システムは、コレクタ355、濃縮エンジン360、データベース370、およびRESTサーバ380を含み得る。ボット分析システムはまた、ユーザインターフェイス392およびUIサーバ390を含み得る。ボット分析システムのコレクタ355は、ボットシステムにおいて発生したイベント305を収集してもよい。ボット分析システムからのフィードバック394は、ユーザインターフェイス392およびユーザインターフェイス354を介してボットシステムに提供されてもよい。
【0113】
コネクタ330は、チャネル320および322などの1つ以上のチャネルを通して、ボットシステムと1つ以上のエンドユーザとの間のインターフェイスとして作用してもよい。各チャネルは、メッセージングアプリケーションは、例えば、メッセージングチャネル(Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack,またはSMS等)、バーチャルプライベートアシスタント(例えば、Amazon Dot, Echo,またはShow, Google Home, Apple HomePodなど)、チャット機能を有するネイティブもしくはハイブリッド/応答モバイルアプリもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリ拡張、または音声ベースの入力(例えば、Siri, Cortana, Google Voiceもしくは対話のための他の音声入力を用いるインターフェイスを有するデバイスもしくはアプリ)であってもよい。いくつかの実施形態では、コネクタ130は、ボットシステムが異なるメッセージングアプリケーションシステムにわたってコンテンツを分析することができるように、異なるチャネルからのコンテンツを正規化することができる。コンテンツ正規化処理は、各タイプのメッセージングアプリケーションからのコンテンツを処理のために共通のフォーマットにフォーマットすることを含み得る。いくつかの実施形態では、ボットシステムは、チャネルの各々について1つ以上のコネクタを含み得る。
【0114】
インテントモデラ314は、エンドユーザ発話に関連付けられるエンドユーザインテントを判断するために使用されてもよい。いくつかの実施形態では、インテントモデラ314は、エンドユーザからボットシステムによって受信された1つ以上のメッセージに基づいてエンドユーザのインテントを判断するために、自然言語プロセッサを使用して、品詞(動詞、名詞、形容詞)をタグ付けし、見出し語/語幹(runs/running/ran -> run)を発見し、エンティティ(Texas -> LOCATION)をタグ付けしてもよい。いくつかの実施形態では、インテントモデラ314は、メッセージを正規化してもよい。例えば、「Mary ran to Texas(MaryはTexasまで走った)」は、「PERSON run to LOCATION(人は場所まで走る)」となってもよい。インテントモデラはまた、エンドユーザメッセージ内で同じ意味を有する単語を検出する論理を含んでもよい。例えば、トレーニングデータセットが「Mary ran to Texas」および 「Bob walked to Detroit(BobはDetroitまで歩いた)」を含み、双方とも同じインテントにマッピングされ、run/walkは同じインテントのセットに現れる場合、インテントモデラ314は、それを、インテント解決run=walkの目的で、学習してもよい。1つの例示的な例では、「Mary ran to Texas」は「PERSON run to LOCATION」になってもよく、「Bob walked to Detroit」は「PERSON walk to LOCATION(人は場所まで歩く)」になってもよい。図示した例では、これら2つの文は同じインテントに関連付けられてもよく、なぜならば、「名詞が名詞まで走る」は、インテント解決の目的で「名詞が名詞まで歩く」と同じであるからである。別の例では、「I want to order a large cheese pizza(私は大きなチーズピザを注文したい)」および「I want to order a small pepperoni pizza(私は小さなペペロニピザを注文したい)」は両方とも、「I want to order a Bots_PizzaSize Bots_Toppings pizza(私はBots_PizzaSize Bots_Toppings pizzaを注文したい)」に正規化されてもよい。
【0115】
正規化の後、ある単語の発生が特定のインテントを示し得る確率が判断されてもよい。いくつかの例では、確率は、あたかもそれらが独立しているかのように、基本的確率算術を使用して組み合わせられ得る。例えば、「order(注文する)」がピザを注文する20%の確率を示唆し、「pizza(ピザ)」がピザを注文する10%の確率を示唆する場合、総確率は1-(1-0.2)(1-0.1)=28%となる。いくつかの確率は、単語の存在に基づいてもよく、または否定もしくは人称代名詞の存在のような特定の言語要素に基づいてもよい。
【0116】
別のレベルのルールは、単語の組み合わせであるテンプレートルールであってもよい。いくつかの例では、トレーニングデータセット内のすべての文は、ひとたび正規化されると、自動的にルールになってもよい。そのような例では、トレーニングデータセットは、非常に少数の短い文を含んでもよい。テンプレートルールは、1の確率を返してもよい。ルールから、新たなルールを、帰納の過程を介して生成してもよい。例えば、以下の文「How much did I spend last month on gas?(私は先月ガソリンにいくら使いましたか?)」および「How much did I spend in May on food?(私は5月に食費にいくら使いましたか?)」は、支出を追跡することに属してもよい。これらの文は、それらの間で共有される部分である「How much did I spend(私はどれだけ費やしたか)」というルールに帰納するよう使用されてもよい。他の例では、トレーニングデータセットは、同じ結果を達成するために、「How much did I spend」というフレーズを含んでもよい。
【0117】
上述の例は、インテントの定義が、指名されたエンティティ上のバリエーション(例えば、「Send money to Sue(Sueに送金する)」および「Send money to Bob(Bobに送金する)」)などの重複を含まないようにすることを可能にする。しかしながら、1つまたは2つの単語が異なる類似の文がトレーニングに使用されてもよい。類似の文は、どの単語がインテント解決に関して同じ意味を有してもよいか、およびどの単語が共通の誤綴りであり得るか、をモデルが学習することを可能にしてもよい。
【0118】
(動詞のような)特定の単語または単語のセットがインテントにとって重要である場合、確率は、そのような単語(およびその同義語)を使用する、より多くの例、ならびに他のインテントのためのそのような単語を伴う、より少ない例を有することによって、操作されてもよい。
【0119】
モデルが間違ったアサーションを行うのを防ぐために例を提供することもできる。例えば、特定のサブフレーズ、またはあるインテントに対してのみ出現する単語は、間違ったアサーションを引き起こし得る。同様に、モデルがトレーニングのために異なるインテントに属する類似文を用いて広範なルールを合成することを防止することができる。
【0120】
エンティティリゾルバ316は、エンドユーザのインテントに関連付けられるエンティティ(例えば、オブジェクト)を識別することができる。たとえば、「ピザを注文する」などの、インテントモデラ314によって識別されるエンドユーザのインテントに加えて、エンティティリゾルバ316は、ピザの種類、トッピングなど、インテントに関連付けられるエンティティを解決し得る。
【0121】
ダイアログエンジン312は、エンドユーザとボットシステムとの間の会話を処理するために用いられ得る。例えば、ダイアログエンジン312は、インテントモデラ314によって識別されたエンドユーザのインテントと、エンティティリゾルバ316によって識別されたエンドユーザのインテントに関連付けられるエンティティとに基づいて、エンドユーザの発話に応答することができる。いくつかの実施形態では、ダイアログエンジン312は、ユーザ定義の状態(例えば、エンドユーザのインテント)と、エンドユーザとの会話を処理するために状態においてまたは状態から状態にとられるアクションとを含む状態機械を用いることができる。
【0122】
カスタムコンポーネント318は、特定のボットシステム用のカスタマイズされたモジュールを含むことができる。例えば、金融ボットは、例えば、残高のチェック、資金の送金、または請求の支払に用いられ得るカスタムコンポーネントを含み得る。
【0123】
データベース340は、分類モデルのためのデータ、会話のログなど、ボットシステムのためのデータを記憶するために用いられ得る。管理API350は、ボットシステムの管理者または開発者によって用いられて、分類モデルの再トレーニング、インテントの編集、またはそうでなければボットシステムの変更など、ボットシステムを管理することができる。管理者または開発者は、ユーザインターフェイス354およびUIサーバ352を用いてボットシステムを管理することができる。
【0124】
様々なイベントが、ボットシステムが動作している間に生成され得る。イベントは、ボットシステムに含まれる1つ以上の命令に基づいて生成されてもよい。例えば、イベントは、ボットシステムが特定の状態に入ったときに生成されることができ、その特定の状態は、ボットシステムの管理者または開発者によって定義される。イベントが生成されると、イベントは、ボット分析システムによって収集され、記憶され、分析され得る。イベントを捕捉するとき、イベントに関連付けられる追加の情報も収集することができ、追加の情報は、イベントが生成される現在のコンテキストを示すことができる。
【0125】
例えば、会話イベントが、ダイアログエンジン312によって生成されてもよい。会話イベントは、エンドユーザデバイスからボットシステムによって受信されるメッセージ(msg_receivedと呼ばれる)を含み得る。msg_receivedは、以下のパラメータまたは変数、すなわち、メッセージの内容、ボットシステムによってメッセージが受信された時間、受信されたメッセージの言語、デバイスプロパティ(例えば、バージョンまたは名前)、オペレーティングシステムプロパティ(例えば、バージョンまたは名前)、ジオロケーションプロパティ(例えば、インターネットプロトコルアドレス、緯度、経度など)、識別情報(例えば、ユーザID、セッションID、ボットシステムID、テナントID等)、タイムスタンプ(例えば、デバイス作成、デバイス送信、コレクタ導出タイムスタンプ)、チャネルなどのうちの1つ以上を含み得る。
【0126】
会話イベントはまた、ボットシステムによってエンドユーザデバイスに送信されるメッセージ(msg_sentと呼ばれる)を含み得る。msg_sentは、メッセージの内容(例えば、メッセージのテキストまたはHTML)、メッセージがボットシステムによって送信される時間、メッセージの言語、メッセージの作成者(例えば、ボットシステムまたはエンドユーザデバイス)、デバイスプロパティ、オペレーティングシステムプロパティ、ブラウザプロパティ(例えばバージョンまたは名前)、アプリプロパティ(例えばバージョンまたは名前)、ジオロケーションプロパティ(例えば、インターネットプロトコルアドレス、緯度、経度など)、識別情報(例えば、ユーザID、セッションID、ボットシステムID、テナントIDなど)、チャネル(例えば、FacebookまたはWebhook)などのうちの1つ以上を含み得る。
【0127】
ダイアログエンジン312は、ダイアログ状態実行イベントを生成することもできる。上述したように、ダイアログエンジン312は、状態機械を用いてエンドユーザとの会話のフローを判断することができる。状態機械は、状態のセットおよび状態間の遷移のルールを含み得る。ダイアログエンジン312は、エンドユーザ会話ごとに状態機械を実行することができ、ダイアログエンジン312がエンドユーザ発話を処理するためにステップを進める各状態ごとにダイアログ状態実行イベントを生成することができる。ダイアログ状態実行イベントの属性は、例えば、状態名、コンポーネント名、次のアクション、エンティティ一致、インテント一致、変数、ユーザクエリステートメント、応答ステートメント、実行時間、通信言語、デバイスプロパティ、オペレーティングシステムプロパティ、ジオロケーションプロパティ、識別情報、タイムスタンプ、チャネル等を含むことができる。状態名は、現在実行されている状態の名称または「エラー状態」であってもよい。コンポーネント名は、現在の状態に対して実行されるボットコンポーネントの名前であってもよい。次のアクションは、実行されるべき次のアクションであってもよい。エンティティ一致は、現在のメッセージにおいて解決されるエンティティであってもよい。インテント一致は、スコア値で解決されるインテントであってもよい。変数は、現在の状態のための変数値であってもよい。クエリステートメントは、エンドユーザによって送られるメッセージであってもよい。応答ステートメントは、エンドユーザに送信されるメッセージであってもよい。実行時間は、完了した状態実行のタイムスタンプであってもよい。通信言語は、会話中のメッセージの言語であってもよい。デバイスおよび/またはオペレーティングシステムプロパティは、ボットシステムと対話するエンドユーザに関連付けることができる。ブラウザおよび/またはアプリプロパティは、ボットシステムと対話するエンドユーザに関連付けることができる。ジオロケーションプロパティは、ボットシステムと対話するエンドユーザの位置であってもよい。
【0128】
インテント解決イベントは、インテントモデラ314の実行の結果として発生し得る。インテントモデラ314は、トレーニングされた、または別の方法で定義された分類モデルを用いて、エンドユーザの発話に基づいて、インテントのセットからエンドユーザのインテントを識別することができる。インテント分類の結果は、インテント解決イベント属性として捕捉されてもよく、これは、例えば、最終インテント分類結果(例えば、識別されたインテント)と、インテントのセット内の各それぞれのインテントに関連付けられる信頼度スコアとを含んでもよい。
【0129】
エンティティリゾルバ316は、エンティティリゾルバイベントを生成し得る。エンティティは、エンドユーザのインテントに関連付けられるオブジェクトである。エンティティ定義ルールは、ボットシステムが作成されるときに決定されてもよい。例えば、「ピザを注文する」のようなエンドユーザのインテントを解決することに加えて、ボットシステムはまた、ピザの種類、トッピングなどの関連付けられたエンティティを解決するためにエンティティリゾルバ316を用いてもよい。エンティティリゾルバイベントは、エンティティ解決で捕捉され得る。エンティティリゾルバイベントに関連付けられる属性の例は、エンティティ名、適用されるルール、検索語、解決される状態、クエリステートメント、エンティティタイプ、実行時間、通信言語、デバイスプロパティ、オペレーティングシステムプロパティ、ブラウザプロパティ、アプリプロパティ、ジオロケーションプロパティ、識別情報、タイムスタンプ、チャネルなどを含み得る。エンティティ名は、現在解決されているエンティティの名前であってもよい。適用されるルールは、例えば、先行、後続、または集約であってもよい。検索語は、~から、~へ、目的地、出発地などであってもよい。解決される状態は、エンティティについて解決されるダイアログ状態であってもよい。クエリステートメントは、エンティティ値を含むメッセージであってもよい。エンティティタイプは、システムでもよいし、または導出されてもよい。実行時間は、エンティティ解決のタイムスタンプであってもよい。通信言語は、会話中のメッセージの言語であってもよい。デバイスおよび/またはオペレーティングシステムプロパティは、ボットシステムと対話するエンドユーザに関連付けることができる。ブラウザおよび/またはアプリプロパティは、ボットシステムと対話するエンドユーザに関連付けることができる。ジオロケーションプロパティは、ボットシステムと対話するエンドユーザの位置であってもよい。
【0130】
カスタムコンポーネントも、予め定義されたイベントまたはカスタムイベントなどのイベントを生成し得る。予め定義されたイベントは、カスタムコンポーネントの実行時に捕捉されるプロパティであってもよい。予め定義されたイベントの属性の例は、コンポーネント名、イベント名、ペイロード、実行時間、通信言語、デバイスプロパティ、オペレーティングシステムプロパティ、ブラウザプロパティ、アプリプロパティ、ジオロケーションプロパティ、識別情報、タイムスタンプ、チャネル等を含んでもよい。コンポーネント名は、現在実行中のカスタムコンポーネントの名前であってもよい。イベント名は、呼び出し済み、呼び出し失敗、返信済み、返信失敗などであってもよい。ペイロードは、障害の場合、障害の理由、スタックトレースなどであってもよい。実行時間は、イベントが発生した時を示すタイムスタンプであってもよい。通信言語は、会話中のメッセージの言語であってもよい。デバイスおよび/またはオペレーティングシステムプロパティは、ボットシステムと対話するエンドユーザに関連付けることができる。ブラウザおよび/またはアプリプロパティは、ボットシステムと対話するエンドユーザに関連付けることができる。ジオロケーションプロパティは、ボットシステムと対話するエンドユーザの位置であってもよい。
【0131】
カスタムコンポーネントはまた、カスタムコンポーネントの実行中にカスタムイベントを発行することもできる。カスタムイベントの属性としては、例えば、コンポーネント名、イベント名、カスタムペイロード、実行時間、通信言語、デバイスプロパティ、オペレーティングシステムプロパティ、ブラウザプロパティ、アプリプロパティ、ジオロケーションプロパティ、識別情報、タイムスタンプ、チャネル等が挙げられる。コンポーネント名は、現在実行中のカスタムコンポーネントの名前であってもよい。イベント名は、ユーザが定義したイベント名(例えば、残高検索)であってもよい。ペイロードは、例えば、(「金額」:「USD100」、「口座」:「当座」)であってもよい。実行時間は、イベントが発生した時を示すタイムスタンプであってもよい。通信言語は、会話中のメッセージの言語であってもよい。デバイスおよび/またはオペレーティングシステムプロパティは、ボットシステムと対話するエンドユーザに関連付けることができる。ブラウザおよび/またはアプリプロパティは、ボットシステムと対話するエンドユーザに関連付けることができる。ジオロケーションプロパティは、ボットシステムと対話するエンドユーザの位置であってもよい。
【0132】
エラーイベントおよびタイムアウトイベントも、実行中にボットシステムによって発生され得る。エラーイベントは、エラーが発生したときに発生され得る。タイムアウトイベントは、エンドユーザ会話が、チャネルにおいて設定され得るある期間にわたって非アクティブであったときに、発生され得る。
【0133】
ボット分析システムは、ボットシステムがエンドユーザと会話を行い、対応するイベントを生成する際に、イベントおよび追加情報を収集することができる。例えば、コレクタ355は、イベントおよび追加情報を収集し、収集した情報をキューに送ることができる。いくつかの実施形態では、コレクタ355は、設定可能であってもよく、所望に応じて上述の異なるイベントおよび/またはイベント属性を収集するようにプログラムすることができる。例えば、コレクタ355は、ダイアログ状態属性、インテント解決属性、エンティティ解決属性、ならびにエラーおよびタイムアウト属性を捕捉するように構成され得る。いくつかの実施形態では、コレクタ355はまた、ボットシステム以外のシステムによって生成されたイベント395に関する情報を収集するように構成されてもよい。
【0134】
濃縮エンジン360は、収集されたイベントおよび他の情報について検証および濃縮(エンリッチメント)を行い、それらをデータベース370に書き込むことができる。例えば、収集されたIPアドレスに基づいて、濃縮エンジン360は、IPアドレスに関連付けられるエンドユーザの位置を判断することができる。別の例として、濃縮エンジン360は、エンドユーザによって用いられるウェブブラウザまたはチャネルを判断するなど、収集された情報から特定の特徴を抽出することができる。RESTサーバ380は、濃縮されたイベントおよび他の情報を分析し、ある集約メトリック372に基づいて様々な報告を生成することができる。報告は、UIサーバ390を介してユーザインターフェイス392上でボットシステムの所有者、管理者、または開発者に表示することができる。ボットシステムの所有者、管理者、または開発者は、ボットシステムを改善するためにボットシステムにフィードバック394を提供してもよい。
【0135】
図4は、いくつかの実施形態による、スキルを開発するためのプロセスの一例を示す簡略化されたフローチャート400である。プロセスは、410においてインテントを作成することと、420においてスキルをトレーニングすることと、430においてエンティティを作成することと、440においてカスタムコンポーネントを統合することと、450においてダイアログフローを作成することと、460においてスキルをテストすることと、470においてチャネルにルーティングすることと、480においてスキルを改善するための洞察報告を検討することとを含んでもよい。
【0136】
410において、スキルのためにインテントを作成してもよい。インテントは、スキルがそのエンドユーザを助けて完了し得る様々なアクションを記述する。例えば、スキルが、ユーザが様々な銀行業務取引を行うことを可能にする場合、スキルのためのインテントは、例えば、「残高を確認する」または「送金する」を含み得る。インテントは、スキルが何を行うことができるかを記述するだけでなく、スキルの知能の不可欠な部分であってもよい。インテントは、各インテントが、それに関連付けられる典型的なユーザステートメント(すなわち発話)のセットを有し得るため、スキルがユーザ入力を認識することを可能にする。これらの発話は同じ意味を共有してもよいが、それらは異なってもよい(例えば、「What's my savings account balance?(私の普通預金口座の残高はいくら?)」 および「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」)。
【0137】
420において、スキルは、ユーザ入力を構文解析するときにユーザインテントを推論するようトレーニングされてもよい。具体的には、スキルは、インテントおよびそれらの発話(集合的にトレーニングデータ)を用いてトレーニングされてもよく、したがって、スキルは、ユーザ入力をインテントのうちの1つに解決し得る。トレーニングされたスキルは、各インテントに属するサンプルフレーズを認識するだけでなく、各インテントに対応する類似のフレーズも認識してもよい。
【0138】
430において、スキルのためにエンティティを作成してもよい。いくつかの実施形態では、スキルは、ユーザ要求を完了するためになんらかの追加のコンテキストを必要としてもよい。いくつかのユーザ要求は同じインテントに解決される場合がある(例えば、「What's my savings account balance?(私の普通預金口座の残高はいくら?)」 および「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」は、両方とも、「残高を確認する」インテントに解決するであろう)が、それらは違うことを要求している。要求を明確にするために、1つ以上のエンティティがインテントに追加されてもよい。銀行業務スキルの例を用いて、「確認する」および「普通」などの値を定義するエンティティ「口座種類」は、スキルがユーザ要求を構文解析し、適切に応答することを可能にしてもよい。
【0139】
440において、カスタムコンポーネントをスキルに統合してもよい。コンポーネントをスキルに統合する前に、スキルはユーザ入力を認識するかもしれないが、それに応答することはできないかもしれない。コンポーネントは、スキルが関数を実行することを可能にしてもよい。コンポーネントは、エンドユーザのメッセージから解決されたインテントに基づいてテキストを出力するなどの関数を実行してもよく、または口座残高を確認するなどの、特定のスキルに特有のタスクを実行してもよい。
【0140】
450において、ダイアログフローを作成してもよい。ダイアログフローは、異なるインテントが解決されるときにスキルがどのように反応するかを記述する。ダイアログフローは、スキルボットがユーザ発話にどのように応答するか、スキルボットがエンドユーザに対してどのように入力を促すか、スキルボットがどのようにデータを返すかなどの、スキルボットがとる動作またはアクションを定義する。いくつかの実施形態では、ダイアログフローは、あるバージョンのYAML(例えばOBotML)等の単純なマークダウン言語で記述されるフローチャートであってもよい。
【0141】
460において、スキルは、たとえば、上記で説明したデジタルアシスタントにおいて開発および展開された後にテストされてもよい。スキルは、1つ以上のダイアログフローを使用してスキルと1つ以上の会話をすることによって、テストされてもよい。
【0142】
任意選択で、470において、スキルは、ユーザメッセージング機能および他の機能のために、1つ以上のチャネルにルーティングされてもよい。例えば、スキルがデジタルアシスタントに追加されない場合、スキルは1つ以上のユーザメッセージングチャネルに追加され得る。ユーザは、種々のメッセージングプラットフォーム、著作権のあるメッセージングアプリ、およびウェブページ等の、これらのユーザメッセージングチャネルのうちの1つ以上を通して、スキルとチャットし得る。スキルは、テキストのみであるか、またはカード、UI要素、画像、および他の非テキストコンテンツをスクロールすることをサポートし得るかにかかわらず、これらのチャネルのいずれかで実行されるであろう。ユーザインターフェイスチャネルに加えて、スキルは、スキルを顧客サポートシステムにリンクするチャネル、またはスキルに会話を開始するように促す外部アプリケーションからの通知をルーティングするチャネルなど、他のチャネルにルーティングされてもよい。
【0143】
480において、開発者は、スキルを改善するために洞察報告を検討してもよい。例えば、開発者は、顧客が意図した通りにスキルを使用しているかどうかを知るために、スキルに関連する洞察報告を検討し得る。洞察報告は、例えば、高次の使用メトリックおよび会話傾向、インテントの個々のビュー、それらの実行パス、ならびに会話トランスクリプトを含んでもよい。洞察報告は、スキルがその顧客をどの程度良好にサポートするか、およびスキルがどこで顧客がタスクを完了するのを妨げるか、に関する異なる観点を提供してもよい。これらの洞察報告は、開発者に問題を迅速に見抜かせるだけでなく、スキルのインテント解決を改善し得るユーザ入力を示唆してもよい。
【0144】
いくつかの実施形態では、スキルの、異なるバージョンが、生成されてもよい。いくつかの実施形態では、スキルは、上記で説明したように、より複雑な機能を実行するよう2つ以上の関連するスキルを含む複合スキルであってもよい。例えば、複合スキルAは、スキルBおよびスキルCを含んでもよく、例えば、スキルBからの出力をスキルCへの入力として使用してもよい。
【0145】
上記で説明されるように、ボットは、エンドユーザ発話を特定のインテントにマッピングするために、機械学習モデル(例えばインテント分類器)を使用してもよい。広範な採用にもかかわらず、ニューラルネットワークモデルを含む機械学習モデルは、概して、入力データに対してある数学的演算または論理演算を行うことによって推論(出力)を行うブラックボックスとして動作する。機械学習モデルの出力は、例えば、予測もしくは分類、および/または対応する信頼度レベルを含んでもよい。しかしながら、モデルまたは特定の推論の出力は、ユーザがモデルの挙動および推論の背後にある理由を理解し得るようにモデルに対する洞察を提供しない場合がある。したがって、モデルおよび/または特定の推論が信頼できるかどうかをユーザが判断することは困難であり得、ユーザは、推論に基づいて判断を行い得るか、もしくはアクションを取り得るか、またはモデルを展開することを選択し得る。例えば、医学的診断またはテロリズム検出のために機械学習を使用する場合、予測に盲目的に作用してはならず、なぜならば、その結果は壊滅的であり得るからである。モデルを展開する前にモデル全体を評価する必要もある。現在、モデルは、概して、利用可能な検証データセットに基づく精度メトリックまたは他の統計を使用して評価される。しかしながら、現実世界のデータは、しばしば著しく異なり、さらに、評価メトリックは、製品の目標を示さないことがある。
【0146】
あるボットシステムのためのある分類器の場合、ボット所有者または開発者は、例えば、分類器をボットシステムに展開する前に、分類器が、特定のユーザ発話から特定のユーザインテントを推論する一方で、異なるユーザ発話から異なるユーザインテントを推論する理由を理解したい場合がある。分類器に対する洞察を得ることはまた、ボット開発者が、分類器をトレーニングするために使用されるトレーニングデータ(例えばトレーニング用発話)を低減すること、または分類器を改善するために、より有用なトレーニングデータをよりインテリジェントに生成することを助けてもよい。
【0147】
ある実施形態によれば、ボットシステムは、インテント分類器および推論説明エンジンを含んでもよい。推論説明エンジンは、インテント分類器による個々のユーザ発話の推論に対する洞察を提供してもよい。例えば、推論説明エンジンは、インテント分類器に、発話から、ある信頼度レベルを有するある推論を行わせる、ある単語または単語の組み合わせを識別してもよい。推論説明エンジンは、例えば、ローカルな代理モデルまたは範囲限定された(scoped)ルールモデルを含んでもよい。
【0148】
代理モデルは、基底のブラックボックスモデルの予測を近似するようにトレーニングされる。解釈可能な代理モデルの目的は、解釈可能な代理モデル(例えば予測関数)を使用して、基底モデルの予測を可能な限り正確に近似することである。代理モデルは、(1)基底のブラックボックスモデルをトレーニングするために使用された同じデータセットもしくは同じデータセットのサブセットまたは同じ分布からの新たなデータセットであり得るデータセットを選択することと、(2)選択されたデータセットについて、基底のブラックボックスモデルを使用して予測を生成することと、(3)解釈可能なモデルタイプ(例えば、線形モデル、決定木など)を選択することと、(4)選択されたデータセットおよび基底のブラックボックスモデルによる予測を使用して、解釈可能なモデルをトレーニングして、代理モデルを生成することと、(5)代理モデルが基底のブラックボックスモデルの予測をどの程度良好に複製するかを判断し、必要に応じて代理モデルを再トレーニングすることとによって、得られてもよい。トレーニングされた代理モデルは、次いで、解釈されてもよい。
【0149】
グローバルな代理モデルをトレーニングする代わりに、ローカルな解釈可能なモデルに依存しない説明(LIME)は、個々の予測を説明するためにローカルな代理モデルをトレーニングすることに焦点を当てている。LIMEにおいて、目標は、機械学習モデルがある予測を行う理由を理解することである。LIMEは、入力サンプルのバリエーション(例えば順序変更されたサンプル)と基底の機械学習モデルによる対応する予測とを含む新たなデータセットを生成する。次いで、この新たなデータセットを使用して解釈可能なモデルがトレーニングされる。解釈可能なモデルは、例えば、最小絶対収縮および選択演算子(Lasso)または決定木であり得る。トレーニングされた解釈可能なモデルは、入力サンプルのバリエーションに対する基底の機械学習モデルの予測の良好な近似(局所的な忠実度)であってもよいが、すべての入力サンプルに対する良好なグローバルな近似である必要はない。ローカルな代理モデルは、(1)基底の機械学習モデルによる予測の説明が必要とされてもよい、対象のサンプルを選択することと、(2)対象のサンプルを摂動させ、基底の機械学習モデルによって、摂動されたサンプルの予測を生成することと、(3)対象のサンプルに対する摂動されたサンプルの近接性に従って、摂動されたサンプルを重み付けすることと、(4)摂動されたサンプルおよび基底の機械学習モデルによる対応する予測を使用して、重み付けされた解釈可能なモデルをトレーニングすることとによって、得られてもよい。次いで、基底の機械学習モデルによる対象のサンプルの予測を、トレーニングされた解釈可能なモデルを解釈することによって、説明してもよい。
【0150】
範囲限定された(scoped)ルールモデルの一例は、アンカー技術である。アンカー技術は、予測を充分に「アンカー(固定)」する判断ルールを見つけることによって、ブラックボックス機械学習モデル(例えば分類器)の個々の予測を説明し得る。あるルールは、他の特徴値の変化が予測に影響を及ぼさない場合に、予測をアンカーする。1つの例示的なアンカー技術は、強化学習技術をグラフ探索アルゴリズムと組み合わせて利用して、モデル呼出しの数(したがって実行時間)を最小限に低減しながら、依然として局所最適から回復することができてもよい。アンカー技術は、ブラックボックス機械学習モデルの予測について局所的な説明を生成するために摂動ベースの戦略を展開する。代理モデルを使用する代わりに、アンカー技術における結果として生じる説明は、理解しやすいIF-THENルールとして表される。ルールは範囲限定(scoped)され、再利用可能である。たとえば、アンカーは、ルールが当てはまり得る、他の、おそらくは未知のインスタンスを指定するカバレージの概念を含んでもよい。
【0151】
アンカーを発見することは、強化学習の分野に由来する探索または多腕バンディット(MAB)問題を解くことを含んでもよい。アンカーを見つけるために、近傍または摂動が作成され、1つ以上のラウンドで説明されるべきインスタンスについて評価されてもよい。各ラウンドにおいて、モデルを呼び出すことによって、現在遵守されているルール(例えばアンカー)に合致する摂動を作成し、評価してもよい。MABは、逐次選択を使用して、異なる戦略(スロットマシンとの類似においてアームと呼ばれる)を効率的に探索および利用するために使用されてもよい。所与の設定では、各候補ルールは、プルされ得るアームとして見なされるべきである。候補ルールがプルされるたびに、それぞれの近傍が評価され、したがって、候補ルールのペイオフ(例えば、ルールが、説明されるべきインスタンスを、どの程度良好に記述するかを示す精度)に関するさらなる情報が取得されてもよい。候補ルールのペイオフがある閾値を超えるという統計的信頼度がない場合、より多くのサンプルを使用してもよい。後続の各ラウンドにおいて、前のラウンドの最良の候補は、その中にまだ含まれていない追加の特徴述語によって拡張されてもよい。
【0152】
上記のプロセスは、グラフ探索アルゴリズムおよび幅優先アルゴリズムの変形である、ビームサーチプロセスに組み合わせることができる。ビームサーチプロセスは、各ラウンドのB最良候補ルールを次のラウンドに持ち越す(Bはビーム幅である)。これらのB最良候補ルールは、次いで、新たなルールを作成するために使用される。ビームサーチプロセスは、各特徴が最大で1回ルールに含まれてもよいので、最大で特徴カウント(x)ラウンドを含んでもよい。1つ1つのラウンドiにおいて、ビームサーチプロセスは、i個の述語を有する候補を生成し、そのB最良候補ルールを選択する。したがって、Bをより高く設定することによって、アルゴリズムは、局所最適解を回避する可能性がより高い場合があるが、多数のモデル呼出しを使用する場合があり、したがって、計算負荷を増加させる場合がある。
【0153】
推定結果を説明するための技術
いくつかの実施形態では、チャットボットをホストするクライアントのためのクライアント対面サービスは、ここにおいて説明されるように、推論結果を説明するための技術を実現する。記載される技術は、クライアント(例えば、チャットボットをホストする/所有しているエンティティ)が、包括的な説明を使用して、チャットボット動作およびそれらの動作の結果を検討することを可能にすることによって、クライアントに有用性を提供する。チャットボットシステムを検討および改善するために、顧客によって閲覧されるべきML分類の「ブラックボックス」を開く。いくつかの実施形態では、本技術は、クライアントが、クライアントがホストするチャットボットの種々の局面を検討してもよい、クライアント対面システムおよびインターフェイスの一部として実行される。例えば、クライアントは、インターフェイスを介して、クライアントがホストするチャットボットの一覧、ならびにそれらのチャットボットの機能に関連する様々な報告および提案を検討してもよい。
【0154】
インターフェイス内のチャットボット一覧は、ある期間にわたる様々なチャットボットに関連付けられる様々な対話に関連する情報をさらに含んでもよい。例えば、クライアントは、チャットボットがある期間にわたって受信した発話を含む様々な対話を閲覧してもよい。発話を含む様々な対話は、チャットボットによって予測される特定の推論結果または推論結果の欠如に関連付けられていてもよい。推論結果は、チャットボットによる、特定の発話を解釈することの結果である。例えば、推論結果は、限定はしないが、チャットボットによる発話の分類結果(例えば、発話に対応するインテント/サービスの予測)、分類判断の信頼度閾値(例えば、特定のインテント/サービスが発話に予測的に関連付けられるために必要とされる信頼度の閾値レベル)などを含んでもよい。クライアントは、推論結果が特定の発話に関してどのように生成されるかを理解することから、大きな価値および有用性を導き出す。
【0155】
図5は、ある実施形態による、推論結果を説明するためのプロセスの例を図示する、簡略化されたフローチャート500である。
図5に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(たとえば、メモリデバイス上に)記憶されてもよい。
図5に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。
図5は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。特定の代替実施形態では、それらのステップはなんらかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
図1~
図4に示される実施形態等のある実施形態では、
図5に示される処理は、ある実施形態に従って、推論結果を説明するよう前処理サブシステムによって実行されてもよい。機械学習モデルは、例えば、ニューラルネットワークモデルまたは任意の他の機械学習モデルを含んでもよく、例えば、ユーザ発話に基づいてユーザインテントを分類する分類器として使用されてもよい。
【0156】
510において、発話についての推論結果を説明する要求が受信される。具体的には、要求は、チャットボットが発話を構文解析する結果として生成される推論結果に関する報告を取得するために、エンティティから受信される。例えば、チャットボットをホストするクライアントは、プロセス500の一部として受信される要求を生成し、送信して、発話が入力されたある以前の時間にチャットボットによって出力された推論結果を詳述するクライアントの検討用の報告を生成してもよい。
【0157】
ここにおいて説明されるように、推論結果は、チャットボットアプリケーションが発話をどのように構文解析および解釈するかに関するなんらかのデータを含む結果または予測である。いくつかの実施形態では、推論結果を説明する要求は、発話についての推論結果を導出したチャットボットアプリケーションをホストするクライアントなどのエンティティから受信される。例えば、チャットボットは、クライアントの顧客から発話を受信し、それに応答して、顧客の発話に基づいて何らかのアクションを生じさせてもよい。要求は、例えば、クライアントによってアクセス可能なコマンド線またはユーザインターフェイスを介して提出されてもよい。アクションを引き起こすプロセスは、チャットボットアプリケーションが顧客からの発話を与えられてアクションを引き起こした態様を説明するのに有用である推論データを生成する。推論結果は、例えば、チャットボットアプリケーションによる発話の処理に基いて発話に帰する分類結果を含んでもよく、それは、チャットボットアプリケーションがどのように機能しているかをクライアントが理解するために有用である。
【0158】
いくつかの実施形態では、クライアントによってホストされるチャットボットアプリケーションは、ユーザ発話に基づいてユーザインテントを分類する分類器を含む。例えば、分類器は、発話を入力として取得し、発話の予測された分類を出力するようにトレーニングされた機械学習モデルを含むチャットボットシステムのサブシステムであってもよい。いくつかの実施形態では、分類器は、発話に含まれる入力をニューラルネットワークモデルの様々なノードにマッピングするよう構成される、トレーニングされたニューラルネットワーク機械学習モデルである。次いで、ニューラルネットワークモデルの様々なノードを処理して、発話の分類に対応する出力結果を生じさせてもよい。分類は、例えば、チャットボットが、発話が対応するであろうと予測するインテント/サービスであってもよい。いくつかの実施形態では、上述の推論結果の分類結果は、分類器によって生成される。
【0159】
いくつかの実施形態では、システムは、コンピュータメモリに、チャットボットシステムによって行われた推論結果および分類に関するデータをリアルタイムで記憶する。例えば、チャットボットが発話を受信すると、システムは受信された発話を記憶してもよい。チャットボットが、例えば予測されるインテントに関する予測データを出力した後、システムは、予測データを推論結果の一部として記憶してもよい。クライアントは、システムに記憶されたこの情報を検討して、チャットボットによって受信された発話および生成された結果として生じる推論結果を判定してもよい。クライアントが、チャットボットに問題が発生した、またはそうでなければチャットボットの機能に満足していない、と判断すると、クライアントは、発話についての推論結果を説明する報告を要求してもよい。いくつかの実施形態では、発話および推論結果に関するデータを記憶するシステムは、プロセス500を実行したのと同じシステムである。
【0160】
520において、発話の分類結果が分類器から取得される。具体的には、510におけるそのチャットボットシステムの分類器または同様の分類器などの分類器を利用して、発話がチャットボットに入力されるときに分類結果を複製してもよい。例えば、報告要求においてクライアントによって指定された発話およびチャットボットシステムが分かると、その発話を、そのチャットボットシステムまたは同様のシステムに入力して、分類結果を出力(例えば、発話に対応すると予測されるインテント)として得てもよい。
【0161】
いくつかの実施形態では、分類結果は、発話を分類器に、例えば、分類器に含まれる機械学習モデルに入力することによって、得られる。分類結果を取得することにより、システムは、分類結果を、ステップ510において説明されるように要求される推論結果の一部として判断することが可能になる。次いで、分類結果は、プロセス500のさらなるステップを実行するための出力として取得されてもよい。いくつかの実施形態では、分類結果は、分類器を利用するチャットボットアプリケーションの以前の動作の一部として保存される。例えば、クライアントの顧客がチャットボットアプリケーションに発話を送信するとき、チャットボットアプリケーションの分類器は、分類結果を生成し、クライアントデータベースなどのローカルまたは外部システムに分類結果を記憶してもよい。次いで、分類結果は、520においてデータベースから取得されてもよい。
【0162】
いくつかの実施形態では、分類結果は、チャットボットによって予測される、発話に対応する予測されたインテント/サービスに対応する分類データを含む。例えば、分類データは、発話に関するデータ、発話に関する1つ以上の予測されたインテント/サービス、および1つ以上の予測されたインテント/サービスが発話に対応する信頼の度合に対応する1つ以上の信頼度値を含んでもよい。いくつかの実施形態では、信頼度値は、発話を構文解析するときに分類器によって利用される、トレーニングされたニューラルネットワーク機械学習モデルのノード間の対応のレベルに対応する。
【0163】
いくつかの実施形態では、分類器は、チャットボットシステムの動作を模倣するファクシミリ分類器である。例えば、あるシステムは、分類器を、対応するチャットボットモデルなしで個々の分類器として記憶してもよい。システムは、分類器を使用して、チャットボットシステム全体が発話を構文解析する必要なく、発話を使用して分類結果を取得してもよい。分類器のみがステップ520を実行するために必要とされてもよいので、システムは、例えば、分類器に対応する、チャットボットシステムによって使用されるトレーニングされた機械学習モデルを記憶してもよい。いくつかの実施形態では、ファクシミリ分類器をホストするシステムは、プロセス500を実行するのと同じシステムである。
【0164】
分類結果が得られると、530において、発話に関するアンカー単語を含む新たなアンカーのセットが選択され、発話内の非アンカー単語を類似の単語で置き換えることによって、合成発話が生成される。具体的には、発話を構成する単語のサブセットが、推論結果を生成するために相対的に重要な単語のグループ化を表すアンカーのセットにグループ化される。アンカーのセット内にない単語は、合成発話を形成するために類似の単語で置き換えられる。たとえば、発話内の1つ以上の単語は、発話内の他の単語よりも分類にとって相対的に重要であると予測される単語を表すアンカー単語として指定されてもよい。アンカーとして指定されていない単語は、次いで、元の発話と意味的に異なるが、文脈的に類似する新たな合成発話を形成するように、類似する単語と置換される。
【0165】
非アンカー単語の置換の結果は、類似語の置換により元の発話となんらかの類似性を保持する合成発話の生成となる。いくつかの実施形態では、発話から1つ以上のアンカー単語を選択することは、発話に含まれる、高い一意性の度合いに対応する、1つ以上の単語を判断することを含む(例えば、単語またはフレーズの既知の同義語は、より少ない)。いくつかの実施形態では、アンカー単語は、類似の発話を形成するために発話内で置換可能である可能性が最も低い単語である。例えば、発話「I want to order a pizza.(私はピザを注文したい)」は、単語「I」、「want」、「to」、「order」、「a」、および「pizza.」を含む。このフレーズでは、単語「I」および「pizza」は、他の単語よりも少ない代替類似単語に対応し、アンカー単語の候補である可能性が高い。例えば、「I desire to purchase one pizza.(私は1つのピザを購入することを所望する。)」というフレーズは、「I want to order a pizza.(私はピザを注文したい。)」というフレーズと類似のフレーズであり、なぜならば、前者が後者と同様のインテントに対応する可能性が高いからである。対照的に、「John wants to order a treehouse.(ジョンはツリーハウスを注文したい。)」というフレーズは、単語「want(s)」、「to」、「order」、および「a」が、2つのフレーズの間のアンカー単語として保持されるという事実にもかかわらず、類似のフレーズではない。
【0166】
新たなアンカーのセットの選択は、ここにおいて説明する合成発話の生成を可能にするために必要な任意の方法で行われてもよい。いくつかの実施形態では、アンカーのセットを選択することは、ビームソートアルゴリズムを使用して発話内のアンカー単語の潜在的な候補を選択することを含む。たとえば、あるプロセスは、上で説明された一意性メトリックなど、何らかのヒューリスティックに基づいて、アンカー単語のための1つ以上の最良の候補を判断してもよい。次いで、アンカーのセットを構成するために、1つ以上の追加の単語が選択されてもよい。アンカーのセットに選択されないすべての単語は、合成発話において非アンカー単語で置き換えられる非アンカー単語である。いくつかの実施形態では、アンカーのセットは、それがアンカー選択のヒューリスティック閾値を満たす場合にのみ、選択される(例えば、あるグループ内の各単語の平均一意性スコアは、当該グループがアンカーのセットとして選択され得る前に、一意性の閾値を満たさなければならないか、または超えなければならない)。
【0167】
530のステップは、元の発話とは異なるが、分類後に発話間の類似性および差分について推論結果をテストするために使用されてもよい、新たな合成発話の生成を可能にする。これらの新たな発話においてアンカーを定数として保持することによって、新たな発話は、単語レベルで、発話に対する特定の推論結果がどのように判断されるかを明らかにするであろう。例えば、発話のこれらの新たな合成バリエーションも、新たな発話に対して1つ以上の予測されるインテントを判断するよう、分類器によって分類されてもよい。
【0168】
540において、合成発話の分類結果が、選択されたアンカーのセットの信頼度レベルとともに、分類器から取得される。具体的には、530において生成された各合成発話は、分類器モデルに入力され、その合成発話に対する分類の結果予測を取得する。例えば、530で生成された各合成発話について、合成発話は、520で利用される分類器の一部として動作するMLモデルに入力されて、合成発話についての分類結果を得る。MLモデルが、ある入力発話を与えられると、ある予測されるインテント/スキルを出力するようにトレーニングされる場合、MLモデルは、MLモデルに入力される1つ以上の合成発話を与えられると、1つ以上の予測されるインテント/スキルを出力する。合成発話についての予測されたインテント/スキルに基づいて、信頼度値が、530において選択されたアンカーのセットについて判断される。信頼度値は、生成された合成発話およびそれらの合成発話についての予測されたインテント/スキルに関連する任意のメトリックに対応してもよい。いくつかの実施形態では、アンカーのセットの信頼度値は、分類結果が元の分類結果と同じである生成された合成発話の割合である。たとえば、あるアンカーのセットについて100個の合成発話が生成され、100個の合成発話のうちの87個が、520において取得された予測されるインテント分類結果に一致する予測されるインテントに対応すると判断された場合、そのアンカーのセットについての信頼度値は87%または0.87であってもよい。
【0169】
いくつかの実施形態では、予測される分類の各々は、ある特定の予測されるインテント/スキルがある入力発話に対応する信頼度のレベルと関連付けられる信頼度メトリックに対応してもよい。たとえば、MLモデルが、トレーニングされたニューラルネットワークMLモデルであるいくつかの実施形態では、信頼度メトリックは、入力発話を処理するときのトレーニングされたニューラルネットワークのノード間の対応の、数値的に導出されるメトリックに基づいてもよい。これらの実施形態では、より高い信頼度メトリックは、予測されたインテント/スキルが出力されるときに、トレーニングされたニューラルネットワークのノード間の相対的に高い対応度に対応するであろう。いくつかの実施形態では、ある関連付けられたアンカーのセットの信頼度値は、部分的に、その関連付けられたアンカーのセットについて生成される合成発話の各々の信頼度メトリックから導出されてもよい。
【0170】
合成発話の分類結果は、発話に基づいてインテント/スキルを予測するために利用されるチャットボットの局面を判断するために有用である。たとえば、元の発話および合成発話は両方とも、同じ予測されるインテント/スキルに関連付けられる場合がある。その結果、元の発話と合成発話との間で共有されるアンカー単語が、元の発話に対して生成される推論結果における主要な要素である、という合理的な推論を行うことができる。対照的に、元の発話と合成発話とが同じ予測されるインテント/スキルを共有しない場合、元の発話と合成発話との間で共有されるアンカー単語は推論結果における主要な要素ではないか、またはMLモデルは発話内のある単語もしくはフレーズを処理するときに機能不全であるか、のいずれかである、という合理的な推論を行うことができる。これらおよび同様の理由から、生成された合成発話の分類結果は、元の発話についての推論結果を判断する際に非常に価値がある。
【0171】
550において、最も高い信頼度レベルに関連付けられるアンカーのセットが識別される。具体的には、最も高い信頼度レベルに対応するアンカーのセットの信頼度値は、510において受信された要求に対して応答して送信されるべき報告に含めるために選択されてもよい。たとえば、プロセス500は、複数の選択されたアンカーのセットに基づいて複数の合成発話のセットを生成することを含んでもよい。最も高い信頼度値を有するアンカーのセットは、推論結果に関する報告を見るときに最も価値がある可能性が最も高い。したがって、550において、540において生成および取得された分類結果および信頼度レベルは、他のアンカーのセットについて以前に生成された信頼度レベルと比較されてもよい。比較される複数のアンカーのセットの中で最も高い信頼度レベルを有するアンカーのセットおよび対応する合成発話は、後で報告に含めるために識別および保存されてもよい。
【0172】
いくつかの実施形態では、アンカーの各セットの中で単一の最も高い信頼度値を選択する代わりに、閾値信頼度レベルに基づいて、複数のアンカーのセットを報告に含めてもよい。例えば、閾値信頼度値を、アンカーのセットが報告に含まれるかまたは含まれない報告用カットオフとして使用してもよい。アンカーの各セットおよび対応する合成発話は、アンカーの各セットの信頼度レベルが信頼度値の閾値を超える場合、報告に含まれる。
【0173】
530~550における動作は、たとえば、上で説明されたビームサーチプロセスにおいて、複数のラウンドについて反復的に実行されてもよく、異なる単語の組合せが各ラウンドにおいてアンカーとして使用されてもよい。一例では、発話の各単語をアンカー単語として用いて、第1のラウンドにおいて発話のバリエーションを合成発話として生成してもよく、合成発話は、分類器によって分類されてもよく、信頼度レベルを有するアンカーは、第1のラウンドの後に選択されてもよい。いくつかの実施形態では、第2のラウンドにおいて、第1のラウンドで選択されたアンカー単語と発話内の別の単語との任意の組合せを、あるアンカーのためのアンカー単語として使用して、より多くのバリエーションを合成発話として生成してもよく、合成発話は、分類器によって分類されてもよく、分類結果は、元の発話の分類結果と比較されてもよく、最も高い信頼度レベルを有するアンカーが、第2のラウンドの後に選択されてもよい。
【0174】
いくつかの実施形態では、第2のラウンドにおいて、第1のラウンドで選択されなかったアンカー単語の新たな組合せが選択され、合成発話を生成するために使用されてもよく、次いで、合成発話は、上述のように分類および比較されることになる。動作530~550の反復は、有意なすべてのアンカーが選択され、それらのアンカーについて合成発話が生成されたときに、停止してもよい。例えば、一意性閾値が、ビームサーチの一部として採用されてもよい。530で一意性閾値を満たすすべてのアンカーのセットが選択されると、反復は550で停止してもよく、プロセス500は560に進んでもよい。
【0175】
560において、複数のラウンドにおける、550の結果に基づいて、報告を生成してもよい。報告は、1つ以上のアンカーのセットと、当該アンカーのセットの対応する信頼度レベルとを含んでもよい。いくつかの実施形態では、報告は、合成発話の分類結果を含んでもよい。報告に基づいて、ユーザは、どの単語または単語の組み合わせが分類器に元の発話から特定のインテントを推論させるかを理解してもよい。例えば、報告は、元の発話「I want to order a pizza.」を、「I desire to purchase one pizza.」などの合成発話とともに示してもよい。報告は、例えば、元の発話および合成発話の両方が、同様のインテント、例えば、「ORDER FOOD(食べ物を注文する)」と名付けられたインテントに、同様の信頼度で対応する、と予測されたことを示してもよい。したがって、ユーザは、報告から、共有されるアンカー単語「I」および「Pizza」が同じインテントを判断する際の主要な要素であり、その特定のアンカーのセットについて相対的に高い信頼度値の原因である、と推測してもよい。
【0176】
以下の表1は、JSONファイルにおける例示的な報告の説明セクションを示す。報告には、元の発話「money available(出金可能)」に対する分類器の推論結果が含まれる。報告はまた、アンカーごとに、アンカーを使用して生成された元の発話のバリエーションと、分類器による対応する分類結果と、元の発話のバリエーションの分類結果と元の発話の分類結果との間の一致の数および不一致の数に基づいて判断されたそれぞれの精度とを含む。例えば、アンカーが単語「available」のみを含む場合、元の発話のバリエーションは、「# available(#利用可能)」、「amenities available(アメニティ利用可能)」、「bicycles available(自転車利用可能)」、「+ available(+利用可能)」、「2017 available(2017利用可能)」などを含んでもよい。分類器は、これらの発話を、元の発話の分類結果に一致するインテント「balances(残高)」に関連付けられるとして分類してもよい。しかしながら、分類器は、発話「commercially available(市場で入手可能)」、「only available(のみ利用可能)」、「universally available(広く利用可能)」、および「Currently available(現在利用可能)」を、元の発話の分類結果に一致しないインテント「unresolvedintent(未解決のインテント)」に関連付けられるとして、分類してもよい。報告は、アンカー「available」に関連付けられる精度が約47.5%であることを示す。アンカーが単語「money」および単語「available」の両方を含む場合、精度は約100%である。
【0177】
表1 (JSONにおける)例示的な報告の説明セクション
【0178】
【0179】
【0180】
【0181】
【0182】
【0183】
【0184】
【0185】
図6は、ある実施形態による、推論結果を説明するためのシステム600の実施例を示す。例えば、システム600は、プロセス500またはここに記載される類似のプロセスの実現例を引き起こすためのシステムであってもよい。システム600は、ユーザインターフェイス605と、管理API610と、インテントサーバ615と、ゲートウェイ620と、ワークフローエンジン625(例えばサーバ)と、データベースまたはクラウドストレージデバイス630とを含む。インテントサーバ615は、ユーザの発話に基づいてユーザのインテントを推論する分類器を含んでもよい。ワークフローエンジン625は、アプリケーション635を(例えばpythonコードで)実行して、例えば、
図5のプロセス500に関して、上述した分類説明を実行してもよい。
【0186】
クライアントは、非同期呼出しを使用して、ユーザインターフェイス605および管理API610を介してゲートウェイ620に分類クエリ(たとえば発話)とともに説明要求を提出してもよい。例えば、クライアントは、クライアントデバイスを利用してユーザインターフェイス605と対話してチャットボットの局面を閲覧してもよく、またはそうでなければチャットボットに関連付けられるサービスと対話してもよい。いくつかの実施形態では、クライアントは、システム600を使用して、ある以前の時間にチャットボットによって処理された発話、およびその発話について生成された推論結果を閲覧してもよい。例えば、クライアントは、特定のチャットボットを、自身のサービスの一部として使用していてもよい。
【0187】
クライアントは、特定の発話が処理され、その発話について予想外の推論結果が生成されたことに気付いてもよい(例えば、発話「I would like to order a pizza(私はピザを注文したい)」は、顧客返金を処理する要求に対応すると予測された)。次いで、クライアントは、510で説明したように、発話に基づいて推論結果に対する説明を要求してもよい。クライアントは、この要求をユーザインターフェイス605に入力し、ユーザインターフェイス605は、次いで、その要求を管理API610にルーティングする。管理API610は、クライアントによって利用されるクライアントデバイスとは別個のチャットボット説明システムの一部として動作するAPIであってもよい。
【0188】
いくつかの実施形態では、管理API610による非同期呼出しの受信で、管理API610は、ゲートウェイ620へのルーティングのために、呼出しをインテントサーバ615に転送する。他の事例では、管理API610による非同期呼出しの受信で、管理API610は、呼出しをゲートウェイ620に直接転送する。インテントサーバ615が呼出しを受信する場合、インテントサーバ615は、呼出しをゲートウェイ620に転送する。ゲートウェイ620は、説明要求に対してジョブ識別子を提供し、ジョブ識別子は、インテントサーバ615、管理API610、およびユーザインターフェイス605を介してユーザに返される。ゲートウェイ620は、説明要求および関連付けられるジョブ識別子をワークフローエンジン625に転送することによって、説明要求を処理するためのワークフローを開始する。ジョブ識別子は、例えば、プロセス500などの報告生成プロセスに対応する識別子であってもよい。
【0189】
ワークフローエンジン625は、アプリケーション635を実行して、例えば上述のビーム検索技術を用いて、分類説明を実行する。アプリケーション635は、1つ以上のラウンドにおいて、様々なアンカーを使用して元の発話(すなわち、説明要求内の分類クエリ)のバリエーションである新たな発話(例えば、平均で約500~2000の新たな発話)を生成し、新たな合成発話をインテントサーバ615に供給してもよい。いくつかの例では、アプリケーション635は、キャッシュを使用して、一意の発話のみがインテントサーバ615に提出されることを保証する。例えば、アプリケーション635によって生成されるいくつかの合成発話は、チャットボットシステムのユーザから以前に有機的に受信された既知の発話であってもよい。インテントサーバ615は、APIを公開して、ワークフローエンジン625からインテントのリストおよび新たな発話を取得する。ワークフローエンジン625は、取得されたインテントのリストに基づいて新たな発話について分類結果を生成する。アプリケーション635は、プロセス500などのプロセスに従って、前のラウンドにおける分類結果に基づいてアンカーの信頼度レベルを判断し、最も高い信頼度レベルを有するアンカーを選択し、選択されたアンカーに基づいて新たなアンカーを判断し、新たなアンカーに基づいて新たなクエリを生成し、新たなクエリをインテントサーバ615に供給してもよい。アンカー、新たな合成発話、合成発話の分類結果、アンカーと関連付けられた信頼度レベル、またはそれらの任意の組み合わせを含む結果は、ワークフローエンジン825および/またはインテントサーバ815による記憶のために、ジョブ識別子とともにデータベースまたはクラウドストレージデバイス830(例えばオブジェクトストア)に送信されてもよい。
【0190】
図7は、ある実施形態による、推論結果の説明を取り出すためのシステム700の実施例を示す。システム600と同様に、システム700は、ユーザインターフェイス705と、管理API710と、インテントサーバ715と、ゲートウェイ720と、データベースまたはクラウドストレージデバイス730とを含んでもよい。ユーザは、説明結果要求を、非同期呼出しを使用して、例えばユーザインターフェイス705および管理API710を介して、ジョブ識別子とともに、ゲートウェイ720に提出してもよい。いくつかの例では、管理API710による非同期呼出しの受信で、管理API710は、ゲートウェイ720へのルーティングのためにインテントサーバ715に呼出しを転送する。他の例では、管理API710による非同期呼出しの受信で、管理API710は、呼出しをゲートウェイ720に直接転送する。インテントサーバ715が呼出しを受信する場合、インテントサーバ715は、呼出しをゲートウェイ720に転送する。ゲートウェイ720は、ジョブ識別子に基づいて、アンカー、合成発話、合成発話の分類結果、アンカーに関連付けられる信頼度レベル、またはそれらの任意の組合せを含む結果を取り出す。結果は、インテントサーバ715、管理API710、およびユーザインターフェイス705を介してユーザに返される。複数のジョブ識別子を用いて、複数の説明結果要求が同時に実行され得る。
【0191】
図8Aは、ある実施形態による、説明計算中のシミュレートされたCPU使用の例を示す。図示の例では、分類および説明されるべき発話は、「another agent question(他のエージェント質問)」である。実行時間は約234秒である。具体的には、
図8Aは、要求を完了するのに必要な時間と比較した、推論結果の説明を実行するための中央処理装置(CPU)リソース使用のレベルを示す。
【0192】
図8Bは、ある実施形態による、説明計算中のシミュレートされたメモリ使用の例を示す。具体的には、
図8Bは、要求を完了するのに必要な時間と比較した、推論結果の説明を実行するためのメモリリソース使用のレベルを示す。
【0193】
図9Aは、ある実施形態による、説明計算中のシミュレートされたCPU使用の例を示す。図示の例では、分類および説明されるべき発話は、「I would like to have a large cheese pizza with a tall glass of coke.(大きいチーズピザを大きなグラスのコーラとともにお願いします。)」である。実行時間は約933秒である。具体的には、
図9Aは、要求を完了するのに必要な時間と比較した、推論結果の説明を実行するための中央処理装置(CPU)リソース使用のレベルを示す。
【0194】
図9Bは、ある実施形態による、説明計算中のシミュレートされたメモリ使用の例を示す。具体的には、
図9Bは、要求を完了するのに必要な時間と比較した、推論結果の説明を実行するためのメモリリソース使用のレベルを示す。
【0195】
図10Aは、ある実施形態による、説明計算中のシミュレートされたCPU使用の例を示す。図示の例では、分類および説明されるべき発話は「question(質問)」である。実行時間は約101秒である。具体的には、
図10Aは、要求を完了するのに必要な時間と比較した、推論結果の説明を実行するための中央処理装置(CPU)リソース使用のレベルを示す。
【0196】
図10Bは、ある実施形態による、説明計算中のシミュレートされたメモリ使用の例を示す。具体的には、
図10Bは、要求を完了するのに必要な時間と比較した、推論結果の説明を実行するためのメモリリソース使用のレベルを示す。
【0197】
トレーニングデータセットを生成するための技術
上述のように、合成発話、合成発話に対する予測されるインテント/スキル、および合成発話に対する対応する信頼度値の指示を含む報告を生成することは、チャットボットシステムが受信された発話をどのように処理しているかを判断する際に有用である。報告は、チャットボットシステムにおける何らかの欠陥を判断するために使用されてもよい。例えば、チャットボットシステムは、発話内の特定のアンカー単語を不正確に処理し、不正確なインテント/スキルをその発話と関連付けるよう予測している場合がある。ML判断の「ブラックボックス」の排除は、チャットボットシステム欠陥を識別するのに非常に有用であるが、チャットボットシステムは、その場合、不正確な予測が再び生じるのを防ぐために再トレーニングされなければならない。
【0198】
チャットボットをトレーニングおよび再トレーニングするプロセスは困難であり、資源集約的である。例えば、欠陥のあるチャットボットMLモデルの領域が、最初に識別されなければならない。次いで、これらの欠陥を効果的に低減するトレーニングデータセットを生成しなければならない。トレーニングデータセットは、トレーニング用発話のセットと、トレーニング用発話に対応する「グラウンドトゥルース」インテント/スキルとを含む。次いで、MLモデルは、発話に対してインテント/スキルをより良く予測するようモデルを改良するために、グラウンドトゥルースインテント/スキルを使用してトレーニング用発話を使用してトレーニングされる。トレーニングデータセットを取得することは困難であり、トレーニングデータセットを手動で選択して構築することは、非効率的でリソース集約的である。
【0199】
図11は、ある実施形態による、合成発話を使用してモデルを再トレーニングするためのプロセスの実施例を図示する、簡略化されたフローチャートである。
図11に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。
図11に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。
図11は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。特定の代替実施形態では、それらのステップはなんらかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。
図1~
図5に示される実施形態等のある実施形態では、
図11に示される処理は、ある実施形態による、合成発話を使用してモデルを保持するように、前処理サブシステムによって行われてもよい。機械学習モデルは、例えば、ニューラルネットワークモデルまたは任意の他の機械学習モデルを含んでもよく、例えば、ユーザ発話に基づいてユーザインテントを分類する分類器として使用されてもよい。
【0200】
より具体的には、プロセス1100は、トレーニングデータセットを取得し、入力発話に基づいてインテント/スキルを予測するためにMLモデルを再トレーニングするためのプロセスを説明する。上記のように、
図5およびプロセス500を参照して、いくつかの合成発話が、元の発話のアンカーのセットおよびチャットボットシステムの一部として動作するMLモデルに対応して生成される。プロセス500の一部として生成された合成発話は、MLモデルの欠陥、具体的には元の発話および類似の発話を処理することの欠陥を識別するために使用されてもよい。この場合、モデル関数を改善するために、元の発話および/または類似の発話ならびに対応するグラウンドトゥルースを使用してMLモデルを再トレーニングすることが有益である。ステップ530~550で生成された合成発話は、機械学習モデルを再トレーニングするための優れた候補であることが理解されるであろう。
【0201】
プロセス1100は、任意選択肢的に、プロセス500の550において開始してもよく、最も高い信頼度レベルを伴うアンカーのセットが識別される。いくつかの実施形態では、プロセス1100は、プロセス550がブロック530~550の反復の最後の反復を完了し得、最も高い信頼度レベルを有するアンカーのセットが識別されるときに、開始する。アンカーのセットおよび対応する合成発話は、次いで、プロセス1100の一部として利用されて、MLモデルを再トレーニングするためのトレーニングデータセットを生成する。いくつかの実施形態では、プロセス1100は、
図5の560と並列に動作する。具体的には、合成発話は、プロセス1100において、アンカーのセットを含む報告が生成されるのと同時に使用されてもよい。
【0202】
プロセス1100は1110で継続し、1つ以上の発話が受信され、各発話は1つ以上の信頼度レベルのうちのある信頼度レベルに対応する。プロセス1100がプロセス500のステップ550で始まるいくつかの実施形態では、1つ以上の発話は、報告生成プロセスの一部として生成される合成発話である。例えば、推論結果を説明する要求の受信に応答して、プロセス500を実行するシステムはまた、要求において指定された発話に関連する特定のMLモデルのための再トレーニングデータセットを自動的に生成してもよい。
【0203】
他の実施形態では、1つ以上の発話は、以前の時点でコンピュータメモリに記憶された発話である。たとえば、1つ以上の発話は、プロセス1100に従って再トレーニングされることになるMLモデルによって予測される、予測されるインテント/スキルに対応する発話であってもよい。発話は、例えば、プロセス500の以前の反復の一部として、MLモデルの将来のトレーニングのために、以前に記憶されていてもよい。
【0204】
各発話は、ある信頼度レベルに対応する。ここにおいて説明されるように、信頼度レベルは、ある特定の発話に対する、あるアンカーのセットの相関の強さを、当該特定の発話と同じインテント/スキルに分類される、当該アンカーのセットについての合成発話の割合に基づいて、表す。たとえば、各合成発話は、各合成発話を生成するために使用されるアンカーのセットの判断された信頼度値に対応してもよい。いくつかの実施形態では、各合成発話は、独立して、ある信頼度値に対応する。たとえば、トレーニングされたニューラルネットワークMLモデルのノード間の対応のレベルを用いて、特定の発話を入力として与えられて特定のインテント/スキルの予測を行うときに合成発話の信頼度レベルを判断してもよい。プロセス1100がプロセス500の550で始まるいくつかの実施形態では、1つ以上の合成発話は、プロセス500のステップ540で判断された信頼度レベルにすでに対応する。
【0205】
1120において、1110において受信された1つ以上の信頼度値が閾値信頼度値と比較される。具体的には、1つ以上の信頼度値の各信頼度値を閾値信頼度値と比較して、閾値を満たさないかまたは超えない信頼度値のサブセットを判断する。様々な実施形態において、閾値信頼度値は、特定の発話に対する予測されたインテント/スキルに対する相対的な許容可能な対応レベルに対応する値である。例えば、トレーニングデータセットは、MLモデルが、高い信頼の度合いでそのトレーニングデータセットの発話に関連付けられるインテント/スキルを既に予測していない場合に、MLモデルをトレーニングするのに最も有用であることが多い。トレーニングの結果は、MLモデルが、トレーニング後に、類似の発話に対応するインテント/スキルを、より高いレベルの信頼度で予測することになることになる。したがって、所望の信頼度閾値以下にある信頼度レベルに対応する発話を、トレーニングデータセットに含めるよう選択することが最も有用である。閾値より高い信頼度レベルに対応する発話は、MLモデルをトレーニングする際に有用であるかもしれないが、閾値を下回る信頼度レベルに対応する発話ほど効率的にモデルのトレーニングに影響を及ぼさないであろう。
【0206】
いくつかの実施形態では、信頼度レベル閾値は、チャットボットシステムおよびMLモデルに関連付けられるエンティティからの何らかの入力に基づいて判断されてもよい。具体的には、チャットボットシステム、したがってMLモデルを所有または動作させるエンティティは、新たなトレーニングデータセットの生成を最適化するために信頼度の閾値を指定してもよい。例えば、チャットボットシステムをホストするクライアントは、閾値信頼度値を、充分なトレーニングデータセットが生成されることを可能にするある値に設定するが、トレーニングデータセットを充分に小さく維持して、モデルをある時間量内に再トレーニングするよう、判断してもよい。いくつかの実施形態では、閾値信頼度値は、1110において受信された発話に関連付けられるメトリックに基づいて、使用のためにクライアントに提案されてもよい。
【0207】
1130において、トレーニング用発話のサブセットが判断され、トレーニング用発話のサブセットの各発話は、閾値信頼度値以下の信頼度値に対応する。閾値信頼度値以下の信頼度レベルに対応する、1つ以上の受信された発話内の任意の発話が、トレーニング用発話のサブセットに含まれることになり、最終的にモデルを再トレーニングするために使用されることになる。例えば、閾値信頼度値は、0.80の値(または80%信頼度)に設定されてもよい。1つ以上の発話のうちの第1の発話に対応する信頼度値は、0.90(または、発話が特定のインテント/スキルに対応する90%の信頼度)であってもよい。第2の発話に対応する信頼度値は、0.67(または67%)であってもよい。第1の発話は、その対応する信頼度レベルが閾値信頼度値よりも大きいので、トレーニング用発話のサブセット内にあるべく判断されない。第2の発話は、その対応する信頼度レベルが閾値信頼度値以下であるため、トレーニング用発話のサブセット内にあるべく判断される。いくつかの実施形態では、閾値はさらに、発話が取得されてもよい、ある基準、例えば、トレーニング用発話のサブセットが閾値信頼度値以下の信頼度値に対応する発話のみを含む、という基準を指定してもよい。閾値に対する任意の基準が使用されてもよいことが、当業者によって理解されるであろう。例えば、代替実施形態では、閾値以上の確率を有する発話のみが、特に発話について特定のインテント/スキルを予測するようにMLモデルを微調整する目的で、選択されてもよい。クライアントにとって、どの発話が、MLモデルを再トレーニングする方法を理解するのにあまり信頼できない予測に対応するかを理解することは、しばしば重要である。場合によっては、クライアントはまた、モデルがインテント/スキルをより高い信頼度で予測する理由を理解するために、より高い信頼度値を伴う発話分類についての説明を要求してもよい。
【0208】
1140において、トレーニング用発話のサブセットに対応する1つ以上のトレーニングカテゴリが判断される。具体的には、1つ以上のトレーニングカテゴリは、MLモデルをトレーニングするために使用されるトレーニング用発話のサブセットに関連付けられるグラウンドトゥルースである。例えば、クライアントは、トレーニング用発話のサブセットの一覧にアクセスしてもよい。次いで、クライアントは、完全なトレーニングデータセットを形成するために、トレーニング用発話のサブセットの各発話に対するグラウンドトゥルースインテント/スキルを選択してもよい。いくつかの実施形態では、1つ以上のトレーニングカテゴリは、発話がMLモデルによる正しいグラウンドトゥルース予測として対応してもよい可能なインテント/スキルの対話型リストを用いて表されてもよい。グラウンドトゥルースインテントは、MLモデルに関連付けられる1つ以上の既知のインテントの対話型リストから選択されてもよい。ひとたび選択されると、グラウンドトゥルースインテントは、新たなトレーニングデータのセットを作成するために使用される。トレーニング用発話のサブセットに関連付けられるべきグラウンドトゥルースインテントの対話型リストは、ここにおいて、以下において
図12において含んで、説明される。
【0209】
1150において、判断された1つ以上のトレーニングカテゴリに基づいてトレーニング用発話のサブセットを使用してモデルをトレーニングする。新たなトレーニングデータのセットは、1つ以上のMLモデルをトレーニングするために1つ以上のMLモデルに入力されてもよい。例えば、判断されたトレーニング用発話のサブセットは、1140で判断されたグラウンドトゥルーストレーニングカテゴリに従って、トレーニングされたMLモデルを再トレーニングするために、使用される。1つの結果は、以前に、560で生成された報告などの報告によって判断された、不正確な予測されたインテント/スキルに分類された発話が、類似の発話について正しいインテント/スキルをより効率的に予測するようMLモデルをトレーニングするために使用されることになることである。別の結果は、以前に、正しい予測されたインテント/スキルに分類されたが、許容可能な信頼度レベル(すなわち閾値信頼度値)を下回る信頼度レベルでの発話が、正しいモデル予測挙動をさらに強化するために使用されることである。
【0210】
図11に示されていない様々な実施形態では、1110において1つ以上の受信された発話に類似し、閾値信頼度値に基づく、1つ以上の新たな合成発話を生成してもよい。例えば、モデルを再トレーニングするために、より包括的なトレーニングデータセットを作成するために、1つ以上の新たな合成発話が、プロセス500のステップ530と同様に、単語またはフレーズ置換に基づいて生成されてもよい。新たな合成発話は、上記で530において説明したアンカー置換または別の技術に基いてもよい。例えば、トレーニング用発話のサブセットが閾値信頼度値以下にあると判断することに応答して、1つ以上の新たな合成発話を生成してもよい。これらの人工発話は、再トレーニングデータのセットに含まれてもよく、ユーザによって設定されるとおりの判断されたトレーニングカテゴリに対応してもよい。例えば、トレーニングデータセットが特定のサイズの発話を含まなければならない場合、1つ以上の新たな合成発話を生成し、トレーニングデータセットを補足するために使用してもよい。他の実施形態では、閾値信頼度値は、トレーニングデータセット内の必要な発話数を満たすように自動的に上昇または下降されてもよい。
【0211】
図11に示されていない様々な実施形態では、トレーニング用発話のサブセットは、MLモデルを再トレーニングする際に使用する前に、コンテキストベースのフィルタリングプロセスを受ける。コンテキストベースのフィルタリングプロセスは、環境特有のコンテキストに適合するように発話を精緻化する。たとえば、顧客サービスチャットボットは、下品または攻撃的な発話パターンを禁止するコンテキスト環境に属してもよい。取得された1つ以上の発話および/または合成発話は、再トレーニングの前に発話からすべての下品な文言または攻撃的文言を除去するようフィルタリングされてもよい。例えば、新たにトレーニングされたMLモデルにおける下品な偏見を低減するために、モデルへのトレーニングの前に下品な単語を下品でない類似の単語で置き換えてもよい。別の例では、機械学習モデルは、クエリに対する任意の応答に個人識別情報を含めることが禁止されるコンテキスト環境に属してもよい。トレーニング用発話のサブセットは、発話内の任意の固有名詞または個人識別情報を一般的な情報/単語で置き換えるようフィルタリングされてもよい。フィルタリングプロセスは、環境特有のトレーニングプロセスの目標を達成するために任意のフィルタリングを含んでもよい。
【0212】
プロセス1100のブロック1110~1150は、トレーニング用発話のサブセットが以前の再トレーニングの結果に基づいて反復的に生成される場合、反復的に実行されてもよい。例えば、モデルを再トレーニング1150した後、トレーニングデータセット内の発話は、トレーニング用発話のサブセットに類似するテスト用の発話のデータセットを生成するように修正されてもよい。テスト用データセットは、新たにトレーニングされたMLモデルに入力されて、テスト用データセット内の各発話に対するクラス分類を予測してもよい。次いで、テスト用データセットの発話、および発話の対応する信頼度値を使用して、プロセス1100のステップ1110を繰り返して、MLモデルをさらに再トレーニングしてもよい。様々な実施形態では、生成された発話に対する信頼度値が閾値以下にならなくなるまで、動作1110~1150が反復して繰り返される。
【0213】
図12は、ある実施形態による、合成発話を使用してモデルを再トレーニングするための例示的インターフェイスを示す。具体的には、
図12は、機械学習モデルを再トレーニングするためのトレーニングデータセットを生成するための例示的インターフェイス1200を示す。
図12に示されるインターフェイスは、MLモデルの機能を改善するためのトレーニングデータのセットを生成するために、クライアントまたはユーザ等のエンティティによって利用されてもよい。インターフェイス1200は閾値フィールド1210を含む。閾値フィールド1210は、プロセス1100で利用される閾値信頼度値を表示するフィールドであってもよい。閾値フィールド1210は、クライアントが閾値信頼度値を入力するように操作してもよいインターフェイス1200の対話型部分であってもよい。例えば、
図11を参照して上述したように、閾値信頼度値は、閾値信頼度値を上回る信頼度レベル(例えば
図12に示す「信頼度スコア」)に対応しないトレーニング用発話のサブセットを判断するために設定されてもよい。
【0214】
図12に示すように、受信された1つ以上の発話が、インターフェイス1200上に包括的な一覧で表示される。例えば、
図12に示すように、インターフェイス1200は発話リスト1220を含む。いくつかの実施形態では、発話リスト1220は、プロセス1100のステップ1110で受信された発話等の1つ以上の受信された発話の一覧である。
図12に関して、発話リスト1220おける取得および表示された発話は、類似の発話のバリエーションであり、プロセス500、具体的にはブロック530に関して上述した合成発話生成のためのプロセスの結果であってもよいことに留意されたい。インターフェイス1200は、予測されるインテントリスト1230を含む。予測されるインテントリスト1230は、表示された発話が対応すると予測されるインテントを包括的インターフェイスの一部として示すために、発話リスト1220とともに表示される。例えば、発話リスト1220に示される発話は、プロセス500の540等の分類結果ステップにおいて以前に予測された、インテントリスト1230内の予測されるインテントとともに示される。
【0215】
インターフェイス1200は、信頼度スコアリスト1240を含む。信頼度スコアリスト1240は、包括的インターフェイスの一部として、それがともに表示される予測されるインテントおよび入力発話に関係する対応する信頼度レベルを示すために、発話リスト1220および予測されるインテントリスト1230とともに表示されてもよい。インターフェイス1200は、対話型インテントセレクタ1250を含む。対話型インテントセレクタ1250は、インターフェイス1200の対話型要素であり、インターフェイスを利用するクライアントが、例えばプロセス1100の1140の一部として、あるトレーニングデータセットに含めるために対応する発話に対応するグラウンドトゥルースインテントを選択することを可能にする。対話型インテントセレクタ1250における選択された発話は、対応する発話に対するグラウンドトゥルースインテントとして使用されてもよく、その発話が信頼度スコア以下の信頼度スコアと関連付けられる場合、トレーニング用発話のサブセットにおけるその発話の包含を引き起こしてもよい。したがって、インターフェイス1200を利用するクライアントは、発話を有する包括的なトレーニングデータセットを、ゼロから新たなトレーニング用発話を手動で作成する必要なく、生成してもよい。
【0216】
図13は、ある実施形態による、合成発話を使用してモデルを再トレーニングするための例示的インターフェイスを示す。具体的には、
図13は、追加の対話型フィールドを有する
図12の包括的インターフェイス1200を示す。閾値入力フィールド1300は、指定された閾値信頼度値を入力してもよい対話型閾値フィールドである。閾値入力フィールド1300は、ユーザが閾値フィールド1210と対話した後のフィールドに対応してもよい。
図13に示すインターフェイスのユーザは、インターフェイスを利用して、
図11で説明したプロセスを含む、ここにおいて説明する方法を実行してもよい。例えば、ユーザは、最初に、閾値入力フィールド1300において、プロセス1100の一部、具体的には、ブロック1120および1130として使用されることになる閾値信頼度値を指定してもよい。入力された閾値信頼度値は、MLモデルをトレーニングするためのトレーニングデータセットに含めるための発話のサブセットを判断するために使用される。
【0217】
図13に示されていない様々な実施形態では、ボタンまたは他の対話型要素が、表示された発話に結合されてもよく、それは、対話されると、表示された発話と類似する合成発話の生成を引き起こす。クライアントは、インターフェイスの対話型ボタンまたは要素を選択して、クライアントによって行われた入力に基づいて、トレーニングデータセットのセットの生成を開始してもよい。様々な実施形態では、閾値信頼度値以下の信頼度値に関連付けられる発話のみのかわりに、表示された発話の隣のチェックボックスを使用してクライアントによって手動で選択された発話のみが再トレーニングデータにおいて使用されることになる。特定の実施形態に従って合成発話を生成する例は、JavaScriptオブジェクト表記(JSON)スクリプトにおいて以下に示される。例えば、以下のスクリプトによって記述される合成発話の生成は、530および/またはプロセス1100等の合成発話生成プロセスにおいて使用され得る。
【0218】
表2 (JSONにおいて)合成発話を生成する例の説明セクション
【0219】
【0220】
【0221】
【0222】
具体的には、特定の発話に基づく類似の合成発話を生成するステップが示されている。ステップは、モデルを再トレーニングするための合成発話(手動で書かれたり発話リポジトリから取られていない発話)のセットの作成に対応する。合成発話は、再トレーニングデータ生成の一部として生成され、データオブジェクト「utterances_with_similar_predictions」に追加される。発話は、「b'Add」コマンドとともに追加される。
【0223】
報告を要求し、トレーニングデータセットを生成するための、組み合わされたインターフェイス
図14は、ある実施形態による、トレーニングデータセット生成プロセスの一部としての推論結果を説明するための例示的インターフェイスを示す。具体的には、
図14は、いくつかの実施形態による、発話が与えられて1つ以上の推論結果の包括的な分析を表示するためのインターフェイス1400を示す。例えば、
図14は、何らかの入力発話が与えられた場合に機械学習モデルによって行われる予測に関連付けられる推論結果を表示する対話型インターフェイス1400を含む。インターフェイス1400は、何らかの基準に従って表示される様々な推論結果の一覧を示す。
図14に示すように、推論結果が入力発話の分類をインテント「未解決のインテント」インテントと一致するものとして含んだすべての発話が表示される。対応する発話は、対応する推論結果とともにインターフェイス1400上に表示される。
【0224】
推論結果は、当該発話に最も近く対応すると予測されるインテントと、ある発話におそらく対応した可能性のある他のインテントとを含む。例えば、1行目には、「add another song to the Cita Romntica playlist(別の楽曲をCita Romnticaプレイリストに追加して)」という発話が、推論結果において判断される発話の様々な局面とともに表示される。発話に対応すると予測される「未解決のインテント」インテントに加えて、「勝率」も表示される。勝率は、結果インテントが発話に対応するという予測される確率に対応するスコアである。いくつかの実施形態では、勝率は、発話に対応すると予測される一次的インテント/スキルを表す第1の信頼度値と、発話に対応すると予測される二次的インテント/スキルを表す第2の信頼度値との間の計算された差分である。
【0225】
推論報告はまた、潜在的な予測可能なインテントの内訳と、発話と予測されるインテントとの間の対応の相対的信頼度レベルとを示すインテントスコアチャートも含む。推論報告は、対話型インテント選択フィールドを含む。対話型インテント選択フィールドは、対話されると、提案される対応するインテントでフィールドをオートフィルする提案ボタンに近接して提示されてもよい。オートフィルフィールドは、モデルを再トレーニングするためのトレーニングデータセットに含めるための、発話およびグラウンドトゥルーストレーニングカテゴリ対を生成するために、使用されてもよい。例えば、クライアントは、「別の楽曲をCita Romnticaプレイリストに追加して」という発話の隣のチェックボックスを選択してもよい。次いで、クライアントは、インターフェイス1400の「例を追加」ボタンなどのボタンを押して、クライアントによって選択された発話および対応するグラウンドトゥルースインテントを含むトレーニングデータ点の生成を引き起こすことができる。次いで、トレーニングデータ点は、将来チャットボットシステムのMLモデルをトレーニングするためにトレーニングデータセットに含まれてもよい。
【0226】
インターフェイス1400はまた、推論結果のキューを分析するためのボタンも備える。例えば、トレーニングデータ点を生成するために「例を追加」ボタンを押す代わりに、クライアントは、
図5のプロセス500に記載されるように、対応する発話を与えられて推論結果に関係する説明報告を要求するために「キューを分析するよう追加」ボタンを押すことができる。
【0227】
図15は、ある実施形態による、推論結果を説明するための例示的インターフェイスを示す。具体的には、
図15は、推論結果および対応する発話が分析キューへの導入のために選択された後のインターフェイス1400に類似するインターフェイスを示す。通知1500は、選択された推論結果が、要求が要求された推論結果のキューに追加されたことをユーザに通知するために、インターフェイス上に含まれてもよい。例えば、インターフェイス1400内のチェックボックスを使用して推論結果を選択し、「キューを分析」ボタンをクリックすることによって、プロセス500等のプロセスが、選択された推論結果および発話と関連付けられる対応する発話およびMLモデルに対して開始されてもよい。次いで、通知1500は、特定の推論結果が分析されていることおよび説明報告が生成されていることをユーザに警告してもよい。
【0228】
図16は、ある実施形態による、推論結果を説明するための例示的インターフェイスを示す。具体的には、
図16は、プロセス500を利用する発話分析ツール等の発話分析ツールによって発話が分析された後のインターフェイス1400/1500に類似するインターフェイスを示す。通知1600は、選択された推論結果/発話が分析されたこと、および報告が閲覧の準備ができていることをユーザに通知するために、インターフェイス上に含まれてもよい。
【0229】
図17は、ある実施形態による、推論結果を説明するための例示的インターフェイスを示す。具体的には、
図17は、説明報告が保留中であり、まだ生成を終了していない間のインターフェイス1400/1500/1600と同様のインターフェイスを示す。例えば、インターフェイスのクライアントまたはユーザが説明報告の生成を待っている間、ユーザは、
図17に示される表示されたインターフェイスを見て、説明分析がまだ完了していないことをユーザに知らせてもよい。
【0230】
ある実施形態による、発話の分類結果に対する説明に対する要求を提出する実施例が、JavaScript(登録商標)オブジェクト表記(JSON)スクリプトにおいて以下に示される。
【0231】
表3 (JSONにおいて)合成発話を生成する例の説明セクション
【0232】
【0233】
【0234】
【0235】
【0236】
示される例では、要求は、クエリ(例えば発話「money available」)を入力し、続いてコマンド「getexplain(説明を取得)」を入力することによって、提出されてもよい。JavaScriptオブジェクト表記(JSON)ファイルが、示されるように、クエリおよび説明要求のために生成されてもよい。
【0237】
図18は、ある実施形態による、発話の分類についての説明の出力の実施例を示す。図示の例では、分析される発話は、上記の表に示されるように、「another agent question(別のエージェント質問)」である。出力は、報告へのリンク1810と、例えばプロセス500の530の一部として、選択されたアンカーのリスト1820と、アンカーのリスト1820のアンカーの各セットについての対応する信頼度レベル1830とを含んでもよい。例えば、アンカーセット「question(質問)」に関連付けられる信頼度レベルは、約33.8%であってもよく、入力発話に対して正しいインテントが予測されたという0.33の信頼度メトリックに対応する。アンカー単語「question(質問)」および「another(別の)」を使用する、アンカー「question another」に関連付けられる信頼度は、約100%である。これは、アンカー単語を与えられて完全な精度で予測された回答を表す(例えば、MLモデルは、以前にそれらのアンカー単語で大量にトレーニングされている)。
【0238】
図19は、ある実施形態を実現するための分散型システム1900の簡略図である。図示される例において、分散型システム900は、1つ以上の通信ネットワーク1910を介してサーバ1912に結合された1つ以上のクライアントコンピューティングデバイス1902、1904、1906、および1908を含む。クライアントコンピューティングデバイス1902、1904、1906、および1908は、1つ以上のアプリケーションを実行するように構成され得る。
【0239】
さまざまな例において、サーバ1912は、本開示に記載される1つ以上の実施形態を可能にする1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。ある例では、サーバ1912はまた、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの例では、これらのサービスは、クライアントコンピューティングデバイス1902、1904、1906および/または1908のユーザに対して、サービスとしてのソフトウェア(Software as a Service:SaaS)モデル下のように、ウェブベースのサービスまたはクラウドサービスとして提供され得る。クライアントコンピューティングデバイス1902、1904、1906および/または1908を操作するユーザは、1つ以上のクライアントアプリケーションを利用してサーバ1912とやり取りすることで、これらのコンポーネントによって提供されるサービスを利用し得る。
【0240】
図19に示される構成では、サーバ1912は、サーバ1912によって実行される機能を実現する1つ以上のコンポーネント1918、1920および1922を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはそれらの組合わせによって実行され得るソフトウェアコンポーネントを含み得る。分散型システム1900とは異なり得る多種多様なシステム構成が可能であることが認識されるはずである。したがって、
図19に示される例は、例のシステムを実現するための分散型システムの一例であり、限定するよう意図されたものではない。
【0241】
ユーザは、クライアントコンピューティングデバイス1902、1904、1906および/または1908を用いて、1つ以上のアプリケーションを実行し、それは、1つ以上の格納要求を生成してもよく、それは次いで本開示の教示に従って処理されてもよい。クライアントデバイスは、当該クライアントデバイスのユーザが当該クライアントデバイスと対話することを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介してユーザに情報を出力してもよい。
図19は4つのクライアントコンピューティングデバイスだけを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0242】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどの、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、さまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえばMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、Linux(登録商標)またはLinux系オペレーティングシステム、たとえば、各種モバイルオペレーティングシステム(たとえばMicrosoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含むGoogle Chrome(登録商標)OS)を含み得る。ポータブルハンドヘルドデバイスは、セルラーフォン、スマートフォン(たとえばiPhone(登録商標))、タブレット(たとえばiPad(登録商標))、携帯情報端末(PDA)などを含み得る。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイおよびその他のデバイスを含み得る。ゲームシステムは、各種ハンドヘルドゲームデバイス、インターネット接続可能なゲームデバイス(たとえばKinect(登録商標)ジェスチャ入力デバイス付き/無しのMicrosoft Xbox(登録商標)ゲーム機、Sony PlayStation(登録商標)システム、Nintendo(登録商標)が提供する各種ゲームシステムなど)を含み得る。クライアントデバイスは、各種インターネット関連アプリケーション、通信アプリケーション(たとえばEメールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)のような多種多様なアプリケーションを実行可能であってもよく、各種通信プロトコルを使用してもよい。
【0243】
通信ネットワーク1910は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当該技術の当業者には周知のいずれかの種類のネットワークであればよく、上記プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない。単に一例として、通信ネットワーク1910は、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば電気電子学会(IEEE)802.11プロトコルスイートのいずれかの下で動作する無線ネットワーク、Bluetooth(登録商標)および/または任意の他の無線プロトコル)、および/またはこれらおよび/または他のネットワークの任意の組み合わせを含み得る。
【0244】
サーバ1912は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組み合わせで構成されてもよい。サーバ1912は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。これはたとえば、サーバに対して仮想記憶装置を維持するように仮想化できる論理記憶装置の1つ以上のフレキシブルプールなどである。様々な例において、サーバ1912を、上記開示に記載の機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合させてもよい。
【0245】
サーバ1912内のコンピューティングシステムは、上記オペレーティングシステムのうちのいずれかを含む1つ以上のオペレーティングシステム、および、市販されているサーバオペレーティングシステムを実行し得る。また、サーバ1912は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらに他のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものを含むが、それらに限定されない。
【0246】
いくつかの実現例において、サーバ1912は、クライアントコンピューティングデバイス1902、1904、1906および1908のユーザから受信したデータフィードおよび/またはイベントアップデートを解析および整理統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどに関連するリアルタイムのイベントを含んでもよい、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムのアップデートを含み得るが、それらに限定されない。サーバ1912は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス1902、1904、1906および1908の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションも含み得る。
【0247】
分散型システム1900はまた、1つ以上のデータリポジトリ1914、1916を含み得る。特定の例において、これらのデータリポジトリを用いてデータおよびその他の情報を格納することができる。例えば、データリポジトリ1914、1916のうちの1つ以上を用いて、認証機能を実行するときにサーバ1912によって使用される、ストレージ仮想マシンに関連する情報、アプリケーションIDを選択されたストレージ仮想マシンへの適用にマッピングする情報、および他の情報などの情報を記憶してもよい。データリポジトリ1914、1916は、さまざまな場所に存在し得る。たとえば、サーバ1912が使用するデータリポジトリは、サーバ1912のローカル位置にあってもよく、またはサーバ1912から遠隔の位置にあってもよく、ネットワークベースの接続または専用接続を介してサーバ1912と通信する。データリポジトリ1914、1916は、異なる種類であってもよい。特定の例において、サーバ1912が使用するデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および他の製造業者が提供するデータベースのようなリレーショナルデータベースであってもよい。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするように適合させてもよい。
【0248】
特定の例では、データリポジトリ1914、1916のうちの1つ以上は、アプリケーションデータを格納するためにアプリケーションによって用いられてもよい。アプリケーションが使用するデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリのようなさまざまな種類のものであってもよい。
【0249】
特定の例において、本開示に記載される機能は、クラウド環境を介してサービスとして提供され得る。
図20は、いくつかの実施形態を実現するためのクラウドベースのシステム環境システム2000の簡略ブロック図である。クラウドベースのシステム環境システム2000では、特定の例に従って、各種サービスをクラウドサービスとして提供し得るクラウドベースのシステム環境の簡略化されたブロック図である。
図20に示される例において、クラウドインフラストラクチャシステム2002は、ユーザが1つ以上のクライアントコンピューティングデバイス2004、2006および2008を用いて要求し得る1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム2002は、サーバ1912に関して先に述べたものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。クラウドインフラストラクチャシステム2002内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および/または組み合わせとして編成され得る。
【0250】
ネットワーク2010は、クライアントコンピューティングデバイス2004、2006、および2008と、クラウドインフラストラクチャシステム2002との間におけるデータの通信および交換を容易にし得る。ネットワーク2010は、1つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク2010は、通信を容易にするために、有線および/または無線プロトコルを含む、1つ以上の通信プロトコルをサポートし得る。
【0251】
図20に示される例は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの例において、クラウドインフラストラクチャシステム2002が、
図20に示されるものよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、または、異なる構成または配置のコンポーネントを有していてもよいことが、理解されるはずである。たとえば、
図20は3つのクライアントコンピューティングデバイスを示しているが、代替例においては、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0252】
クラウドサービスという用語は一般に、サービスプロバイダのシステム(たとえばクラウドインフラストラクチャシステム2002)により、インターネット等の通信ネットワークを介してオンデマンドでユーザにとって利用可能にされるサービスを指すのに使用される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストし得るとともに、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介してオンデマンドでアプリケーションをオーダーして使用し得る。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。たとえば、ミドルウェアサービス、データベースサービス、Java(登録商標)クラウドサービスなどのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)から提供される。
【0253】
特定の例において、クラウドインフラストラクチャシステム2002は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデルなどのさまざまなモデルを使用して、1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム2002は、各種クラウドサービスのプロビジョンを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースのスイートを含み得る。
【0254】
SaaSモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。たとえば、SaaSモデルを用いることにより、クラウドインフラストラクチャシステム2002がホストするオンデマンドアプリケーションに顧客がアクセスできるようにし得る。Oracle Corporation(登録商標)が提供するSaaSサービスの例は、人的資源/資本管理のための各種サービス、カスタマー・リレーションシップ・マネジメント(CRM)、エンタープライズ・リソース・プランニング(ERP)、サプライチェーン・マネジメント(SCM)、エンタープライズ・パフォーマンス・マネジメント(EPM)、解析サービス、ソーシャルアプリケーションなどを含むがこれらに限定されない。
【0255】
IaaSモデルは一般に、インフラストラクチャリソース(たとえばサーバ、ストレージ、ハードウェアおよびネットワーキングリソース)を、クラウドサービスとして顧客に提供することにより、柔軟な計算およびストレージ機能を提供するために使用される。各種IaaSサービスがOracle Corporation(登録商標)から提供される。
【0256】
PaaSモデルは一般に、顧客が、環境リソースを調達、構築、または管理しなくても、アプリケーションおよびサービスを開発、実行、および管理することを可能にするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例は、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、各種アプリケーション開発ソリューションサービスなどを含むがこれらに限定されない。
【0257】
クラウドサービスは一般に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。たとえば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム2002が提供する1つ以上のサービスをオーダーしてもよい。次いで、クラウドインフラストラクチャシステム2002は、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。例えば、ユーザは、クラウドインフラストラクチャシステムに対して、上述のように、アプリケーションを登録し、アプリケーションの指定された要件に従ってアプリケーションにサービスを提供するよう、要求してもよい。クラウドインフラストラクチャシステム2002を、1つのクラウドサービスまたは複数のクラウドサービスであっても提供するように構成してもよい。
【0258】
クラウドインフラストラクチャシステム2002は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム2002は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。このカスタマーは個人または企業であってもよい。ある他の例では、プライベートクラウドモデル下において、クラウドインフラストラクチャシステム2002がある組織内で(たとえば企業組織内で)機能してもよく、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部などの企業のさまざまな部署であってもよく、企業内の個人であってもよい。ある他の例では、コミュニティクラウドモデル下において、クラウドインフラストラクチャシステム2002および提供されるサービスは、関連コミュニティ内のさまざまな組織で共有されてもよい。上記モデルの混成モデルなどのその他各種モデルが用いられてもよい。
【0259】
クライアントコンピューティングデバイス2004、2006、および2008は、異なるタイプであってもよく、1つ以上のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム2002が提供するサービスを要求することなど、クラウドインフラストラクチャシステム2002とのやり取りを行い得る。たとえば、ユーザは、クライアントデバイスを使用して、本開示で説明する認証関連サービスを要求してもよい。
【0260】
いくつかの例において、クラウドインフラストラクチャシステム2002が、サービスを提供するために実行する処理は、ビッグデータ解析を含み得る。この解析は、大きなデータセットを使用し、解析し、処理することにより、このデータ内のさまざまな傾向、挙動、関係などを検出し可視化することを含み得る。この解析は、1つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行してもよい。例えば、ビッグデータ分析は、どのストレージ仮想マシンが特定のアプリケーションのために選択されるべきかを、そのアプリケーションの述べられた認証関連要件に基づいて判断するために、クラウドインフラストラクチャシステム2002によって実行されてもよい。この分析に使用されるデータは、構造化データ(たとえばデータベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含んでもよい。
【0261】
図20の例に示されるように、クラウドインフラストラクチャシステム2002は、クラウドインフラストラクチャシステム2002が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース2030を含み得る。インフラストラクチャリソース2030は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。特定の例では、アプリケーションから要求されたストレージを処理するために利用可能なストレージ仮想マシンは、クラウドインフラストラクチャシステム2002の一部である場合がある。他の例では、ストレージ仮想マシンは、異なるシステムの一部である場合がある。
【0262】
特定の例において、異なる顧客に対しクラウドインフラストラクチャシステム2002が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースのセットまたはリソースモジュール(「ポッド」とも処される)にまとめてもよい。各リソースモジュールまたはポッドは、1種類以上のリソースを予め一体化し最適化した組み合わせを含み得る。特定の例において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングしてもよい。たとえば、第1のポッドセットをデータベースサービスのためにプロビジョニングしてもよく、第1のポッドセット内のポッドと異なるリソースの組み合わせを含み得る第2のポッドセットをJavaサービスなどのためにプロビジョニングしてもよい。いくつかのサービスについて、これらのサービスをプロビジョニングするために割り当てられたリソースをサービス間で共有してもよい。
【0263】
クラウドインフラストラクチャシステム2002自体が、クラウドインフラストラクチャシステム2002の異なるコンポーネントによって共有されるとともにクラウドインフラストラクチャシステム2002によるサービスのプロビジョニングを容易にするサービス2032を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性、バックアップリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【0264】
クラウドインフラストラクチャシステム2002は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組み合わせで実現され得る。
図20に示されるように、サブシステムは、クラウドインフラストラクチャシステム2002のユーザまたは顧客がクラウドインフラストラクチャシステム2002とやり取りすることを可能にするユーザインターフェイスサブシステム2012を含み得る。ユーザインターフェイスサブシステム2012は、ウェブインターフェイス2014、クラウドインフラストラクチャシステム2002が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス2016、およびその他のインターフェイス2018などの、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用いて、クラウドインフラストラクチャシステム2002がインターフェイス2014、2016、および2018のうちの1つ以上を用いて提供する1つ以上のサービスを要求(サービス要求2034)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム2002が提供するクラウドサービスをブラウズし、クラウドインフラストラクチャシステム2002が提供するとともに顧客が申し込むことを所望する1つ以上のサービスについてサブスクリプションオーダーを行い得る。このサービス要求は、顧客と、顧客が申しむことを所望する1つ以上のサービスを識別する情報を含んでいてもよい。たとえば、顧客は、クラウドインフラストラクチャシステム2002によって提供されるサービスの申し込み注文を出すことができる。注文の一部として、顧客は、サービスが提供されるアプリケーションを識別する情報と、アプリケーションの1つ以上の資格情報を提供することができる。
【0265】
図20に示される例のような特定の例において、クラウドインフラストラクチャシステム2002は、新しいオーダーを処理するように構成されたオーダー管理サブシステム(order management subsystem:OMS)2020を含み得る。この処理の一部として、OMS2020は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。
【0266】
適切に妥当性確認がなされると、OMS2020は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(OPS)2024を呼び出し得る。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。たとえば、あるワークフローに従うと、OPS2024を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
【0267】
特定の例では、セットアップ段階処理は、上記のように、クラウドインフラストラクチャシステム2002によって、プロビジョニングプロセスの一部として実行され得る。クラウドインフラシステム2002は、アプリケーションIDを生成し、クラウドインフラシステム2002自体によって提供されるストレージ仮想マシンの中から、またはクラウドインフラシステム2002以外の他のシステムによって提供されるストレージ仮想マシンから、アプリケーション用のストレージ仮想マシンを選択することができる。
【0268】
クラウドインフラストラクチャシステム2002は、要求されたサービスがいつ使用できるようになるかを示すために、レスポンスまたは通知2044を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(たとえばリンク)を顧客に送信してもよい。特定の例では、サービスを要求する顧客に対して、応答は、クラウドインフラストラクチャシステム2002によって生成されたアプリケーションID、およびアプリケーションIDに対応するアプリケーションのためにクラウドインフラストラクチャシステム2002によって選択された仮想マシンを識別する情報を含んでもよい。
【0269】
クラウドインフラストラクチャシステム2002はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム2002は、顧客から受けた1つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を果たす。また、クラウドインフラストラクチャシステム2002は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金はたとえば月ごとに行ってもよい。
【0270】
クラウドインフラストラクチャシステム2002は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム2002は、場合によっては著作権情報を含む、これらの顧客についての情報を格納してもよい。特定の例において、クラウドインフラストラクチャシステム2002は、顧客の情報を管理するとともに管理される情報を分離することで、ある顧客に関する情報が別の顧客に関する情報からアクセスされないようにするように構成された、アイデンティティ管理サブシステム(IMS)2028を含む。IMS2028は、たとえば情報アクセス管理、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスなどを含んでもよいアイデンティティサービスなどの各種セキュリティ関連サービスを提供するように構成されてもよい。
【0271】
図21は、いくつかの実施形態を実現するためのコンピュータシステム2100の例を示す。いくつかの例では、コンピュータシステム2100は、アプリケーションシステム、アクセス管理システム、データセンタ内のシステム、ならびに上記で説明した様々なサーバおよびコンピュータシステムのいずれかを実現するために使用されてもよい。
図21に示されるように、コンピュータシステム2100は、バスサブシステム2102を介して他のいくつかのサブシステムと通信する処理サブシステム2104を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット2106、I/Oサブシステム2108、ストレージサブシステム2118、および通信サブシステム2124を含み得る。ストレージサブシステム2118は、コンピュータ可読記憶媒体2122およびシステムメモリ2110を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0272】
バスサブシステム2102は、コンピュータシステム2100のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム2102は単一のバスとして概略的に示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム2102は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスなどを含み得る。
【0273】
処理サブシステム2104は、コンピュータシステム2100の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム2100の処理リソースを、1つ以上の処理ユニット2132、2134などに組織することができる。処理ユニットは、1つ以上のプロセッサ、同一のまたは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの例において、処理サブシステム2104は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)などのような1つ以上の専用コプロセッサを含み得る。いくつかの例では、処理サブシステム2104の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を使用し得る。
【0274】
いくつかの例において、処理サブシステム2104内の処理ユニットは、システムメモリ2110またはコンピュータ可読記憶媒体2122に格納された命令を実行し得る。さまざまな例において、処理ユニットはさまざまなプログラムまたはコード命令を実行するとともに、同時に実行する複数のプログラムまたはプロセスを維持し得る。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ2110および/または潜在的に1つ以上の記憶装置を含むコンピュータ可読記憶媒体2122に常駐していてもよい。適切なプログラミングを介して、処理サブシステム2104は、上述のさまざまな機能を提供し得る。コンピュータシステム2100が1つ以上の仮想マシンを実行している例において、1つ以上の処理ユニットが各仮想マシンに割り当ててもよい。
【0275】
特定の例において、コンピュータシステム2100によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム2104によって実行される処理の一部をオフロードするために、処理加速ユニット2106を任意に設けることができる。
【0276】
I/Oサブシステム2108は、コンピュータシステム2100に情報を入力するための、および/またはコンピュータシステム2100から、もしくはコンピュータシステム2100を介して、情報を出力するための、デバイスおよび機構を含むことができる。一般に、「入力デバイス」という語の使用は、コンピュータシステム2100に情報を入力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを提供するデバイスなど、モーションセンシングおよび/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
【0277】
ユーザインターフェイス入力デバイスの他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含んでもよいが、それらに限定されない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【0278】
一般に、出力デバイスという語の使用は、コンピュータシステム2100からユーザまたは他のコンピュータに情報を出力するための考えられるすべてのタイプのデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、計画デバイス、タッチスクリーンなどであってもよい。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されない。
【0279】
ストレージサブシステム2118は、コンピュータシステム2100によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム2118は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ可読記憶媒体を提供する。処理サブシステム2104によって実行されると上述の機能を提供するソフトウェア(たとえばプログラム、コードモジュール、命令)が、ストレージサブシステム2118に格納されてもよい。ソフトウェアは、処理サブシステム2104の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム2118はまた、本開示の教示に従って認証を提供してもよい。
【0280】
ストレージサブシステム2118は、揮発性および不揮発性メモリデバイスを含む1つ以上の非一時的メモリデバイスを含み得る。
図21に示すように、ストレージサブシステム2118は、システムメモリ2110およびコンピュータ可読記憶媒体2122を含む。システムメモリ2110は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ(RAM)と、固定命令が格納される不揮発性読取り専用メモリ(ROM)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実現例において、起動中などにコンピュータシステム2100内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)は、典型的には、ROMに格納されてもよい。典型的に、RAMは、処理サブシステム2104によって現在操作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ2110は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なるタイプのメモリを含み得る。
【0281】
一例として、限定を伴うことなく、
図21に示されるように、システムメモリ2110は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム2112、プログラムデータ2114、およびオペレーティングシステム2116を、ロードしてもよい。一例として、オペレーティングシステム2116は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステム、市販されているさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、および/または、iOS(登録商標)、Windows Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムのようなさまざまなバージョンのモバイルオペレーティングシステムなどを、含み得る。
【0282】
コンピュータ可読記憶媒体2122は、いくつかの例の機能を提供するプログラミングおよびデータ構成を格納することができる。コンピュータ可読記憶媒体2122は、コンピュータシステム2100のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供することができる。処理サブシステム2104によって実行されると上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム2118に格納されてもよい。一例として、コンピュータ可読記憶媒体2122は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ可読記憶媒体2122は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されない。コンピュータ可読記憶媒体2122は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMのような揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含み得る。
【0283】
特定の例において、ストレージサブシステム2118は、コンピュータ可読記憶媒体2122にさらに接続可能なコンピュータ可読記憶媒体リーダ2120も含み得る。リーダ2120は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。
【0284】
特定の例において、コンピュータシステム2100は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム2100は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。特定の例において、コンピュータシステム2100は、仮想マシンの構成および管理を容易にするハイパーバイザなどのプログラムを実行し得る。各仮想マシンには、メモリ、演算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースを割り当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的には、コンピュータシステム2100によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るかまたは異なり得るそれ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム2100によって同時に実行され得る。
【0285】
通信サブシステム2124は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム2124は、他のシステムとコンピュータシステム2100との間のデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム2124は、コンピュータシステム2100が、1つ以上のクライアントデバイスとの間で情報を送信および/または受信するために、インターネットを介して1つ以上のクライアントデバイスへの通信チャネルを確立することを可能にし得る。例えば、コンピュータシステム2100が、
図1に示されるボットシステム120を実現するために使用される場合、通信サブシステムは、アプリケーションシステム、およびアプリケーション用に選択されたストレージ仮想マシンを実行するシステムとも通信するために使用され得る。
【0286】
通信サブシステム2124は、有線および/または無線通信プロトコルの両方をサポートし得る。ある例において、通信サブシステム2124は、(たとえば、セルラー電話技術、3G、4G、EDGE(グローバル進化のための高速データレート)もしくは5Gなどの先進データネットワーク技術、WiFi(IEEE802.XXファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの例において、通信サブシステム2124は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続(たとえばEthernet(登録商標))を提供し得る。
【0287】
通信サブシステム2124は、さまざまな形式でデータを受信および送信し得る。いくつかの例において、通信サブシステム2124は、他の形式に加えて、構造化データフィードおよび/または非構造化データフィード2126、イベントストリーム2128、イベントアップデート2130などの形式で入力通信を受信してもよい。たとえば、通信サブシステム2124は、ソーシャルメディアネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード2126を受信(または送信)するように構成されてもよい。
【0288】
特定の例において、通信サブシステム2124は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム2128および/またはイベントアップデート2130を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどを挙げることができる。
【0289】
通信サブシステム2124は、コンピュータシステム2100からのデータを他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード2126、イベントストリーム2128、イベントアップデート2130などのような各種異なる形式で、コンピュータシステム2100に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに、伝えられてもよい。
【0290】
コンピュータシステム2100は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのうちの1つであればよい。コンピュータおよびネットワークの性質が常に変化しているため、
図21に示されるコンピュータシステム2100の記載は、具体的な例として意図されているに過ぎない。
図21に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が可能である。ここで提供される開示および教示に基づいて、当業者は、様々な例を実現するための他の方法および/または方法を諒解されよう。
【0291】
特定の例について説明したが、さまざまな変形、変更、代替構成、および均等物が可能である。例は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作させることができる。さらに、例を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行されてもよい。加えて、動作の順序を再指定してもよい。プロセスは図に含まれない追加のステップを有し得る。上記の例の各種特徴および局面は、個別に使用されてもよく、またはともに使用されてもよい。
【0292】
さらに、特定の例をハードウェアとソフトウェアとの特定の組み合わせを用いて説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。特定の例は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現されてもよい。
【0293】
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計することにより、動作を実行するようにプログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、たとえば、非一時的なメモリ媒体に格納されたコードもしくは命令またはそれらの任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどにより、達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。
【0294】
本開示では具体的な詳細を示すことにより例が十分に理解されるようにしている。しかしながら、例はこれらの具体的な詳細がなくとも実施し得るものである。たとえば、周知の回路、プロセス、アルゴリズム、構造、および技術は、例が曖昧にならないようにするために不必要な詳細事項なしで示している。本明細書は例示的な例のみを提供し、他の例の範囲、適用可能性、または構成を限定するよう意図されたものではない。むしろ、例の上記説明は、各種例を実現することを可能にする説明を当業者に提供する。要素の機能および構成の範囲内でさまざまな変更が可能である。
【0295】
したがって、明細書および図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされ得ることは明らかであろう。このように、具体的な例を説明してきたが、これらは限定を意図するものではない。さまざまな変形例および同等例は添付の特許請求の範囲内にある。
【0296】
上記の明細書では、本開示の局面についてその具体的な例を参照して説明しているが、本開示はそれに限定されるものではないということを当業者は認識するであろう。上記の開示のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、例は、明細書のさらに広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境および用途で利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
【0297】
上記の説明では、例示の目的で、方法を特定の順序で記載した。代替の例では、方法は記載された順序とは異なる順序で実行されてもよいことを理解されたい。また、上記の方法は、ハードウェアコンポーネントによって実行されてもよいし、マシン実行可能命令であって、用いられると、そのような命令でプログラムされた汎用もしくは専用のプロセッサまたは論理回路などのマシンに方法を実行させてもよいマシン実行可能命令のシーケンスで具体化されてもよいことも理解されたい。これらのマシン実行可能命令は、CD-ROMもしくは他の種類の光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気もしくは光学カード、フラッシュメモリのような、1つ以上の機械可読媒体、または電子命令を記憶するのに適した他の種類の機械可読媒体に保存できる。代替的に、これらの方法は、ハードウェアとソフトウェアとの組み合わせによって実行されてもよい。
【0298】
構成要素が特定の動作を実行するように構成されるとして記載されている場合、そのような構成は、たとえば、特定の動作を実行するよう電子回路もしくは他のハードウェアを設計すること、特定の動作を実行するようプログラミング可能な電子回路(たとえばマイクロプロセッサもしくは他の好適な電子回路)をプログラミングすること、またはそれらの任意の組み合わせによって達成されてもよい。
【0299】
本願の説明のための例をここに詳細に記載したが、本発明の概念は、他の態様で様々に具現化および採用され得ること、および特許請求の範囲は、先行技術によって制限される場合を除き、そのような変形を含むように解釈されるよう意図されることを理解されたい。
【国際調査報告】