(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-31
(54)【発明の名称】文書からの埋め込まれるデータの抽出のための深層学習技術
(51)【国際特許分類】
G06F 16/35 20190101AFI20241024BHJP
【FI】
G06F16/35
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024525422
(86)(22)【出願日】2022-08-15
(85)【翻訳文提出日】2024-06-11
(86)【国際出願番号】 US2022074974
(87)【国際公開番号】W WO2023076754
(87)【国際公開日】2023-05-04
(32)【優先日】2021-10-29
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-08-12
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ジョン,シュ
(72)【発明者】
【氏名】ダルマシリ,ヤクピティヤゲ・ドン・タヌジャ・サモッダイ
(72)【発明者】
【氏名】ドゥオング,タン・ロング
(72)【発明者】
【氏名】ジョンソン,マーク・エドワード
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA01
5B175FA03
(57)【要約】
文書からの埋め込まれるデータの抽出のための深層学習技術が開示される。例示的な技術では、非構造化テキストデータのセットが受信される。非構造化テキストデータのセットを処理することによって、1つまたは複数のテキストグループが生成される。1つまたは複数の生成されたテキストグループに基づいて、機械学習モデルへの入力のための形式で、1つまたは複数のテキストグループ埋め込みが生成される。1つまたは複数のテキストグループ埋め込みを機械学習モデルに入力することによって、1つまたは複数の出力予測が生成される。1つまたは複数の出力予測のうちの各出力予測は、1つまたは複数のテキストグループのうちの1つのテキストグループの予測された態様に対応する。
【特許請求の範囲】
【請求項1】
データ処理システムで、非構造化テキストデータのセットを受信することと、
前記データ処理システムが、前記非構造化テキストデータのセットを処理することによって1つまたは複数のテキストグループを生成することと、
前記データ処理システムが、前記1つまたは複数の生成されたテキストグループに基づいて、機械学習モデルへの入力のための形式で1つまたは複数のテキストグループ埋め込みを生成することと、
前記データ処理システムが、前記1つまたは複数のテキストグループ埋め込みを前記機械学習モデルに入力することによって1つまたは複数の出力予測を生成することとを含み、前記1つまたは複数の出力予測のうちの各出力予測は、前記1つまたは複数のテキストグループのうちの1つのテキストグループの予測された態様に対応する、方法。
【請求項2】
前記非構造化テキストデータのセットは、1つまたは複数のポータブルドキュメントフォーマット(PDF)テキストファイルである、請求項1に記載の方法。
【請求項3】
前記非構造化テキストデータのセットを処理することは、前記非構造化テキストデータのセットから文字の1つまたは複数のセットを抽出することを含み、
前記1つまたは複数のテキストグループを生成することは、前記非構造化テキストデータのセット内の各文字の相対位置に従って前記文字の1つまたは複数のセットをグループ化することを含む、請求項1に記載の方法。
【請求項4】
前記1つまたは複数のテキストグループ埋め込みを生成することは、前記非構造化テキストデータのセットまたは前記1つまたは複数のテキストグループに基づいて複数の部分埋め込みを生成することと、前記複数の部分埋め込みに基づいて前記1つまたは複数のテキストグループを生成することとを含む、請求項1に記載の方法。
【請求項5】
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記1つまたは複数のテキストグループの1つまたは複数の意味的態様に基づいて生成されたテキスト部分埋め込みである、請求項4に記載の方法。
【請求項6】
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記非構造化テキストデータのセット内の文字の1つまたは複数の抽出された空間境界に基づいて生成された境界部分埋め込みである、請求項4に記載の方法。
【請求項7】
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記非構造化テキストデータのセットの1つまたは複数の抽出された画像に基づく態様に基づいて生成された視覚的部分埋め込みである、請求項4に記載の方法。
【請求項8】
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記非構造化テキストデータのセット内のテキストの1つまたは複数の異なる視覚的フォントに基づいて生成された相対的フォント部分埋め込みである、請求項4に記載の方法。
【請求項9】
前記1つまたは複数のテキストグループは、前記非構造化テキストデータのセットを処理することによって抽出された構造化された文字の1つまたは複数の文であり、
前記1つまたは複数の出力予測は、1つまたは複数の文ラベルであり、各文ラベルは、関連する文のグループ内の文の予測された相対的順序に対応する、請求項1に記載の方法。
【請求項10】
方法であって、
前記データ処理システムが、グランドトゥルーストレーニングデータのセットを決定することをさらに含み、前記グランドトゥルーストレーニングデータのセットは、前記1つまたは複数の文ラベルのうちの1つの文ラベルに対応する既知のラベルを少なくとも含み、
前記方法は、前記データ処理システムが、前記1つまたは複数の文ラベルのうちの前記1つの文ラベルを前記対応する既知のラベルと比較して目的関数値を決定し、前記目的関数値に基づいて前記機械学習モデルの構成を変更することによって、前記機械学習モデルをトレーニングすることをさらに含む、請求項9に記載の方法。
【請求項11】
前記データ処理システムが、前記1つまたは複数の文および前記1つまたは複数の文ラベルを処理して1つまたは複数の質問と回答の対を生成することをさらに含み、前記1つまたは複数の質問と回答の対の各々は、テキストの質問としての少なくとも1つの文、および前記テキストの質問に対するテキストの回答としての少なくとも1つの対応する文に関連付けられる、請求項9に記載の方法。
【請求項12】
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに結合された非一時的コンピュータ可読媒体とを備え、前記非一時的コンピュータ可読媒体は、前記1つまたは複数のプロセッサに動作を実行させるように前記1つまたは複数のプロセッサによって実行可能な命令を格納し、前記動作は、
非構造化テキストデータのセットを受信することと、
前記非構造化テキストデータのセットを処理することによって、1つまたは複数のテキストグループを生成することと、
前記1つまたは複数の生成されたテキストグループに基づいて、機械学習モデルへの入力のための形式で1つまたは複数のテキストグループ埋め込みを生成することと、
前記1つまたは複数のテキストグループ埋め込みを前記機械学習モデルに入力することによって1つまたは複数の出力予測を生成することとを含み、前記1つまたは複数の出力予測のうちの各出力予測は、前記1つまたは複数のテキストグループのうちの1つのテキストグループの予測された態様に対応する、システム。
【請求項13】
前記非構造化テキストデータのセットを処理する前記動作は、前記非構造化テキストデータのセットから文字の1つまたは複数のセットを抽出することを含み、
前記1つまたは複数のテキストグループを生成する前記動作は、前記非構造化テキストデータのセット内の各文字の相対位置に従って前記文字の1つまたは複数のセットをグループ化することを含む、請求項12に記載のシステム。
【請求項14】
前記1つまたは複数のテキストグループ埋め込みを生成する前記動作は、前記非構造化テキストデータのセットまたは前記1つまたは複数のテキストグループに基づいて複数の部分埋め込みを生成することと、前記複数の部分埋め込みに基づいて前記1つまたは複数のテキストグループを生成することとを含む、請求項12に記載のシステム。
【請求項15】
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記1つまたは複数のテキストグループの1つまたは複数の意味的態様に基づいて生成されたテキスト部分埋め込みであり、
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記非構造化テキストデータのセット内の文字の1つまたは複数の抽出された空間境界に基づいて生成された境界部分埋め込みであり、
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記非構造化テキストデータのセットの1つまたは複数の抽出された画像に基づく態様に基づいて生成された視覚的部分埋め込みであり、または
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記非構造化テキストデータのセット内のテキストの1つまたは複数の異なる視覚的フォントに基づいて生成された相対的フォント部分埋め込みである、請求項14に記載のシステム。
【請求項16】
前記1つまたは複数のテキストグループは、前記非構造化テキストデータのセットを処理することによって抽出された構造化された文字の1つまたは複数の文であり、
前記1つまたは複数の出力予測は、1つまたは複数の文ラベルであり、各文ラベルは、関連する文のグループ内の文の予測された相対的順序に対応する、請求項12に記載のシステム。
【請求項17】
1つまたは複数のプロセッサに動作を実行させるために前記1つまたは複数のプロセッサによって実行可能な命令を格納する非一時的コンピュータ可読媒体であって、前記動作は、
非構造化テキストデータのセットを受信することと、
前記非構造化テキストデータのセットを処理することによって、1つまたは複数のテキストグループを生成することと、
前記1つまたは複数の生成されたテキストグループに基づいて、機械学習モデルへの入力のための形式で1つまたは複数のテキストグループ埋め込みを生成することと、
前記1つまたは複数のテキストグループ埋め込みを前記機械学習モデルに入力することによって1つまたは複数の出力予測を生成することとを含み、前記1つまたは複数の出力予測のうちの各出力予測は、前記1つまたは複数のテキストグループのうちの1つのテキストグループの予測された態様に対応する、非一時的コンピュータ可読媒体。
【請求項18】
前記非構造化テキストデータのセットを処理する前記動作は、前記非構造化テキストデータのセットから文字の1つまたは複数のセットを抽出することを含み、
前記1つまたは複数のテキストグループを生成する前記動作は、前記非構造化テキストデータのセット内の各文字の相対位置に従って前記文字の1つまたは複数のセットをグループ化することを含む、請求項17に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記1つまたは複数のテキストグループ埋め込みを生成する前記動作は、前記非構造化テキストデータのセットまたは前記1つまたは複数のテキストグループに基づいて複数の部分埋め込みを生成することと、前記複数の部分埋め込みに基づいて前記1つまたは複数のテキストグループを生成することとを含む、請求項17に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記1つまたは複数のテキストグループの1つまたは複数の意味的態様に基づいて生成されたテキスト部分埋め込みであり、
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記非構造化テキストデータのセット内の文字の1つまたは複数の抽出された空間境界に基づいて生成された境界部分埋め込みであり、
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記非構造化テキストデータのセットの1つまたは複数の抽出された画像に基づく態様に基づいて生成された視覚的部分埋め込みであり、または
前記複数の部分埋め込みのうちの1つの部分埋め込みは、前記非構造化テキストデータのセット内のテキストの1つまたは複数の異なる視覚的フォントに基づいて生成された相対的フォント部分埋め込みである、請求項19に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
本出願は、2021年10月29日に出願された米国特許仮出願第63/273,761号の利益を主張する2022年8月12日に出願された米国特許出願第17/819,445号の優先権の利益を主張し、これらの各々の明細書は、参照によって本明細書に全体的に組み込まれている。
【0002】
分野
本開示は、一般に、チャットボットシステムに関連しており、より詳細には、データからの質問と回答の対の抽出のための深層学習技術に関連している。
【背景技術】
【0003】
背景
インスタントメッセージ機能および自動チャットプラットフォームは、今の顧客サービス問題に対する効率的な解決策である。組織は、これらの実践を活用して、高価な人的資源を個別のユーザの質問に割り当てることなく、タイムリーな敏感に反応するサービスをその顧客に提供することができる。最新の自動チャットプラットフォームは、「チャットボット」を利用して顧客サービス要求または人間との他のやりとりを処理することができる。一部のチャットボットは、人間によって提示された質問に回答することなどの特定の要求を処理するように設計され、トレーニングされることがある。
【0004】
人間と効果的にやりとりするようにチャットボットをトレーニングすることは、時間およびリソースを大量に消費する作業である。多くの場合、トレーニングプロセス中に大量のトレーニングデータが必要とされ、トレーニングされているチャットボットモデルは、既存のトレーニングデータのセットが適していないある作業を指定されることがある。これらのチャットボットをトレーニングするための十分なトレーニングデータを取得するには、多くの場合、ユーザがトレーニングデータを手動で作成するか、または文書を構文解析してデータを抽出し、チャットボットモデルがやりとりできる方法でデータにラベル付けする必要がある。これは、人間にとって時間およびリソースを極めて大量に消費する作業であり、チャットボットのデプロイメントを遅延させる。例えば、人間よって提示された質問に回答するようにチャットボットをトレーニングするには、チャットボットは、人間によって手動で記述されるか、または変更されなければならない質問および対応する回答のサンプルの数千個の例を構文解析する必要があることがある。
【0005】
質問および回答を含んでいる多数の文書が、デジタル的に使用可能である。例えば、新しいチャットボットをトレーニングしている顧客は、よくある質問(FAQ:frequently asked questions)などの顧客のウェブサイト上の既存の文書を利用して、トレーニングデータのセットを生成することがある。これらの既存の文書は、多くの場合、ポータブルドキュメントフォーマットファイル(PDFファイル:portable document format file)などの構造化されていない形式であり、この形式では、チャットボットがファイルをトレーニングの入力として受け入れないため、チャットボットはトレーニングされ得ない。さらに、トレーニングが開始できるようになる前に、人間ユーザは、非構造化文書を自ら構文解析し、チャットボットに適合する適切な埋め込まれた形式で、データを手動で変更または再生成しなければならない。
【発明の概要】
【課題を解決するための手段】
【0006】
概要
文書からの埋め込まれるデータの抽出のための深層学習技術が開示される。
【0007】
さまざまな実施形態では、方法が、データ処理システムで、非構造化テキストデータのセットを受信することと、データ処理システムによって、非構造化テキストデータのセットを処理することによって1つまたは複数のテキストグループを生成することと、データ処理システムによって、1つまたは複数の生成されたテキストグループに基づいて、機械学習モデルへの入力のための形式で1つまたは複数のテキストグループ埋め込みを生成することと、データ処理システムによって、1つまたは複数のテキストグループ埋め込みを機械学習モデルに入力することによって1つまたは複数の出力予測を生成することとを含み、1つまたは複数の出力予測のうちの各出力予測は、1つまたは複数のテキストグループのうちの1つのテキストグループの予測された態様に対応する。
【0008】
さまざまな実施形態では、システムが、埋め込まれるデータを文書から抽出することができる。システムは、1つまたは複数のプロセッサおよび1つまたは複数のプロセッサに結合された非一時的コンピュータ可読媒体を含むことができる。非一時的コンピュータ可読媒体は、1つまたは複数のプロセッサにさまざまな動作を実行させるように1つまたは複数のプロセッサによって実行可能な命令を格納することができる。システムは、非構造化テキストデータのセットを受信することができる。システムは、非構造化テキストデータのセットを処理することによって、1つまたは複数のテキストグループを生成することができる。システムは、1つまたは複数の生成されたテキストグループに基づいて、機械学習モデルへの入力のための形式で1つまたは複数のテキストグループ埋め込みを生成することができる。システムは、1つまたは複数のテキストグループ埋め込みを機械学習モデルに入力することによって、1つまたは複数の出力予測を生成することができる。1つまたは複数の出力予測のうちの各出力予測は、1つまたは複数のテキストグループのうちの1つのテキストグループの予測された態様に対応することができる。
【0009】
さまざまな実施形態では、非一時的コンピュータ可読媒体が、1つまたは複数のプロセッサに、埋め込まれるデータを文書から抽出することに関連するさまざまな動作を実行させるために1つまたは複数のプロセッサによって実行可能な命令を格納することができる。これらの動作は、非構造化テキストデータのセットを受信することを含むことができる。これらの動作は、非構造化テキストデータのセットを処理することによって1つまたは複数のテキストグループを生成することを含むことができる。これらの動作は、1つまたは複数の生成されたテキストグループに基づいて、機械学習モデルへの入力のための形式で1つまたは複数のテキストグループ埋め込みを生成することを含むことができる。これらの動作は、1つまたは複数のテキストグループ埋め込みを機械学習モデルに入力することによって、1つまたは複数の出力予測を生成することを含むことができる。1つまたは複数の出力予測のうちの各出力予測は、1つまたは複数のテキストグループのうちの1つのテキストグループの予測された態様に対応することができる。
【0010】
一部のさらなる実施形態では、非構造化テキストデータのセットは、1つまたは複数のポータブルドキュメントフォーマット(PDF)テキストファイルである。一部の実施形態では、非構造化テキストデータのセットを処理することは、非構造化テキストデータのセットから文字の1つまたは複数のセットを抽出することを含み、1つまたは複数のテキストグループを生成することは、非構造化テキストデータのセット内の各文字の相対位置に従って文字の1つまたは複数のセットをグループ化することを含む。
【0011】
一部の実施形態では、1つまたは複数のテキストグループ埋め込みを生成することは、非構造化テキストデータのセットまたは1つまたは複数のテキストグループに基づいて複数の部分埋め込みを生成することと、複数の部分埋め込みに基づいて1つまたは複数のテキストグループを生成することとを含む。一部のさらなる実施形態では、複数の部分埋め込みのうちの1つの部分埋め込みは、1つまたは複数のテキストグループの1つまたは複数の意味的態様に基づいて生成されたテキスト部分埋め込みである。一部のさらなる実施形態では、複数の部分埋め込みのうちの1つの部分埋め込みは、非構造化テキストデータのセット内の文字の1つまたは複数の抽出された空間境界に基づいて生成された境界部分埋め込みである。一部のさらなる実施形態では、複数の部分埋め込みのうちの1つの部分埋め込みは、非構造化テキストデータのセットの1つまたは複数の抽出された画像に基づく態様に基づいて生成された視覚的部分埋め込みである。一部のさらなる実施形態では、複数の部分埋め込みのうちの1つの部分埋め込みは、非構造化テキストデータのセット内のテキストの1つまたは複数の異なる視覚的フォントに基づいて生成された相対的フォント部分埋め込みである。
【0012】
一部の実施形態では、1つまたは複数のテキストグループは、非構造化テキストデータのセットを処理することによって抽出された構造化された文字の1つまたは複数の文であり、1つまたは複数の出力予測は、1つまたは複数の文ラベルであり、各文ラベルは、関連する文のグループ内の文の予測された相対的順序に対応する。一部のさらなる実施形態では、方法は、データ処理システムによって、グランドトゥルーストレーニングデータのセットを決定することであって、グランドトゥルーストレーニングデータのセットが、1つまたは複数の文ラベルのうちの1つの文ラベルに対応する既知のラベルを少なくとも含む、決定することと、1つまたは複数の文ラベルのうちの1つの文ラベルを対応する既知のラベルと比較して目的関数値を決定し、目的関数値に基づいて機械学習モデルの構成を変更することによって、機械学習モデルをトレーニングすることとをさらに含む。一部の実施形態では、方法は、1つまたは複数の文および1つまたは複数の文ラベルを処理して1つまたは複数の質問と回答の対を生成することをさらに含み、1つまたは複数の質問と回答の対の各々は、テキストの質問としての少なくとも1つの文、およびテキストの質問に対するテキストの回答としての少なくとも1つの対応する文に関連付けられる。
【0013】
上記および下記で説明される技術は、複数の方法および複数の文脈において実装されてよい。下でさらに詳細に説明される以下の図を参照して、複数の例示的な実装および文脈が提供される。しかし、以下の実装および文脈は、多くの実装および文脈の一部にすぎない。
【図面の簡単な説明】
【0014】
【
図1】実施形態例を組み込んでいる分散環境の簡略化されたブロック図である。
【
図2】ある実施形態に従って、マスターボット(MB:master bot)システムの簡略化されたブロック図である。
【
図3】ある実施形態に従って、スキルボットシステムの簡略化されたブロック図である。
【
図4】さまざまな実施形態に従って、テキスト埋め込み生成のためのデータ処理システムを実装するコンピューティングシステムの簡略化されたブロック図である。
【
図5】さまざまな実施形態に従って、機械学習モデルをトレーニングするためのコンピューティングシステムの簡略化されたブロック図である。
【
図6】さまざまな実施形態に従って、機械学習モデルによって推論を生成するためのコンピューティングシステムの簡略化されたブロック図である。
【
図7】さまざまな実施形態に従って、テキストグループの特徴抽出のためのコンピューティングシステムの簡略化されたブロック図である。
【
図8】さまざまな実施形態に従って、機械学習プロセス用のテキストグループ埋め込みを生成するためのプロセスフローを示す図である。
【
図9】さまざまな実施形態を実装するための分散システムの簡略図である。
【
図10】さまざまな実施形態に従って、実施形態システムの1つまたは複数のコンポーネントによって提供されるサービスがクラウドサービスとして提供され得る、システム環境の1つまたは複数のコンポーネントの簡略化されたブロック図である。
【
図11】さまざまな実施形態を実施するために使用され得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0015】
詳細な説明
以下の説明では、説明の目的で、ある実施形態を十分に理解できるように、特定の詳細が示されている。しかし、さまざまな実施形態が、それらの特定の詳細なしで実践されてよいということが明らかである。各図および説明は、制限となるよう意図されていない。「例示的」という単語は、本明細書では「例、事例、または実例としての役割を果たす」ことを意味するために使用される。「例示的」として本明細書に記載されたいかなる実施形態または設計も、必ずしも他の実施形態または設計よりも好ましいか、または有利であると解釈されるべきではない。
【0016】
人間と効果的にやりとりするようにチャットボットをトレーニングすることは、時間およびリソースを大量に消費する作業である。トレーニングされていないチャットボットは、新しいデータまたは複雑なデータを適切に処理することができず、チャットボットに提示された質問などのさまざまな発話に応答して、回答を返さないか、または正しくない回答を返すことがある。ほとんどの場合に人間の発話に効果的に回答できるところまでチャットボットモデルをトレーニングするには、多くの場合、大量のデータが必要とされる。このデータは、ラベル付きのトレーニングデータを含み、ニューラルネットワークなどのチャットボットモデルは、発話に対して予測されたデータを生成し、次に、予測されたデータをグランドトゥルースデータと比較することによって、トレーニングされ得る。目的関数を使用して、予測されたデータとグランドトゥルースデータの間の差が測定され、モデルを改善するため(例えば、逆伝搬によってモデルパラメータを学習するために)に使用され得る。
【0017】
ラベル付きのトレーニングデータは、通常、トレーニングデータとして含められることが求められているデータを含む文書を再検討することによって、手動で生成される。人間は、チャットボットモデル用のトレーニングデータに変換され得る質問と回答の対に関して、文書を自ら構文解析することがある。人間は、チャットボットが「学習する」べき質問および質問に対する回答をコピーし、この対を使用して、チャットボットをトレーニングするために使用されるトレーニングデータセットを生成する。これを行うには、人間ユーザは、質問と回答の対に関して文書を手動で再検討する必要があり、多くの場合、人為的ミスに起因して、質問と回答の対がある位置に気付かないか、または質問と回答の対を見落とす。これは、リソースの非効率的利用、ならびにチャットボットモデルのトレーニングおよびデプロイメントにおける遅延をもたらす。
【0018】
これらおよび他の課題を克服するために、本明細書では、文書からの、チャットボットモデルをトレーニングするために使用され得る埋め込まれるデータの抽出のための深層学習技術が説明される。本明細書に記載された深層学習技術は、人間の行動も介入も必要とせずに、機械学習モデルをトレーニングするために使用され得る埋め込まれるデータの自動的かつ動的な抽出を可能にする。自動化された動的抽出は、トレーニングデータ生成プロセスにおける人為的ミスおよび非効率正を取り除くため、チャットボットモデルがより素早く、包括的かつ徹底的にトレーニングされることを可能にする。例えば、深層学習技術は、質問と回答の対を人間より高速かつ正確にデジタル文書から抽出するだけでなく、人間の偏見を防ぎ、人間がトレーニングデータを手動で生成するときに気付かないことがあるか、またはそうでなければ含めないであろう文脈的に関連する埋め込みを、トレーニングデータに含めることもできる。
【0019】
例示的なチャットボットシステム
ボット(スキル、チャットボット、チャターボット、またはトークボットとも呼ばれる)は、エンドユーザとの会話を実行することができるコンピュータプログラムである。ボットは、通常、自然言語メッセージを使用するメッセージングアプリケーションを介して、自然言語メッセージ(例えば、質問またはコメント)に応答することができる。企業は、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、または他の発声入力をやりとりに使用するインターフェイスを備えるデバイスまたはアプリなど)を含んでよい。
【0020】
一部の例では、ボットシステムは、ユニフォームリソースアイデンティファイア(URI:Uniform Resource Identifier)に関連付けられてよい。URIは、文字列を使用してボットシステムを識別してよい。URIは、1つまたは複数のメッセージングアプリケーションシステムのウェブフックとして使用されてよい。URIは、例えば、ユニフォームリソースロケータ(URL:Uniform Resource Locator)またはユニフォームリソースネーム(URN:Uniform Resource Name)を含んでよい。ボットシステムは、メッセージングアプリケーションシステムからメッセージ(例えば、ハイパーテキスト転送プロトコル(HTTP:hypertext transfer protocol)ポスト呼び出しメッセージ)を受信するように設計されてよい。HTTPポスト呼び出しメッセージは、メッセージングアプリケーションシステムからURIに向けられてよい。一部の実施形態では、メッセージは、HTTPポスト呼び出しメッセージと異なってよい。例えば、ボットシステムは、ショートメッセージサービス(SMS)からメッセージを受信してよい。本明細書における説明は、ボットシステムが受信する通信をメッセージと呼ぶが、メッセージが、HTTPポスト呼び出しメッセージ、SMSメッセージ、または2つのシステム間の任意の他の種類の通信であってよいということが理解されるべきである。
【0021】
エンドユーザは、人同士のやりとりと同じような会話のやりとり(会話ユーザインターフェイス(UI:user interface)と呼ばれることがある)によって、ボットシステムとやりとりしてよい。場合によっては、やりとりは、エンドユーザがボットに「こんにちは」と言い、ボットが「やあ」と応答し、どのようにして助けることができるかをエンドユーザに尋ねることを含んでよい。場合によっては、やりとりは、1つの口座から別の口座に送金することなどの、例えばバンキングボットとのトランザクションのやりとり、休暇残り日数を確認することなどの、例えばHRボットとの情報のやりとり、または購入した商品を返品することについて話し合うこと、もしくは技術的支援を要求することなどの、例えばリテールボットとのやりとりであってもよい。
【0022】
一部の実施形態では、ボットシステムは、ボットシステムの管理者または開発者とのやりとりなしで、エンドユーザのやりとりをインテリジェントに処理してよい。例えば、エンドユーザは、所望の目的を達成するために、1つまたは複数のメッセージをボットシステムに送信してよい。メッセージは、テキスト、絵文字、音声、画像、ビデオ、またはメッセージを伝達する他の方法などの、ある内容を含んでよい。一部の実施形態では、ボットシステムは、内容を標準化された形態(例えば、適切なパラメータを含む、企業のサービスに対するREST(representational state transfer)呼び出し)に変換し、自然言語応答を生成してよい。ボットシステムは、エンドユーザに対して追加の入力パラメータを促すか、または他の追加情報を要求してもよい。一部の実施形態では、ボットシステムは、エンドユーザの発話に受動的に応答するのではなく、エンドユーザとの通信を開始してもよい。本明細書では、ボットシステムの明示的呼び出しを識別し、呼び出されているボットシステムの入力を決定するためのさまざまな技術が説明される。ある実施形態では、マスターボットによって、発話において呼び出し名を検出することに基づいて、明示的呼び出しの分析が実行される。呼び出し名の検出に応答して、呼び出し名に関連付けられたスキルボットに入力するために、発話が改善されてよい。
【0023】
ボットとの会話は、複数の状態を含む具体的な会話フローに従ってよい。このフローは、入力に基づいて次に何が起こるかを定義してよい。一部の実施形態では、ユーザによって定義された状態(例えば、エンドユーザの意図)、および状態において、または状態間で起こす行動を含む状態機械が、ボットシステムを実装するために使用されてよい。会話は、フローに関してボットが行う決定に影響を与えることができるエンドユーザ入力に基づいて、異なる道を進んでよい。例えば、各状態で、エンドユーザ入力または発話に基づいて、ボットは、次に起こす適切な行動を決定するために、エンドユーザの意図を決定してよい。本明細書において使用されるとき、発話の文脈において、「意図」という用語は、発話を提供したユーザの意図のことを指す。例えば、ユーザは、「ピザを注文してください」という発話によってユーザの意図が表され得るように、ピザを注文するためにボットと会話しようとすることがある。ユーザの意図は、ユーザの代わりにチャットボットが実行することをユーザが望む特定の作業に向けられ得る。したがって、発話は、ユーザの意図を反映する質問、コマンド、要求などとして言い表され得る。意図は、エンドユーザが達成したい目的を含んでよい。
【0024】
チャットボットの構成の文脈において、「意図」という用語は、本明細書では、ユーザの発話を、チャットボットが実行できる特定の作業/行動または作業/行動のカテゴリにマッピングするための構成情報のことを指すために使用される。発話の意図(すなわち、ユーザの意図)とチャットボットの意図を区別するために、後者は、本明細書では「ボットの意図」と呼ばれることがある。ボットの意図は、意図に関連付けられた1つまたは複数の発話のセットを含んでよい。例えば、ピザを注文するための意図は、ピザを注文したいという要望を表す発話のさまざまな並べ替えを含むことができる。これらの関連する発話は、後で意図分類器が、ユーザからの入力発話がピザを注文する意図に一致するかどうかを判定できるように、チャットボットの意図分類器をトレーニングするために使用され得る。ボットの意図は、ユーザとの会話を開始するために、ある状態で1つまたは複数の対話フローに関連付けられてよい。例えば、ピザを注文する意図に関する第1のメッセージは、「どの種類のピザが好きですか?」という質問であることができる。関連する発話に加えて、ボットの意図は、意図に関連する固有表現をさらに含んでよい。例えば、ピザを注文する意図は、ピザを注文する作業を実行するために使用される変数またはパラメータ、例えば、トッピング1、トッピング2、ピザの種類、ピザのサイズ、ピザの数などを含むことができる。実体の値は、通常、ユーザとの会話を通じて取得される。
【0025】
図1は、ある実施形態に従ってチャットボットシステムを組み込む環境100の簡略化されたブロック図である。環境100は、DABP102のユーザがデジタルアシスタントまたはチャットボットシステムを作成してデプロイすることを可能にするがデジタルアシスタントビルダプラットフォーム(DABP:digital assistant builder platform)102を含んでいる。DABP102は、1つまたは複数のデジタルアシスタント(またはDA:digital assistant)またはチャットボットシステムを作成するために使用され得る。例えば、
図1に示されているように、特定の企業を表すユーザ104は、特定の企業のユーザのために、DABP102を使用してデジタルアシスタント106を作成し、デプロイすることができる。例えば、DABP102は、銀行によって、銀行の顧客による使用のための1つまたは複数のデジタルアシスタントを作成するために使用され得る。同じDABP102プラットフォームが、複数の企業によって、デジタルアシスタントを作成するために使用され得る。別の例として、レストラン(例えば、ピザ店)の所有者は、DABP102を使用して、レストランの顧客が食べ物を注文する(例えば、ピザを注文する)ことを可能にするデジタルアシスタントを作成し、デプロイしてよい。
【0026】
本開示の目的では、「デジタルアシスタント」は、自然言語の会話を通じて、デジタルアシスタントのユーザがさまざまな作業を遂行するのを支援する実体である。デジタルアシスタントは、ソフトウェアのみを使用して(例えば、デジタルアシスタントは、1つまたは複数のプロセッサによって実行可能なプログラム、コード、または命令を使用して実装されるデジタルの実体である)、ハードウェアを使用して、またはハードウェアとソフトウェアの組み合わせを使用して実装され得る。デジタルアシスタントは、コンピュータ、携帯電話、腕時計、電化製品、車両などの、さまざまな物理的システムまたはデバイスにおいて具現化されるか、または実装され得る。デジタルアシスタントは、チャットボットシステムと呼ばれることもある。したがって、本開示の目的では、デジタルアシスタントおよびチャットボットシステムという用語は交換可能である。
【0027】
DABP102を使用して構築されたデジタルアシスタント106などのデジタルアシスタントは、デジタルアシスタントとそのユーザ108の間の自然言語に基づく会話を介してさまざまな作業を実行するために使用され得る。会話の一部として、ユーザは、1つまたは複数のユーザ入力110をデジタルアシスタント106に提供し、デジタルアシスタント106から応答112を返されてよい。会話は、入力110および応答112のうちの1つまたは複数を含むことができる。これらの会話を介して、ユーザは、デジタルアシスタントによって1つまたは複数の作業が実行されることを要求することができ、それに応じて、デジタルアシスタントは、ユーザによって要求された作業を実行し、適切な応答でユーザに応答するように構成される。
【0028】
ユーザ入力110は、通常、自然言語の形態であり、発話と見なされる。ユーザの発話110は、ユーザが文、質問、テキストの破片、または単一の単語を入力し、それをデジタルアシスタント106への入力として提供するなどの場合、テキストの形態であることができる。一部の実施形態では、ユーザの発話110は、ユーザがデジタルアシスタント106への入力として提供される何かを言うか、または話すなどの場合、音声入力または発声の形態であることができる。発話は、通常、ユーザ108によって話された言語である。例えば、発話は、英語または何らかの他の言語であってよい。発話が発声の形態である場合、発声入力が、その特定の言語でテキストの形態の発話に変換され、次に、デジタルアシスタント106によってテキストの発話が処理される。発声入力または音声入力をテキストの発話に変換するために、さまざまな発声テキスト化処理技術が使用されてよく、次に、テキストの発話がデジタルアシスタント106によって処理される。一部の実施形態では、デジタルアシスタント106自体によって発声テキスト化変換が実行されてよい。
【0029】
テキストの発話または発声の発話であってよい発話は、断片、1つの文、複数の文、1つまたは複数の単語、1つまたは複数の質問、前述の種類の組み合わせなどであることができる。デジタルアシスタント106は、自然言語理解(NLU:natural language understanding)技術を発話に適用して、ユーザ入力の意味を理解するように構成される。発話のNLU処理の一部として、デジタルアシスタント106は、発話に対応する1つまたは複数の意図および1つまたは複数の実体を識別することを含む、発話の意味を理解するための処理を実行するように構成される。デジタルアシスタント106は、発話の意味を理解すると、理解された意味または意図に応答して、1つまたは複数の行動または動作を実行してよい。本開示の目的では、発話が、デジタルアシスタント106のユーザ108によって直接提供されたテキストの発声であるか、またはテキストの形態への入力された発声の発話の変換の結果であるということが仮定される。しかし、このことは、いかなる方法であっても、限定することも、制限となることも意図されていない。
【0030】
例えば、ユーザ108の入力は、「ピザを注文したいです」などの発話を提供することによって、ピザが注文されることを要求してよい。デジタルアシスタント106は、そのような発話を受信するときに、発話の意味を理解して適切な行動を起こすように構成される。適切な行動は、例えば、ユーザが注文したいピザの種類、ピザのサイズ、ピザの任意のトッピングなどに関するユーザ入力を要求する質問で、ユーザに応答することを含んでよい。デジタルアシスタント106によって提供される応答は、自然言語の形態であってもよく、通常は、入力発話と同じ言語であってもよい。これらの応答を生成することの一部として、デジタルアシスタント106は、自然言語生成(NLG:natural language generation)を実行してよい。ユーザとデジタルアシスタント106の間の会話を介してユーザがピザを注文する場合、デジタルアシスタントは、ピザの注文に関するすべての必要な情報を提供するようにユーザを誘導し、その後、会話の終了時に、ピザが注文されることを引き起こしてよい。デジタルアシスタント106は、ピザが注文されたことを示す情報をユーザに出力することによって、会話を終了してよい。
【0031】
概念的レベルでは、デジタルアシスタント106は、ユーザから受信された発話に応答して、さまざまな処理を実行する。一部の実施形態では、この処理は、例えば、入力発話の意味を理解すること(自然言語理解(NLU)と呼ばれることもある)、発話に応答して実行される行動を決定すること、適切な場合、行動が実行されることを引き起こすこと、ユーザの発話に応答してユーザに出力される応答を生成すること、応答をユーザに出力することなどを含む、一連の処理ステップまたは処理ステップのパイプラインを含む。NLU処理は、受信された入力発話を構文解析して、発話の構造および意味を理解し、発話を改善および修正して、発話のより良い理解できる形態(例えば、論理的形態)または構造を開発することを含むことができる。応答を生成することは、NLG技術を使用することを含んでよい。
【0032】
デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理は、構文解析(例えば、トークン化、見出語化、文の品詞タグの識別、文内の固有表現の識別、文章構造を表すための依存関係ツリーの生成、節への文の分割、個別の節の分析、前方照応の解決、チャンキングの実行など)などの、さまざまなNLPに関連する処理を含むことができる。ある実施形態では、NLU処理またはその一部は、デジタルアシスタント106自体によって実行される。一部の他の実施形態では、デジタルアシスタント106は、他のリソースを使用してNLU処理の一部を実行してよい。例えば、入力発話の文の構文および構造は、パーサー、品詞タガー、および/または固有表現レコグナイザを使用して文を処理することによって、識別されてよい。1つの実装では、英語の場合、スタンフォード大学自然言語処理(NLP)グループによって提供されているようなパーサー、品詞タガー、および固有表現レコグナイザが、文章構造および構文を分析するために使用される。これらは、スタンフォーCoreNLPツールキットの一部として提供される。
【0033】
本開示で提供されるさまざまな例は、英語での発話を示すが、これは、単に例であることを意図されている。ある実施形態では、デジタルアシスタント106は、英語以外の言語での発話も処理することができる。デジタルアシスタント106は、異なる言語の処理を実行するために構成されたサブシステム(例えば、NLU機能を実施するコンポーネント)を提供してよい。これらのサブシステムは、NLUコアサーバからサービス呼び出しを使用して呼び出され得る接続可能なユニットとして実装されてよい。これによって、処理の異なる順序を可能にすることを含めて、NLU処理を言語ごとに柔軟かつ拡張可能にする。個別の言語用の言語パックが提供されてよく、言語パックは、NLUコアサーバから提供され得るサブシステムのリストを登録することができる。
【0034】
図1に示されたデジタルアシスタント106などのデジタルアシスタントは、あるアプリケーションを介する、ソーシャルメディアプラットフォームを介する、さまざまなメッセージングサービスおよびアプリケーションを介する、ならびに他のアプリケーションまたはチャネルを介するなどの、ただしこれらに限定されない、多種多様なチャネルを介して、そのユーザ108による使用またはアクセスを可能にされ得る。単一のデジタルアシスタントが、異なるサービスによって同時に実行され、アクセスされ得るように、そのデジタルアシスタント用に構成された複数のチャネルを有することができる。
【0035】
デジタルアシスタントまたはチャットボットシステムは、通常、1つまたは複数のスキルを含むか、または1つまたは複数のスキルに関連付けられる。ある実施形態では、これらのスキルは、ユーザとやりとりし、在庫の追跡、タイムカードの提出、経費報告書の作成、食べ物の注文、銀行口座の確認、予約、ウィジェットの購入などの、特定の種類の作業を実行するように構成された個別のチャットボット(スキルボットと呼ばれる)である。例えば、
図1に示された実施形態の場合、デジタルアシスタントまたはチャットボットシステム106は、スキル116-1、116-2などを含んでいる。本開示の目的では、「1つのスキル」および「複数のスキル」という用語は、「1つのスキルボット」および「複数のスキルボット」という用語とそれぞれ同義に使用される。
【0036】
デジタルアシスタントに関連付けられた各スキルは、ユーザとの会話を通じて、デジタルアシスタントのユーザが作業を完了するのを支援し、この会話は、ユーザによって提供されたテキスト入力または音声入力およびスキルボットによって提供された応答の組み合わせを含むことができる。これらの応答は、ユーザへのテキストメッセージまたは音声メッセージの形態、および/またはユーザが選択を行うためにユーザに提示される単純なユーザインターフェイス要素(例えば、リストの選択)を使用する形態であってよい。
【0037】
スキルまたはスキルボットがデジタルアシスタントに関連付けられるか、または追加され得る、さまざまな方法がある。一部の例では、スキルボットは、企業によって開発され、その後、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】
ある実施形態では、マスターボット/子ボットインフラストラクチャにおいて、マスターボットは、スキルボットの使用可能なリストを認識するように構成される。マスターボットは、さまざまな使用可能なスキルボットを識別し、スキルボットごとに、スキルボットによって実行され得る作業を含むスキルボットの能力を識別する、メタデータにアクセスすることができてよい。ユーザ要求を発話の形態で受信するときに、マスターボットは、複数の使用可能なスキルボットから、ユーザ要求に最も役立ち、ユーザ要求を最適に処理することができる特定のスキルボットを識別または予測するように構成される。次に、マスターボットは、発話(または発話の一部)を、さらに処理するために、その特定のスキルボットにルーティングする。このようにして、制御は、マスターボットからスキルボットに流れる。マスターボットは、複数の入力チャネルおよび出力チャネルをサポートすることができる。
【0041】
図1の実施形態は、マスターボット114ならびにスキルボット116-1、116-2、および116-3を備えているデジタルアシスタント106を示しているが、これは、制限することを意図されていない。デジタルアシスタントは、デジタルアシスタントの機能を提供するさまざまな他のコンポーネント(例えば、他のシステムおよびサブシステム)を含むことができる。これらのシステムおよびサブシステムは、ソフトウェア(例えば、コンピュータ可読媒体に格納された、1つまたは複数のプロセッサによって実行可能なコード、命令)のみで、ハードウェアのみで、またはソフトウェアとハードウェアの組み合わせを使用する実装で、実装されてよい。
【0042】
DABP102は、DABP102のユーザが、デジタルアシスタントに関連付けられた1つまたは複数のスキルボットを含んでいるデジタルアシスタントを作成することを可能にする、インフラストラクチャならびにさまざまなサービスおよび機能を提供する。一部の例では、スキルボットは、既存のスキルボットを複製すること、例えば、スキルストアによって提供されたスキルボットを複製することによって、作成され得る。前に示されたように、DABP102は、さまざまな作業を実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットを複製することができる。必要に応じて、複製されたスキルボットに対して、変更またはカスタマイズが行われてよい。一部の他の例では、DABP102のユーザは、DABP102によって提供されたツールおよびサービスを使用して、最初からスキルボットを作成している。前に示されたように、DABP102によって提供されたスキルストアまたはスキルカタログは、さまざまな作業を実行するための複数のスキルボットを提供してよい。
【0043】
ある実施形態では、高いレベルで、スキルボットを作成またはカスタマイズすることは、次のステップを含む。
(1)新しいスキルボットの設定を構成する
(2)スキルボットの1つまたは複数の意図を構成する
(3)1つまたは複数の意図に関して1つまたは複数の実体を構成する
(4)スキルボットをトレーニングする
(5)スキルボットの対話フローを作成する
(6)必要に応じて、カスタムコンポーネントをスキルボットに追加する
(7)スキルボットをテストしてデプロイする
上記のステップの各々が、以下で簡単に説明される。
【0044】
(1)新しいスキルボットの設定を構成する - スキルボットに関して、さまざまな設定が構成されてよい。例えば、スキルボット設計者は、作成されているスキルボットの1つまたは複数の呼び出し名を指定することができる。その後、これらの呼び出し名は、スキルボットを明示的に呼び出すために、デジタルアシスタントのユーザによって使用され得る。例えばユーザは、ユーザの発話で呼び出し名を入力し、対応するスキルボットを明示的に呼び出すことができる。
【0045】
(2)スキルボットの1つまたは複数の意図および関連する例示的な発話を構成する - スキルボット設計者は、作成されているスキルボットの1つまたは複数の意図(ボットの意図とも呼ばれる)を指定する。その後、スキルボットは、これらの指定された意図に基づいてトレーニングされる。これらの意図は、スキルボットが入力発話に関して推論するようにトレーニングされるカテゴリまたはクラスを表す。発話の受信時に、トレーニングされたスキルボットは、発話の意図を推論し、推論される意図は、スキルボットをトレーニングするために使用された意図の事前に定義されたセットから選択される。次に、スキルボットは、発話に応答して、その発話に関して推論された意図に基づいて適切な行動を起こす。一部の例では、スキルボットの意図は、デジタルアシスタントのユーザのためにスキルボットが実行できる作業を表す。各意図には、意図識別子または意図名が与えられる。例えば、銀行に関してトレーニングされたスキルボットの場合、このスキルボットに対して指定された意図は、「残高確認」、「送金」、「預金確認」などを含んでよい。
【0046】
スキルボットに対して定義された意図ごとに、スキルボット設計者は、意図を表し、例示する1つまたは複数の例示的な発話を提供してもよい。これらの例示的な発話は、ユーザがその意図のためにスキルボットに入力することがある発話を表すよう意図されている。例えば、残高確認の意図の場合、例示的な発話は、「私の普通預金口座の残高はいくらですか?」、「私の当座預金口座には、いくら入っていますか?」、「私の口座には、お金がいくらありますか?」などを含んでよい。したがって、標準的ユーザの発話のさまざまな並べ替えが、意図に関する例示的な発話として指定されてよい。
【0047】
意図およびそれらに関連する例示的な発話が、スキルボットをトレーニングするためのトレーニングデータとして使用される。さまざまな異なるトレーニング技術が使用されてよい。このトレーニングの結果として、発話を入力として受け取り、予測モデルによって発話に関して推論された意図を出力するように構成された、予測モデルが生成される。一部の例では、入力発話が意図分析エンジンに提供され、意図分析エンジンは、トレーニングされたモデルを使用して入力発話の意図を予測または推論するように構成される。次に、スキルボットは、推論された意図に基づいて1つまたは複数の行動を起こしてよい。
【0048】
(3)スキルボットの1つまたは複数の意図に関して実体を構成する - 一部の例では、スキルボットがユーザの発話に適切に応答することを可能にするために、追加の文脈が必要とされることがある。例えば、ユーザ入力発話が、スキルボットにおける同じ意図に解決されるという状況が存在することがある。例えば、上記の例では、「私の普通預金口座の残高はいくらですか?」および「私の当座預金口座には、いくら入っていますか?」という発話は、両方とも同じ残高確認の意図に解決されるが、これらの発話は、異なることを依頼している異なる要求である。そのような要求を明確にするために、1つまたは複数の実体が意図に追加される。銀行取引のスキルボットの例を使用すると、「当座預金」および「普通預金」と呼ばれる値を定義する口座タイプと呼ばれる実体は、スキルボットがユーザ要求を構文解析し、適切に応答することを可能にしてよい。上記の例では、発話が同じ意図に解決されるが、口座タイプの実体に関連付けられた値は、2つの発話で異なっている。これによって、2つの発話が同じ意図に解決されるにもかかわらず、スキルボットが2つの発話に対して、異なる可能性がある行動を実行することを可能にする。スキルボット用に構成されたある意図に対して、1つまたは複数の実体が指定され得る。したがって実体は、文脈を意図自体に追加するために使用される。実体は、意図をより完全に表すのに役立ち、スキルボットがユーザ要求を完了することを可能にする。
【0049】
ある実施形態では、(a)DABP102によって提供された組み込みの実体、および(2)スキルボット設計者によって指定され得るカスタムの実体という、2種類の実体が存在する。組み込みの実体は、多種多様なボットで使用され得る一般的な実体である。組み込みの実体の例としては、時間、日付、住所、数、電子メールアドレス、持続時間、繰り返し起きる期間、通貨、電話番号、URLなどに関連する実体が挙げられるが、これらに限定されない。カスタムの実体は、よりカスタマイズされたアプリケーションに使用される。例えば、銀行取引のスキルの場合、スキルボット設計者によって、当座預金、普通預金、およびクレジットカードなどのようなキーワードについてユーザ入力をチェックすることによってさまざまな銀行取引を可能にする、口座タイプの実体が定義されてよい。
【0050】
(4)スキルボットをトレーニングする - スキルボットは、ユーザ入力を発話の形態で受信し、受信された入力を構文解析するか、または他の方法で処理し、受信されたユーザ入力に関連する意図を識別または選択するように構成される。上で示されたように、スキルボットは、このためにトレーニングされる必要がある。ある実施形態では、スキルボットは、スキルボットがユーザ入力発話を構成された意図のうちの1つに解決することができるように、スキルボット用に構成された意図および意図に関連付けられた例示的な発話(集合的に、トレーニングデータ)に基づいてトレーニングされる。ある実施形態では、スキルボットは予測モデルを使用し、予測モデルは、トレーニングデータを使用してトレーニングされ、ユーザが何を言っているか(または場合によっては、何を言おうとしているか)を、スキルボットが識別できるようにする。DABP102は、さまざまな機械学習に基づくトレーニング技術、ルールに基づくトレーニング技術、および/またはこれらの組み合わせを含む、スキルボットをトレーニングするためにスキルボット設計者によって使用され得るさまざまな異なるトレーニング技術を提供する。ある実施形態では、トレーニングデータの一部(例えば、80%)が、スキルボットモデルをトレーニングするために使用され、別の部分(例えば、残りの20%)が、このモデルをテストまたは検証するために使用される。トレーニングされた後に、トレーニングされたモデル(トレーニングされたスキルボットと呼ばれることもある)は、ユーザの発話を処理して応答するために使用され得る。ある事例では、ユーザの発話は、単一の回答のみを必要とし、さらなる会話を必要としない、質問であってよい。そのような状況を処理するために、スキルボットに対してQ&A(質問と回答)の意図が定義されてよい。これによって、対話定義を更新する必要なしに、スキルボットがユーザ要求に対する回答を出力できるようにする。Q&Aの意図は、標準的な意図と同様の方法で作成される。Q&Aの意図の対話フローは、標準的な意図の対話フローと異なることができる。
【0051】
(5)スキルボットの対話フローを作成する - スキルボットに対して指定された対話フローは、受信されたユーザ入力に応答してスキルボットの異なる意図が解決されたときに、スキルボットがどのように反応するかを表す。対話フローは、スキルボットが起こす動作または行動、例えば、スキルボットがユーザの発話にどのように応答するか、スキルボットがユーザに対してどのように入力を促すか、スキルボットがどのようにデータを返すかを定義する。対話フローは、スキルボットが従うフローチャートのようなものである。スキルボット設計者は、マークダウン言語などの言語を使用して対話フローを指定する。ある実施形態では、OBotMLと呼ばれるYAMLの1つのバージョンが、スキルボットの対話フローを指定するために使用されてよい。スキルボットの対話フロー定義は、会話自体のモデル、すなわち、スキルボット設計者に、スキルボットとスキルボットがサービスを提供するユーザとの間のやりとりを演出させるモデルとして機能する。
【0052】
ある実施形態では、スキルボットの対話フロー定義は、次の3つのセクションを含む。
(a)文脈セクション
(b)デフォルト遷移セクション
(c)状態セクション
文脈セクション - 文脈セクションでは、スキルボット設計者は、会話フローにおいて使用される変数を定義することができる。文脈セクションにおいて指定され得る他の変数は、エラー処理のための変数、組み込みまたはカスタムの実体のための変数、スキルボットがユーザの嗜好を認識して保持できるようにするユーザ変数などを含むが、これらに限定されない。
【0053】
デフォルト遷移セクション - 対話フロー状態セクションにおいて、またはデフォルト遷移セクションにおいて、スキルボットの遷移が定義され得る。デフォルト遷移セクションにおいて定義された遷移は、フォールバックとして機能し、状態内で定義された適用可能な遷移がないか、または状態遷移を引き起こすために必要とされる条件が満たされ得ない場合に引き起こされる。デフォルト遷移セクションは、スキルボットが予期しないユーザの行動を適切に処理できるようにするルーティングを定義するために使用され得る。
【0054】
状態セクション - 対話フローおよびそれに関連する動作が、対話フロー内の論理を管理する一連の一時的な状態として定義される。対話フロー定義内の各状態ノードは、対話内のその時点で必要とされる機能を提供するコンポーネントを指定する。したがって、状態はコンポーネントを中心にして構築される。状態は、コンポーネントに固有の特性を含み、コンポーネントの実行後に引き起こされる他の状態への遷移を定義する。
【0055】
状態セクションを使用して、特殊な事例のシナリオが処理されてよい。例えば、デジタルアシスタント内の第2のスキルで何かを行うために、ユーザが関わり合っている第1のスキルから一時的に離れるための選択肢をユーザに提供したいときがあることがある。例えば、ユーザが買い物のスキルを使用して会話に関与している場合(例えば、ユーザが購入のために何かを選択した場合)、ユーザは、銀行取引のスキルにジャンプし(例えば、ユーザは、購入のための十分な金銭を持っていることを確認したいことがある)、その後、買い物のスキルに戻ってユーザの注文を完了したいことがある。これに対処するために、第1のスキルにおける行動は、同じデジタルアシスタント内の第2の異なるスキルとのやりとりを開始し、その後、元のフローに戻るように構成され得る。
【0056】
(6)カスタムコンポーネントをスキルボットに追加する - 前述したように、スキルボットの対話フローにおいて指定された状態は、状態に対応する必要とされる機能を提供するコンポーネントを指定する。コンポーネントは、スキルボットが機能を実行することを可能にする。ある実施形態では、DABP102は、広範囲の機能を実行するために事前に構成されたコンポーネントのセットを提供する。スキルボット設計者は、これらの事前に構成されたコンポーネントのうちの1つまたは複数を選択し、それらをスキルボットの対話フロー内の状態に関連付けることができる。スキルボット設計者は、DABP102によって提供されたツールを使用してカスタムのコンポーネントまたは新しいコンポーネントを作成し、カスタムのコンポーネントをスキルボットの対話フロー内の1つまたは複数の状態に関連付けることもできる。
【0057】
(7)スキルボットをテストしてデプロイする - DABP102は、スキルボット設計者が開発されているスキルボットをテストすることを可能にする複数の機能を提供する。その後、スキルボットは、デジタルアシスタントにデプロイされて含められ得る。
【0058】
上記の説明は、スキルボットの作成方法を説明しているが、同様の技術が、デジタルアシスタント(またはマスターボット)を作成するために使用されてもよい。マスターボットまたはデジタルアシスタントのレベルで、組み込みのシステム意図が、デジタルアシスタント用に構成されてよい。これらの組み込みのシステム意図は、デジタルアシスタントに関連付けられたスキルボットを呼び出さずに、デジタルアシスタント自体(すなわち、マスターボット)が処理することができる一般的な作業を識別するために使用される。マスターボットに対して定義されるシステム意図の例は、次を含む。(1)終了:ユーザが、デジタルアシスタントにおける現在の会話または文脈を終了したいという要求を示したときに適用される、(2)支援:ユーザが、支援または指導を要求したときに適用される、および(3)未解決の意図:終了および支援の意図に十分に一致しないユーザ入力に適用される。デジタルアシスタントは、デジタルアシスタントに関連付けられた1つまたは複数のスキルボットに関する情報も格納する。この情報は、マスターボットが発話を処理するために特定のスキルボットを選択できるようにする。
【0059】
マスターボットまたはデジタルアシスタントのレベルで、ユーザが、語句または発話をデジタルアシスタントに入力するときに、デジタルアシスタントは、発話および関連する会話をルーティングする方法を決定するための処理を実行するように構成される。デジタルアシスタントは、ルールに基づくか、AIに基づくか、またはこれらの組み合わせであることができるルーティングモデルのこの使用を決定する。デジタルアシスタントは、ルーティングモデルを使用して、ユーザ入力発話に対応する会話が、処理のために特定のスキルにルーティングされるのか、組み込みのシステム意図に従ってデジタルアシスタントもしくはマスターボット自体によって処理されるのか、または現在の会話フロー内の異なる状態として処理されるのかを判定する。
【0060】
ある実施形態では、この処理の一部として、デジタルアシスタントは、ユーザ入力発話がその呼び出し名を使用してスキルボットを明示的に識別するかどうかを判定する。呼び出し名がユーザ入力に存在する場合、呼び出し名は、呼び出し名に対応するスキルボットの明示的呼び出しとして扱われる。そのようなシナリオでは、デジタルアシスタントは、ユーザ入力を、さらに処理するために、明示的に呼び出されたスキルボットにルーティングしてよい。特定の呼び出しも明示的呼び出しも存在しない場合、ある実施形態では、デジタルアシスタントは、受信されたユーザ入力発話を評価し、システム意図、およびデジタルアシスタントに関連付けられたスキルボットに関する信頼性スコアを計算する。スキルボットまたはシステム意図に関して計算されたスコアは、ユーザ入力が、スキルボットが実行するように構成された作業を表している可能性、またはシステム意図を表している可能性の程度を表す。しきい値(例えば、信頼性しきい値ルーティングパラメータ)を超える関連する計算された信頼性スコアを有するすべてのシステム意図またはスキルボットが、さらなる評価のための候補として選択される。次に、デジタルアシスタントは、ユーザ入力発話のさらなる処理のために、識別された候補から特定のシステム意図またはスキルボットを選択する。ある実施形態では、1つまたは複数のスキルボットが候補として識別された後に、(スキルごとの意図モデルに従って)それらの候補スキルに関連付けられた意図が評価され、意図ごとに信頼性スコアが決定される。概して、しきい値(例えば、70%)を超える信頼性スコアを有するすべての意図が、候補意図として扱われる。特定のスキルボットが選択された場合、ユーザの発話が、さらに処理するためにそのスキルボットにルーティングされる。システム意図が選択された場合、選択されたシステム意図に従ってマスターボット自体によって1つまたは複数の行動が実行される。
【0061】
図2は、ある実施形態に従って、マスターボット(MB:master bot)システム200の簡略化されたブロック図である。MBシステム200は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアの組み合わせで、実装され得る。MBシステム200は、前処理サブシステム210、複数意図サブシステム(MIS:multiple intent subsystem)220、明示的呼び出しサブシステム(EIS:explicit invocation subsystem)230、スキルボット呼び出し元240、およびデータストア250を含んでいる。
図2に示されたMBシステム200は、マスターボット内のコンポーネントの配置の例にすぎない。当業者は、多くの可能性のある変形、代替手段、および変更を認識するであろう。例えば、一部の実装では、MBシステム200は、
図2に示されたシステムまたはコンポーネントより多いか、または少ないシステムまたはコンポーネントを含んでよく、2つ以上のサブシステムを組み合わせてよく、またはサブシステムの異なる構成もしくは配置を含んでよい。
【0062】
前処理サブシステム210は、ユーザから発話「A」202を受信し、言語検出器212および言語パーサー214によって発話を処理する。上で示されたように、音声またはテキストを含むさまざまな方法で、発話が提供され得る。発話202は、文の断片、完全な文、複数の文などであることができる。発話202は、句読点を含むことができる。例えば、発話202が音声として提供される場合、前処理サブシステム210は、句読点(例えば、コンマ、セミコロン、ピリオドなど)を結果として生じるテキストに挿入する発声テキスト化コンバータ(図示されていない)を使用して音声をテキストに変換してよい。
【0063】
言語検出器212は、発話202のテキストに基づいて発話202の言語を検出する。発話202が処理される方法は、各言語が独自の文法および意味を有するため、言語に依存する。発話の構文および構造を分析するときに、言語間の違いが考慮される。
【0064】
言語パーサー214は、発話202を構文解析して、発話202において個別の言語単位(例えば、単語)の品詞(POS:part of speech)タグを抽出する。POSタグは、例えば、名詞(NN:noun)、代名詞(PN:pronoun)、動詞(VB:verb)などを含む。言語パーサー214は、発話202の言語単位を(例えば、各単語を別々のトークンに変換するために)トークン化し、単語を見出語化してもよい。見出語は、辞書において表されるような単語のセットの主要な形態である(例えば、「run」は、run、runs、ran、runningなどの見出語である)。言語パーサー214が実行できる他の種類の前処理は、複合表現のチャンキング、例えば、「クレジット」および「カード」を単一の表現「クレジットカード」に結合することを含む。言語パーサー214は、発話202における単語間の関係を識別してもよい。例えば、一部の実施形態では、言語パーサー214は、発話のどの部分(例えば、特定の名詞)が直接目的語であるか、発話のどの部分が前置詞であるか、などを示す依存関係ツリーを生成する。言語パーサー214によって実行された処理の結果は、抽出された情報205を形成し、発話202自体と共にMIS220に入力として提供される。
【0065】
上で示されたように、発話202は、2つ以上の文を含むことができる。複数の意図および明示的呼び出しを検出する目的で、発話202は、複数の文を含んでいる場合でも、単一ユニットとして扱われ得る。しかし、ある実施形態では、前処理は、例えば前処理サブシステム210によって、複数の意図の分析および明示的呼び出しの分析のために、複数の文のうちの単一の文を識別するために実行され得る。概して、MIS220およびEIS230によって生成された結果は、発話202が個別の文のレベルで処理されるか、または複数の文を含んでいる単一ユニットとして処理されるかにかかわらず、実質的に同じである。
【0066】
MIS220は、発声202が複数の意図を表すかどうかを判定する。MIS220は、発話202において複数の意図の存在を検出することができるが、MIS220によって実行される処理は、発話202の意図が、ボットに対して構成されているいずれかの意図に一致するかどうかを判定することを含まない。代わりに、MBシステム200の意図分類器242によって、または(例えば、
図3の実施形態に示されているような)スキルボットの意図分類器によって、発話202の意図がボットの意図に一致するかどうかを判定するための処理が実行され得る。MIS220によって実行される処理は、発話202を処理することができるボット(例えば、特定のスキルボットまたはマスターボット自体)が存在するということを仮定する。したがって、MIS220によって実行される処理は、どのボットがチャットボットシステムに存在するかの知識(例えば、マスターボットに登録されたスキルボットの識別情報)も、特定のボットに対してどの意図が構成されているかの知識も必要としない。
【0067】
発話202が複数の意図を含んでいるということを決定するために、MIS220は、データストア250内のルールのセット252からの1つまたは複数のルールを適用する。発話202に適用されるルールは、発話202の言語に依存し、複数の意図の存在を示す文のパターンを含んでよい。例えば、文のパターンは、文の2つの部分を結合する等位接続詞(例えば、接合詞)を含んでよく、両方の部分が別々の意図に対応する。発話202が文のパターンに一致する場合、発話202が複数の意図を表しているということが推論され得る。複数の意図を含む発話が、必ずしも異なる意図(例えば、異なるボットを対象にする意図または同じボット内の異なる意図)を含まないということに注意するべきである。代わりに、発話は、例えば、「支払い口座Xを使用してピザを注文し、次に、支払い口座Yを使用してピザを注文する」のように、同じ意図の別々のインスタンスを含むことができる。
【0068】
発話202が複数の意図を表しているということの決定の一部として、MIS220は、発話202のどの部分が各意図に関連付けられているかも決定する。MIS220は、複数の意図を含んでいる発話において表され意図ごとに、元の発話の代わりに、別々の処理のための新しい発話、例えば、
図2に示されているような発話「B」206および発話「C」208を構築する。したがって、元の発話202は、1つずつ処理される2つ以上の分離した発話に分割され得る。MIS220は、抽出された情報205を使用して、および/または発話202自体の分析から、2つ以上の発話のうちのどれが最初に処理されるべきかを決定する。例えば、MIS220は、発話202が、特定の意図が最初に処理されるべきであることを示す標識語を含んでいるということを、決定してよい。この特定の意図に対応する新たに形成された発話(例えば、発話206または発話208のうちの1つ)が、EIS230によってさらに処理するために最初に送信される。第1の発話によって引き起こされ会話が終了した(または、一時的に停止された)後に、次に最も高い優先度の発話(例えば、発話206または発話208のうちの他の1つ)が、処理のためにEIS230に送信され得る。
【0069】
EIS230は、EIS230が受信する発話(例えば、発話206または発話208)がスキルボットの呼び出し名を含んでいるかどうかを判定する。ある実施形態では、チャットボットシステム内の各スキルボットには、スキルボットをチャットボットシステム内の他のスキルボットと区別する一意の呼び出し名が割り当てられる。呼び出し名のリストは、データストア250内のスキルボット情報254の一部として維持され得る。発話は、発話が呼び出し名との単語の一致を含んでいる場合、明示的呼び出しであると見なされる。ボットが明示的に呼び出されない場合、EIS230によって受信された発話は、非明示的に呼び出す発話234と見なされ、発話を処理するためにどのボットを使用するべきかを決定するために、マスターボットの意図分類器(例えば、意図分類器242)に入力される。一部の例では、意図分類器242は、マスターボットが非明示的に呼び出す発話を処理するべきであるということを決定する。他の例では、意図分類器242は、処理するための発話のルーティング先のスキルボットを決定する。
【0070】
EIS230によって提供される明示的呼び出し機能には、複数の利点がある。この機能は、マスターボットが実行する必要がある処理の量を減らすことができる。例えば、明示的呼び出しが存在する場合、マスターボットは、(例えば、意図分類器242を使用する)どの意図分類の分析も実行する必要がなくてよく、またはスキルボットを選択するために減らされた意図分類の分析を実行する必要があってよい。したがって、明示的呼び出しの分析は、意図分類の分析を用いることなく特定のスキルボットの選択を可能にしてよい。
【0071】
また、複数のスキルボット間に機能の重複がある状況が存在することがある。これは、例えば、2つのスキルボットによって処理される意図が重複するか、または互いに非常に近い場合に発生することがある。そのような状況では、マスターボットが、意図分類の分析だけに基づいて、複数のスキルボットのうちのどのスキルボットを選択するべきかを識別するのが、困難であることがある。そのようなシナリオでは、明示的呼び出しは、使用されるべき特定のスキルボットの曖昧さをなくす。
【0072】
発話が明示的呼び出しであることの決定に加えて、EIS230は、発話のいずれかの部分が、明示的に呼び出されているスキルボットへの入力として使用されるべきかどうかを判定する役割を担う。特に、EIS230は、発話の一部が呼び出しに関連付けられていないかどうかを判定することができる。EIS230は、発話の分析および/または抽出された情報205の分析によって、この決定を実行することができる。EIS230は、EIS230によって受信された発話全体を送信する代わりに、呼び出しに関連付けられていない発話の部分を、呼び出されたスキルボットに送信することができる。一部の例では、呼び出されたスキルボットへの入力は、単に呼び出しに関連付けられた発話のいずれかの部分を除去することによって形成される。例えば、「私はピザボットを使用してピザを注文したいです」は、「ピザボットを使用して」がピザボットの呼び出しに関連しているが、ピザボットによって実行されるいずれかの処理とは無関係であるため、「私はピザを注文したいです」に短縮され得る。一部の例では、EIS230は、呼び出されたボットに送信される部分を、例えば完全な文を形成するように、再フォーマットしてよい。したがって、EIS230は、明示的呼び出しが存在するということを決定するだけでなく、明示的呼び出しが存在する場合に、何をスキルボットに送信するべきかも決定する。一部の例では、呼び出されているボットに入力するためのテキストが何も存在しないことがある。例えば、発話が「ピザボット」だった場合、EIS230は、ピザボットが呼び出されていることを決定することができるが、ピザボットによって処理されるべきテキストが存在しない。そのようなシナリオでは、EIS230は、送信するものが何もないないことをスキルボット呼び出し元240に示してよい。
【0073】
スキルボット呼び出し元240は、さまざまな方法でスキルボットを呼び出す。例えば、スキルボット呼び出し元240は、明示的呼び出しの結果として、特定のスキルボットが選択されたことの指示235を受信することに応答して、ボットを呼び出すことができる。指示235は、明示的に呼び出されたスキルボットの入力と共に、EIS230によって送信され得る。このシナリオでは、スキルボット呼び出し元240は、会話の制御を明示的に呼び出されたスキルボットに引き渡す。明示的に呼び出されたスキルボットは、入力を独立した発話として扱うことによって、EIS230からの入力への適切な応答を決定する。例えば、この応答は、特定の行動を実行すること、または特定の状態で新しい会話を開始することであることができ、新しい会話の初期状態は、EIS230から送信された入力に依存する。
【0074】
スキルボット呼び出し元240がスキルボットを呼び出すことができる別の方法は、意図分類器242を使用する暗黙的呼び出しによる方法である。意図分類器242は、特定のスキルボットが実行するように構成された作業を発話が表している可能性を決定するように、機械学習技術および/またはルールに基づくトレーニング技術を使用してトレーニングされ得る。意図分類器242は、スキルボットごとに1つのクラスである、さまざまなクラスに対してトレーニングされる。例えば、新しいスキルボットがマスターボットに登録されるたびに、新しいスキルボットが実行できる作業を特定の発話が表している可能性を決定するように意図分類器242をトレーニングするために、新しいスキルボットに関連付けられた例示的な発話のリストが使用され得る。このトレーニングの結果といて生成されたパラメータ(例えば、機械学習モデルのパラメータの値のセット)が、スキルボット情報254の一部として格納され得る。
【0075】
ある実施形態では、意図分類器242は、本明細書においてさらに詳細に説明されるように、機械学習モデルを使用して実装される。機械学習モデルのトレーニングは、さまざまなスキルボットに関連付けられた例示的な発話からの発話の少なくともサブセットを入力し、機械学習モデルの出力として、どのボットが、いずれかの特定のトレーニング発話を処理するための正しいボットであるかに関して、推論を生成することを含んでよい。トレーニング発話ごとに、トレーニング発話に使用するための正しいボットの指示が、グランドトゥルース情報として提供されてよい。次に、機械学習モデルの挙動が、生成された推論とグランドトゥルース情報の間の違いを最小限に抑えるように(例えば、逆伝搬によって)適応され得る。
【0076】
ある実施形態では、意図分類器242は、マスターボットに登録されたスキルボットごとに、スキルボットが発話(例えば、EIS230から受信された非明示的に呼び出す発話234)を処理できる可能性を示す信頼性スコアを決定する。意図分類器242は、構成されているシステムレベルの意図(例えば、支援、終了)ごとに信頼性スコアを決定してもよい。特定の信頼性スコアが1つまたは複数の条件を満たす場合、スキルボット呼び出し元240は、この特定の信頼性スコアに関連付けられたボットを呼び出す。例えば、しきい値信頼性スコア値が満たされる必要があってよい。したがって、意図分類器242の出力245は、システム意図の識別情報または特定のスキルボットの識別情報のいずれかである。一部の実施形態では、しきい値信頼性スコア値を満たすことに加えて、信頼性スコアは、あるウィンマージンだけ、次に最も高い信頼性スコアを超えなければならない。そのような条件を課すことによって、複数のスキルボットの各信頼性スコアがしきい値信頼性スコア値を超える場合に、特定のスキルボットへのルーティングを可能にする。
【0077】
信頼性スコアの評価に基づいてボットを識別した後に、スキルボット呼び出し元240は、処理を識別されたボットに引き渡す。システム意図の場合、識別されたボットはマスターボットである。そうでない場合、識別されたボットはスキルボットである。さらに、スキルボット呼び出し元240は、何を入力247として識別されたボットに提供するかを決定する。上で示されたように、明示的呼び出しの場合、入力247は、呼び出しに関連付けられていない発話の部分に基づくことができ、または入力247は、何もない(例えば、空の文字列である)ことが可能である。暗黙的呼び出しの場合、入力247は、発話全体であることができる。
【0078】
データストア250は、マスターボットシステム200のさまざまなサブシステムによって使用されるデータを格納する1つまたは複数のコンピューティングデバイスを備える。上で説明されたように、データストア250は、ルール252およびスキルボット情報254を含む。ルール252は、例えば、MIS220によって、発話が複数の意図をいつ表すか、および複数の意図を表す発話をどのように分割するかを決定するためのルールを含む。ルール252は、EIS230によって、スキルボットを明示的に呼び出す発話のどの部分をスキルボットに送信するかを決定するためのルールをさらに含む。スキルボット情報254は、チャットボットシステム内のスキルボットの呼び出し名、例えば、特定のマスターボットに登録されたすべてのスキルボットの呼び出し名のリストを含む。スキルボット情報254は、チャットボットシステム内のスキルボットごとに信頼性スコアを決定するために意図分類器242によって使用される情報、例えば、機械学習モデルのパラメータを含むこともできる。
【0079】
図3は、ある実施形態に従って、スキルボットシステム300の簡略化されたブロック図である。スキルボットシステム300は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアの組み合わせで実装され得るコンピューティングシステムである。
図1に示された実施形態などの、ある実施形態では、スキルボットシステム300は、デジタルアシスタント内の1つまたは複数のスキルボットを実装するために使用され得る。
【0080】
スキルボットシステム300は、MIS310、意図分類器320、および会話マネージャ330を含む。MIS310は、
図2のMIS220に類似しており、データストア350内のルール352を使用して、(1)発話が複数の意図を表すかどうか、および複数の意図を表す場合、(2)発話を、複数の意図の各々に、別々の発話にどのように分割するかを決定するよう動作可能であることを含む、同様の機能を提供する。ある実施形態では、複数の意図を検出するため、および発話を分割するためにMIS310によって適用されるルールは、MIS220によって適用されるルールと同じである。MIS310は、発話302および抽出された情報304を受信する。抽出された情報304は、
図1の抽出された情報205に類似しており、言語パーサー214またはスキルボットシステム300のローカルな言語パーサーを使用して生成され得る。
【0081】
意図分類器320は、
図2の実施形態に関連して上で説明され、本明細書においてさらに詳細に説明されるように、意図分類器242に類似する方法でトレーニングされ得る。例えば、ある実施形態では、意図分類器320は、機械学習モデルを使用して実装される。意図分類器320の機械学習モデルは、特定のスキルボットに関して、その特定のスキルボットに関連付けられた例示的な発話の少なくともサブセットをトレーニング発話として使用してトレーニングされる。トレーニング発話ごとのグランドトゥルースは、トレーニング発話に関連付けられた特定のボットの意図である。
【0082】
発話302は、ユーザから直接受信されるか、またはマスターボットを介して供給され得る。例えば、
図2に示された実施形態でのMIS220およびEIS230による処理の結果として、発話302がマスターボットを介して供給される場合、MIS220によってすでに実行された処理を繰り返すのを防ぐために、MIS310が回避され得る。しかし、例えばスキルボットへのルーティング後に発生する会話中に、発話302がユーザから直接受信される場合、MIS310は、発話302を処理し、発話302が複数の意図を表すかどうかを判定することができる。発話302が複数の意図を表す場合、MIS310は、1つまたは複数のルールを適用して、発話302を意図ごとの別々の発話、例えば、発話「D」306および発話「E」308に分割する。発話302が複数の意図を表さない場合、MIS310は、発話302を意図分類のために意図分類器320に転送し、発話302を分割しない。
【0083】
意図分類器320は、受信された発話(例えば、発話306または308)をスキルボットシステム300に関連付けられた意図と照合するように構成される。上で説明されたように、スキルボットは、1つまたは複数の意図を使用して構成されることが可能であり、各意図は、意図に関連付けられた、分類器をトレーニングするために使用される、少なくとも1つの例示的な発話を含む。
図2の実施形態では、マスターボットシステム200の意図分類器242は、個別のスキルボットの信頼性スコアおよびシステム意図の信頼性スコアを決定するようにトレーニングされる。同様に、意図分類器320は、スキルボットシステム300に関連付けられた意図ごとに信頼性スコアを決定するようにトレーニングされ得る。意図分類器242によって実行される分類がボットのレベルであるのに対して、意図分類器320によって実行される分類は、意図のレベルであり、したがって、よりきめ細かい。意図分類器320は、意図情報354にアクセスすることができる。意図情報354は、スキルボットシステム300に関連付けられた意図ごとに、意図の意味を表して示し、通常はその意図によって実行できる作業に関連付けられた、発話のリストを含む。意図情報354は、発話のこのリストに対するトレーニングの結果として生成されたパラメータをさらに含むことができる。
【0084】
会話マネージャ330は、意図分類器320の出力として、意図分類器320に入力された発話に最も良く一致するとして意図分類器320によって識別された、特定の意図の指示322を受信する。一部の例では、意図分類器320は、どの一致も決定することができない。例えば、意図分類器320によって計算された信頼性スコアは、発話がシステム意図または異なるスキルボットの意図を対象にする場合に、しきい値信頼性スコア値を下回ることがある。これが発生する場合、スキルボットシステム300は、発話を、処理するために、例えば、異なるスキルボットにルーティングするために、マスターボットに委ねてよい。しかし、意図分類器320がスキルボット内の意図を識別することに成功した場合、会話マネージャ330が、ユーザとの会話を開始する。
【0085】
会話マネージャ330によって開始された会話は、意図分類器320によって識別された意図に固有の会話である。例えば、会話マネージャ330は、識別された意図の対話フローを実行するように構成された状態機械を使用して実装されてよい。状態機械は、(例えば、意図が任意の追加の入力なしで呼び出されたときのための)デフォルトの開始状態および1つまたは複数の追加の状態を含むことができ、各状態は、スキルボットによって実行される行動(例えば、購入取引の実行)および/またはユーザに提示される対話(例えば、質問、応答)を、状態に関連付けている。したがって、会話マネージャ330は、意図を識別する指示322の受信時に、行動/対話335を決定することができ、会話中に受信されたその後の発話に応答して、追加の行動または対話を決定することができる。
【0086】
データストア350は、スキルボットシステム300のさまざまなサブシステムによって使用されるデータを格納する1つまたは複数のコンピューティングデバイスを備える。
図3に示されているように、データストア350は、ルール352および意図情報354を含む。ある実施形態では、データストア350は、マスターボットまたはデジタルアシスタントのデータストア、例えば、
図2のデータストア250に統合され得る。
【0087】
例示的なデータ処理システム
図4は、さまざまな実施形態に従って、テキスト埋め込み生成のためのデータ処理システムを実装するコンピューティングシステムの簡略化されたブロック図である。
図4に示された配置は、本明細書に記載された方法のすべてまたは一部を実行するために利用され得るデータ処理システムの例示的な実施形態であるが、
図4に示されたシステムは、それらの方法を実行することができる唯一のシステムではない。
図4に示されたデータ処理システム400は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアの組み合わせで実装され得る。
【0088】
図4に示されているように、データ処理システム400は、チャットボットアプリケーション用の機械学習モデルをトレーニングしてデプロイするためのシステムであってよい。データ処理システム400は、テキストデータを受信し、チャットボットに基づく機械学習モデルをトレーニングするためのテキストの埋め込みを生成するために、さまざまなコンポーネントおよびサブシステムを含んでよい。例えば、データ処理システム400は、テキストに基づく文書からのデータを使用してトレーニングされ得るデプロイ可能なチャットボットモデルのリポジトリを含んでよい。データ処理システム400のサブシステムは、これらのテキスト文書からトレーニングデータを抽出するように最初にトレーニングされてよい。トレーニングの後に、データ処理システム400の異なるサブシステムが、トレーニングされた抽出モデルを使用して、テキストに基づく文書からトレーニングデータを抽出し、このトレーニングデータを、人間とやりとりするようにチャットボットをトレーニングするためにチャットボットに基づくサブシステムに送信してよい。
【0089】
図4に示されているように、データ処理システム400は、トレーニングサブシステム410、推論サブシステム420、およびチャットボットサブシステム430を含んでいる。トレーニングサブシステム410は、例えば、非構造化文書データからテキストの埋め込みを抽出するように深層学習モデルをトレーニングするためのトレーニングデータを受信するように構成された、データ処理システム400のサブシステムであってよい。例えば、トレーニングサブシステム410は、非構造化テキストデータおよびグランドトゥルースデータを受信するように構成されてよい。深層学習モデルは、非構造化テキストデータ内の文の分類ラベルなどの出力予測を生成し、出力予測をグランドトゥルースデータと比較するために利用されてよい。例えば、出力予測とグランドトゥルースデータの間の差に基づいて、目的関数に従ってモデル内のニューラルネットワークモデルパラメータを変更することによって、出力予測とグランドトゥルースデータの間の差が、機械学習モデルの構成を変更するために使用されてよい。
【0090】
深層学習モデルは、トレーニングサブシステム410でトレーニングが発生してからしばらくして、推論サブシステム420によって、非構造化テキストデータのセットに対して出力予測を生成するために利用されてよい。例えば、推論サブシステム420は、チャットボットを利用している顧客に提供されるサービスの一部として、非構造化テキストデータ内の文の出力予測分類ラベルを生成することに関与してよい。推論サブシステム420は、非構造化テキストデータ内の文の分類ラベルを生成し、チャットボットをトレーニングするためにチャットボットシステムによって利用される対応するトレーニングデータを生成してよい。例えば、顧客は、非構造化テキストデータを推論サブシステム420に送信し、顧客自身のチャットボットをトレーニングするために顧客が使用できるトレーニングデータの生成を引き起こしてよい。
【0091】
一部の実施形態では、推論サブシステム420によって出力されたトレーニングデータは、データ処理システム400のチャットボットサブシステム430によって、チャットボットをトレーニングするか、またはそうでなければ、結果として得られたトレーニングデータを格納するために利用されてよい。例えば、チャットボットサブシステム430は、推論サブシステム420によって生成されたトレーニングデータを受信し、このトレーニングデータを利用して、チャットボットサブシステム430に関連付けられた1つまたは複数のチャットボットをトレーニングしてよい。非構造化テキストデータから、チャットボットをトレーニングするためのこのトレーニングデータを生成するための深層学習モデルの使用は、コストがかかり、時間効率の悪い人間によるトレーニングデータの手動生成の必要性を取り除く。
【0092】
例示的な実施形態では、データ処理システム400のクライアントが、テキストの形態で人間から質問を受信し、予測された回答を人間に返信するように構成された質問回答(QA:question-and-answer)チャットボットを含んでいるサービスを利用する。このクライアントは、このサービスおよびQAチャットボットを、クライアント自体の顧客のためのクライアント自体のサービスの一部として利用してよい。このクライアントは、QAチャットボットをトレーニングするために、非構造化テキストデータ、例えば、よくある質問(FAQ)および対応する回答を含んでいるデジタルPDF文書を、データ処理システムに送信してよい。トレーニングサブシステム410によって、QAトレーニングデータを抽出するための深層学習モデルがすでにトレーニングされていてよい。トレーニングされた深層学習モデルは、非構造化テキストデータまたは非構造化テキストデータに対して前処理されたバージョンを受信し、それに含まれている文の予測ラベルを生成してよい。予測ラベルは、QAチャットボットをトレーニングするQAトレーニングデータを生成するために使用されてよく、クライアントFAQデータと共にチャットボットサブシステム430に格納されてよい。その結果、次にQAチャットボットがデプロイされるときに、QAチャットボットは、クライアントによって送信されたFAQ文書に含まれている質問と同様に質問に回答するように、より良く構成される。
【0093】
図4に戻り、データ処理システム400は、通信ポータル402を含んでよい。通信ポータル402は、外部のシステムから受信された通信およびデータを取り込み、本明細書に記載された実施形態を実行するように構成された、データ処理システム400のサブシステムであってよい。さまざまな実施形態では、通信ポータル402は、何らかの受信文書データ406に基づいて、さらに処理するためにデータ処理システム400のどのサブシステムにデータをルーティングするべきかを決定するように構成される。例えば、通信ポータル402は、受信文書データ406を処理する方法を決定するための命令のセットであることができるチャットボットルーティング命令404を含んでよい。文書データは、例えば、受信データがトレーニングサブシステム410において深層学習モデルをトレーニングするために使用されるトレーニングデータであるか、または推論サブシステム420においてチャットボット用のトレーニングデータのセットを生成するために使用される推論データであるかを示すメタデータを含んでよい。例えば、受信文書データ406を受信することに応答して、通信ポータル402は、受信文書データ406からメタデータを抽出してよい。抽出されたメタデータは、チャットボットルーティング命令によって、受信文書データ406が、トレーニングサブシステム410に送信されて、深層学習モデルをトレーニングするために使用されるトレーニングデータセットであるか、または推論サブシステム420に送信されて、深層学習モデルに入力され、チャットボットトレーニングデータの生成を引き起こす推論データセットであるかを判定するために処理されてよい。
【0094】
トレーニングサブシステム410は、深層学習モデルによって分類ラベルを抽出すること、ならびに抽出された分類ラベルおよびラベル付きグランドトゥルースデータを使用して深層学習モデルをトレーニングすることのために、別々のサブシステムを含んでよい。例えば、トレーニングサブシステム410は、抽出サブシステム412を、非構造化テキストデータからの分類ラベルの抽出が発生する第1の領域として含んでよい。深層学習モデルは、深層学習モデルのトレーニングプロセスの一部として、データを抽出し、予測された分類ラベルを生成するために使用されるため、この抽出領域の一部であってよい。分類ラベルは、ラベル付きグランドトゥルースデータを使用して目的関数を生成するために、再トレーニングサブシステム414のコンポーネントに送信されてよい。次に、抽出領域内で深層学習モデルを再トレーニングするために、目的関数が利用されてよい。深層学習モデルおよび領域のトレーニングプロセスは、
図5を参照して下でさらに説明される。
【0095】
推論サブシステム420は、深層学習モデルによって分類ラベルを抽出すること、ならびに抽出された分類ラベルを使用してチャットボットモデル用のトレーニングデータを生成することのために、別々のサブシステムを含んでよい。例えば、推論サブシステム420は、抽出サブシステム422を、非構造化テキストデータからの分類ラベルの抽出が発生する第1の領域として含んでよい。推論サブシステム420の抽出サブシステム422は、トレーニングサブシステム410の抽出サブシステム412に類似していてよい。例えば、抽出サブシステム412および抽出サブシステム422は、両方とも、深層学習モデルが非構造化テキストデータからデータを抽出し、非構造化テキストデータのテキストグループの分類ラベルを生成する領域であるが、それらの分類ラベルは、モデルを再トレーニングするか、またはチャットボットトレーニングデータを生成するためにそれぞれ使用される。推論サブシステム420では、分類ラベルをさらに処理するために、分類ラベルがデータ生成サブシステム424のコンポーネントに送信されてよい。例えば、データ生成サブシステムは、分類ラベルを利用して、1つまたは複数のチャットボットモデル用のトレーニングデータを生成してよい。深層学習モデルおよび領域の推論およびデータ生成プロセスは、下でさらに詳細に説明される。
【0096】
チャットボットサブシステム430は、チャットボットに関連する処理機能または格納機能を実行するように構成された、データ処理システム400のサブシステムであってよい。例えば、チャットボットサブシステム430は、サービスまたはクライアントによって使用するためにトレーニングされてデプロイされ得るチャットボットモデルのリポジトリであることができるチャットボットリポジトリ432を含んでよい。チャットボットトレーニングサブシステム434は、トレーニングデータを利用してチャットボットの機械学習モデルをトレーニングするように構成された、チャットボットサブシステム430のサブシステムであってよい。例えば、チャットボットトレーニングサブシステム434は、推論サブシステム420によって生成されたトレーニングデータを受信し、チャットボットリポジトリ432に格納されたチャットボットモデルのトレーニングを引き起こしてよい。トレーニングデータリポジトリ436は、後でチャットボットモデルをトレーニングするために推論サブシステム420によって生成されたトレーニングデータを格納するためのリポジトリであってよい。例えば、特定のクライアントのために生成された新しいチャットボットごとにトレーニングデータが再生成される必要がないように、チャットボットを利用しているクライアントに関連付けられたトレーニングデータセットがトレーニングデータリポジトリに格納されてよい。抽出モデルリポジトリは、抽出サブシステム412または抽出サブシステム422などの抽出サブシステムおよび抽出プロセスの一部として利用される、深層学習モデルのリポジトリであってよい。チャットボットサブシステム430は、本明細書に記載された実施形態を容易にするために、トレーニングサブシステム410および推論サブシステム420に通信可能に結合されてよい。
【0097】
例示的な機械学習の実施形態
図5は、さまざまな実施形態に従って、機械学習モデルをトレーニングするためのコンピューティングシステムの簡略化されたブロック図である。
図5に示されたブロック図は、それぞれのシステムの1つまたは複数の処理装置(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはこれらの組み合わせにおいて実装されてよい。ソフトウェアは、非一時的ストレージ媒体に(例えば、メモリデバイスに)格納されてよい。
図5に提示され、下で説明されるデータのフローおよびコンポーネントは、例示的かつ非限定的であるよう意図されている。
図5は、特定のシーケンスまたは順序で発生するさまざまなステップを示しているが、これは、制限することを意図されていない。ある代替の実施形態では、これらのステップは、何らかの異なる順序で実行されてよく、または一部のステップは、並列に実行されてもよい。
【0098】
図5に示されているように、システム500は、未加工のテキスト文書データを利用して、文ラベルデータを生成するように1つまたは複数の深層学習モデルを再トレーニングするためのシステムである。システム500は、抽出層501およびトレーニング層502を含んでよい。さまざまな実施形態では、システム500はトレーニングサブシステム410であり、抽出層501は抽出サブシステム412の一部であり、トレーニング層502は再トレーニングサブシステム414の一部である。さまざまな実施形態では、システム500は、テキストを含んでいるデジタル文書から抽出された文に対応する1つまたは複数のラベルを生成するように構成された文ラベル付けモデルの一部として動作する。
【0099】
抽出層501は、ストレージから未加工のテキスト文書データ505を受信するか、または取り出してよい。未加工のテキスト文書データ505は、文書、ファイル、または他のテキストデータなどの、非構造化テキストデータの1つまたは複数のセットであってよい。例えば、未加工のテキスト文書データは、PDF、スプレッドシート、スライドショー、テキスト、画像、または他の形式などの形式での1つまたは複数のデジタルファイルであってよい。未加工のテキスト文書データ505は、文法構造化言語を表すテキスト文字の1つまたは複数の視覚的表現を含んでよい。例えば、PDFファイルは、英語の文法に従って構造化された文のセットを表す形式および順序で複数の文字を含んでよい。
【0100】
文データ抽出器510は、1つまたは複数の文に関連するデータを抽出するために、未加工のテキスト文書データ505を受信してよい。例えば、文データ抽出器510は、言語文法に従って構造化された文を識別してグループ化するために使用され得る、未加工のテキスト文書データの1つまたは複数の態様を決定するために、未加工のテキスト文書データ505を構文解析してよい。一部の実施形態では、未加工のテキスト文書データ505から抽出された文データは、未加工のテキスト文書データ505において表された1つまたは複数のテキスト文の意味的態様を表すテキストデータを含む。例えば、抽出されたテキストデータは、未加工のテキスト文書データ505において表されていると決定されたASCII文字のセットを含んでよい。別の例では、テキストデータは、文が複合であるかどうか、句読点を含んでいるかどうか、大文字を含んでいるかどうかなどの、文の1つまたは複数の意味的態様の指示を含む。
【0101】
一部の実施形態では、未加工のテキスト文書データ505から抽出された文データは、未加工のテキスト文書データ505における文字の境界ボックスを表すボックスデータを含む。例えば、抽出されたボックスデータは、未加工のテキスト文書データ505における文字の境界ボックスの座標セットを含んでよい。例えばPDFファイルは、多くの場合、本質的に、抽出され得るPDF文書内の視覚的に表された文字の境界ボックスに対応するメタデータを含む。別の例では、ボックスデータは、例えば、人工ニューラルネットワークを使用して、未加工のテキスト文書データ505によって表された文字の周囲の境界ボックスを決定して測定することによって、文書内の文字のピクセルに基づく表現に基づいて文データ抽出器510によって生成される。
【0102】
一部の実施形態では、未加工のテキスト文書データ505から抽出された文データは、未加工のテキスト文書データ505における文字のフォントまたはスタイルに対応するフォントデータを含む。例えば、抽出されたフォントデータは、未加工のテキスト文書データ505における文字を表すための既知または未知のフォントスタイルの1つまたは複数の指示を含んでよい。フォントデータは、例えば、人工ニューラルネットワークを使用して、未加工のテキスト文書データ505における予測された文字ごとに相対的なピクセルの着色を決定して測定することによって、文書内の文字のピクセルに基づく表現に基づいて文データ抽出器510によって生成されてよい。一部の実施形態では、フォントデータは、未加工のテキスト文書データ505によって表された異なるフォント、色、サイズ、スタイルなどの文字間の違いに関連するデータなどの、相対的フォントデータを含む。文データ抽出器510の1つの例は、https://pypi.org/project/pdfminer/で利用できるPDF文書用のPDFMinerテキスト抽出ツールである。
【0103】
システム500は、文データ抽出器510によって抽出されて生成されたデータをさらに処理するために、ポストプロセッサ515または同様のコンポーネントを含んでよい。ポストプロセッサ515は、文データ抽出器510によって抽出されて生成された未加工の文データを、モデルによって受け入れられる文データの新しい形式に変換するように構成されてよい。例えば、ポストプロセッサ515は、未加工のテキスト文書データから抽出された境界ボックスの座標の多くのセットを含んでいる未加工のデータを、システム500内の別のモデルによって構文解析可能な座標データのリンクリストに変換してよい。ポストプロセッサ515の出力は、文データ520である。
【0104】
次に、文データ520は、抽出層501の特徴抽出器525コンポーネントに送信されてよい。特徴抽出器525は、文データを入力として受信し、文データの埋め込まれたバージョンを出力するように構成されたコンポーネントまたはサブシステムであってよい。出力される文データの埋め込まれたバージョンは、未加工のテキスト文書データ505において表された1つまたは複数の文の分類ラベルを生成するように構成された1つまたは複数の深層学習モデルへの入力として、許容できるものであってよい。特徴抽出器525は、
図5に関して以下でさらに詳細に説明される。
【0105】
特徴抽出器525は、文埋め込みデータ530を出力する。文埋め込みデータ530は、1つまたは複数の深層学習モデルによって入力として受け入れられ得る形式での、文データ520の埋め込まれたバージョンであってよい。例えば、抽出層501は、文脈モデル535を含む。文脈モデル535は、文埋め込みデータ530を入力として受信し、1つまたは複数の予測された文脈値を出力するように構成された深層学習機械学習モデルであってよい。1つまたは複数の予測された文脈値は、未加工のテキスト文書データから抽出された文の1つまたは複数の文脈認識値に関連していてよい。文脈モデル535は、文埋め込みデータを入力として取り込み、ノード階層内の重みのセットを適用して、人工ニューラルネットワーク内の終端ノードのセットから1つまたは複数の文脈に基づく出力値を生成するようにトレーニングされ得る人工ニューラルネットワークなどの、深層学習モデルであってよい。文脈モデル535は、人工ニューラルネットワーク内のノードのパラメータ/重みを変更するように、目的関数に基づいて再トレーニングされてよい。
【0106】
文脈モデル535の出力される文脈認識値は、未加工のテキスト文書データ505から抽出された文の分類ラベルを生成するように構成された分類モデル540にさらに入力されてよい。分類モデル540は、文脈モデル535から文脈認識値を入力として受信し、1つまたは複数の文ラベルを文ラベルデータ545として出力するように構成された深層学習モデルであってよい。例えば、分類モデル540は、文脈モデル535から文脈認識値を入力として取り込み、ノード階層内の重みのセットを適用して、人工ニューラルネットワーク内の終端ノードのセットから、未加工のテキスト文書データ505から抽出された1つまたは複数の文の1つまたは複数のラベルを生成するようにトレーニングされ得る人工ニューラルネットワークなどの、深層学習モデルであってよい。さまざまな実施形態では、文脈モデル535および分類モデル540は、文埋め込みデータを取り込んで文ラベルデータ545を出力するために、単一の深層学習モデルとして結合される。
【0107】
分類モデル540によって出力された文ラベルデータは、未加工のテキスト文書データ505における他の文に関連する文の予測された種類または構造に関連するデータのセットであってよい。例えば、文ラベルデータ545は、抽出された文ごとに、他の文に関連する文の種類および位置の予測を表す対応するラベルを含んでよい。ラベルは、例えば、質問に関連する文または質問に関連するステートメント(例えば、「回答」)であるかどうかを示してよい。さらに、ラベルは、文が単一の文の質問/ステートメント、複数の文の質問/ステートメント(例えば、完全な文脈を質問/ステートメントに与えるために、各文が各他の文に依存する文のセット)の一部であるかどうか、および特定の文が複数の文の構造内の先頭の文、末尾の文、または中間の文のいずれであるかを示してよい。ラベルは、文が、質問または回答のいずれかとしての表現を有していない(例えば、言語に基づく意味値を含まない一連の記号である)かどうかを示してもよい。したがって、抽出層501は、未加工のテキスト文書データ505を利用して、文書データから1つまたは複数の文を抽出し、文の各々について文ラベルデータ545を生成するように構成される。
【0108】
トレーニング層502は、抽出層501に含まれている1つまたは複数の深層学習モデルをトレーニングするために抽出層501とやりとりするコンポーネントおよびデータのグループであってよい。例えば、それが分類モデルによって文ラベルデータ545が生成された後に、文ラベルデータ545は、トレーニング層502の目的関数コンポーネントに送信されてよい。文ラベルデータ545は、2つのデータセット間の差異を決定するために、グランドトゥルース文ラベルデータ555などのグランドトゥルースデータセットと比較されてよい。目的関数550は、データ間の差異を決定し、この差異を使用して抽出層501の1つまたは複数の深層学習モデルを再トレーニングする。例えば、文脈モデル535は、文埋め込みデータに基づいて文脈データを生成してよく、分類モデル540は、文脈データに基づいて文ラベルデータ545を生成してよい。このデータは、文脈モデル535および分類モデル540の動作パラメータおよび重みを変更する目的関数を決定するために、グランドトゥルース文ラベルデータ555内の対応するグランドトゥルースデータと比較される。
【0109】
図6は、さまざまな実施形態に従って、機械学習モデルによって推論を生成するためのコンピューティングシステムの簡略化されたブロック図である。
図6に示されたブロック図は、それぞれのシステムの1つまたは複数の処理装置(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはこれらの組み合わせにおいて実装されてよい。ソフトウェアは、非一時的ストレージ媒体に(例えば、メモリデバイスに)格納されてよい。
図6に提示され、下で説明されるデータのフローおよびコンポーネントは、例示的かつ非限定的であるよう意図されている。
図6は、特定のシーケンスまたは順序で発生するさまざまなステップを示しているが、これは、制限することを意図されていない。ある代替の実施形態では、これらのステップは、何らかの異なる順序で実行されてよく、または一部のステップは、並列に実行されてもよい。
【0110】
図6に示されているように、システム600は、未加工のテキスト文書データを利用して、質問と回答の対データを生成するためのシステムである。システム600は、抽出層601および推論層602を含んでよい。さまざまな実施形態では、システム600は推論サブシステム420であり、抽出層601は抽出サブシステム422の一部であり、推論層602はデータ生成サブシステム424の一部である。さまざまな実施形態では、システム600は、テキストを含んでいるデジタル文書から抽出された文に対応する1つまたは複数のラベルを生成し、QAデータを使用してチャットボットモデル用のトレーニングデータを生成するように構成された文ラベル付けモデルの一部として動作する。
【0111】
図6の抽出層601は、
図5に示された抽出層501と同様であってよい。例えば、抽出層601は、目的関数550に従って文脈モデル535および分類モデル540などの深層学習モデルが前にトレーニングされている、抽出層501の前にトレーニングされたバージョンであってよい。抽出層601は、未加工のテキスト文書データ505からの文ラベルデータ545の抽出のための同じコンポーネント505~545を含んでいる。次に、文ラベルデータ545は、文ラベルデータを質問/回答の対620に変換するために、推論層602のデコーダ/ポストプロセッサ610に送信されてよい。例えば、デコーダ/ポストプロセッサ610は、1つまたは複数の文および1つまたは複数の文の1つまたは複数の予測されたラベルを含んでいる文ラベルデータ545を、トレーニングのためにチャットボットモデルによって許容できる特定の形式でトレーニングデータに結合するように構成されたサブシステムであってよい。この例では、チャットボットモデルは、1つまたは複数の文を、グランドトゥルースラベルとして1つまたは複数の文に対応する予測されたラベルとの結合的な形式で、受信してよい。チャットボットモデルは、文の予測された意図を生成してよく、予測された意図は、チャットボットモデルを再トレーニングするために使用される目的関数を形成するために、文に関連付けられたラベルと比較される。
【0112】
図7は、さまざまな実施形態に従って、テキストグループの特徴抽出のためのコンピューティングシステムの簡略化されたブロック図である。
図7に示されたブロック図は、それぞれのシステムの1つまたは複数の処理装置(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはこれらの組み合わせにおいて実装されてよい。ソフトウェアは、非一時的ストレージ媒体に(例えば、メモリデバイスに)格納されてよい。
図7に提示され、下で説明されるデータのフローおよびコンポーネントは、例示的かつ非限定的であるよう意図されている。
図7は、特定のシーケンスまたは順序で発生するさまざまなステップを示しているが、これは、制限することを意図されていない。ある代替の実施形態では、これらのステップは、何らかの異なる順序で実行されてよく、または一部のステップは、並列に実行されてもよい。
【0113】
図7は、抽出層501または抽出層601などの抽出層の一部として動作する特徴抽出器525の例示的な実施形態を示している。特に、
図7は、文埋め込みデータ530への文データ520の変換を容易にする特徴抽出器525のコンポーネントのブロック図を示している。本明細書において説明されるように、チャットボットモデルのトレーニングには、未加工のテキスト文書データが望ましい。例えば、未加工のテキスト文書データ(FAQ文書など)は、多くの場合、チャットボットモデルが認識し、より良いチャットボットサービスをユーザに提供するのに役立つ特定のポリシーまたは手順に関連している。しかし、未加工のテキスト文書データは、多くの場合、チャットボット用のトレーニングデータが容易に抽出されない、構造化されていない形式である。さらに、さまざまな構造化されていない文書の種類が存在し、抽出され得る情報は、非常に多様である。特徴抽出器525は、文を含んでいる個別のデータを、文脈モデル535、分類モデル540などの文脈深層学習モデルによって許容できる形式でシーケンス埋め込みデータに変換するように構成された、抽出層のサブシステムであってよい。個別のデータは、例えば、深層学習モデルへの入力用のデータを生成するために、ポストプロセッサ515から受信された文データ520であってよい。
【0114】
図7に示されているように、文データ520は、特徴抽出器525に入力されてよく、特徴抽出器525でさらに処理される。文データ520は、任意の組み合わせまたは構成で、本明細書に記載された実施形態を容易にするためのテキストデータ700、ボックスデータ702(1)~702(N)、フォントデータ704、または任意の他のデータを含んでよい。特徴抽出器525は、文データ520の任意のサブセットを利用して、最終的な文埋め込みを文埋め込みデータ530として生成してよい。文埋め込みデータ530を生成するために、特徴抽出器525のさまざまなコンポーネントが利用されてよい。
【0115】
テキストデータ700は、文データ520の意味的態様に関連するデータであってよい。例えば、テキストデータ700は、自然言語に対応する順序付けられたシーケンスで、ASCII文字のリストによって表されてよい。テキストデータ700は、テキスト埋め込み715を生成するために、テキスト埋め込み生成器710によって構文解析されてよい。例えば、テキスト埋め込み生成器710は、テキストデータ700を入力として受信し、テキストデータを構文解析してよい。テキスト埋め込み生成器710は、意味論的意味、文脈的意味、2つの文間の比較的意味、句読点、自然言語の種類などの、テキストデータ700の態様に関連する、テキストデータに基づく埋め込みデータの1つまたは複数のセットを生成してよい。テキスト埋め込み生成器710の例は、https://github.com/facebookresearch/MUSEで利用できる多言語教師なしおよび教師あり埋め込みライブラリ(MUSE:multilingual unsupervised and supervised embeddings library)である。結果として得られたテキスト埋め込み715は、文データ520の意味的態様に関連している、深層学習モデルによって構文解析可能な埋め込みであってよい。
【0116】
ボックスデータ702(1)~702(N)は、境界ボックスなどの、非構造化テキスト文書の文字または文に基づく領域を表すための、データ構造に関連するデータであってよい。例えば、ボックスデータ702(1)~702(N)は、非構造化テキスト文書内のN個の文字または文の二重座標点データを含んでよい。ボックスデータ702(1)~(N)は、ボックスデータの埋め込みをボックスデータ埋め込み722(1)~722(N)として生成するために、ボックスデータ埋め込み生成器720に送信されてよい。ボックスデータ埋め込み722(1)~(N)は、ボックスデータ702(1)~702(N)によって表された境界ボックスデータの埋め込みに対応する、関連するデータであってよい。別々のボックスデータ埋め込み722(1)~(N)の各々は、レイアウトアグリゲータ726に送信されてよい。レイアウトアグリゲータ726は、受信されたボックスデータ埋め込み722(1)~(N)を利用してレイアウト埋め込み726を生成するように構成されてよい。レイアウト埋め込み726は、統合された形式でのボックスデータ埋め込み722(1)~(N)に関連するデータであってよく、非構造化テキスト文書内の境界ボックスの各々のデータを含む。さまざまな実施形態では、レイアウトアグリゲータ724は、集約された長短期記憶(LSTM:long short-term memory)人工ニューラルネットワークによってボックスデータ埋め込みの連続的な埋め込みを生成するように構成される。結果として得られたレイアウト埋め込みは、非構造化テキスト文書内のすべての境界ボックスデータに関連する境界ボックスデータの統合されたセットを含む。
【0117】
さまざまな実施形態では、2つの文字/文の境界ボックス間の相対的水平/垂直距離に基づいて、レイアウト埋め込み726などのレイアウト情報が生成される。例えば、レイアウトアグリゲータ724は、2つの境界ボックス間の水平方向、垂直方向、およびエッジの差を決定するようにさらに構成されてよい。例えば、2つの境界ボックスが、非構造化テキスト文書内の互いに交差する2つの文の周囲に存在する場合、2つの境界ボックス間の水平/垂直距離はゼロである。計算された差は、レイアウト埋め込み726の一部として含まれてよい。一部の実施形態では、レイアウト埋め込みの一部として使用される差を決定するために、ボックス間の差と組み合わせて、ルックアップ埋め込みテーブルが利用される。一部の実施形態では、数式を使用してボックス間の距離/差が直接エンコードされ得る。例えば、下の式は、2つの境界ボックス間の距離における差を求めるための例示的な式を示している。これらの式の例は、下の付録Aに示されている。
【0118】
文埋め込みデータ530に含まれる視覚的埋め込みのセットを生成するために、ボックスデータ702(1)~(N)がさらに利用されてよい。例えば、
図7に示されているように、文書画像730が特徴抽出器525に含まれてよい。文書画像730は、非構造化テキスト文書を視覚的形式で表すためのデジタル画像データに対応してよい。文書画像730は、視覚バックボーン732に渡されてよい。視覚バックボーン732は、視覚的埋め込みを生成するために、文書画像730の関連するレイアウトを決定するように構成されたシステムまたはマッピングであってよい。例えば、文書画像730がPDF画像である場合、視覚バックボーン732は、ヘッダーセクション、フッターセクション、文書の境界、段落、画像、表、リストなどの、PDFファイルの1つまたは複数の相対的セクションを決定してよい。視覚バックボーン732によって導き出され情報は、ボックスデータ702(1)~(N)と共に、対象領域整列サブシステム734に入力されてよい。対象領域整列サブシステム734は、視覚バックボーン732からのボックスデータ702(1)~(N)および視覚的データを利用して、文書画像730内の対象の1つまたは複数の対象領域を決定するように構成された特徴抽出器525のサブシステムであってよい。例えば、対象領域整列サブシステム734は、文書画像730の重要な部分または相対的に重要な部分の座標に基づく表現に関連する対象領域データを生成するように構成されてよい。
【0119】
対象領域整列サブシステム734からの対象領域データは、視覚的埋め込み738を生成するために、視覚的データアグリゲータ736に送信されてよい。視覚的埋め込み738は、文埋め込みデータ530を生成するために使用される文書画像730の関連する部分に関連しているデータの埋め込みに関連していてよい。一部の実施形態では、視覚的データアグリゲータ736は、対象領域整列サブシステム734から対象領域データを入力として受け取り、埋め込まれる対象領域、文書の相対的に密度の高いエリアまたは空のエリア、文書画像730内のヘッダー、フッター、マージン、記号、アイコン、および/またはマークなどの文書の特徴などの、図の埋め込まれる特徴を出力するためのニューラルネットワークモデルを含む。
【0120】
フォント埋め込み740を生成するために、文データ520のフォントデータ704が使用されてもよい。例えば、フォントデータ704は、文データ520内の文字/文のフォントに関連するメタデータを入力として受け取り、非構造化テキスト文書全体を通じたフォント間の相対的差異に関連するフォント埋め込み740を出力するように構成された機械学習モデルによって処理されてよい。テキスト埋め込み715、レイアウト埋め込み726、視覚的埋め込み738、およびフォント埋め込み740、またはこれらの何らかのサブセットが生成された後に、埋め込みアグリゲータ750が、埋め込みデータを集約し、埋め込みデータを利用して文埋め込みデータを生成してよい。例えば、埋め込みアグリゲータは、受信された埋め込みを統合するか、変更するか、追加するか、除去するか、または他の方法で、深層学習によって許容できる形式で、文埋め込みデータ530の最終的なセットに変換してよい。文埋め込みデータ530は、例えば、文に対して予測された分類データを生成するための深層学習モデルへの入力に十分な相対的比率または重みで、一部の文データのテキスト、境界ボックス、およびフォントの各々の態様を表してよい。最終的な文埋め込みデータに含まれ得る文の特性の他の例としては、フォント特性、テキストスタイル、ラインストロークの種類、ストローク色、ストローク以外の色などが挙げられる。
【0121】
例示的な特徴抽出プロセス
図8は、さまざまな実施形態に従って、機械学習プロセス用のテキストグループ埋め込みを生成するためのプロセスフローを示している。
図6に示された処理は、それぞれのシステムの1つまたは複数の処理装置(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはこれらの組み合わせにおいて実装されてよい。ソフトウェアは、非一時的ストレージ媒体に(例えば、メモリデバイスに)格納されてよい。
図8に提示され、下で説明される方法は、例示的かつ非限定的であるよう意図されている。
図8は、特定のシーケンスまたは順序で発生するさまざまな処理ステップを示しているが、これは、制限することを意図されていない。ある代替の実施形態では、これらのステップは、何らかの異なる順序で実行されてよく、または一部のステップは、並列に実行されてもよい。
【0122】
810で、非構造化テキストデータのセットが受信される。非構造化テキストデータは、不特定の形式で文字に基づくテキストを含んでいるデジタル文書またはファイルであってよい。例えば、構造化テキスト文書内のテキストの形式に対応するメタデータを含むことができる構造化テキスト文書とは対照的に、非構造化テキスト文書は、そのようなメタデータを含まなくてよく、またはある形式で構造化されなくてよい。受信された非構造化テキストデータは、自然言語で提示された何らかのテキストを含んでいる文書データであってよく、非構造化テキストデータの文の分類データを生成するために、この文書データから埋め込みが抽出されてよい。一部の実施形態では、非構造化テキストデータのセットは、PDFファイルなどの1つまたは複数の文書を含む。1つまたは複数の文書は、分類データを生成するため、またはチャットボットモデル用のトレーニングデータを生成するために使用される深層学習モデルを再トレーニングするためのプロセスの一部として、非構造化テキストデータから分類データを抽出するように構成された抽出サブシステムで、受信されてよい。
【0123】
820で、1つまたは複数のテキストグループを生成するために、810で受信された非構造化テキストデータが処理される。1つまたは複数のテキストグループは、自然言語に従ったテキストまたは文字の何らかの相対的グループであってよい。例えば、1つまたは複数のテキストグループは、自然言語のルールに基づいて適切な言語ステートメントを作るテキストの意味的および文法的グループに対応する1つまたは複数の文であってよい。
【0124】
830で、820で生成された1つまたは複数のテキストグループに基づいて、1つまたは複数のテキストグループ埋め込みが生成される。1つまたは複数のテキストグループ埋め込みは、1つまたは複数のテキストグループの予測された態様を生成するために深層学習モデルによって受け入れられ得る埋め込みとして生成される。例えば、1つまたは複数のテキストグループは、1つまたは複数のテキストグループを取り込み、深層学習モデルにとって許容できる入力形式である1つまたは複数のテキストグループのエンコードされた埋め込みを出力するように構成されたエンコーダモデルによって、構文解析されてよい。
【0125】
840で、1つまたは複数のテキストグループの予測された態様に対応する1つまたは複数の出力予測を生成するために、1つまたは複数のテキストグループ埋め込みが機械学習モデルに入力される。1つまたは複数の出力予測は、1つまたは複数のテキストグループの対応する分類に関する予測であってよい。例えば、1つまたは複数のテキストグループは文であってよく、1つまたは複数の出力予測は、単一または複合としての文の指定、質問またはステートメントなどの文の文脈、文の複数の質問または複数のステートメントのセット内の文の相対位置などの、文の態様の予測された分類に対応してよい。
【0126】
例示的なシステム
図9は、分散システム900の簡略図を示す。例示された例では、分散システム900は、1つまたは複数の通信ネットワーク910を介してサーバ912に結合された1つまたは複数のクライアントコンピューティングデバイス902、904、906、および908を含んでいる。クライアントコンピューティングデバイス902、904、906、および908は、1つまたは複数のアプリケーションを実行するように構成されてよい。
【0127】
さまざまな例では、サーバ912は、本開示において説明された1つまたは複数の実施形態を可能にする1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適応されてよい。ある例では、サーバ912は、非仮想環境および仮想環境を含んでよい他のサービスまたはソフトウェアアプリケーションを提供してもよい。一部の例では、これらのサービスは、クライアントコンピューティングデバイス902、904、906、および/または908のユーザへのサービスとしてのソフトウェア(SaaS:Software as a Service)モデルなどに従って、ウェブベースサービスまたはクラウドサービスとして提供されてよい。クライアントコンピューティングデバイス902、904、906、および/または908を操作しているユーザは、次に、1つまたは複数のクライアントアプリケーションを利用してサーバ912とやりとりし、これらのコンポーネントによって提供されるサービスを利用してもよい。
【0128】
図9に示された構成では、サーバ912は、サーバ912によって実行される機能を実施する1つまたは複数のコンポーネント918、920、および922を含んでよい。これらのコンポーネントは、1つまたは複数のプロセッサ、ハードウェアコンポーネント、またはこれらの組み合わせによって実行され得るソフトウェアコンポーネントを含んでよい。分散システム900と異なってよいさまざまなシステム構成が可能であるということが、理解されるべきである。したがって、
図9に示された例は、例示的なシステムを実装するための分散システムの1つの例であり、制限することを意図されていない。
【0129】
ユーザは、クライアントコンピューティングデバイス902、904、906、および/または908を使用して、その後、本開示の教示に従って実施されるか、またはサービス提供されてよい1つまたは複数のイベントまたはモデルを生成することができる、1つまたは複数のアプリケーション、モデル、またはチャットボットを実行してよい。クライアントデバイスは、クライアントデバイスのユーザがクライアントデバイスとやりとりできるようにするインターフェイスを提供してよい。クライアントデバイスは、このインターフェイスを介して情報をユーザに出力してもよい。
図9は4つのクライアントコンピューティングデバイスのみを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされてよい。
【0130】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップなどの汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲーミングシステム、シンクライアント、さまざまなメッセージングデバイス、センサまたは他の検出デバイスなどの、さまざまな種類のコンピューティングシステムを含んでよい。これらのコンピューティングデバイスは、さまざまなモバイルオペレーティングシステム(例えば、Microsoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含む、さまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(例えば、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIXのようなオペレーティングシステム、Linux(登録商標)またはGoogle Chrome(商標)OSなどのLinuxのようなオペレーティングシステム)を実行してよい。ポータブルハンドヘルドデバイスは、セルラーフォン、スマートフォン(例えば、iPhone(登録商標))、タブレット(例えば、iPad(登録商標))、パーソナルデジタルアシスタント(PDA:personal digital assistant)などを含んでよい。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイおよび他のデバイスを含んでよい。ゲーミングシステムは、さまざまなハンドヘルドゲーミングデバイス、インターネット対応のゲーミングデバイス(例えば、Kinect(登録商標)ジェスチャー入力デバイスを含むか、または含まないMicrosoft Xbox(登録商標)ゲーム機、Sony PlayStation(登録商標)システム、Nintendo(登録商標)によって提供されるさまざまなゲーミングシステムなど)などを含んでよい。クライアントデバイスは、さまざまなインターネット関連のアプリ、通信アプリケーション(例えば、電子メールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)などの、さまざまな異なるアプリケーションを実行することができてよく、さまざまな通信プロトコルを使用してよい。
【0131】
ネットワーク910は、TCP/IP(transmission control protocol/Internet protocol:伝送制御プロトコル/インターネットプロトコル)、SNA(systems network architecture:システムネットワークアーキテクチャ)、IPX(Internet packet exchange:インターネットパケット交換)、AppleTalk(登録商標)などを含むが、これらに限定されない、さまざまな使用可能なプロトコルのいずれかを使用してデータ通信をサポートすることができる、当業者によく知られている任意の種類のネットワークであってよい。単なる例として、ネットワーク910は、ローカルエリアネットワーク(LAN:local area network)、イーサネット(登録商標)に基づくネットワーク、トークンリング、広域ネットワーク(WAN:wide-area network)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN:virtual private network)、イントラネット、エクストラネット、公衆交換電話網(PSTN:public switched telephone network)、赤外線ネットワーク、ワイヤレスネットワーク(例えば、電気電子技術者協会(IEEE:Institute of Electrical and Electronics Engineers)1002.11プロトコル群のいずれかに従って動作するネットワーク、Bluetooth(登録商標)、および/または任意の他のワイヤレスプロトコル)、ならびに/あるいはこれらおよび/または他のネットワークの任意の組み合わせであってよい。
【0132】
サーバ912は、1つまたは複数の汎用コンピュータ、専用サーバコンピュータ(例として、PC(personal computer:パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、中型サーバ、メインフレームコンピュータ、ラックマウントサーバなどを含む)、サーバファーム、サーバクラスタ、あるいは任意の他の適切な配置および/または組み合わせで構成されてよい。サーバ912は、仮想オペレーティングシステムを実行する1つまたは複数の仮想マシン、またはサーバの仮想ストレージデバイスを維持するために仮想化され得る論理ストレージデバイスの1つまたは複数の柔軟なプールなどの仮想化を含む、他のコンピューティングアーキテクチャを含んでよい。さまざまな例では、サーバ912は、前述の開示において説明された機能を提供する1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適応されてよい。
【0133】
サーバ912のコンピューティングシステムは、前述のオペレーティングシステムのいずれかを含む1つまたは複数のオペレーティングシステムに加えて、任意の市販されているサーバオペレーティングシステムを実行してよい。サーバ912は、HTTP(hypertext transport protocol:ハイパーテキスト転送プロトコル)サーバ、FTP(file transfer protocol:ファイル転送プロトコル)サーバ、CGI(common gateway interface:共通ゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む、さまざまな追加のサーバアプリケーションおよび/またはミッドティアアプリケーションのいずれかを実行してもよい。データベースサーバの例としては、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているデータベースサーバが挙げられるが、これらに限定されない。
【0134】
一部の実装では、サーバ912は、クライアントコンピューティングデバイス902、904、906、および908のユーザから受信されたデータフィードおよび/またはイベント更新を分析して統合するための1つまたは複数のアプリケーションを含んでよい。データフィードおよび/またはイベント更新の例としては、Twitter(登録商標)フィード、Facebook(登録商標)の更新、またはセンサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などに関連するリアルタイムイベントを含んでよい、1つまたは複数のサードパーティの情報源および連続的データストリームから受信されたリアルタイムの更新が挙げられ得るが、これらに限定されない。サーバ912は、クライアントコンピューティングデバイス902、904、906、および908の1つまたは複数のディスプレイデバイスを介してデータフィードおよび/またはリアルタイムイベントを表示するための1つまたは複数のアプリケーションを含んでもよい。
【0135】
分散システム900は、1つまたは複数のデータリポジトリ914、916を含んでもよい。これらのデータリポジトリは、ある例では、データおよび他の情報を格納するために使用されてよい。例えば、データリポジトリ914、916のうちの1つまたは複数は、チャットボットの性能、またはさまざまな実施形態に従ってさまざまな機能を実行するときにサーバ912によって使用されるチャットボットによって使用するために生成されたモデルに関連する情報などの情報を格納するために使用されてよい。データリポジトリ914、916は、さまざまな位置に存在してよい。例えば、サーバ912によって使用されるデータリポジトリは、サーバ912に対してローカルであってよく、またはサーバ912からから遠く離れて、ネットワークに基づく接続または専用接続を介してサーバ912と通信してよい。データリポジトリ914、916は、さまざまな種類のデータリポジトリであってよい。ある例では、サーバ912によって使用されるデータリポジトリは、データベース、例えば、Oracle Corporation(登録商標)および他のベンダーによって提供されるデータベースなどのリレーショナルデータベースであってよい。これらのデータベースのうちの1つまたは複数は、SQLフォーマットのコマンドに応答して、データベースとの間でのデータの格納、更新、および取り出しを可能にするように適応されてよい。
【0136】
ある例では、データリポジトリ914、916のうちの1つまたは複数は、アプリケーションデータを格納するために、アプリケーションによって使用されてもよい。アプリケーションによって使用されるデータリポジトリは、例えば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムによってサポートされる一般的なストレージリポジトリなどの、さまざまな種類のデータリポジトリであってよい。
【0137】
ある例では、本開示において説明された機能は、クラウド環境を介してサービスとして提供されてよい。
図10は、ある例に従う、さまざまなサービスがクラウドサービスとして提供され得る、クラウドベースのシステム環境の簡略化されたブロック図である。
図10に示された例では、クラウドインフラストラクチャシステム1002は、1つまたは複数のクライアントコンピューティングデバイス1004、1006、および1008を使用してユーザによって要求され得る1つまたは複数のクラウドサービスを提供してよい。クラウドインフラストラクチャシステム1002は、サーバ712に関して上で説明されたコンピュータおよび/またはサーバを含むことができる1つまたは複数のコンピュータおよび/またはサーバを備えてよい。クラウドインフラストラクチャシステム1002内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、あるいは任意の他の適切な配置および/または組み合わせとして編成されてよい。
【0138】
ネットワーク1010は、クライアント1004、1006、および1008とクラウドインフラストラクチャシステム1002の間のデータの通信および交換を容易にしてよい。ネットワーク1010は、1つまたは複数のネットワークを含んでよい。ネットワークは、同じ種類または異なる種類のネットワークであってよい。ネットワーク1010は、通信を容易にするために、有線プロトコルおよび/またはワイヤレスプロトコルを含む1つまたは複数の通信プロトコルをサポートしてよい。
【0139】
図10に示された例は、クラウドインフラストラクチャシステムの1つの例にすぎず、制限することを意図されていない。一部の他の例では、クラウドインフラストラクチャシステム1002が、
図10に示されたコンポーネントより多いか、または少ないコンポーネントを含んでよく、2つ以上のコンポーネントを結合してよく、あるいはコンポーネントの異なる構成または配置を有してよいということが、理解されるべきである。例えば、
図10は3つのクライアントコンピューティングデバイスを示しているが、代替の例では、任意の数のクライアントコンピューティングデバイスがサポートされてよい。
【0140】
クラウドサービスという用語は、通常、サービスプロバイダのシステム(例えば、クラウドインフラストラクチャシステム1002)によって、オンデマンドでインターネットなどの通信ネットワークを介してユーザによる使用を可能にされるサービスのことを指すために使用される。通常、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスのサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。したがって、顧客は、サービスのための別々のライセンス、サポート、またはハードウェアリソースおよびソフトウェアリソースを購入することを必要とせずに、クラウドサービスプロバイダによって提供されたクラウドサービスそのものを利用してよい。例えば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてよく、ユーザは、オンデマンドでインターネットを介してアプリケーションを注文し、使用してよく、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入する必要がない。クラウドサービスは、アプリケーション、リソース、およびサービスへの容易で拡張可能なアクセスを提供するように設計されている。複数のプロバイダが、クラウドサービスを提供している。例えば、カリフォルニア州レッドウッドショアーズのOracle Corporation(登録商標)によって、ミドルウェアサービス、データベースサービス、Javaクラウドサービスなどの、複数のクラウドサービスが提供されている。
【0141】
ある例では、クラウドインフラストラクチャシステム1002は、サービスとしてのソフトウェア(SaaS:Software as a Service)モデル、サービスとしてのプラットフォーム(PaaS:Platform as a Service)モデル、サービスとしてのインフラストラクチャ(IaaS:Infrastructure as a Service)モデル、およびハイブリッドサービスモデル含む他のモデルなどに従って、さまざまなモデルを使用して1つまたは複数のクラウドサービスを提供してよい。クラウドインフラストラクチャシステム1002は、一連のアプリケーション、ミドルウェア、データベース、およびさまざまなクラウドサービスの提供を可能にする他のリソースを含んでよい。
【0142】
SaaSモデルは、アプリケーションまたはソフトウェアが、インターネットのような通信ネットワークを経由して顧客にサービスとして配信されることを可能にし、顧客は、基礎になるアプリケーションのためのハードウェアもソフトウェアも購入する必要がない。例えば、SaaSモデルは、クラウドインフラストラクチャシステム1002によってホストされているオンデマンドアプリケーションへのアクセス権限を顧客に提供するために使用されてよい。Oracle Corporation(登録商標)によって提供されるSaaSサービスの例としては、人材/資本管理、顧客関係管理(CRM)、エンタープライズリソースプラニング(ERP)、サプライチェーンマネジメント(SCM:supply chain management)、企業パフォーマンス管理(EPM:enterprise performance management)、分析サービス、ソーシャルアプリケーションなどのためのさまざまなサービスが挙げられるが、これらに限定されない。
【0143】
IaaSモデルは、通常、弾力性のある計算能力および格納能力を提供するためのインフラストラクチャリソース(例えば、サーバリソース、ストレージリソース、ハードウェアリソース、およびネットワークリソース)をクラウドサービスとして顧客に提供するために使用される。さまざまなIaaSサービスが、Oracle Corporation(登録商標)によって提供されている。
【0144】
PaaSモデルは、通常、顧客がアプリケーションおよびサービスを開発し、実行し、管理することを可能にするプラットフォームおよび環境のリソースを、顧客がそのようなリソースを調達することも、構築することも、維持することも必要とせずに、サービスとして提供するために使用される。Oracle Corporation(登録商標)によって提供されるPaaSサービスの例としては、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、さまざまなアプリケーション開発ソリューションサービスなどが挙げられるが、これらに限定されない。
【0145】
クラウドサービスは、通常、オンデマンドセルフサービスで、サブスクリプションに基づいて、弾力的に拡張可能な、信頼できる、高度に利用可能かつ安全な方法で、提供される。例えば、顧客は、サブスクリプションの注文によって、クラウドインフラストラクチャシステム1002によって提供される1つまたは複数のサービスを注文してよい。次に、クラウドインフラストラクチャシステム1002は、顧客のサブスクリプションの注文において要求されたサービスを提供するための処理を実行する。例えば、ユーザは、発話を使用して、前述したように、ある行動(例えば、意図)を起こすこと、および/または本明細書において説明されるように、チャットボットシステムのサービスを提供することを、クラウドインフラストラクチャシステムに要求してよい。クラウドインフラストラクチャシステム1002は、1つまたは複数のクラウドサービスを提供するように構成されてよい。
【0146】
クラウドインフラストラクチャシステム1002は、さまざまなデプロイメントモデルによってクラウドサービスを提供してよい。パブリッククラウドモデルでは、クラウドインフラストラクチャシステム1002は、サードパーティのクラウドサービスプロバイダによって所有されてよく、クラウドサービスが任意の一般顧客に提供され、顧客は、個人または企業であってよい。ある他の例では、プライベートクラウドモデルに従って、クラウドインフラストラクチャシステム1002は、組織内(例えば、企業組織内)で操作されてもよく、サービスが、この組織内の顧客に提供されてもよい。例えば顧客は、人事課、給与課などの、企業のさまざまな部署、あるいは企業内の個人であってもよい。ある他の例では、コミュニティクラウドモデルに従って、クラウドインフラストラクチャシステム1002および提供されるサービスは、関連するコミュニティ内の複数の組織によって共有されてよい。前述のモデルのハイブリッドなどの、さまざまな他のモデルが使用されてもよい。
【0147】
クライアントコンピューティングデバイス1004、1006、および1008は、異なる種類のクライアントコンピューティングデバイス(
図9に示されたクライアントコンピューティングデバイス902、904、906、および908など)であってよく、1つまたは複数のクライアントアプリケーションを操作することができてよい。ユーザは、クライアントデバイスを使用して、クラウドインフラストラクチャシステム1002によって提供されるサービスを要求するなどのために、クラウドインフラストラクチャシステム1002とやりとりしてよい。例えばユーザは、クライアントデバイスを使用して、本開示において説明されているように、チャットボットに対して情報または行動を要求してよい。
【0148】
一部の例では、サービスを供給するためにクラウドインフラストラクチャシステム1002によって実行される処理は、モデルのトレーニングおよびデプロイメントを含んでよい。この分析は、1つまたは複数のモデルをトレーニングしてデプロイするために、データセットを使用、分析、および操作することを含んでよい。この分析は、場合によってはデータを並列に処理する、データを使用してシミュレーションを実行するなどの、1つまたは複数のプロセッサによって実行されてよい。例えば、チャットボットシステムの1つまたは複数のモデルを生成してトレーニングするために、クラウドインフラストラクチャシステム1002によってビッグデータ分析が実行されてよい。この分析に使用されるデータは、構造化データ(例えば、データベースに格納されたデータまたは構造化モデルに従って構造化されたデータ)および/または非構造化データ(例えば、データblob(binary large objects:バイナリラージオブジェクト))を含んでよい。
【0149】
図10の例に示されているように、クラウドインフラストラクチャシステム1002は、クラウドインフラストラクチャシステム1002によって提供されるさまざまなクラウドサービスの提供を容易にするために利用されるインフラストラクチャリソース1030を含んでよい。インフラストラクチャリソース1030は、例えば、処理リソース、ストレージまたはメモリリソース、ネットワークリソースなどを含んでよい。ある例では、アプリケーションから要求されたストレージのサービスを提供するために使用可能なストレージ仮想マシンは、クラウドインフラストラクチャシステム1002の一部であってよい。他の例では、ストレージ仮想マシンは、異なるシステムの一部であってよい。
【0150】
ある例では、クラウドインフラストラクチャシステム1002によってさまざまな顧客に提供されるさまざまなクラウドサービスをサポートするためのこれらのリソースの効率的なプロビジョニングを容易にするために、リソースは、リソースまたはリソースモジュール(「ポッド」とも呼ばれる)のセットにまとめられてよい。各リソースモジュールまたはポッドは、1つまたは複数の種類のリソースの事前に統合されて最適化された組み合わせを含んでよい。ある例では、異なる種類のクラウドサービスのために、異なるポッドが事前にプロビジョニングされてよい。例えば、データベースサービスのために、ポッドの第1のセットがプロビジョニングされてよく、ポッドの第1のセット内のポッドと異なるリソースの組み合わせを含むことができるポッドの第2のセットが、Javaサービスのためにプロビジョニングされてよい、などである。一部のサービスの場合、サービスをプロビジョニングするために割り当てられたリソースが、サービス間で共有されてよい。
【0151】
クラウドインフラストラクチャシステム1002自体は、クラウドインフラストラクチャシステム1002のさまざまなコンポーネントによって共有されて、クラウドインフラストラクチャシステム1002によるサービスのプロビジョニングを容易にするサービス1032を、内部で使用してよい。これらの内部の共有されたサービスは、セキュリティおよび識別情報サービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよび回復サービス、クラウドのサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含んでよいが、これらに限定されない。
【0152】
クラウドインフラストラクチャシステム1002は、複数のサブシステムを備えてよい。これらのサブシステムは、ソフトウェア、またはハードウェア、あるいはこれらの組み合わせにおいて実装されてよい。
図10に示されているように、サブシステムは、クラウドインフラストラクチャシステム1002のユーザまたは顧客がクラウドインフラストラクチャシステム1002とやりとりできるようにするユーザインターフェイスサブシステム1012を含んでよい。ユーザインターフェイスサブシステム1012は、ウェブインターフェイス1014、クラウドインフラストラクチャシステム1002によって提供されるクラウドサービスが宣伝され、消費者によって購入され得るオンラインストアインターフェイス1016、および他のインターフェイス1018などの、さまざまな異なるインターフェイスを含んでよい。例えば、顧客は、クライアントデバイスを使用してインターフェイス1014、1016、および1018のうちの1つまたは複数を使用して、クラウドインフラストラクチャシステム1002によって提供される1つまたは複数のサービスを要求してよい(サービス要求1034)。例えば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム1002によって提供されるクラウドサービスを閲覧し、顧客が登録を希望する、クラウドインフラストラクチャシステム1002によって提供される1つまたは複数のサービスのサブスクリプションを注文してよい。サービス要求は、顧客および顧客が登録することを望む1つまたは複数のサービスを識別する情報を含んでよい。例えば、顧客は、クラウドインフラストラクチャシステム1002によって提供されるサービスのサブスクリプションを注文してよい。この注文の一部として、顧客は、サービスが提供されるチャットボットシステム、および任意選択的に、チャットボットシステムの1つまたは複数の認証情報を識別する情報を提供してよい。
【0153】
図10に示された例などの、ある例では、クラウドインフラストラクチャシステム1002は、新しい注文を処理するように構成された注文管理サブシステム(OMS:order management subsystem)1020を備えてよい。この処理の一部として、OMS1020は、顧客のアカウントがまだ作成されていない場合、顧客のアカウントを作成し、要求されたサービスを顧客に提供することに関する請求書を顧客に送付するために使用される請求書送付および/または会計情報を顧客から受信し、顧客情報を検証し、検証時に、顧客の注文を予約し、さまざまなワークフローを調整して、プロビジョニングのために注文を準備するように構成されてよい。
【0154】
適切に検証された後に、OMS1020は、処理リソース、メモリリソース、およびネットワークリソースを含む注文のためのリソースをプロビジョニングするように構成された注文プロビジョニングサブシステム(OPS:order provisioning subsystem)1024を呼び出してよい。このプロビジョニングは、リソースを注文に割り当て、顧客注文によって要求されたサービスを容易にするようにリソースを構成することを含んでよい。注文のためのリソースがプロビジョニングされる方法、およびプロビジョニングされるリソースの種類は、顧客によって注文されたクラウドサービスの種類に依存してよい。例えば、1つのワークフローによれば、OPS1024は、要求されている特定のクラウドサービスを決定し、その特定のクラウドサービスのために事前に構成され得るポッドの数を識別するように構成されてよい。注文に割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存してよい。例えば、割り当てられるポッドの数は、サービスによってサポートされるユーザの数、サービスが要求されている持続時間などに基づいて決定されてよい。次に、割り当てられたポッドが、要求されたサービスを提供するために、特定の要求している顧客用にカスタマイズされてよい。
【0155】
ある例では、前述したような設定段階の処理が、プロビジョニングプロセスの一部としてクラウドインフラストラクチャシステム1002によって実行されてよい。クラウドインフラストラクチャシステム1002は、アプリケーションIDを生成し、クラウドインフラストラクチャシステム1002自体によって提供されたストレージ仮想マシンのうちから、またはクラウドインフラストラクチャシステム1002以外の他のシステムによって提供されたストレージ仮想マシンから、アプリケーションのストレージ仮想マシンを選択してよい。
【0156】
クラウドインフラストラクチャシステム1002は、要求されたサービスが現在使用する準備ができている場合に、それを示すための応答または通知1044を、要求している顧客に送信してよい。一部の例では、顧客が要求されたサービスの使用を開始して、その利益を享受することができるようにする情報(例えば、リンク)が顧客に送信されてよい。ある例では、サービスを要求している顧客のために、応答は、クラウドインフラストラクチャシステム1002によって生成されたチャットボットシステムID、およびこのチャットボットシステムIDに対応するチャットボットシステムに関する、クラウドインフラストラクチャシステム1002によって選択されたチャットボットシステムを識別する情報を含んでよい。
【0157】
クラウドインフラストラクチャシステム1002は、複数の顧客にサービスを提供してよい。顧客ごとに、クラウドインフラストラクチャシステム1002は、顧客から受信された1つまたは複数のサブスクリプションの注文に関連する情報を管理し、注文に関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を担う。クラウドインフラストラクチャシステム1002は、顧客の登録されたサービスの使用に関する使用状況統計情報を収集してもよい。例えば、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステム起動時間およびシステム停止時間の量などに関する統計情報が収集されてよい。この使用状況情報は、顧客に請求書を送付するために使用されてよい。請求書の送付は、例えば、月に1回のサイクルで実行されてよい。
【0158】
クラウドインフラストラクチャシステム1002は、同時に複数の顧客にサービスを提供してよい。クラウドインフラストラクチャシステム1002は、場合によっては機密情報を含む、これらの顧客に関する情報を格納してよい。ある例では、クラウドインフラストラクチャシステム1002は、顧客情報を管理し、1人の顧客に関連する情報が別の顧客によってアクセス可能にならないように、管理された情報の分離をもたらすように構成された、識別情報管理サブシステム(IMS:identity management subsystem)1028を備える。IMS1028は、識別情報サービス、例えば、情報アクセス管理、認証、および許可サービスなど、顧客の識別情報ならびに役割および関連する能力を管理するためのサービスなどの、さまざまなセキュリティ関連のサービスを提供するように構成されてよい。
【0159】
図11は、コンピュータシステム1100の例を示している。一部の例では、コンピュータシステム1100は、分散環境内のデジタルアシスタントまたはチャットボットシステムのいずれか、ならびに前述のさまざまなサーバおよびコンピュータシステムを実装するために使用されてよい。
図11に示されているように、コンピュータシステム1100は、バスサブシステム1102を介して複数の他のサブシステムと通信する処理サブシステム1104を含む、さまざまなサブシステムを含んでいる。これらの他のサブシステムは、処理加速ユニット1106、I/Oサブシステム1108、ストレージサブシステム1118、および通信サブシステム1124を含んでよい。ストレージサブシステム1118は、ストレージ媒体1122およびシステムメモリ1110を含む、非一時的コンピュータ可読ストレージ媒体を含んでよい。
【0160】
バスサブシステム1102は、コンピュータシステム1100のさまざまなコンポーネントおよびサブシステムに、意図されたとおりに互いに通信させるためのメカニズムを提供する。バスサブシステム1102は、単一のバスとして概略的に示されているが、バスサブシステムの代替の例は、複数のバスを利用してよい。バスサブシステム1102は、メモリバスまたはメモリコントローラ、ペリフェラルバス、さまざまなバスアーキテクチャのいずれかを使用するローカルバスなどを含む、複数の種類のバス構造のいずれかであってよい。例えば、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)バス、強化ISA(EISA:Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびIEEE P1386.1規格で製造されたメザニンバスとして実装されてよいペリフェラルコンポーネントインターコネクト(PCI:Peripheral Component Interconnect)バスなどを含んでよい。
【0161】
処理サブシステム1104は、コンピュータシステム1100の動作を制御し、1つまたは複数のプロセッサ、特定用途向け集積回路(ASIC:application specific integrated circuit)、またはフィールドプログラマブルゲートアレイ(FPGA:field programmable gate array)を備えてよい。プロセッサは、シングルコアプロセッサまたはマルチコアプロセッサを含んでよい。コンピュータシステム1100の処理リソースは、1つまたは複数の処理装置1132、1134などに編成されてよい。処理装置は、1つまたは複数のプロセッサ、同じプロセッサまたは異なるプロセッサの1つまたは複数のコア、コアおよびプロセッサの組み合わせ、あるいはコアおよびプロセッサの他の組み合わせを含んでよい。一部の例では、処理サブシステム1104は、グラフィックプロセッサ、デジタル信号プロセッサ(DSP:digital signal processor)などの1つまたは複数の専用コプロセッサを含んでよい。一部の例では、処理サブシステム1104の処理装置の一部またはすべては、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などの、カスタマイズされた回路を使用して実装されてよい。
【0162】
一部の例では、処理サブシステム1104の処理装置は、システムメモリ1110またはコンピュータ可読ストレージ媒体1122に格納された命令を実行してよい。さまざまな例では、処理装置は、さまざまなプログラムまたはコード命令を実行してよく、複数の同時に実行するプログラムまたはプロセスを維持してよい。いずれかの特定の時間に、実行されるプログラムコードの一部またはすべてが、システムメモリ1110、および/または場合によっては1つまたは複数のストレージデバイス上を含む、コンピュータ可読ストレージ媒体1122に存在してよい。適切なプログラミングによって、処理サブシステム1104は、前述のさまざまな機能を提供してよい。コンピュータシステム1100が1つまたは複数の仮想マシンを実行している例では、1つまたは複数の処理装置が各仮想マシンに割り当てられてよい。
【0163】
ある例では、カスタマイズされた処理を実行するため、またはコンピュータシステム1100によって実行される処理全体を加速するように、処理サブシステム1104によって実行される処理の一部をオフロードするために、処理加速ユニット1106が任意選択的に提供されてよい。
【0164】
I/Oサブシステム1108は、情報をコンピュータシステム1100に入力するため、および/またはコンピュータシステム1100から、もしくはコンピュータシステム1100を介して情報を出力するための、デバイスおよびメカニズムを含んでもよい。一般に、入力デバイスという用語の使用は、情報をコンピュータシステム1100に入力するためのすべての可能性のある種類のデバイスおよびメカニズムを含むよう意図されている。ユーザインターフェイス入力デバイスは、例えば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備える音声入力デバイス、マイクロホン、および他の種類の入力デバイスを含んでよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御して入力デバイスとやりとりすることを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャーおよび話されたコマンドを使用して入力を受信するためのインターフェイスを提供するデバイスなどの、動作検出デバイスおよび/またはジェスチャー認識デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザの目の活動(例えば、写真を撮っているとき、および/またはメニューを選択しているときの「まばたき」)を検出し、アイジェスチャーを入力デバイス(例えば、Google Glass(登録商標))への入力として変換するGoogle Glass(登録商標)まばたき検出器などの、アイジェスチャー認識デバイスを含んでもよい。さらに、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(例えば、Siri(登録商標)ナビゲーター)とやりとりできるようにする音声認識検出デバイスを含んでよい。
【0165】
ユーザインターフェイス入力デバイスの他の例として、3次元(3D:three dimensional)マウス、ジョイスティックまたはポインティングスティック、ゲームパッド、およびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザ距離計、および視線追跡デバイスなどの、音声/視覚デバイスが挙げられるが、これらに限定されない。さらに、ユーザインターフェイス入力デバイスは、例えば、コンピュータ断層撮影、磁気共鳴撮像、陽電子放出断層撮影、および医用超音波検査デバイスなどの、医用画像入力デバイスを含んでよい。ユーザインターフェイス入力デバイスは、例えば、MIDIキーボード、デジタル楽器などの音声入力デバイスを含んでもよい。
【0166】
一般に、出力デバイスという用語の使用は、情報をコンピュータシステム1100からユーザまたは他のコンピュータに出力するためのすべての可能性のある種類のデバイスおよびメカニズムを含むよう意図されている。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどの非視覚的ディスプレイなどを含んでよい。ディスプレイサブシステムは、ブラウン管(CRT:cathode ray tube)、液晶ディスプレイ(LCD:liquid crystal display)またはプラズマディスプレイを使用するフラットパネルデバイスなどのフラットパネルデバイス、投射デバイス、タッチスクリーンなどであってよい。例えば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドホン、カーナビ、プロッター、音声出力デバイス、およびモデムなどの、テキスト情報、グラフィックス情報、および音声/ビデオ情報を視覚的に伝達するさまざまなディスプレイデバイスを含んでよいが、これらに限定されない。
【0167】
ストレージサブシステム1118は、コンピュータシステム1100によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム1118は、一部の例の機能を提供する基本的なプログラミングおよびデータの構成を格納するための有形の非一時的コンピュータ可読ストレージ媒体を提供する。ストレージサブシステム1118は、処理サブシステム1104によって実行されたときに前述の機能を提供するソフトウェア(例えば、プログラム、コードモジュール、命令)を格納してよい。ソフトウェアは、処理サブシステム1104の1つまたは複数の処理装置によって実行されてよい。ストレージサブシステム1118は、本開示の教示に従って認証を提供してもよい。
【0168】
ストレージサブシステム1118は、揮発性および不揮発性メモリデバイスを含む、1つまたは複数の非一時的メモリデバイスを含んでよい。
図11に示されているように、ストレージサブシステム1118は、システムメモリ1110およびコンピュータ可読ストレージ媒体1122を含んでいる。システムメモリ1110は、プログラム実行中の命令およびデータの格納のための揮発性メインランダムアクセスメモリ(RAM:random access memory)、ならびに固定された命令が格納される不揮発性読み取り専用メモリ(ROM:read only memory)またはフラッシュメモリを含む、複数のメモリを含んでよい。一部の実装では、起動中などにコンピュータシステム1100内の要素間で情報を転送するのに役立つ基本ルーチンを含んでいる基本入出力システム(BIOS:basic input/output system)が、通常はROMに格納されてよい。RAMは、通常、処理サブシステム1104によって現在操作されて実行されているデータおよび/またはプログラムモジュールを含む。一部の実装では、システムメモリ1110は、スタティックランダムアクセスメモリ(SRAM:static random access memory)、ダイナミックランダムアクセスメモリ(DRAM:dynamic random access memory)などの、複数の異なる種類のメモリを含んでよい。
【0169】
制限ではなく例として、
図11に示されているように、システムメモリ1110は、ウェブブラウザ、ミッドティアアプリケーション、リレーショナルデータベース管理システム(RDBMS:relational database management system)などのさまざまなアプリケーションを含んでよい、実行されるアプリケーションプログラム1112、プログラムデータ1114、およびオペレーティングシステム1116を読み込んでよい。オペレーティングシステム1116の例としては、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinuxオペレーティングシステム、さまざまな市販されているUNIX(登録商標)またはUNIXのようなオペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが、これらに限定されない)、ならびに/あるいはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムなどの、さまざまなバージョンが挙げられ得る。
【0170】
コンピュータ可読ストレージ媒体1122は、一部の例の機能を提供するプログラミングおよびデータの構成を格納してよい。コンピュータ可読媒体1122は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータシステム1100の他のデータのストレージを提供してよい。処理サブシステム1104によって実行されたときに前述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)が、ストレージサブシステム1118に格納されてよい。コンピュータ可読ストレージ媒体1122の例としては、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、ブルーレイ(登録商標)ディスク、または他の光媒体などの光ディスクドライブなどの、不揮発性メモリが挙げられ得る。コンピュータ可読ストレージ媒体1122は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB:universal serial bus)フラッシュドライブ、セキュアデジタル(SD:secure digital)カード、DVDディスク、デジタルビデオテープなどを含んでよいが、これらに限定されない。コンピュータ可読ストレージ媒体1122は、フラッシュメモリベースのソリッドステートドライブ(SSD:solid-state drive)、エンタープライズフラッシュドライブ、半導体ROMなどの、不揮発性メモリに基づく半導体ドライブ(SSD:solid-state drive)、半導体RAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM:magnetoresistive RAM)SSDなどの、揮発性メモリに基づくSSD、ならびにDRAMとフラッシュメモリベースのSSDの組み合わせを使用するハイブリッドSSDを含んでもよい。
【0171】
ある例では、ストレージサブシステム1118は、コンピュータ可読ストレージ媒体1122にさらに接続され得るコンピュータ可読ストレージ媒体リーダ1120を含んでもよい。リーダ1120は、ディスク、フラッシュドライブなどのメモリデバイスからデータを受信し、読み取るように構成されてよい。
【0172】
ある例では、コンピュータシステム1100は、処理リソースおよびメモリリソースの仮想化を含むが、これに限定されない、仮想化技術をサポートしてよい。例えば、コンピュータシステム1100は、1つまたは複数の仮想マシンを実行することをサポートしてよい。ある例では、コンピュータシステム1100は、仮想マシンの構成および管理を容易にしたハイパーバイザなどのプログラムを実行してよい。各仮想マシンには、メモリリソース、計算リソース(例えば、プロセッサ、コア)、I/Oリソース、およびネットワークリソースが割り当てられてよい。各仮想マシンは、通常、他の仮想マシンとは無関係に稼働する。仮想マシンは、通常、それ自体のオペレーティングシステムを実行し、このオペレーティングシステムは、コンピュータシステム1100によって実行されている他の仮想マシンによって実行されるオペレーティングシステムと同じであるか、または異なってよい。したがって、コンピュータシステム1100によって複数のオペレーティングシステムが同時に実行される可能性がある。
【0173】
通信サブシステム1124は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム1124は、他のシステムからデータを受信するため、およびコンピュータシステム1100から他のシステムにデータを送信するためのインターフェイスとして機能する。例えば、通信サブシステム1124は、コンピュータシステム1100が、クライアントデバイスとの間で情報を受信および送信するために、インターネットを介して1つまたは複数のクライアントデバイスへの通信チャネルを確立することを可能にしてよい。例えば、コンピュータシステム1100が、
図1に示されたボットシステム120を実装するために使用される場合、通信サブシステムは、アプリケーションのために選択されたチャットボットシステムと通信するために使用されてよい。
【0174】
通信サブシステム1124は、有線通信プロトコルおよび/またはワイヤレス通信プロトコルの両方をサポートしてよい。ある例では、通信サブシステム1124は、ワイヤレス音声および/またはデータネットワークにアクセスするための無線周波(RF:radio frequency)トランシーバのコンポーネント(例えば、携帯電話技術、3G、4G、もしくはEDGE(enhanced data rates for global evolution:エンハンストデータレーツフォーグローバルエボリューション)などの高度なデータネットワーク技術、WiFi(IEEE 802.XX群規格)、または他の移動体通信技術、あるいはこれらの任意の組み合わせを使用する)、全地球測位システム(GPS:global positioning system)レシーバのコンポーネント、および/または他のコンポーネントを含んでよい。一部の例では、通信サブシステム1124は、ワイヤレスインターフェイスに加えて、またはワイヤレスインターフェイスの代わりに、有線ネットワーク接続(例えば、イーサネット)を提供してよい。
【0175】
通信サブシステム1124は、さまざまな形態でデータを受信および送信してよい。一部の例では、通信サブシステム1124は、他の形態に加えて、構造化および/または非構造化データフィード1126、イベントストリーム1128、イベント更新1130などの形態で入力通信を受信してよい。例えば、通信サブシステム1124は、Twitter(登録商標)フィード、Facebook(登録商標)の更新などのソーシャルメディアネットワークおよび/または他の通信サービスのユーザ、リッチサイトサマリー(RSS)フィードなどのウェブフィード、ならびに/あるいは1つまたは複数のサードパーティの情報源からのリアルタイムの更新から、データフィード1126をリアルタイムに受信する(または送信する)ように構成されてよい。
【0176】
ある例では、通信サブシステム1124は、連続データストリームの形態でデータを受信するように構成されてよく、連続データストリームは、明示的な末尾がなく、本質的に連続的であるか、または境界がなくてよいリアルタイムイベントのイベントストリーム1128および/またはイベント更新1130を含むことができる。連続データを生成するアプリケーションの例としては、例えば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などが挙げられ得る。
【0177】
通信サブシステム1124は、コンピュータシステム1100からのデータを他のコンピュータシステムまたはネットワークに伝達するように構成されてもよい。データは、構造化および/または非構造化データフィード1126、イベントストリーム1128、イベント更新1130などのさまざまな形態で、コンピュータシステム1100に結合された1つまたは複数のストリーミングデータソースコンピュータと通信することができる1つまたは複数のデータベースに伝達されてよい。
【0178】
コンピュータシステム1100は、ハンドヘルドポータブルデバイス(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、自動発券機、サーバラック、または任意の他のデータ処理システムを含む、さまざまな種類のうちの1つであってよい。コンピュータおよびネットワークの絶えず変化する性質のため、
図11に示されたコンピュータシステム1100の説明は、単に具体的な例となるよう意図されている。
図11に示されたシステムよりも多いか、または少ないコンポーネントを含んでいる多くの他の構成が可能である。本明細書において提供された開示および教示に基づいて、さまざまな例を実施するための他の手法および/または方法が存在するということが理解されるべきである。
【0179】
具体的な実施例が説明されたが、さまざまな修正、変更、代替の構造、および同等のものが可能である。実施例は、ある特定のデータ処理環境内の動作に制限されず、複数のデータ処理環境内で自由に動作できる。さらに、特定の一連のトランザクションおよびステップを使用して、ある実施例が説明されたが、これが制限することを意図されていないということが、当業者にとって明らかであるはずである。一部のフローチャートは逐次的プロセスとして動作を説明しているが、動作の多くが並列または同時に実行されてよい。加えて、動作の順序は再配置されてよい。プロセスは、図に含まれていない追加のステップを含んでよい。前述の実施例のさまざまな特徴および態様は、個別に、または一緒に使用されてよい。
【0180】
さらに、ハードウェアとソフトウェアの特定の組み合わせを使用して、ある実施例が説明されたが、ハードウェアとソフトウェアの他の組み合わせも可能であるということが認識されるべきである。ハードウェアのみにおいて、またはソフトウェアのみにおいて、あるいはこれらの組み合わせを使用して、ある実施例が実装されてよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせでの異なるプロセッサ上で実施されてよい。
【0181】
デバイス、システム、コンポーネント、またはモジュールが、ある動作または機能を実行するように構成されていると説明される場合、そのような構成は、例えば、この動作を実行するように電子回路を設計することによって、コンピュータ命令もしくはコードを実行することなどによってこの動作を実行するように、プログラム可能な電子回路(マイクロプロセッサなど)をプログラムすること、または非一時的記憶媒体に格納されたコードもしくは命令を実行するようにプログラムされるプロセッサもしくはコアをプログラムすることによって、あるいはこれらの任意の組み合わせによって、実現されてよい。プロセスは、プロセス間通信のための従来技術を含むが、これらに限定されないさまざまな技術を使用して通信してよく、プロセスの異なる対は、異なる技術を使用してよく、またはプロセスの同じ対は、異なる時間に異なる技術を使用してよい。
【0182】
本開示では、実施例の完全な理解を可能にするために、具体的な詳細が与えられる。しかし、実施例は、これらの具体的な詳細なしで実践されてよい。例えば、実施例を曖昧にするのを防ぐために、不必要な詳細なしで周知の回路、プロセス、アルゴリズム、構造、および技術が示されている。この説明は、単に例示的な実施例を提供しており、他の実施例の範囲、適用性、または構成を制限するよう意図されていない。むしろ、実施例の前述の説明は、さまざまな実施例を実施することを可能にする説明を当業者に提供する。要素の機能および配置において、さまざまな変更が行われてよい。
【0183】
したがって、本明細書および図面は、制限を意味するのではなく、例示であると見なされるべきである。しかし、特許請求の範囲に示されるようなより広い思想および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更が行われてよいということが、明らかである。したがって、特定の実施例が説明されたが、これらは制限することを意図されていない。さまざまな変更および同等のものが、以下の特許請求の範囲内にある。
【0184】
前述の明細書では、特定の実施例を参照して本開示の態様が説明されたが、当業者は、本開示がそれらに限定されないということを認識するであろう。前述の開示のさまざまな特徴および態様は、個別に、または一緒に使用されてよい。さらに、実施例は、本明細書のより広い思想および範囲から逸脱することなく、本明細書に記載された環境および応用を越えて、任意の数の環境および応用において利用されてよい。したがって、本明細書および図面は、制限ではなく例示であると見なされるべきである。
【0185】
前述の説明では、例示の目的で、特定の順序で方法が説明された。代替の実施例では、方法が説明された順序と異なる順序で実行されてよいということが理解されるべきである。前述の方法が、ハードウェアコンポーネントによって実行されてよく、あるいは命令を使用してプログラムされた汎用プロセッサもしく専用プロセッサまたは論理回路などのマシンに方法を実行させるために使用され得る一連の機械実行可能命令において具現化されてよいということも、理解されるべきである。これらの機械実行可能命令は、CD-ROMまたは他の種類の光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気カードまたは光カード、フラッシュメモリ、あるいは電子命令を格納するのに適した他の種類の機械可読媒体などの、1つまたは複数の機械可読媒体に格納されてよい。代替として、方法は、ハードウェアとソフトウェアの組み合わせによって実行されてよい。
【0186】
コンポーネントが、ある動作を実行するように構成されていると説明される場合、そのような構成は、例えば、この動作を実行するように電子回路または他のハードウェアを設計することによって、この動作を実行するようにプログラム可能な電子回路(例えば、マイクロプロセッサまたは他の適切な電子回路)をプログラムすることによって、あるいはこれらの任意の組み合わせによって、実現されてよい。
【0187】
本明細書では本出願の例示的な実施例が詳細に説明されたが、本発明の概念が他の方法でさまざまに具現化されて採用されてよいということ、および添付の特許請求の範囲が、従来技術によって制限されているものを除き、そのような変形を含むと解釈されるよう意図されているということが、理解されるべきである。
【国際調査報告】