(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-07
(54)【発明の名称】ニューラルネットワークにおける過剰予測のための方法およびシステム
(51)【国際特許分類】
G06N 3/04 20230101AFI20231130BHJP
G06F 16/90 20190101ALI20231130BHJP
【FI】
G06N3/04
G06F16/90 100
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023532791
(86)(22)【出願日】2021-11-17
(85)【翻訳文提出日】2023-07-27
(86)【国際出願番号】 US2021059686
(87)【国際公開番号】W WO2022115291
(87)【国際公開日】2022-06-02
(32)【優先日】2020-11-30
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-11-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ホアン,コン・ズイ・ブー
(72)【発明者】
【氏名】ブー,タン・ティエン
(72)【発明者】
【氏名】ザレムーディ,ポーヤ
(72)【発明者】
【氏名】シュ,イン
(72)【発明者】
【氏名】ブリノフ,ブラディスラフ
(72)【発明者】
【氏名】ホング,ユ-ヘング
(72)【発明者】
【氏名】ダルマシリ,ヤクピティヤゲ・ドン・タヌジャ・サモッダイ
(72)【発明者】
【氏名】ビシュノイ,ビシャル
(72)【発明者】
【氏名】ジャラルッディン,エリアス・ ルクマン
(72)【発明者】
【氏名】パレク,マニッシュ
(72)【発明者】
【氏名】ドゥオング,タン・ロング
(72)【発明者】
【氏名】ジョンソン,マーク・エドワード
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA01
(57)【要約】
チャットボットシステムにおける機械学習モデルに関連付けられた過剰確信問題に対処するための技術が本明細書に開示されている。機械学習モデルの複数の層の各層について、入力発話に関する複数の予測の信頼度スコア分布が生成される。上記層について生成された上記信頼度スコア分布に基づいて、上記機械学習モデルの各層について予測が決定される。上記予測に基づいて、上記機械学習モデルの総合的な予測が決定される。上記複数の層のサブセットが繰り返し処理されて、割り当てられた予測が基準を満たす層を識別する。上記機械学習モデルの上記層の上記割り当てられた予測に関連付けられた信頼度スコアが、上記機械学習モデルの上記総合的な予測に関連付けられる総合的な信頼度スコアとして割り当てられる。
【特許請求の範囲】
【請求項1】
方法であって、
機械学習モデルの複数の層の各層について、入力発話に関する複数の予測の信頼度スコア分布を生成するステップと、
前記層について生成された前記信頼度スコア分布に基づいて、前記機械学習モデルの各層に割り当てられる予測を決定するステップと、
前記決定に基づいて、前記機械学習モデルの総合的な予測を生成するステップと、
前記機械学習モデルの前記複数の層のサブセットを繰り返し処理して、割り当てられた予測が基準を満たす前記機械学習モデルの層を識別するステップと、
前記機械学習モデルの前記層の前記割り当てられた予測に関連付けられた信頼度スコアを、前記機械学習モデルの前記総合的な予測に関連付けられる総合的な信頼度スコアとして割り当てるステップとを備える、方法。
【請求項2】
前記機械学習モデルの各層に割り当てられる予測を決定するステップは、
前記層について生成された前記信頼度スコア分布の中で最も高い信頼度スコアを有する前記複数の予測のうちの1つを、前記層についての前記予測として割り当てるステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記機械学習モデルの前記総合的な予測を生成するステップは、
最後の層に関連付けられた前記信頼度スコア分布の中で最も高い信頼度スコアを有する前記機械学習モデルの前記最後の層の予測を、前記機械学習モデルの前記総合的な予測として割り当てるステップをさらに含み、前記最後の層は、前記機械学習モデルの出力層である、請求項1に記載の方法。
【請求項4】
前記基準は、前記層の前記割り当てられた予測が前記機械学習モデルの前記総合的な予測と同一であることに対応する、請求項1に記載の方法。
【請求項5】
前記機械学習モデルの前記複数の層は、N個の層を含み、前記複数の層の前記サブセットは、前記機械学習モデルの最初のN-1個の層に対応し、前記機械学習モデルは、ディープニューラルネットワークモデルである、請求項1に記載の方法。
【請求項6】
前記機械学習モデルは、前記入力発話を受信して埋め込みを生成するように構成されたエンコーダを含み、前記機械学習モデルの複数の層の各層は、前記層に関連付けられた前記信頼度スコア分布を生成するように構成された予測モジュールを含む、請求項1に記載の方法。
【請求項7】
前記機械学習モデルの第1の層に関連付けられた第1の予測モジュールは、前記エンコーダによって生成された前記埋め込みに基づいて、前記第1の層に関連付けられた第1の信頼度スコア分布を生成し、前記機械学習モデルの第2の層は、前記第1の層によって処理された前記埋め込みに基づいて、前記第2の層に関連付けられた第2の信頼度スコア分布を生成する、請求項6に記載の方法。
【請求項8】
コンピューティングデバイスであって、
プロセッサと、
命令を含むメモリとを備え、前記命令は、前記プロセッサによって実行されると、前記コンピューティングデバイスに、少なくとも、
機械学習モデルの複数の層の各層について、入力発話に関する複数の予測の信頼度スコア分布を生成することと、
前記層について生成された前記信頼度スコア分布に基づいて、前記機械学習モデルの各層に割り当てられる予測を決定することと、
前記機械学習モデルの総合的な予測を生成することと、
前記機械学習モデルの前記複数の層のサブセットを繰り返し処理して、割り当てられた予測が基準を満たす前記機械学習モデルの層を識別することと、
前記機械学習モデルの前記層の前記割り当てられた予測に関連付けられた信頼度スコアを、前記機械学習モデルの前記総合的な予測に関連付けられる総合的な信頼度スコアとして割り当てることとを行わせる、コンピューティングデバイス。
【請求項9】
前記プロセッサは、各層について生成された前記信頼度スコア分布の中で最も高い信頼度スコアを有する前記複数の予測のうちの1つを、前記層についての予測として割り当てるようにさらに構成される、請求項8に記載のコンピューティングデバイス。
【請求項10】
前記プロセッサは、最後の層に関連付けられた前記信頼度スコア分布の中で最も高い信頼度スコアを有する前記機械学習モデルの前記最後の層の予測を、前記総合的な予測に対応するように割り当てることによって、前記機械学習モデルの前記総合的な予測を生成するようにさらに構成され、前記最後の層は、前記機械学習モデルの出力層である、請求項8に記載のコンピューティングデバイス。
【請求項11】
前記基準は、前記層の前記割り当てられた予測が前記機械学習モデルの前記総合的な予測と同一であることに対応する、請求項8に記載のコンピューティングデバイス。
【請求項12】
前記機械学習モデルの前記複数の層は、N個の層を含み、前記複数の層の前記サブセットは、前記機械学習モデルの最初のN-1個の層に対応し、前記機械学習モデルは、ディープニューラルネットワークモデルである、請求項8に記載のコンピューティングデバイス。
【請求項13】
前記機械学習モデルは、前記入力発話を受信して埋め込みを生成するように構成されたエンコーダを含み、前記機械学習モデルの複数の層の各層は、前記層に関連付けられた前記信頼度スコア分布を生成するように構成された予測モジュールを含む、請求項8に記載のコンピューティングデバイス。
【請求項14】
前記機械学習モデルの第1の層に関連付けられた第1の予測モジュールは、前記エンコーダによって生成された前記埋め込みに基づいて、前記第1の層に関連付けられた第1の信頼度スコア分布を生成し、前記機械学習モデルの第2の層は、前記第1の層によって処理された前記埋め込みに基づいて、前記第2の層に関連付けられた第2の信頼度スコア分布を生成する、請求項13に記載のコンピューティングデバイス。
【請求項15】
方法であって、
機械学習モデルの複数の層の各層について、入力発話に関する複数の予測の信頼度スコア分布を生成するステップと、
前記複数の予測の各予測について、前記機械学習モデルの前記複数の層についての前記信頼度スコア分布に基づいてスコアを計算するステップと、
前記複数の予測のうちの1つを前記機械学習モデルの総合的な予測に対応するように決定するステップと、
前記複数の予測のうちの前記1つに関連付けられた前記スコアを、前記機械学習モデルの前記総合的な予測に関連付けられる総合的な信頼度スコアとして割り当てるステップとを備える、方法。
【請求項16】
前記総合的な予測に対応する前記複数の予測のうちの1つは、最後の層に関連付けられた前記信頼度スコア分布の中で最も高い信頼度スコアを有する前記機械学習モデルの前記最後の層の予測であり、前記最後の層は、前記機械学習モデルの出力層である、請求項15に記載の方法。
【請求項17】
前記予測の前記スコアは、前記機械学習モデルの前記複数の層に関する前記予測の信頼度スコアの平均である、請求項16に記載の方法。
【請求項18】
前記機械学習モデルは、ディープニューラルネットワークモデルである、請求項15に記載の方法。
【請求項19】
前記機械学習モデルは、前記入力発話を受信して埋め込みを生成するように構成されたエンコーダを含み、前記機械学習モデルの複数の層の各層は、前記層に関連付けられた前記信頼度スコア分布を生成するように構成された予測モジュールを含む、請求項15に記載の方法。
【請求項20】
前記機械学習モデルの第1の層に関連付けられた第1の予測モジュールは、前記エンコーダによって生成された前記埋め込みに基づいて、前記第1の層に関連付けられた第1の信頼度スコア分布を生成し、前記機械学習モデルの第2の層は、前記第1の層によって処理された前記埋め込みに基づいて、前記第2の層に関連付けられた第2の信頼度スコア分布を生成する、請求項19に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2020年11月30日に出願された米国仮出願番号第63/119,566号および2021年11月16日に出願された米国非仮出願番号第17/455,181号の非仮出願であり、米国特許法第119条(e)の下での利益および優先権を主張する。上記の出願の全内容は、全ての目的で全文が引用によって本明細書に援用される。
【0002】
分野
本開示は、一般にチャットボットシステムに関し、より特定的には分類目的でチャットボットシステムで使用される、たとえばニューラルネットワークなどの機械学習モデルに関連する過剰確信問題に対処するための技術に関する。
【背景技術】
【0003】
背景
世界中の多くのユーザは、即時反応を得るためにインスタントメッセージングまたはチャットプラットフォーム上にいる。組織は、しばしば、これらのインスタントメッセージングまたはチャットプラットフォームを用いて、顧客(またはエンドユーザ)とライブ会話に携わる。しかしながら、顧客またはエンドユーザとのライブ通信に携わるためにサービス人員を雇用することは、組織にとって非常に費用がかかり得る。チャットボットまたはボットは、特にインターネット上で、エンドユーザとの会話をシミュレートするために開発され始めた。エンドユーザは、エンドユーザが既にインストールし使用しているメッセージングアプリを介してボットと通信することができる。一般に人工知能(AI:Artificial Intelligence)によって駆動されるインテリジェントなボットは、ライブ会話において、より知的にかつ文脈に沿って通信することができ、したがって、改善された会話体験のために、ボットとエンドユーザとの間の、より自然な会話を可能にすることができる。ボットが応答の仕方を知っているキーワードまたはコマンドの固定セットをエンドユーザが学習する代わりに、インテリジェントなボットは、自然言語でのユーザ発話に基づいてエンドユーザの意図を理解し、それに応じて応答することができる。
【0004】
しかしながら、これらの自動化されたソリューションは、特定の分野における特定の知識と、専門開発者の能力内のみであり得る特定の技術の適用とを必要とするので、チャットボットを構築することは困難である。このようなチャットボットの構築の一部として、開発者はまず企業およびエンドユーザのニーズを理解してもよい。次いで、開発者は、たとえば、分析のために使用されるべきデータセットを選択すること、分析のために入力データセットを準備すること(たとえば、データのクレンジング、分析前のデータの抽出、フォーマット化および/または変換、データ特徴量エンジニアリングの実行など)、分析を行うための適切な機械学習(ML:Machine Learning)技術またはモデルを識別すること、およびフィードバックに基づいて結果/成果を改善するよう技術またはモデルを改善することに関連する判断を分析および行ってもよい。適切なモデルを識別するタスクは、複数のモデルを場合によっては並行して開発すること、これらのモデルを用いて反復的にテストおよび実験したあとに、特定のモデルを使用のために識別することを含んでもよい。さらに、教師あり学習ベースのソリューションは、典型的には、トレーニング段階と、それに続く適用(すなわち、推論)段階と、トレーニング段階と適用段階との間の反復ループとを含む。開発者は、最適解を達成するために、これらの段階を注意深く実施および監視する責任を負い得る。
【0005】
典型的には、個々のボットは、分類器としてトレーニングされるとともに所与の入力について当該入力のクラスまたはカテゴリをターゲットクラスまたはカテゴリのセットから予測または推論するように構成された、たとえばニューラルネットワークなどの機械学習モデルを利用する。一般に、深いニューラルネットワーク(すなわち、たとえば4つ以上の層などの多数の層を有するニューラルネットワークモデル)は、浅いニューラルネットワーク(すなわち、少数の層を有するニューラルネットワークモデル)よりも出力予測の点で正確である。しかし、ディープニューラルネットワークには、あるクラスについてニューラルネットワークによって生成される信頼度スコアが実際の信頼度スコアと非相関になる場合がある、(信頼度スコアの)過剰確信問題がある。
【0006】
したがって、ディープニューラルネットワークは、精度が高いので使用することが望ましいが、ディープニューラルネットワークのパフォーマンス問題を回避するために、ディープニューラルネットワークに関連する過剰確信問題に対処しなければならない。本明細書に記載されている実施形態は、個々におよび集合的にこれらのおよび他の問題に対処する。
【発明の概要】
【0007】
概要
分類目的でチャットボットシステムで使用される機械学習モデル(たとえば、ニューラルネットワーク)に関連する過剰確信問題に対処するための技術(たとえば、方法、システム、1つまたは複数のプロセッサによって実行可能なコードまたは命令を格納する非一時的なコンピュータ可読媒体)が開示されている。方法、システム、1つまたは複数のプロセッサによって実行可能なプログラム、コードまたは命令を格納する非一時的なコンピュータ可読記憶媒体などを含むさまざまな実施形態が本明細書に記載されている。
【0008】
本開示の一局面は、方法を提供し、上記方法は、機械学習モデルの複数の層の各層について、入力発話に関する複数の予測の信頼度スコア分布を生成するステップと、上記層について生成された上記信頼度スコア分布に基づいて、上記機械学習モデルの各層に割り当てられる予測を決定するステップと、上記決定に基づいて、上記機械学習モデルの総合的な予測を生成するステップと、上記機械学習モデルの上記複数の層のサブセットを繰り返し処理して、割り当てられた予測が基準を満たす上記機械学習モデルの層を識別するステップと、上記機械学習モデルの上記層の上記割り当てられた予測に関連付けられた信頼度スコアを、上記機械学習モデルの上記総合的な予測に関連付けられる総合的な信頼度スコアとして割り当てるステップとを備える。
【0009】
一実施形態に従って、コンピューティングデバイスが提供され、上記コンピューティングデバイスは、プロセッサと、命令を含むメモリとを備え、上記命令は、上記プロセッサによって実行されると、上記コンピューティングデバイスに、少なくとも、機械学習モデルの複数の層の各層について、入力発話に関する複数の予測の信頼度スコア分布を生成することと、上記層について生成された上記信頼度スコア分布に基づいて、上記機械学習モデルの各層に割り当てられる予測を決定することと、上記機械学習モデルの総合的な予測を生成することと、上記機械学習モデルの上記複数の層のサブセットを繰り返し処理して、割り当てられた予測が基準を満たす上記機械学習モデルの層を識別することと、上記機械学習モデルの上記層の上記割り当てられた予測に関連付けられた信頼度スコアを、上記機械学習モデルの上記総合的な予測に関連付けられる総合的な信頼度スコアとして割り当てることとを行わせる。
【0010】
本開示の一局面は、方法を提供し、上記方法は、機械学習モデルの複数の層の各層について、入力発話に関する複数の予測の信頼度スコア分布を生成するステップと、上記複数の予測の各予測について、上記機械学習モデルの上記複数の層についての上記信頼度スコア分布に基づいてスコアを計算するステップと、上記複数の予測のうちの1つを上記機械学習モデルの総合的な予測に対応するように決定するステップと、上記複数の予測のうちの上記1つに関連付けられた上記スコアを、上記機械学習モデルの上記総合的な予測に関連付けられる総合的な信頼度スコアとして割り当てるステップとを備える。
【0011】
上記の事項は、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲および添付の図面を参照すれば、より明らかになるであろう。
【図面の簡単な説明】
【0012】
【
図1】例示的な実施形態を組み込んだ分散環境の簡略ブロック図である。
【
図2】さまざまな実施形態に係る、例示的なニューラルネットワークモデルを示す図である。
【
図3】さまざまな実施形態に係る、ニューラルネットワークモデルによって実行される例示的な分類を示す図である。
【
図4】さまざまな実施形態に係る、ニューラルネットワークモデルによって実行される別の例示的な分類を示す図である。
【
図5A】さまざまな実施形態に係る、ニューラルネットワークによって実行されるプロセスを示すフローチャートである。
【
図5B】さまざまな実施形態に係る、ニューラルネットワークモデルによって実行されるプロセスを示すフローチャートである。
【
図6】さまざまな実施形態を実現するための分散型システムの簡略図である。
【
図7】さまざまな実施形態に係る、実施形態のシステムの1つまたは複数のコンポーネントによって提供されるサービスがクラウドサービスとして提供され得る、システム環境の1つまたは複数のコンポーネントの簡略ブロック図である。
【
図8】さまざまな実施形態を実現するために用いられ得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0013】
詳細な説明
以下の説明において、さまざまな実施形態が記載される。これらの実施形態の理解の徹底を期すために、具体的な構成および詳細が説明の目的で記載される。しかし、これらの具体的な詳細がなくてもこれらの実施形態を実施できることは当業者にとって明らかであろう。さらに、記載されている実施形態を曖昧にすることのないように、周知の特徴は省略または簡略化され得る。
【0014】
特定の実施形態について説明したが、さまざまな変形、変更、代替構成、および均等物が可能である。実施形態は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作させることができる。さらに、特定の実施形態を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行されてもよい。加えて、動作の順序を再指定してもよい。プロセスは図に含まれない追加のステップを有し得る。上記の実施形態の各種特徴および局面は、個別に使用されてもよく、またはともに使用されてもよい。「例示的」という語は、「例、事例、または例示として供される」ことを意味するように本明細書で用いられる。「例示的」として本明細書に記載されている実施形態または設計はいずれも、必ずしも、他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0015】
さらに、特定の実施形態をハードウェアとソフトウェアとの特定の組み合わせを用いて説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。特定の実施形態は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現されてもよい。
【0016】
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計することにより、動作を実行するようにプログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、たとえば、非一時的なメモリ媒体に格納されたコードもしくは命令またはそれらの任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどにより、達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。
【0017】
はじめに
分類器としてトレーニングされるたとえばニューラルネットワークなどの機械学習モデルは、所与の入力について、当該入力のクラスまたはカテゴリをターゲットクラスまたはカテゴリのセットから予測または推論するように構成されている。そのような分類器ニューラルネットワークモデルは、一般的には、ターゲットクラスのセットについて確率分布を生成するようにトレーニングされ、確率は、セット内の各ターゲットクラスについてニューラルネットワークによって生成され、生成された確率の合計は1(または、割合として表現される場合には100%)になる。そのようなニューラルネットワーク分類器では、ニューラルネットワークの出力層は、その活性化関数としてsoftmax関数を使用して、クラスのセットについて確率スコア分布を生成し得る。これらの確率は、信頼度スコアとも称される。最も高い関連付けられた信頼度スコアを有するクラスは、入力に対する回答として出力され得る。
【0018】
たとえば、チャットボットドメインにおいて、チャットボットは、発話を入力として取り込み、当該発話について、ニューラルネットワークがトレーニングされるクラスのセットの確率または信頼度スコアの分布を予測するようにトレーニングされたニューラルネットワークモデルを使用し得る。クラスのセットは、たとえば、発話の背景にある意図を表すインテントクラスを含み得る。ニューラルネットワークは、インテントクラスの各々について信頼度スコアを生成するように構成されており、最も高い信頼度スコアを有するインテントクラスが、入力発話についての最も関連性のあるインテントクラスとして選択され得る。また、いくつかの実施形態では、最も高い信頼度スコアは、それが入力発話についての関連性のあるインテントクラスとして選択されるように、予め設定された閾値(たとえば、70%の信頼度)を上回っていなければならない。
【0019】
インテントクラスのセットは、1つまたは複数のドメイン内クラスと、ドメイン外(OOD:Out-Of-Domain)クラスとを含み得る。ドメイン内クラスは、特定のチャットボットが処理を取り扱うことができる意図を表すクラスである。OODクラスは、一般的には、チャットボットが取り扱うように構成されていない未解決の意図(すなわち、ドメイン内クラスのうちの1つに解決されることができない意図)を表すクラスである。
【0020】
たとえば、ピザを注文するためのチャットボット(「ピザボット」)を考えてみる。ユーザは、ピザボットと対話して、ピザ注文を注文および/またはキャンセルすることができる。ピザボットは、入力発話を取得して、当該発話を、1つまたは複数のドメイン内クラスとOODクラスとを含むインテントクラスのセットに分類するようにトレーニングされ得る。一例として、ドメイン内クラスは、「ピザを注文する」インテントクラスと、「ピザ注文をキャンセルする」インテントクラスとを含み得て、ドメイン外クラスは、「未解決」クラスであり得る。このように、入力発話がピザを注文することに関連する場合、適切にトレーニングされたニューラルネットワークは、「ピザを注文する」クラスについて最も高い信頼度スコアを生成する。同様に、入力発話がピザ注文をキャンセルすることに関連する場合、適切にトレーニングされたニューラルネットワークは、「ピザ注文をキャンセルする」クラスについて最も高い信頼度スコアを生成する。発話がピザを注文することまたはピザ注文をキャンセルすることと無関係である場合、適切にトレーニングされたニューラルネットワークは、OOD「未解決」クラスについて最も高い信頼度スコアを生成し得る。入力発話に応答してピザボットによって実行されるさらなる処理は、どのクラスが当該発話についての最も高い信頼度スコアを受け取ったかに左右されるであろう。したがって、所与の発話についてクラスのセットに対して適切な信頼度スコアを割り当てることは、ピザボットのパフォーマンスにとって重要である。
【0021】
ニューラルネットワークは、一般的には、それが推論または予測に使用できるようになる前にトレーニングされなければならない。トレーニングは、トレーニングデータ(時にはラベル付きデータと称される)を使用して実行され得て、入力およびそれらの入力に関連付けられたラベル(グラウンドトゥルース)は既知である。たとえば、トレーニングデータは、入力x(i)と、各入力x(i)について、当該入力に対するターゲット値または正解(グラウンドトゥルースとも称される)y(i)とを含み得る。(x(i),y(i))の対は、トレーニングサンプルと呼ばれ、トレーニングデータは、多くのそのようなトレーニングサンプルを含み得る。たとえば、チャットボットのニューラルネットワークモデルをトレーニングするのに使用されるトレーニングデータは、発話のセットと、当該セットの中の各発話について、当該発話の既知の(グラウンドトゥルース)クラスとを含み得る。一例として、上記のピザボットでは、トレーニングデータは、「ピザを注文する」という関連付けられたラベルのクラスを有する発話のセットと、「ピザ注文をキャンセルする」という関連付けられたラベルのクラスを有する発話のセットと、「未解決」という関連付けられたラベルのOODクラスを有する発話のセットとを含み得る。
【0022】
トレーニングデータ内の全ての入力x(i)の空間は、Xによって表すことができ、全ての対応するターゲットy(i)の空間は、Yによって表すことができる。ニューラルネットワークのトレーニングの目標は、h(x)がyの対応する値の優れた予測変数であるようにトレーニング入力空間Xをターゲット値空間Yにマッピングする仮説関数「h()」を学習することである。いくつかの実現例では、仮説関数を導き出すことの一部として、入力についてのグラウンドトゥルース値とニューラルネットワークによって当該入力について予測される値との間の差を測定する損失関数などの目的関数が定義される。この目的関数は、トレーニングの一部として、最適化、すなわち最小化または最大化される。ニューラルネットワークによって提供される出力に関連付けられた目的関数を最小化または最大化する目的で、ニューラルネットワーク内のパーセプトロンへの入力に関連付けられた重みを繰り返し修正/操作する逆伝播トレーニング技術などのトレーニング技術が使用されてもよい。
【0023】
ニューラルネットワークモデルの深さは、ニューラルネットワークモデルにおける層の数によって測定される。ニューラルネットワークは、一般的には、ニューラルネットワークに提供される入力を受信する入力層、入力の結果を出力する出力層、および入力層と出力層との間の1つまたは複数の隠れ層を有する。一般に、深いニューラルネットワーク(すなわち、多数の層を有するニューラルネットワークモデル)は、浅いニューラルネットワークモデル(すなわち、少数の層を有するニューラルネットワークモデル)よりも出力予測の点で正確である。しかし、ディープニューラルネットワークには、あるクラスについてニューラルネットワークによって生成される信頼度スコアが実際の信頼度スコアと非相関になる場合がある、(信頼度スコアの)過剰確信問題がある。ディープニューラルネットワークモデルは、実際の入力がニューラルネットワークモデルをトレーニングするのに使用されたトレーニングデータによって十分に表現されない場合、すなわち実際のサンプルがトレーニング中に観察された分布外から導き出される場合、すなわちモデルが十分に較正されない場合には、非常に自信に満ちた誤分類予測を生成することさえあり得る。過剰確信は、モデル出力を事後処理すること(予測に対して閾値を設定することなど)を困難にし、これは、(典型的には、偶然的不確実性で使用される)アーキテクチャおよび/または(たとえば、典型的には、認識論的不確実性で使用される)トレーニングによってそれに対処する必要があることを意味する。
【0024】
したがって、ディープニューラルネットワークなどの深層機械学習モデルは、精度が高いので使用することが望ましいが、ニューラルネットワークのパフォーマンス問題を回避するために、深層機械学習モデルに関連する過剰確信問題に対処しなければならない。
【0025】
ボットシステム
ボット(スキル、チャットボット、チャターボット、またはトークボットとも称される)は、エンドユーザとの会話を実行することができるコンピュータプログラムである。ボットは一般に、自然言語メッセージを用いるメッセージングアプリケーションを通じて自然言語メッセージ(たとえば質問またはコメント)に応答することができる。企業は、1つまたは複数のボットシステムを用いて、メッセージングアプリケーションを通じてエンドユーザと通信し得る。メッセージングアプリケーションは、チャネルと呼ばれることもあり、エンドユーザが既にインストールし、慣れ親しんでいる、エンドユーザの好みのメッセージングアプリケーションであり得る。したがって、エンドユーザは、ボットシステムとチャットするために新たなアプリケーションをダウンロードおよびインストールする必要がない。メッセージングアプリケーションは、たとえば、オーバーザトップ(OTT:Over-The-Top)メッセージングチャネル(たとえば、Facebook Messenger、Facebook WhatsApp、WeChat、Line、Kik、Telegram、Talk、Skype、Slack、またはSMS)、バーチャルプライベートアシスタント(たとえば、Amazon Dot、Echo、またはShow、Google(登録商標) Home、Apple HomePodなど)、チャット機能を有するネイティブもしくはハイブリッド/応答モバイルアプリもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリ拡張、または音声ベースの入力(たとえば、Siri、Cortana、Google Voice、または対話のための他の音声入力を用いるインターフェイスを有するデバイスもしくはアプリ)を含むことができる。
【0026】
図1は、特定の実施形態に係る、チャットボットシステムを組み込んだ環境100の簡略ブロック図である。環境100は、デジタルアシスタントビルダプラットフォーム(DABP:Digital Assistant Builder Platform)102を含み、DABP102のユーザがデジタルアシスタントまたはチャットボットシステムを作成および展開することを可能にする。DABP102は、1つまたは複数のデジタルアシスタント(またはDA)またはチャットボットシステムを作成するために使用することができる。たとえば、
図1に示すように、特定の企業を表すユーザ104は、DABP102を使用して、特定の企業のユーザ用のデジタルアシスタント106を作成および展開することができる。たとえば、銀行が、DABP102を使用して、銀行の顧客による使用のために1つまたは複数のデジタルアシスタントを作成することができる。複数の企業が、同じDABP102プラットフォームを使用して、デジタルアシスタントを作成することができる。別の例として、レストラン(たとえば、ピザショップ)の所有者は、DABP102を用いて、レストランの顧客が食べ物を注文すること(たとえば、ピザを注文すること)を可能にするデジタルアシスタントを作成および展開することができる。
【0027】
図1は、特定の実施形態に係る、チャットボットシステムを組み込んだ環境100の簡略ブロック図である。環境100は、デジタルアシスタントビルダプラットフォーム(DABP:Digital Assistant Builder Platform)102を含み、DABP102のユーザがデジタルアシスタントまたはチャットボットシステムを作成および展開することを可能にする。DABP102は、1つまたは複数のデジタルアシスタント(またはDA)またはチャットボットシステムを作成するために使用することができる。たとえば、
図1に示すように、特定の企業を表すユーザ104は、DABP102を使用して、特定の企業のユーザ用のデジタルアシスタント106を作成および展開することができる。たとえば、銀行が、DABP102を使用して、銀行の顧客による使用のために1つまたは複数のデジタルアシスタントを作成することができる。複数の企業が、同じDABP102プラットフォームを使用して、デジタルアシスタントを作成することができる。別の例として、レストラン(たとえば、ピザショップ)の所有者は、DABP102を用いて、レストランの顧客が食べ物を注文すること(たとえば、ピザを注文すること)を可能にするデジタルアシスタントを作成および展開することができる。
【0028】
DABP102を使用して構築されるデジタルアシスタント106などのデジタルアシスタントは、デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を介して、種々のタスクを行うために使用されることができる。会話の一部として、ユーザは、1つまたは複数のユーザ入力110をデジタルアシスタント106に提供し、デジタルアシスタント106から応答112を得てもよい。会話は、入力110および応答112のうちの1つ以上を含むことができる。これらの会話を介して、ユーザは、1つまたは複数のタスクがデジタルアシスタントによって実行されるよう要求することができ、それに応答して、デジタルアシスタントは、ユーザ要求タスクを実行し、ユーザに適切な応答で応答するよう構成される。
【0029】
ユーザ入力110は、概して自然言語形式であり、発話と呼ばれる。ユーザ発話110は、ユーザが文、質問、テキスト片、または単一の単語でさえタイプし、テキストを入力としてデジタルアシスタント106に提供するときなどの、テキスト形式であり得る。いくつかの実施形態では、ユーザ発話110は、ユーザがデジタルアシスタント106に入力として提供される何かを言うかまたは話すときなどの、音声入力または発話形式であり得る。発話は、典型的には、ユーザ108によって話される言語である。たとえば、発話は、英語または何らかの他の言語であってもよい。発話が音声形式である場合、音声入力はその特定の言語のテキスト形式の発話に変換され、次いで、テキスト発話はデジタルアシスタント106によって処理される。さまざまな音声-テキスト処理技術を用いて、音声または聴覚的入力をテキスト発話に変換してもよく、テキスト発話は、その後、デジタルアシスタント106によって処理される。いくつかの実施形態では、音声からテキストへの変換は、デジタルアシスタント106自体によって行われてもよい。
【0030】
テキスト発話または音声発話であってもよい発話は、断章、文、複数の文、1つまたは複数の単語、1つまたは複数の質問、前述のタイプの組合せなどであってもよい。デジタルアシスタント106は、ユーザ入力の意味を理解するために発話に自然言語理解(NLU:Natural Language Understanding)技術を適用するよう構成される。発話に対するNLU処理の一部として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成され、これは、発話に対応する1つまたは複数のインテントおよび1つまたは複数のエンティティを識別することを伴う。発話の意味を理解すると、デジタルアシスタント106は、理解された意味またはインテントに応答して1つまたは複数のアクションまたは動作を実行することができる。本開示の目的のために、発話は、デジタルアシスタント106のユーザ108によって直接提供されたテキスト発話であるか、または入力音声発話のテキスト形式への変換の結果であると仮定する。しかしながら、これは、いかなる態様においても限定的または制限的であることを意図するものではない。
【0031】
たとえば、ユーザ108の入力は、「私はピザを注文したい」などの発話を提供することによって、ピザが注文されることを要求してもよい。そのような発話を受信すると、デジタルアシスタント106は、発話の意味を理解し、適切なアクションを取るよう構成される。適切なアクションは、たとえば、ユーザが注文したいピザのタイプ、ピザのサイズ、ピザの任意のトッピングなどに関する、ユーザ入力を要求する質問で、ユーザに応答することを含んでもよい。デジタルアシスタント106によって提供される応答はまた、自然言語形式であってもよく、典型的には入力発話と同じ言語であってもよい。これらの応答を生成することの一部として、デジタルアシスタント106は、自然言語生成(NLG:Natural Language Generation)を実行してもよい。ユーザがピザを注文するために、ユーザとデジタルアシスタント106との間の会話を介して、デジタルアシスタントは、ピザを注文するためのすべての必要な情報を提供するようにユーザを誘導してもよく、次いで、会話の終わりに、ピザを注文させてもよい。デジタルアシスタント106は、ピザが注文されたことを示す情報をユーザに出力することによって、会話を終了してもよい。
【0032】
概念レベルでは、デジタルアシスタント106は、ユーザから受信された発話に応答して、種々の処理を実行する。いくつかの実施形態では、この処理は、たとえば、(NLUを使用して)入力発話の意味を理解すること、発話に応答して実行されるべきアクションを決定すること、適切な場合にはアクションが実行されることを引き起こすこと、ユーザ発話に応答してユーザに出力されるべき応答を生成すること、応答をユーザに出力することなどを含む、一連の処理ステップまたは処理ステップのパイプラインを伴う。NLU処理は、受信した入力発話を構文解析して発話の構造および意味を理解することと、発話を精緻化および再構成して、発話について、よりよく理解可能な形式(たとえば、論理形式)または構造を展開することとを含むことができる。応答を生成することは、自然言語生成(NLG)技術を使用することを含んでもよい。したがって、デジタルアシスタントによって実行される自然言語処理(NLP)は、NLU処理とNLG処理との組み合わせを含み得る。デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理は、文解析(たとえば、トークン化、並べ換え、文に対する品詞タグの識別、文における固有表現の識別、文構造を表すための依存関係ツリーの生成、文の節への分割、個々の節の分析、照応形の解決、チャンク化の実行など)などのさまざまなNLU関連処理を含み得る。特定の実施形態では、NLU処理またはその一部は、デジタルアシスタント106自体によって実行される。いくつかの他の実施形態では、デジタルアシスタント106は、他のリソースを用いて、NLU処理の一部を実行することができる。たとえば、入力発話文の構文および構造は、構文解析、品詞タグ付け、および/または固有表現認識を用いて文を処理することによって識別されてもよい。一実現例では、英語の場合、文構造および構文を解析するために、Stanford NLP Groupによって提供されるもののような、構文解析、品詞タグ付け、および固有表現認識が用いられる。これらは、Stanford CoreNLPツールキットの一部として提供される。
【0033】
本開示で提供されるさまざまな例は英語の発話を示すが、これは単なる例として意味される。特定の実施形態では、デジタルアシスタント106は、英語以外の言語で発話を処理することもできる。デジタルアシスタント106は、異なる言語に対する処理を実行するよう構成されるサブシステム(たとえば、NLU機能を実現するコンポーネント)を提供してもよい。これらのサブシステムは、NLUコアサーバからのサービスコールを用いて呼び出され得るプラグ可能ユニットとして実現されてもよい。これは、NLU処理を、異なる順序の処理を可能にすることを含めて、各言語に対して柔軟かつ拡張可能にする。言語パックは、個々の言語に対して提供されてもよく、言語パックは、NLUコアサーバからサービス提供され得るサブシステムのリストを登録することができる。
【0034】
図1に示されるデジタルアシスタント106などのデジタルアシスタントは、限定ではないが、あるアプリケーションを介して、ソーシャルメディアプラットフォームを介して、種々のメッセージングサービスおよびアプリケーション(たとえば、インスタントメッセージングアプリケーション)を介して、ならびに他のアプリケーションまたはチャネルなどの種々の異なるチャネルを介して、そのユーザ108に利用可能またはアクセス可能にされることができる。単一のデジタルアシスタントは、それのためにいくつかのチャネルを構成することができるので、異なるサービス上で同時に実行され、異なるサービスによって同時にアクセスされることができる。
【0035】
デジタルアシスタントまたはチャットボットシステムは、一般に、1つもしくは複数のスキルを含むか、または1つもしくは複数のスキルに関連付けられる。特定の実施形態では、これらのスキルは、ユーザと対話し、在庫の追跡、タイムカードの提出、経費報告の作成、食品の注文、銀行口座の確認、予約の作成、ウィジェットの購入などの特定の種類のタスクを満たすように構成された個々のチャットボット(スキルボットと呼ばれる)である。たとえば、
図1に示される実施形態では、デジタルアシスタントまたはチャットボットシステム106は、スキル116-1、116-2などを含む。本開示の目的のために、「スキル」という語は、「スキルボット」という語と同義的に用いられる。
【0036】
デジタルアシスタントに関連付けられる各スキルは、ユーザとの会話を通じて、デジタルアシスタントのユーザがタスクを完了するのを助け、会話は、ユーザによって提供されるテキストまたは聴覚的入力と、スキルボットによって提供される応答との組み合わせを含むことができる。これらの応答は、ユーザへのテキストメッセージもしくは聴覚メッセージの形態、および/またはユーザが選択を行うようユーザに提示される単純なユーザインターフェイス要素(たとえば、選択リスト)を用いる形態であってもよい。
【0037】
スキルまたはスキルボットをデジタルアシスタントに関連付けるかまたは追加することができるさまざまな方法がある。ある例では、スキルボットは企業によって開発され、次いで、たとえばスキルボットをデジタルアシスタントに登録するための、DABP102によって提供されるユーザインターフェイスを介するなど、DABP102を用いてデジタルアシスタントに追加され得る。他の例では、スキルボットは、DABP102を用いて開発および作成され、次いで、DABP102を用いて作成されたデジタルアシスタントに追加され得る。さらに他の例では、DABP102は、広範囲のタスクに向けられた複数のスキルを提供するオンラインデジタルストア(「スキルストア」と呼ばれる)を提供する。スキルストアを通じて提供されるスキルも、さまざまなクラウドサービスを公開してもよい。DABP102を使用して生成されるデジタルアシスタントにスキルを追加するために、DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択されたスキルがDABP102を使用して作成されるデジタルアシスタントに追加されることを示すことができる。スキルストアからのスキルは、そのまま、または修正された形態で、デジタルアシスタントに追加することができる(たとえば、DABP102のユーザは、スキルストアによって提供される特定のスキルボットを選択してクローニングし、選択されたスキルボットをカスタマイズまたは修正し、次いで、修正されたスキルボットを、DABP102を用いて作成されたデジタルアシスタントに追加してもよい)。
【0038】
デジタルアシスタントまたはチャットボットシステムを実現するために、さまざまな異なるアーキテクチャが使用されてもよい。たとえば、特定の実施形態では、DABP102を用いて作成および展開されるデジタルアシスタントは、マスタボット/子(もしくはサブ)ボットパラダイムまたはアーキテクチャを用いて実現されてもよい。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つまたは複数の子ボットと対話するマスタボットとして実現される。たとえば、
図1に示す実施形態では、デジタルアシスタント106は、マスタボット114と、マスタボット114の子ボットであるスキルボット116-1,116-2などとを含む。特定の実施形態では、デジタルアシスタント106自体がマスタボットとして動作すると考えられる。
【0039】
マスタ・子ボットアーキテクチャに従って実現されるデジタルアシスタントは、デジタルアシスタントのユーザが、統合されたユーザインターフェイスを介して、すなわちマスタボットを介して、複数のスキルと対話することを可能にする。ユーザがデジタルアシスタントに関与すると、ユーザ入力はマスタボットによって受信される。次いで、マスタボットは、ユーザ入力発話の意味を判定するための処理を実行する。次いで、マスタボットは、発話においてユーザによって要求されたタスクがマスタボット自体によって処理され得るかどうかを判定し、そうでなければ、マスタボットは、ユーザ要求を処理するために適切なスキルボットを選択し、会話を選択されたスキルボットにルーティングする。これにより、ユーザは共通の単一のインターフェイスを介してデジタルアシスタントと会話することができ、特定のタスクを実行するよう構成されるいくつかのスキルボットを使用する能力を依然として提供することができる。たとえば、企業用に開発されたデジタルアシスタントの場合、デジタルアシスタントのマスタボットは、顧客関係管理(CRM:Customer Relationship Management)に関連する機能を実行するためのCRMボット、企業資源計画(ERP:Enterprise Resource Planning)に関連する機能を実行するためのERPボット、人的資本管理(HCM:Human Capital Management)に関連する機能を実行するためのHCMボットなどの特定の機能を有するスキルボットとインターフェイスすることができる。このように、デジタルアシスタントのエンドユーザまたは消費者は、共通のマスタボットインターフェイスを介してデジタルアシスタントにアクセスする方法を知るだけでよく、背後には、複数のスキルボットがユーザ要求を処理するために提供される。
【0040】
特定の実施形態では、マスタボット/子ボットインフラストラクチャにおいて、マスタボットは、スキルボットの利用可能なリストを認識するよう構成される。マスタボットは、さまざまな利用可能なスキルボット、および各スキルボットについて、各スキルボットによって実行され得るタスクを含む各スキルボットの能力を識別するメタデータへのアクセスを有してもよい。ユーザ要求を発話の形態で受信すると、マスタボットは、複数の利用可能なスキルボットから、ユーザ要求に最も良く対応できるかもしくはユーザ要求をもっとも良く処理することができる特定のスキルボットを識別または予測するよう構成される。次いで、マスタボットは、その発話(またはその発話の一部分)を、さらなる処理のために、その特定のスキルボットにルーティングする。したがって、制御はマスタボットからスキルボットに流れる。マスタボットは、複数の入力および出力チャネルをサポートすることができる。特定の実施形態では、ルーティングは、1つまたは複数の利用可能なスキルボットによって実行される処理の助けを借りて実行され得る。たとえば、後述するように、スキルボットは、発話のインテントを推論し、推論されたインテントが、スキルボットが構成されるインテントに一致するかどうかを判断するようにトレーニングされ得る。したがって、マスタボットによって実行されるルーティングは、スキルボットが発話を処理するのに適した意図で構成されたかどうかの表示をスキルボットがマスタボットに通信することを伴うことができる。
【0041】
図1の実施形態は、マスタボット114ならびにスキルボット116-1,116-2および116-3を備えるデジタルアシスタント106を示すが、これは限定を意図するものではない。デジタルアシスタントは、デジタルアシスタントの機能を提供するさまざまな他のコンポーネント(たとえば、他のシステムおよびサブシステム)を含むことができる。これらのシステムおよびサブシステムは、ソフトウェア(たとえば、コンピュータ可読媒体上に記憶され、1つまたは複数のプロセッサによって実行可能なコード、命令)のみ、ハードウェアのみ、またはソフトウェアとハードウェアとの組み合わせを用いる実現例において実現されてもよい。
【0042】
DABP102は、DABP102のユーザが、デジタルアシスタントに関連付けられる1つまたは複数のスキルボットを含むデジタルアシスタントを作成することを可能にする、インフラストラクチャならびに種々のサービスおよび特徴を提供する。場合によっては、スキルボットは、既存のスキルボットをクローニングすることによって、たとえば、スキルストアによって提供されるスキルボットをクローニングすることによって、作成することができる。前述のように、DABP102は、さまざまなタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供することができる。DABP102のユーザは、スキルストアからスキルボットをクローニングすることができる。必要に応じて、クローニングされたスキルボットに修正またはカスタマイズを行ってもよい。いくつかの他の事例では、DABP102のユーザは、DABP102によって提供されるツールおよびサービスを使用して、スキルボットをゼロから作成する。
【0043】
特定の実施形態では、ある高次レベルにおいて、スキルボットを作成またはカスタマイズすることは、以下のステップを含む:
(1)新たなスキルボットに対する設定を設定する
(2)スキルボットに対して1つまたは複数のインテントを設定する
(3)1つまたは複数のインテントに対して1つまたは複数のエンティティを設定する
(4)スキルボットをトレーニングする
(5)スキルボットのためのダイアログフローを作成する
(6)必要に応じてカスタムコンポーネントをスキルボットに追加する
(7)スキルボットをテストおよび展開する。
【0044】
以下、上記のステップの各々について簡単に説明する。
(1)新たなスキルボットに対する設定を設定する-さまざまな設定がスキルボットのために設定されてもよい。たとえば、スキルボット設計者は、作成されているスキルボットの1つまたは複数の呼出し名を指定することができる。スキルボットの識別子として機能するこれらの呼出し名は、次いで、スキルボットを明示的に呼び出すためにデジタルアシスタントのユーザによって使用されることができる。たとえば、ユーザは、ユーザの発話に呼出し名を含めて、対応するスキルボットを明示的に呼び出すことができる。
【0045】
(2)スキルボットに対して1つまたは複数のインテントおよび関連付けられる例示的な発話を設定する-スキルボット設計者は、作成されているスキルボットに対して1つまたは複数のインテント(ボットインテントとも呼ばれる)を指定する。次いで、スキルボットは、これらの指定されたインテントに基づいてトレーニングされる。これらのインテントは、スキルボットが入力発話について推論するようにトレーニングされるカテゴリまたはクラスを表す。発話を受信すると、トレーニングされたスキルボットは、発話のインテントを推論し、推論されたインテントは、スキルボットをトレーニングするために使用されたインテントの事前定義されたセットから選択される。次いで、スキルボットは、発話に対して推論されたインテントに基づいて、その発話に応答する適切なアクションを取る。場合によっては、スキルボットのためのインテントは、スキルボットがデジタルアシスタントのユーザに対して実行することができるタスクを表す。各インテントには、インテント識別子またはインテント名が与えられる。たとえば、銀行に対してトレーニングされたスキルボットの場合、そのスキルボットに対して指定されたインテントは、「CheckBalance(残高照会)」、「TransferMoney(送金)」、「DepositCheck(小切手を預け入れる)」などを含んでもよい。
【0046】
スキルボットに対して定義される各インテントについて、スキルボット設計者はまた、そのインテントを代表し示す1つまたは複数の例示的な発話も提供してもよい。これらの例示的な発話は、ユーザがそのインテントのためにスキルボットに入力してもよい発話を表すよう意味される。たとえば、残高照会のインテントについては、例示的な発話は、「What's my savings account balance?(私の普通預金口座の残高は?)」、「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」、「How much money do I have in my account(私の口座にはいくらのお金がありますか?)」などを含んでもよい。したがって、典型的なユーザ発話のさまざまな順列が、インテントのための発話例として指定されてもよい。
【0047】
インテントおよびそれらの関連付けられる例示的発話は、スキルボットをトレーニングするためのトレーニングデータとして使用される。さまざまな異なるトレーニング技術が使用されてもよい。このトレーニングの結果として、予測モデルが生成され、それは、発話を入力として取り込み、予測モデルによって発話について推論されたインテントを出力するよう構成される。いくつかの事例では、入力発話は、トレーニングされたモデルを使用して入力発話に対するインテントを予測または推測するよう構成される、インテント分析エンジン(たとえば、スキルボットによって実行されるルールベースまたは機械学習ベースの分類器)に提供される。次いで、スキルボットは、推論されたインテントに基づいて1つまたは複数のアクションを取ってもよい。
【0048】
(3)スキルボットの1つまたは複数のインテントに対してエンティティを設定する-いくつかの例では、スキルボットがユーザ発話に適切に応答することを可能にするために追加のコンテキストが必要とされてもよい。たとえば、ユーザ入力発話が、スキルボットにおいて同じインテントに解決する状況があり得る。たとえば、上記の例では、発話「What's my savings account balance?(私の普通預金口座の残高は?)」および「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」は両方とも、同じ残高照会のインテントに解決しているが、これらの発話は、異なることを望む異なる要求である。そのような要求を明確にするために、1つまたは複数のエンティティがインテントに追加され得る。銀行業務スキルボットの例を用いると、「checking(当座)」および「saving(普通)」と呼ばれる値を定義するAccountType(口座種類)と呼ばれるエンティティは、スキルボットがユーザ要求を解析し、適切に応答することを可能にしてもよい。上記の例では、発話は同じインテントに解決するが、AccountTypeエンティティに関連付けられる値は、2つの発話について異なる。これにより、スキルボットは、2つの発話が同じインテントに解決するにもかかわらず、2つの発話に対して場合によっては異なるアクションを実行することができる。1つまたは複数のエンティティは、スキルボットに対して設定された特定のインテントのために指定され得る。したがって、エンティティは、コンテキストをインテント自体に追加するために用いられる。エンティティは、インテントをより充分に記述するのに役立ち、スキルボットがユーザ要求を完了できるようにする。
【0049】
特定の実施形態では、2つのタイプのエンティティ、すなわち、(a)DABP102によって提供される組込みエンティティ、および(2)スキルボット設計者によって指定され得るカスタムエンティティがある。組込みエンティティは、多種多様なボットとともに用いることができる汎用エンティティである。組込みエンティティの例は、限定はしないが、時間、日付、アドレス、番号、電子メールアドレス、持続時間、循環期間、通貨、電話番号、URLなどに関連するエンティティを含む。カスタムエンティティは、よりカスタマイズされた用途に用いられる。たとえば、銀行業務スキルについては、AccountTypeエンティティは、スキルボット設計者によって、当座、普通およびクレジットカードなどのようなキーワードについてユーザ入力をチェックすることによってさまざまな銀行取引を可能にするよう定義されてもよい。
【0050】
(4)スキルボットをトレーニングする-スキルボットは、ユーザ入力を発話の形態で受信し、受信した入力を解析またはその他の方法で処理し、受信したユーザ入力に関連するインテントを識別または選択するように構成される。上述のように、スキルボットは、このためにトレーニングされなければならない。特定の実施形態では、スキルボットは、そのスキルボットに対して設定されたインテント、およびそのインテントに関連付けられる例示的な発話(集合的にトレーニングデータ)に基づいてトレーニングされ、それにより、スキルボットは、ユーザ入力発話を、スキルボットの設定されたインテントの1つに解決することができる。特定の実施形態では、スキルボットは、トレーニングデータを用いてトレーニングされ、ユーザが何を言っているか(または場合によっては、何を言おうとしているか)をスキルボットが識別することを可能にする予測モデルを使用する。DABP102は、さまざまな機械学習ベースのトレーニング技術、ルールベースのトレーニング技術、および/またはそれらの組み合わせを含む、スキルボットをトレーニングするためにスキルボット設計者によって用いられ得るさまざまな異なるトレーニング技術を提供する。特定の実施形態では、トレーニングデータの一部分(たとえば80%)は、スキルボットモデルをトレーニングするために用いられ、別の部分(たとえば残りの20%)は、モデルをテストまたは検証するために用いられる。トレーニングされると、トレーニングされたモデル(トレーニングされたスキルボットと呼ばれることもある)は、次いで、ユーザ発話を処理し、それに応答するよう使用されることができる。ある場合には、ユーザの発話は、単一の回答だけを必要とし、さらなる会話を必要としない質問であり得る。このような状況に対処するために、スキルボットに対してQ&A(質疑応答)インテントを定義してもよい。Q&Aインテントは、通常のインテントと同様に作成される。Q&Aインテントについてのダイアログフローは、通常のインテントについてのダイアログフローとは異なり得る。たとえば、通常のインテントとは異なって、Q&Aインテントについてのダイアログフローは、ユーザからさらなる情報(たとえば、特定のエンティティについての値)を請求するためのプロンプトを伴わなくてもよい。
【0051】
(5)スキルボットのためのダイアログフローを作成する-スキルボットに対して指定されるダイアログフローは、受信されたユーザ入力に応答してスキルボットに対する異なるインテントが解決される際にスキルボットがどのように反応するかを記述する。ダイアログフローは、たとえば、スキルボットがどのようにユーザ発話に応答するか、スキルボットがどのようにユーザに入力を促すか、スキルボットがどのようにデータを返すかといった、スキルボットがとる動作またはアクションを定義する。ダイアログフローは、スキルボットが辿るフローチャートのようなものである。スキルボット設計者は、マークダウン言語などの言語を用いてダイアログフローを指定する。特定の実施形態では、OBotMLと呼ばれるYAMLのバージョンを用いて、スキルボットのためのダイアログフローを指定することができる。スキルボットのためのダイアログフロー定義は、スキルボット設計者に、スキルボットとスキルボットが対応するユーザとの間の対話のコレオグラフィを行わせる、会話自体のモデルとして機能する。
【0052】
特定の実施形態では、スキルボットのダイアログフロー定義は、3つのセクションを含む:
(a)コンテキストセクション
(b)デフォルト遷移セクション
(c)状態セクション。
【0053】
コンテキストセクション-スキルボット設計者は、コンテキストセクションにおいて、会話フローで用いられる変数を定義することができる。コンテキストセクションで指名され得る他の変数は、限定されないが、エラー処理のための変数、組込みエンティティまたはカスタムエンティティのための変数、スキルボットがユーザ選好を認識および持続することを可能にするユーザ変数などを含む。
【0054】
デフォルト遷移セクション-スキルボットのための遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクションで定義することができる。デフォルト遷移セクションで定義される遷移は、フォールバックとして作用し、状態内に定義される適用可能な遷移がない場合または状態遷移をトリガするために必要な条件を満たせない場合にトリガされる。デフォルト遷移セクションは、スキルボットが予想外のユーザアクションをそつなく処理することを可能にするルーティングを定義するために用いられ得る。
【0055】
状態セクション-ダイアログフローおよびその関連動作は、ダイアログフロー内の論理を管理する一連の一時的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログのその点において必要とされる機能を提供するコンポーネントを指名する。このようにして、コンポーネントの周囲に状態を構築する。状態は、コンポーネント固有の特性を含み、コンポーネントが実行された後にトリガされる他の状態への遷移を定義する。
【0056】
特別なケースのシナリオは、状態セクションを用いて取り扱うことができる。たとえば、ユーザが取りかかっている第1のスキルを一時的に出て、デジタルアシスタント内で第2のスキルにおいて何かを行うというオプションを、ユーザに与えたい場合があるかもしれない。たとえば、ユーザがショッピングスキルとの会話に関わっている(たとえば、ユーザは、購入のために何らかの選択を行った)場合、ユーザは、銀行業務スキルにジャンプし(たとえば、ユーザは、その購入に十分な金額を有することを確かめたい場合がある)、その後、ユーザの注文を完了するためにショッピングスキルに戻ることを望む場合がある。これに対処するために、第1のスキルのダイアログフロー定義における状態セクションは、同じデジタルアシスタントにおいて第2の異なるスキルとの対話を開始し、次いで元のダイアログフローに戻るように構成されることができる。
【0057】
(6)カスタムコンポーネントをスキルボットに追加する-上述のように、スキルボットのためにダイアログフローにおいて指定される状態は、その状態に対応する必要な機能を提供するコンポーネントを指名する。コンポーネントは、スキルボットが機能を実行することを可能にする。特定の実施形態では、DABP102は、広範囲の機能を実行するための事前設定されたコンポーネントのセットを提供する。スキルボット設計者は、これらの事前設定されたコンポーネントのうちの1つ以上を選択し、それらをスキルボットのためのダイアログフロー内の状態と関連付けることができる。スキルボット設計者はまた、DABP102によって提供されるツールを用いてカスタムまたは新たなコンポーネントを作成し、カスタムコンポーネントをスキルボットのためのダイアログフロー内の1つまたは複数の状態と関連付けることができる。
【0058】
(7)スキルボットをテストおよび展開する-DABP102は、スキルボット設計者が開発中のスキルボットをテストすることを可能にするいくつかの特徴を提供する。次いで、スキルボットは、デジタルアシスタントにおいて展開され、それに含めることができる。
【0059】
上記の説明は、スキルボットをどのように作成するかについて説明しているが、同様の技術を用いて、デジタルアシスタント(またはマスタボット)を作成することもできる。マスタボットまたはデジタルアシスタントレベルでは、デジタルアシスタントのために組込みシステムインテントを設定することができる。これらの組込みシステムインテントは、デジタルアシスタント自体(すなわち、マスタボット)が、デジタルアシスタントに関連付けられるスキルボットを呼び出すことなく取り扱うことができる一般的なタスクを識別するために用いられる。マスタボットに対して定義されるシステムインテントの例は、以下を含む:(1)退出:ユーザがデジタルアシスタントにおいて現在の会話またはコンテキストを終了したい旨を知らせる場合に当てはまる;(2)ヘルプ:ユーザがヘルプまたは方向付けを求める場合に当てはまる;(3)未解決のインテント:退出インテントおよびヘルプインテントとうまく一致しないユーザ入力に当てはまる。デジタルアシスタントはまた、デジタルアシスタントに関連付けられる1つまたは複数のスキルボットに関する情報を記憶する。この情報は、マスタボットが、発話を処理するために、特定のスキルボットを選択することを可能にする。
【0060】
マスタボットまたはデジタルアシスタントレベルでは、ユーザがデジタルアシスタントに句または発話を入力すると、デジタルアシスタントは、発話および関連する会話をどのようにルーティングするかを判断する処理を行うように構成される。デジタルアシスタントは、ルールベース、AIベース、またはそれらの組み合わせとすることができるルーティングモデルを用いて、これを判断する。デジタルアシスタントは、ルーティングモデルを用いて、ユーザ入力発話に対応する会話が、処理のために特定のスキルにルーティングされるべきか、組込みシステムインテントに従ってデジタルアシスタントまたはマスタボット自体によって処理されるべきか、または現在の会話フローにおいて異なる状態として処理されるべきかを判断する。
【0061】
特定の実施形態では、この処理の一部として、デジタルアシスタントは、ユーザ入力発話が、スキルボットを、その呼出し名を用いて明示的に識別するかどうかを判断する。呼出し名がユーザ入力に存在する場合、それは、呼出し名に対応するスキルボットの明示的な呼出しとして扱われる。そのようなシナリオでは、デジタルアシスタントは、ユーザ入力を、さらなる処理のために、明示的に呼び出されたスキルボットにルーティングすることができる。特定の、または明示的な呼出しがない場合、特定の実施形態では、デジタルアシスタントは、受信されたユーザ入力発話を評価し、デジタルアシスタントに関連付けられるシステムインテントおよびスキルボットについて信頼度スコアを計算する。スキルボットまたはシステムインテントについて計算されるスコアは、ユーザ入力が、スキルボットが実行するように構成されるタスクを表すかまたはシステムインテントを表す可能性を表す。関連付けられる計算された信頼度スコアが閾値(たとえば、Confidence Threshold(信頼度閾値)ルーティングパラメータ)を超えるシステムインテントまたはスキルボットは、さらなる評価の候補として選択される。次いで、デジタルアシスタントは、識別された候補から、ユーザ入力発話のさらなる処理のために、特定のシステムインテントまたはスキルボットを選択する。特定の実施形態では、1つまたは複数のスキルボットが候補として識別された後、それらの候補スキルに関連付けられるインテントが(各スキルに対するトレーニングされたモデルを使用して)評価され、信頼度スコアが各インテントについて判断される。一般に、閾値(たとえば70%)を超える信頼度スコアを有するインテントは、候補インテントとして扱われる。特定のスキルボットが選択された場合、ユーザ発話は、さらなる処理のために、そのスキルボットにルーティングされる。システムインテントが選択された場合、選択されたシステムインテントに従って、マスタボット自体によって、1つまたは複数のアクションが実行される。
【0062】
過剰確信問題に対処するための技術
いくつかの実施形態に従って、チャットボットは、発話を入力として取り込み、当該発話について、ニューラルネットワークがトレーニングされるクラスのセットの確率または信頼度スコアの分布を予測するようにトレーニングされたニューラルネットワークモデルを使用する。クラスのセットは、たとえば、発話の背景にある意図を表すインテントクラスを含み得る。ニューラルネットワークは、インテントクラスの各々について信頼度スコアを生成するように構成されており、最も高い信頼度スコアを有するインテントクラスが、入力発話についての最も関連性のあるインテントクラスとして選択され得る。また、いくつかの実施形態では、最も高い信頼度スコアは、それが入力発話についての関連性のあるインテントクラスとして選択されるように、予め設定された閾値(たとえば、70%の信頼度)を上回っていなければならない。
【0063】
図2は、さまざまな実施形態に係る、例示的な機械学習モデルを示す図である。
図2に示される機械学習モデルは、ディープニューラルネットワーク(DNN:Deep Neural Network)210であり、DNN210は、エンコーダ220と、複数の層230A,230B...および230Nと、複数の予測モジュール240A,240B...および240Nと、信頼度スコア処理ユニット250とを含む。各層は、対応する予測モジュールに関連付けられている。たとえば、それぞれ、層1 230Aは予測モジュール240Aに関連付けられており、層2 230Bは予測モジュール240Bに関連付けられており、層3 230Nは予測モジュール240Nに関連付けられている。
【0064】
発話は、発話の埋め込みを生成するエンコーダ220への入力である。いくつかの例では、エンコーダ220は、自然言語要素(たとえば、文、単語、nグラム(すなわち、n個の単語または文字の集合体))を数字の配列、すなわち埋め込みにマッピングする多言語ユニバーサルセンテンスエンコーダ(MUSE:Multi-lingual Universal Sentence Encoder)であってもよい。ディープニューラルネットワーク210の層230A,230Bおよび230Nの各々は、埋め込みをシーケンシャルに処理する。具体的には、第1の層、すなわち層230Aに関連付けられた予測モジュール240Aは、埋め込みに基づいて、第1の層に関連付けられた信頼度スコア分布を生成する一方、第2の層、すなわち層230Bに関連付けられた予測モジュール240Bは、第1の層によって処理された埋め込みに基づいて、第2の層に関連付けられた信頼度スコア分布を生成する。その後、各層は、その対応する予測モジュールを利用して、前の層によって実行された処理に基づいて、層に関連付けられる分布を生成する。DNN210の各層は、たとえば発話の背景にある意図を表すインテントクラスなどのクラスのセットについて確率(すなわち、信頼度スコア)分布を生成するように構成されている。より具体的には、各層において、対応する予測モジュールは、インテントクラスのセットについて信頼度スコア分布を生成する。DNNの出力は、総合的な予測/分類、およびこの総合的な予測に割り当てられる総合的な信頼度スコアである。
【0065】
DNNの各層は、1つまたは複数のニューロン(すなわち、処理エンティティ)を含む、ということが理解される。特定の層のニューロンは、後続の層のニューロンに接続される。ニューロン間の各接続は、重みに関連付けられ、この重みは、ニューロンについての入力値の重要性を示す。さらに、各ニューロンは、活性化関数に関連付けられ、この活性化関数は、ニューロンへのそれぞれの入力を処理する。DNNの各ニューロンまたは層に異なる活性化関数を割り当てることができる、ということが理解される。このように、各層は、ユニークな態様で(すなわち、活性化関数および重みに基づいて)入力を処理し、各層の関連付けられた予測モジュールは、各層によって実行された処理に基づいて、インテントクラスのセットについて信頼度スコア分布を生成する。
【0066】
典型的には、ニューラルネットワークモデルは、最後の層(すなわち、層N)における最も高い信頼度スコアを有するインテントを、モデルの総合的な予測であるとして割り当てる。さらに、(DNNの出力層である、たとえば層230Nなどの最後の層における)そのようなインテントに関連付けられた信頼度スコアは、モデルの総合的な信頼度スコアとして割り当てられる。その際に、ニューラルネットワークモデルは、過剰確信問題、すなわち、ニューラルネットワークによって生成される信頼度スコアが実際の信頼度スコアと非相関になる場合があるという問題に遭遇する可能性がある。この過剰確信問題に対処するために、ディープニューラルネットワーク210は、典型的なニューラルネットワークによって実行される処理とは異なる態様で、総合的な予測および総合的な予測に関連付けられる総合的な信頼度スコアを、信頼度スコア処理ユニット250によって決定する。具体的には、総合的な予測およびDNNの総合的な予測に関連付けられる総合的な信頼度スコアを決定するための技術(本明細書では、反復技術およびアンサンブル技術と称される)について以下で説明する。
【0067】
信頼度スコア処理ユニット250は、対応する予測モジュールによって各層について計算された信頼度スコア分布を取得する。具体的には、各予測モジュールは、DNN210の対応する層によって実行された処理に基づいて、信頼度スコア分布を生成するようにトレーニングされる。たとえば、層1 230Aは、エンコーダ220によって生成された埋め込みを処理する。予測モジュール240Aは、層1 230Aによって処理された埋め込みに基づいて、(さまざまなインテントに関連付けられる)信頼度スコア分布を生成する。その後、層2 230Bは、処理された埋め込みを層1 230Aから入力として受信して、この埋め込みに対してさらなる処理を実行する。層2 230Bに関連付けられた予測モジュール240Bは、層2 230Bによって実行された処理に基づいて、(さまざまなインテントについての)信頼度スコア分布を生成するようにトレーニングされる。
【0068】
一実施形態に従って、信頼度スコア処理ユニット250は、DNN210の各層に割り当てられる予測を決定する。DNN210の各層について、信頼度スコア処理ユニット250は、(層の関連付けられた予測モジュールによって生成された対応する信頼度スコア分布からの)最も高い信頼度スコアを有する予測を、層に割り当てられる予測として決定する。さらに、信頼度スコア処理ユニット250は、DNN210の最後の層(すなわち、出力層、層N 240N)の割り当てられた予測に対応するようにモデルの総合的な予測を選択する。
【0069】
総合的な信頼度スコアを総合的な予測に割り当てるために、反復技術アプローチでは、信頼度スコア処理ユニット250は、層i=1~N-1にわたって反復処理を行って、層iの割り当てられた予測と総合的な予測(すなわち、最後の層の割り当てられた予測)とを比較する。一致が見つかると、信頼度スコア処理ユニット250は、さらなる処理を停止して、i番目の層(すなわち、予測が総合的な予測に一致する層)の割り当てられた予測に関連付けられた信頼度スコアを、DNN210の総合的な予測に関連付けられる総合的な信頼度として割り当てる。言い換えれば、DNNモデルは、(高精度に対応するために)最後の層の予測を使用し、(過剰確信問題の緩和を手助けするために)i番目の層の信頼度スコアを使用する。
【0070】
最後の層という語は、入力発話を最後に処理するDNNの層(たとえば、
図2の層230N)に対応する、ということが理解される。たとえば、
図2に示される層は、水平の態様で(すなわち、左から右に)配置されているので、層230Nが、入力発話を処理する最後の層であるとみなされる。しかし、DNNは、たとえばピラミッド構造、すなわちトップダウン(または、ボトムアップ)の態様などの異なる態様で配置されてもよい、ということに留意されたい。この場合にも、最後の層は、ピラミッド構造の最下層(または、最上層)であり得て、ユーザからの入力発話を最後に処理する層に対応する。
【0071】
図3を参照して、本開示のさまざまな実施形態に係る、
図2のDNN210によって実行される例示的な分類が示されている。例示の目的で、インテントクラスのセット310と、入力発話320と、N=4個の層を有するDNNモデルとを含むピザボットについて考えてみる。さらに、簡略化の目的で、インテントクラスのセット310は、3つのインテント、すなわち、インテント1-「ピザを注文する」、インテント2-「ピザをキャンセルする」およびインテント3-「ピザを配達する」、を含むとする。入力発話320は、「私はペパロニピザが欲しい」であるとする。さらに、ディープニューラルネットワークには典型的に5つ以上の層が実装されるであろう、ということを理解されたい。しかし、簡略化の目的で、この例では層を4つだけ使用する。
【0072】
図3において、表330は、DNNの4つの層の各々についての割り当てられた予測を示す。4つの層の各々において、割り当てられた予測は、最も高い信頼度スコアを有する予測に対応する、ということが理解される。たとえば、層1の予測は「ピザを配達する」(インテント3)であり、信頼度スコアは70%であり、層2の予測は「ピザをキャンセルする」(インテント2)であり、信頼度スコアは50%であり、層3の予測は「ピザを注文する」(インテント1)であり、信頼度スコアは70%であり、層4の予測は「ピザを注文する」(インテント1)であり、信頼度スコアは90%である。
【0073】
いくつかの実施形態に従って、モデルの総合的な予測は、DNNの最後の層の割り当てられた予測であるように決定される。たとえば、
図3を参照して、DNNモデルの総合的な予測は、インテント1、すなわち最後の層における最も高い信頼度スコアを有する層4の割り当てられたインテントである。この総合的な予測に総合的な信頼度スコアを割り当てるために、DNNの信頼度スコア処理ユニットは、層i=1~N-1にわたって反復処理を行って、層iの予測と総合的な予測(すなわち、最後の層の予測)とを比較する。一致が見つかると、さらなる処理が中止されて、i番目の層(すなわち、予測が総合的な予測に一致する層)の信頼度スコアが、総合的な予測に関連付けられる総合的な信頼度として割り当てられる。たとえば、
図3を参照して、層3の信頼度スコア340(すなわち、70%)がDNNモデルの総合的な信頼度スコアであるように決定される。層3は、予測がモデルの総合的な予測(すなわち、最後の層、すなわち層4の予測)に一致する(層1から層3までの範囲内の)最初の層である、ということが理解される。したがって、DNNモデルは、(高精度に対応するために)最後の層の予測を使用し、(過剰確信問題の緩和を手助けするために)i番目の層の信頼度スコアを使用する。
【0074】
図2に戻って、いくつかの実施形態に従って、DNNの総合的な予測およびこのDNNの総合的な予測に関連付けられる総合的な信頼度スコアを決定するアンサンブル機構では、DNN210の信頼度スコア処理ユニット250は、DNN210の各層について生成された信頼度スコア分布に基づいて、各インテントクラスについてアンサンブルスコア(すなわち、平均スコア)を計算する。具体的には、信頼度スコア処理ユニット250は、確率(intent_i|x)=avg(probability_layer_k(intent_i|x))を計算し、kは範囲1→Nにわたって反復する。アンサンブル計算に関する詳細については、
図4を参照しながら次で説明する。
【0075】
図4は、さまざまな実施形態に係る、
図2のDNNモデル210によって実行される例示的な分類を示す図である。例示の目的で、インテントクラスのセット410と、入力発話420と、N=4個の層を有するDNNモデルとを含むピザボットについて考えてみる。さらに、簡略化の目的で、インテントクラスのセット410は、3つのインテント、すなわち、インテント1-「ピザを注文する」、インテント2-「ピザをキャンセルする」およびインテント3-「ピザを配達する」、を含むとする。入力発話420は、「私はペパロニピザが欲しい」であるとする。さらに、ディープニューラルネットワークには典型的に5つ以上の層が実装されるであろう、ということを理解されたい。しかし、簡略化の目的で、この例では層を4つだけ使用する。
【0076】
図4において、表430は、DNN210の4つの層の各々についての予測を示す。たとえば、各層における予測分布は、以下の通りである。
【0077】
層1
・インテント1:ピザを注文する、20%
・インテント2:ピザをキャンセルする、10%
・インテント3:ピザを配達する、70%
層2
・インテント1:ピザを注文する、40%
・インテント2:ピザをキャンセルする、50%
・インテント3:ピザを配達する、10%
層3
・インテント1:ピザを注文する、70%
・インテント2:ピザをキャンセルする、10%
・インテント3:ピザを配達する、20%
層4
・インテント1:ピザを注文する、90%
・インテント2:ピザをキャンセルする、5%
・インテント3:ピザを配達する、5%
DNNの総合的な予測およびこのDNNの総合的な予測に関連付けられる総合的な信頼度スコアを決定するアンサンブル機構では、各層の予測分布は、反復アプローチと同様の方法で計算される。さらに、反復アプローチと同様に、DNNモデル210は、最も高いアンサンブルスコアを有するDNNの最後の層の予測に対応するようにモデルの総合的な予測を決定する。しかし、以下で説明するように、アンサンブルアプローチでは、総合的な信頼度スコアの生成が反復アプローチとは異なっている。
【0078】
信頼度スコア処理ユニット250は、各層の予測モジュールによってなされた予測を入力として取り込み、各インテントクラスについてアンサンブルスコア(たとえば、平均スコア)を以下の通り計算する。
【0079】
アンサンブルスコア
・インテント1:ピザを注文する(0.2+0.4+0.7+0.9)/4=55%
・インテント2:ピザをキャンセルする(0.1+0.5+0.1+0.05)/4=18.75%
・インテント3:ピザを配達する(0.7+0.1+0.2+0.05)/4=26.25%
具体的には、信頼度スコア処理ユニット250は、DNNモデル210の各層についての信頼度スコア分布に基づいて、各インテントについての平均信頼度スコアに対応するように各インテントについてアンサンブルスコアを計算する。たとえば、
図4を参照して、DNNモデルの総合的な予測は、インテント1、すなわち最も高い信頼度スコア(すなわち、90%)を有する最後の層(すなわち、層4)のインテントであるように決定される。さらに、DNNモデルは、(決定された総合的なインテント、すなわちインテント1に対応する)アンサンブルスコアをモデルの総合的な信頼度スコアとして割り当てる。すなわち、
図4に示される例では、DNNモデルは、55%というスコアをモデルの総合的な信頼度スコアとして割り当てる。
【0080】
図5Aは、さまざまな実施形態に係る、ディープニューラルネットワーク(DNN)モデルによって実行されるプロセスを示すフローチャートである。具体的には、
図5Aは、DNNの総合的な予測および総合的な信頼度スコアを決定するための反復技術を示すフローチャートである。
図5Aに示される処理は、それぞれのシステムの1つまたは複数の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)で実現されてもよく、ハードウェアで実現されてもよく、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的な記憶媒体(たとえば、メモリデバイス)に格納され得る。
図5Aに示されて以下で説明される方法は、例示的であって非限定的であるよう意図されている。
図5Aは、さまざまな処理ステップが特定のシーケンスまたは順序で行われることを示しているが、これは限定的であるよう意図されるものではない。特定の代替的な実施形態では、ステップは何らかの異なる順序で実行されてもよく、またはいくつかのステップは並行して実行されてもよい。特定の実施形態では、
図5Aに示される処理は、
図2および
図3に関して論じた信頼度スコア処理ユニット250によって実行され得る。
【0081】
プロセスは、ステップ510において開始し、ステップ510において、入力発話に関してDNNモデルの各層について信頼度スコア分布が生成される。たとえば、DNNモデルの各層に関連付けられた予測モジュールは、各層に関連付けられた信頼度スコア分布を生成する。ステップ515において、生成された分布に基づいて、DNNモデルの各層について予測が決定される。具体的には、信頼度スコア処理ユニット250は、(層に関連付けられた対応する信頼度スコア分布からの)最も高い信頼度スコアを有する予測を、層についての予測として決定し、その後、決定された予測を層に割り当てる。たとえば、
図4を参照して、層1に関連付けられた信頼度スコア分布、すなわちインテント1(20%)、インテント2(10%)およびインテント3(70%)、の中でインテント3が最も高い信頼度スコアを有するので、層1に割り当てられる予測はインテント3である。
【0082】
次いで、プロセスはステップ520に進み、ステップ520において、DNNモデルは、モデルの総合的な予測を決定する。いくつかの実施形態では、総合的な予測は、DNNモデルの最後の層(すなわち、層N)に割り当てられる予測である。最後の層に割り当てられる予測は、最後の層に関連付けられた予測スコア分布からの最も高い信頼度スコアを有する予測に対応する、ということが理解される。
【0083】
ステップ525において、カウンタ(C)の値が1に初期化される。カウンタCは、DNNの複数の層のサブセットを通じて反復処理を行うために利用される。たとえば、k=N個の層を含むDNNモデルでは、カウンタCの値は、層k=1から層k=N-1まで反復し得る。その後、プロセスはステップ530に進み、ステップ530において、DNNモデルの層(C)の割り当てられた予測がモデルの総合的な予測と同一であるかどうかを判断するためにクエリが実行される。クエリに対する応答が肯定的である場合には、プロセスはステップ540に進み、クエリに対する応答が否定的である場合には、プロセスはステップ535に進む。ステップ535において、カウンタ(C)の値は1だけインクリメントされ、プロセスはステップ530にループバックして、次の層の割り当てられた予測を評価する。
【0084】
割り当てられた予測がモデルの総合的な予測と同一であるDNNの層を成功裏に識別すると、ステップ540において、識別された層に関連付けられた信頼度スコアが、DNNモデル210の総合的な予測に関連付けられる総合的な信頼度スコアとして割り当てられる。
【0085】
図5Bは、さまざまな実施形態に係る、ディープニューラルネットワーク(DNN)モデルによって実行される別のプロセスを示すフローチャートである。具体的には、
図5Bは、DNNの総合的な予測および総合的な信頼度スコアを決定するためのアンサンブル技術を示すフローチャートである。
図5Bに示される処理は、それぞれのシステムの1つまたは複数の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)で実現されてもよく、ハードウェアで実現されてもよく、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的な記憶媒体(たとえば、メモリデバイス)に格納され得る。
図5Bに示されて以下で説明される方法は、例示的であって非限定的であるよう意図されている。
図5Bは、さまざまな処理ステップが特定のシーケンスまたは順序で行われることを示しているが、これは限定的であるよう意図されるものではない。特定の代替的な実施形態では、ステップは何らかの異なる順序で実行されてもよく、またはいくつかのステップは並行して実行されてもよい。特定の実施形態では、
図5Bに示される処理は、
図2および
図4に関して論じた信頼度スコア処理ユニット250によって実行され得る。
【0086】
プロセスはステップ555において開始し、ステップ555において、入力発話に関してDNNモデルの各層について信頼度スコア分布が生成される。たとえば、DNNモデルの各層に関連付けられた予測モジュールは、各層に関連付けられた信頼度スコア分布を生成する。ステップ560において、プロセスは、生成された信頼度スコア分布に基づいて、各予測についてアンサンブルスコアを計算する。たとえば、信頼度スコア処理ユニットは、各予測(すなわち、インテント)についてのアンサンブルスコアを、DNNのさまざまな層に関連付けられた予測に対応する信頼度スコアの平均(または、平均値)として計算する。たとえば、
図4を参照して、インテント1は、第1の層において20%という信頼度スコアを有しており、第2の層において40%という信頼度スコアを有しており、第3の層において70%という信頼度スコアを有しており、第4の層において90%という信頼度スコアを有している。したがって、インテント1に対応するアンサンブルスコアは、(0.2+0.4+0.7+0.9)/4=55%、すなわち、異なる層におけるインテント1のそれぞれの信頼度スコアの平均である。
【0087】
次いで、プロセスはステップ565に進み、ステップ565において、モデルの総合的な予測が、最も高い信頼度スコアを有するモデルの最後の層の予測であるように決定される。たとえば、
図4を参照して、最後の層(層4)は、インテント1に関連付けられた信頼度スコアが90%であり、インテント2に関連付けられた信頼度スコアが5%であり、インテント3に関連付けられた信頼度スコアが5%である、ということが分かる。したがって、インテント1は、モデルの総合的な予測に対応すると判断される。ステップ570において、プロセスは、計算されたアンサンブルスコアに基づいて、総合的な信頼度スコアを総合的な予測に割り当てる。たとえば、DNNモデルは、総合的な予測に対応するアンサンブルスコアをモデルの総合的な信頼度スコアとして割り当てる。たとえば、
図4を参照して、インテント1(すなわち、モデルの総合的なインテントであると判断されるインテント)のアンサンブルスコアは55%である。したがって、(第4の層におけるインテント1に関連付けられた90%というスコアとは異なって)55%というスコアが、モデルの総合的な予測に関連付けられる総合的な信頼度スコアとして割り当てられる。
【0088】
いくつかの実施形態に従って、DNNの総合的な予測および総合的な信頼度スコアを決定するための上記の技術(すなわち、反復技術およびアンサンブル技術)のパフォーマンスを200個のデータセットにわたって評価した。評価は、a)ハイパーパラメータ調整されたDNNモデルおよびb)ハイパーパラメータ調整なしのDNNモデルの2つの異なるシナリオ下で実行された。ハイパーパラメータ調整は、DNNモデルのための最適なハイパーパラメータのセットを選択するプロセスであり、ハイパーパラメータは、値がDNNモデルの学習プロセスの制御に使用されるパラメータである、ということが理解される。
【0089】
これら2つのケースのパフォーマンス結果を以下の表1に示す。DNNモデルは、単純にモデルの最後の層の信頼度スコアを総合的な信頼度スコアとして割り当てる標準的な技術と比較して、適切な信頼度スコア、すなわちモデルの総合的な信頼度スコアを割り当てる際に(200個のデータセットにわたる)平均パフォーマンスを向上させることが観察される。
【0090】
【0091】
上記の実施形態では予測モジュールはDNNの各層に関連付けられたが、予測モジュールはMUSE層、すなわちエンコーダ層に関連付けられてもよい、ということが理解される。さらに、本開示の実施形態は、チャットボット設定において利用されるDNNモデルの文脈において説明されているが、本明細書に記載される過剰確信問題に対処する技術は、異なる設定におけるいかなるニューラルネットワークにも同様に適用可能である、ということが理解される。
【0092】
例示的なシステム
図6は、分散型システム600の簡略図を示す。図示される例において、分散型システム600は、1つまたは複数の通信ネットワーク610を介してサーバ612に結合された1つまたは複数のクライアントコンピューティングデバイス602,604,606および608を含む。クライアントコンピューティングデバイス602,604,606および608は、1つまたは複数のアプリケーションを実行するように構成され得る。
【0093】
さまざまな例において、サーバ612は、本開示に記載される1つまたは複数の実施形態を可能にする1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。特定の例では、サーバ612はまた、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの例では、これらのサービスは、クライアントコンピューティングデバイス602,604,606および/または608のユーザに対して、サービスとしてのソフトウェア(SaaS:Software as a Service)モデル下のように、ウェブベースのサービスまたはクラウドサービスとして提供され得る。クライアントコンピューティングデバイス602,604,606および/または608を操作するユーザは、1つまたは複数のクライアントアプリケーションを利用してサーバ612とやり取りすることで、これらのコンポーネントによって提供されるサービスを利用し得る。
【0094】
図6に示される構成では、サーバ612は、サーバ612によって実行される機能を実現する1つまたは複数のコンポーネント618,620および622を含み得る。これらのコンポーネントは、1つまたは複数のプロセッサ、ハードウェアコンポーネント、またはそれらの組み合わせによって実行され得るソフトウェアコンポーネントを含み得る。分散型システム600とは異なり得る多種多様なシステム構成が可能であることが認識されるはずである。したがって、
図6に示される例は、例のシステムを実現するための分散型システムの一例であり、限定するよう意図されたものではない。
【0095】
ユーザは、クライアントコンピューティングデバイス602,604,606および/または608を用いて、1つまたは複数のアプリケーション、モデルまたはチャットボットを実行し、それは、1つまたは複数のイベントまたはモデルを生成してもよく、それは次いで本開示の教示に従って実現または処理されてもよい。クライアントデバイスは、当該クライアントデバイスのユーザが当該クライアントデバイスと対話することを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介してユーザに情報を出力してもよい。
図6は4つのクライアントコンピューティングデバイスだけを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0096】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどの、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、各種モバイルオペレーティングシステム(たとえばMicrosoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含むさまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえばMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、Google Chrome(登録商標)OSなどのLinux(登録商標)またはLinux系オペレーティングシステム)を実行し得る。ポータブルハンドヘルドデバイスは、セルラーフォン、スマートフォン(たとえばiPhone(登録商標))、タブレット(たとえばiPad(登録商標))、携帯情報端末(PDA:Personal Digital Assistant)などを含み得る。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイおよびその他のデバイスを含み得る。ゲームシステムは、各種ハンドヘルドゲームデバイス、インターネット接続可能なゲームデバイス(たとえばKinect(登録商標)ジェスチャ入力デバイス付き/無しのMicrosoft Xbox(登録商標)ゲーム機、Sony PlayStation(登録商標)システム、Nintendo(登録商標)が提供する各種ゲームシステムなど)を含み得る。クライアントデバイスは、各種インターネット関連アプリ、通信アプリケーション(たとえばEメールアプリケーション、ショートメッセージサービス(SMS:Short Message Service)アプリケーション)のような多種多様なアプリケーションを実行可能であってもよく、各種通信プロトコルを使用してもよい。
【0097】
ネットワーク610は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当該技術の当業者には周知のいずれかの種類のネットワークであればよく、上記プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない。単に一例として、ネットワーク610は、ローカルエリアネットワーク(LAN:Local Area Network)、Ethernet(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN:Wide-Area Network)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN:Virtual Private Network)、イントラネット、エクストラネット、公衆交換電話網(PSTN:Public Switched Telephone Network)、赤外線ネットワーク、無線ネットワーク(たとえば電気電子学会(IEEE)802.11プロトコルスイートのいずれかの下で動作するネットワーク、Bluetooth(登録商標)および/または任意の他の無線プロトコル)、および/またはこれらおよび/または他のネットワークの任意の組み合わせであってもよい。
【0098】
サーバ612は、1つまたは複数の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組み合わせで構成されてもよい。サーバ612は、仮想オペレーティングシステムを実行する1つまたは複数の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。これはたとえば、サーバに対して仮想記憶装置を維持するように仮想化できる論理記憶装置の1つまたは複数のフレキシブルプールなどである。さまざまな例において、サーバ612を、上記開示に記載の機能を提供する1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合させてもよい。
【0099】
サーバ612内のコンピューティングシステムは、上記オペレーティングシステムのうちのいずれかを含む1つまたは複数のオペレーティングシステム、および、市販されているサーバオペレーティングシステムを実行し得る。また、サーバ612は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらに他のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものを含むが、それらに限定されない。
【0100】
いくつかの実現例において、サーバ612は、クライアントコンピューティングデバイス602,604,606および608のユーザから受信したデータフィードおよび/またはイベントアップデートを解析および整理統合するための1つまたは複数のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどに関連するリアルタイムのイベントを含んでもよい、1つまたは複数の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムのアップデートを含み得るが、それらに限定されない。サーバ612は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス602,604,606および608の1つまたは複数の表示デバイスを介して表示するための1つまたは複数のアプリケーションも含み得る。
【0101】
分散型システム600はまた、1つまたは複数のデータリポジトリ614,616を含み得る。特定の例において、これらのデータリポジトリを用いてデータおよびその他の情報を格納することができる。たとえば、データリポジトリ614,616のうちの1つ以上を用いて、さまざまな実施形態に係るさまざまな機能を実行するときにチャットボット性能またはサーバ612によって使用されるチャットボットによる使用のための生成されたモデルに関連する情報のような情報を格納することができる。データリポジトリ614,616は、さまざまな場所に存在し得る。たとえば、サーバ612が使用するデータリポジトリは、サーバ612のローカル位置にあってもよく、またはサーバ612から遠隔の位置にあってもよく、ネットワークベースの接続または専用接続を介してサーバ612と通信する。データリポジトリ614,616は、異なる種類であってもよい。特定の例において、サーバ612が使用するデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および他の製造業者が提供するデータベースのようなリレーショナルデータベースであってもよい。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするように適合させてもよい。
【0102】
特定の例では、データリポジトリ614,616のうちの1つ以上は、アプリケーションデータを格納するためにアプリケーションによって用いられてもよい。アプリケーションが使用するデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリのようなさまざまな種類のものであってもよい。
【0103】
特定の例において、本開示に記載される機能は、クラウド環境を介してサービスとして提供され得る。
図7は、特定の例に係る、各種サービスをクラウドサービスとして提供し得るクラウドベースのシステム環境の簡略ブロック図である。
図7に示される例において、クラウドインフラストラクチャシステム702は、ユーザが1つまたは複数のクライアントコンピューティングデバイス704,706および708を用いて要求し得る1つまたは複数のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム702は、サーバ612に関して先に述べたものを含み得る1つまたは複数のコンピュータおよび/またはサーバを含み得る。クラウドインフラストラクチャシステム702内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および/または組み合わせとして編成され得る。
【0104】
ネットワーク710は、クライアント704,706および708と、クラウドインフラストラクチャシステム702との間におけるデータの通信および交換を容易にし得る。ネットワーク710は、1つまたは複数のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク710は、通信を容易にするために、有線および/または無線プロトコルを含む、1つまたは複数の通信プロトコルをサポートし得る。
【0105】
図7に示される例は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの例において、クラウドインフラストラクチャシステム702が、
図7に示されるものよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、または、異なる構成または配置のコンポーネントを有していてもよいことが、理解されるはずである。たとえば、
図7は3つのクライアントコンピューティングデバイスを示しているが、代替例においては、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0106】
クラウドサービスという用語は一般に、サービスプロバイダのシステム(たとえばクラウドインフラストラクチャシステム702)により、インターネットなどの通信ネットワークを介してオンデマンドでユーザにとって利用可能にされるサービスを指すのに使用される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストし得るとともに、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介してオンデマンドでアプリケーションをオーダーして使用し得る。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。たとえば、ミドルウェアサービス、データベースサービス、Java(登録商標)クラウドサービスなどのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)から提供される。
【0107】
特定の例において、クラウドインフラストラクチャシステム702は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS:Platform as a Service)モデル、サービスとしてのインフラストラクチャ(IaaS:Infrastructure as a Service)モデルなどのさまざまなモデルを使用して、1つまたは複数のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム702は、各種クラウドサービスのプロビジョニングを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースのスイートを含み得る。
【0108】
SaaSモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。たとえば、SaaSモデルを用いることにより、クラウドインフラストラクチャシステム702がホストするオンデマンドアプリケーションに顧客がアクセスできるようにし得る。Oracle Corporation(登録商標)が提供するSaaSサービスの例は、人的資源/資本管理のための各種サービス、顧客関係管理(CRM)、企業資源計画(ERP)、サプライチェーン・マネジメント(SCM:Supply Chain Management)、企業パフォーマンス管理(EPM:Enterprise Performance Management)、解析サービス、ソーシャルアプリケーションなどを含むがこれらに限定されない。
【0109】
IaaSモデルは一般に、インフラストラクチャリソース(たとえばサーバ、ストレージ、ハードウェアおよびネットワーキングリソース)を、クラウドサービスとして顧客に提供することにより、柔軟な計算およびストレージ機能を提供するために使用される。各種IaaSサービスがOracle Corporation(登録商標)から提供される。
【0110】
PaaSモデルは一般に、顧客が、環境リソースを調達、構築、または管理しなくても、アプリケーションおよびサービスを開発、実行、および管理することを可能にするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例は、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、各種アプリケーション開発ソリューションサービスなどを含むがこれらに限定されない。
【0111】
クラウドサービスは一般に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。たとえば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム702が提供する1つまたは複数のサービスをオーダーしてもよい。次いで、クラウドインフラストラクチャシステム702は、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。たとえば、ユーザは、発話を用いて、クラウドインフラストラクチャシステムに、上記のように特定のアクション(たとえばインテント)をとらせ、および/または本明細書で説明するようにチャットボットシステムのためのサービスを提供させるように要求することができる。クラウドインフラストラクチャシステム702を、1つのクラウドサービスまたは複数のクラウドサービスであっても提供するように構成してもよい。
【0112】
クラウドインフラストラクチャシステム702は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム702は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。このカスタマーは個人または企業であってもよい。ある他の例では、プライベートクラウドモデル下において、クラウドインフラストラクチャシステム702がある組織内で(たとえば企業組織内で)機能してもよく、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部などの企業のさまざまな部署であってもよく、企業内の個人であってもよい。ある他の例では、コミュニティクラウドモデル下において、クラウドインフラストラクチャシステム702および提供されるサービスは、関連コミュニティ内のいくつかの組織で共有されてもよい。上記モデルの混成モデルなどのその他各種モデルが用いられてもよい。
【0113】
クライアントコンピューティングデバイス704,706および708は、異なるタイプであってもよく(たとえば
図6に示されるクライアントコンピューティングデバイス602,604,606および608)、1つまたは複数のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム702が提供するサービスを要求することなど、クラウドインフラストラクチャシステム702とのやり取りを行い得る。たとえば、ユーザは、本開示に記載されているように、クライアントデバイスを使用してチャットボットから情報またはアクションを要求することができる。
【0114】
いくつかの例において、クラウドインフラストラクチャシステム702が、サービスを提供するために実行する処理は、モデルトレーニングおよび展開を含み得る。この解析は、データセットを使用し、解析し、処理することにより、1つまたは複数のモデルをトレーニングおよび展開することを含み得る。この解析は、1つまたは複数のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行してもよい。たとえば、チャットボットシステムのために1つまたは複数のモデルを生成およびトレーニングするために、ビッグデータ解析がクラウドインフラストラクチャシステム702によって実行されてもよい。この解析に使用されるデータは、構造化データ(たとえばデータベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含み得る。
【0115】
図7の例に示されるように、クラウドインフラストラクチャシステム702は、クラウドインフラストラクチャシステム702が提供する各種クラウドサービスのプロビジョニングを容易にするために利用されるインフラストラクチャリソース730を含み得る。インフラストラクチャリソース730は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。特定の例では、アプリケーションから要求されたストレージを処理するために利用可能なストレージ仮想マシンは、クラウドインフラストラクチャシステム702の一部である場合がある。他の例では、ストレージ仮想マシンは、異なるシステムの一部である場合がある。
【0116】
特定の例において、異なる顧客に対しクラウドインフラストラクチャシステム702が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースのセットまたはリソースモジュール(「ポッド」とも称される)にまとめてもよい。各リソースモジュールまたはポッドは、1種類以上のリソースを予め一体化し最適化した組み合わせを含み得る。特定の例において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングしてもよい。たとえば、第1のポッドセットをデータベースサービスのためにプロビジョニングしてもよく、第1のポッドセット内のポッドと異なるリソースの組み合わせを含み得る第2のポッドセットをJavaサービスなどのためにプロビジョニングしてもよい。いくつかのサービスについて、これらのサービスをプロビジョニングするために割り当てられたリソースをサービス間で共有してもよい。
【0117】
クラウドインフラストラクチャシステム702自体が、クラウドインフラストラクチャシステム702の異なるコンポーネントによって共有されるとともにクラウドインフラストラクチャシステム702によるサービスのプロビジョニングを容易にするサービス732を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性、バックアップリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【0118】
クラウドインフラストラクチャシステム702は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組み合わせで実現され得る。
図7に示されるように、サブシステムは、クラウドインフラストラクチャシステム702のユーザまたは顧客がクラウドインフラストラクチャシステム702とやり取りすることを可能にするユーザインターフェイスサブシステム712を含み得る。ユーザインターフェイスサブシステム712は、ウェブインターフェイス714、クラウドインフラストラクチャシステム702が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス716、およびその他のインターフェイス718などの、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用いて、クラウドインフラストラクチャシステム702がインターフェイス714,716および718のうちの1つ以上を用いて提供する1つまたは複数のサービスを要求(サービス要求734)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム702が提供するクラウドサービスをブラウズし、クラウドインフラストラクチャシステム702が提供するとともに顧客が申し込むことを所望する1つまたは複数のサービスについてサブスクリプションオーダーを行い得る。このサービス要求は、顧客と、顧客が申しむことを所望する1つまたは複数のサービスを識別する情報を含んでいてもよい。たとえば、顧客は、クラウドインフラストラクチャシステム702によって提供されるサービスの申し込み注文を出すことができる。注文の一部として、顧客は、サービスが提供されるチャットボットシステムを識別する情報と、任意選択でチャットボットシステムの1つまたは複数の資格情報とを提供することができる。
【0119】
図7に示される例のような特定の例において、クラウドインフラストラクチャシステム702は、新しいオーダーを処理するように構成されたオーダー管理サブシステム(OMS:Order Management Subsystem)720を含み得る。この処理の一部として、OMS720は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。
【0120】
適切に妥当性確認がなされると、OMS720は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(OPS:Order Provisioning Subsystem)724を呼び出し得る。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。たとえば、あるワークフローに従うと、OPS724を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
【0121】
特定の例では、セットアップ段階処理は、上記のように、クラウドインフラストラクチャシステム702によって、プロビジョニングプロセスの一部として実行され得る。クラウドインフラストラクチャシステム702は、アプリケーションIDを生成し、クラウドインフラストラクチャシステム702自体によって提供されるストレージ仮想マシンの中から、またはクラウドインフラストラクチャシステム702以外の他のシステムによって提供されるストレージ仮想マシンから、アプリケーション用のストレージ仮想マシンを選択することができる。
【0122】
クラウドインフラストラクチャシステム702は、要求されたサービスがいつ使用できるようになるかを示すために、応答または通知744を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(たとえばリンク)を顧客に送信してもよい。特定の例では、サービスを要求する顧客に対して、応答は、クラウドインフラストラクチャシステム702によって生成されたチャットボットシステムID、およびチャットボットシステムIDに対応するチャットボットシステムのためにクラウドインフラストラクチャシステム702によって選択されたチャットボットシステムを識別する情報を含み得る。
【0123】
クラウドインフラストラクチャシステム702はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム702は、顧客から受けた1つまたは複数のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を果たす。また、クラウドインフラストラクチャシステム702は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金はたとえば月ごとに行ってもよい。
【0124】
クラウドインフラストラクチャシステム702は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム702は、場合によっては専有情報を含む、これらの顧客についての情報を格納してもよい。特定の例において、クラウドインフラストラクチャシステム702は、顧客の情報を管理するとともに管理される情報を分離することで、ある顧客に関する情報が別の顧客にアクセスされないようにするように構成された、アイデンティティ管理サブシステム(IMS:Identity Management Subsystem)728を含む。IMS728は、情報アクセス管理などのアイデンティティサービス、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスなどの、各種セキュリティ関連サービスを提供するように構成されてもよい。
【0125】
図8は、コンピュータシステム800の例を示す。いくつかの例では、コンピュータシステム800は、分散環境内の任意のデジタルアシスタントまたはチャットボットシステムのいずれか、ならびに上記のさまざまなサーバおよびコンピュータシステムを実現するために用いられ得る。
図8に示されるように、コンピュータシステム800は、バスサブシステム802を介して他のいくつかのサブシステムと通信する処理サブシステム804を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット806、I/Oサブシステム808、ストレージサブシステム818、および通信サブシステム824を含み得る。ストレージサブシステム818は、記憶媒体822およびシステムメモリ810を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0126】
バスサブシステム802は、コンピュータシステム800のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム802は単一のバスとして概略的に示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム802は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)バス、エンハンストISA(EISA:Enhanced ISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(PCI:Peripheral Component Interconnect)バスなどを含み得る。
【0127】
処理サブシステム804は、コンピュータシステム800の動作を制御し、1つまたは複数のプロセッサ、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)、またはフィールドプログラマブルゲートアレイ(FPGA:Field Programmable Gate Array)を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム800の処理リソースを、1つまたは複数の処理ユニット832,834などに組織することができる。処理ユニットは、1つまたは複数のプロセッサ、同一のまたは異なるプロセッサからの1つまたは複数のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの例において、処理サブシステム804は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP:Digital Signal Processor)などのような1つまたは複数の専用コプロセッサを含み得る。いくつかの例では、処理サブシステム804の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を使用して実現され得る。
【0128】
いくつかの例において、処理サブシステム804内の処理ユニットは、システムメモリ810またはコンピュータ可読記憶媒体822に格納された命令を実行し得る。さまざまな例において、処理ユニットはさまざまなプログラムまたはコード命令を実行するとともに、同時に実行する複数のプログラムまたはプロセスを維持し得る。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ810および/または潜在的に1つまたは複数の記憶装置を含むコンピュータ可読記憶媒体822に常駐していてもよい。適切なプログラミングを介して、処理サブシステム804は、上述のさまざまな機能を提供し得る。コンピュータシステム800が1つまたは複数の仮想マシンを実行している例において、1つまたは複数の処理ユニットが各仮想マシンに割り当てられてもよい。
【0129】
特定の例において、コンピュータシステム800によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム804によって実行される処理の一部をオフロードするために、処理加速ユニット806を任意に設けることができる。
【0130】
I/Oサブシステム808は、コンピュータシステム800に情報を入力するための、および/またはコンピュータシステム800から、もしくはコンピュータシステム800を介して、情報を出力するための、デバイスおよび機構を含むことができる。一般に、「入力デバイス」という語の使用は、コンピュータシステム800に情報を入力するための全ての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを提供するデバイスなど、モーションセンシングおよび/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
【0131】
ユーザインターフェイス入力デバイスの他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含むが、それらに限定されない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【0132】
一般に、出力デバイスという語の使用は、コンピュータシステム800からユーザまたは他のコンピュータに情報を出力するための全ての考えられ得るタイプのデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT:Cathode Ray Tube)、液晶ディスプレイ(LCD:Liquid Crystal Display)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されない。
【0133】
ストレージサブシステム818は、コンピュータシステム800によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム818は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ可読記憶媒体を提供する。処理サブシステム804によって実行されると上述の機能を提供するソフトウェア(たとえばプログラム、コードモジュール、命令)が、ストレージサブシステム818に格納されてもよい。ソフトウェアは、処理サブシステム804の1つまたは複数の処理ユニットによって実行されてもよい。ストレージサブシステム818はまた、本開示の教示に従って認証を提供してもよい。
【0134】
ストレージサブシステム818は、揮発性および不揮発性メモリデバイスを含む1つまたは複数の非一時的メモリデバイスを含み得る。
図8に示すように、ストレージサブシステム818は、システムメモリ810およびコンピュータ可読記憶媒体822を含む。システムメモリ810は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ(RAM:Random Access Memory)と、固定命令が格納される不揮発性読取り専用メモリ(ROM:Read Only Memory)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実現例において、起動中などにコンピュータシステム800内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット/アウトプットシステム(BIOS:basic input/output system)は、典型的には、ROMに格納されてもよい。典型的に、RAMは、処理サブシステム804によって現在操作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ810は、スタティックランダムアクセスメモリ(SRAM:Static Random Access Memory)、ダイナミックランダムアクセスメモリ(DRAM:Dynamic Random Access Memory)などのような複数の異なるタイプのメモリを含み得る。
【0135】
一例として、限定を伴うことなく、
図8に示されるように、システムメモリ810は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS:Relational Database Management System)などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム812、プログラムデータ814、およびオペレーティングシステム816を、ロードしてもよい。一例として、オペレーティングシステム816は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステム、市販されているさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、および/または、iOS(登録商標)、Windows(登録商標) Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムのようなモバイルオペレーティングシステムなどのさまざまなバージョンを含み得る。
【0136】
コンピュータ可読記憶媒体822は、いくつかの例の機能を提供するプログラミングおよびデータ構成を格納することができる。コンピュータ可読媒体822は、コンピュータシステム800のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供することができる。処理サブシステム804によって実行されると上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム818に格納されてもよい。一例として、コンピュータ可読記憶媒体822は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ可読記憶媒体822は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB:Universal Serial Bus)フラッシュドライブ、セキュアデジタル(SD:Secure Digital)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されない。コンピュータ可読記憶媒体822は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD:Solid-State Drive)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMのような揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM:Magnetoresistive RAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含み得る。
【0137】
特定の例において、ストレージサブシステム818は、コンピュータ可読記憶媒体822にさらに接続可能なコンピュータ可読記憶媒体リーダ820も含み得る。リーダ820は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。
【0138】
特定の例において、コンピュータシステム800は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム800は、1つまたは複数の仮想マシンを実行するためのサポートを提供し得る。特定の例において、コンピュータシステム800は、仮想マシンの構成および管理を容易にするハイパーバイザなどのプログラムを実行し得る。各仮想マシンには、メモリ、演算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースを割り当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的には、コンピュータシステム800によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るかまたは異なり得るそれ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム800によって同時に実行され得る。
【0139】
通信サブシステム824は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム824は、他のシステムとコンピュータシステム800との間のデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム824は、コンピュータシステム800が、1つまたは複数のクライアントデバイスとの間で情報を送受信するために、インターネットを介して1つまたは複数のクライアントデバイスへの通信チャネルを確立することを可能にし得る。たとえば、コンピュータシステム800が、
図1に示されるボットシステム120を実現するために使用される場合、通信サブシステムは、アプリケーション用に選択されたチャットボットシステムと通信するために使用され得る。
【0140】
通信サブシステム824は、有線および/または無線通信プロトコルの両方をサポートし得る。特定の例において、通信サブシステム824は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.XXファミリー規格、もしくは他のモバイル通信技術、またはそれらの任意の組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF:Radio Frequency)送受信機コンポーネント、グローバルポジショニングシステム(GPS:Global Positioning System)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの例において、通信サブシステム824は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続(たとえばEthernet(登録商標))を提供し得る。
【0141】
通信サブシステム824は、さまざまな形式でデータを受信および送信し得る。いくつかの例において、通信サブシステム824は、他の形式に加えて、構造化データフィードおよび/または非構造化データフィード826、イベントストリーム828、イベントアップデート830などの形式で入力通信を受信してもよい。たとえば、通信サブシステム824は、ソーシャルメディアネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィードなどのウェブフィード、および/または1つまたは複数の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード826を受信(または送信)するように構成されてもよい。
【0142】
特定の例において、通信サブシステム824は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム828および/またはイベントアップデート830を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどを挙げることができる。
【0143】
通信サブシステム824は、コンピュータシステム800からのデータを他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード826、イベントストリーム828、イベントアップデート830などのような各種異なる形式で、コンピュータシステム800に結合された1つまたは複数のストリーミングデータソースコンピュータと通信し得る1つまたは複数のデータベースに、伝えられてもよい。
【0144】
コンピュータシステム800は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのうちの1つであればよい。コンピュータおよびネットワークの性質が常に変化しているため、
図8に示されるコンピュータシステム800の記載は、具体的な例として意図されているに過ぎない。
図8に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が可能である。本明細書における開示および教示に基づいて、さまざまな例を実現するための他の態様および/または方法があることが認識されるはずである。
【0145】
特定の例について説明したが、さまざまな変形、変更、代替構成、および均等物が可能である。例は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作させることができる。さらに、特定の例を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行されてもよい。加えて、動作の順序を再指定してもよい。プロセスは図に含まれない追加のステップを有し得る。上記の例の各種特徴および局面は、個別に使用されてもよく、またはともに使用されてもよい。
【0146】
さらに、特定の例をハードウェアとソフトウェアとの特定の組み合わせを用いて説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。特定の例は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現されてもよい。
【0147】
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計することにより、動作を実行するようにプログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、たとえば、非一時的なメモリ媒体に格納されたコードもしくは命令またはそれらの任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどにより、達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。
【0148】
本開示では具体的な詳細を示すことにより例が十分に理解されるようにしている。しかしながら、例はこれらの具体的な詳細がなくとも実施し得るものである。たとえば、周知の回路、プロセス、アルゴリズム、構造、および技術は、例が曖昧にならないようにするために不必要な詳細事項なしで示している。本明細書は例示的な例のみを提供し、他の例の範囲、適用可能性、または構成を限定するよう意図されたものではない。むしろ、例の上記説明は、各種例を実現することを可能にする説明を当業者に提供する。要素の機能および構成の範囲内でさまざまな変更が可能である。
【0149】
したがって、明細書および図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされ得ることは明らかであろう。このように、具体的な例を説明してきたが、これらは限定を意図するものではない。さまざまな変形例および同等例は添付の特許請求の範囲内にある。
【0150】
上記の明細書では、本開示の局面についてその具体的な例を参照して説明しているが、本開示はそれに限定されるものではないということを当業者は認識するであろう。上記の開示のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、例は、明細書のさらに広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境および用途で利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
【0151】
上記の説明では、例示の目的で、方法を特定の順序で記載した。代替の例では、方法は記載された順序とは異なる順序で実行されてもよいことを理解されたい。また、上記の方法は、ハードウェアコンポーネントによって実行されてもよいし、マシン実行可能命令であって、用いられると、そのような命令でプログラムされた汎用もしくは専用のプロセッサまたは論理回路などのマシンに方法を実行させてもよいマシン実行可能命令のシーケンスで具体化されてもよいことも理解されたい。これらのマシン実行可能命令は、CD-ROMもしくは他の種類の光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気もしくは光学カード、フラッシュメモリのような、1つまたは複数の機械可読媒体、または電子命令を記憶するのに適した他の種類の機械可読媒体に保存できる。代替的に、これらの方法は、ハードウェアとソフトウェアとの組み合わせによって実行されてもよい。
【0152】
構成要素が特定の動作を実行するように構成されるとして記載されている場合、そのような構成は、たとえば、特定の動作を実行するよう電子回路もしくは他のハードウェアを設計すること、特定の動作を実行するようプログラミング可能な電子回路(たとえばマイクロプロセッサもしくは他の好適な電子回路)をプログラミングすること、またはそれらの任意の組み合わせによって達成されてもよい。
【0153】
本願の説明のための例をここに詳細に記載したが、本発明の概念は、他の態様でさまざまに具現化および採用され得ること、および特許請求の範囲は、先行技術によって制限される場合を除き、そのような変形を含むように解釈されるよう意図されることを理解されたい。
【国際調査報告】