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