IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特表2023-551861自然言語処理のための距離ベースのロジット値
<>
  • 特表-自然言語処理のための距離ベースのロジット値 図1
  • 特表-自然言語処理のための距離ベースのロジット値 図2
  • 特表-自然言語処理のための距離ベースのロジット値 図3
  • 特表-自然言語処理のための距離ベースのロジット値 図4
  • 特表-自然言語処理のための距離ベースのロジット値 図5
  • 特表-自然言語処理のための距離ベースのロジット値 図6
  • 特表-自然言語処理のための距離ベースのロジット値 図7
  • 特表-自然言語処理のための距離ベースのロジット値 図8
  • 特表-自然言語処理のための距離ベースのロジット値 図9
  • 特表-自然言語処理のための距離ベースのロジット値 図10
  • 特表-自然言語処理のための距離ベースのロジット値 図11
  • 特表-自然言語処理のための距離ベースのロジット値 図12
  • 特表-自然言語処理のための距離ベースのロジット値 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-13
(54)【発明の名称】自然言語処理のための距離ベースのロジット値
(51)【国際特許分類】
   G06F 16/90 20190101AFI20231206BHJP
   G06F 16/906 20190101ALI20231206BHJP
   G06F 40/279 20200101ALI20231206BHJP
   G06N 20/00 20190101ALI20231206BHJP
   G06N 3/08 20230101ALI20231206BHJP
【FI】
G06F16/90 100
G06F16/906
G06F40/279
G06N20/00
G06N3/08
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023532762
(86)(22)【出願日】2021-11-30
(85)【翻訳文提出日】2023-07-12
(86)【国際出願番号】 US2021061081
(87)【国際公開番号】W WO2022115736
(87)【国際公開日】2022-06-02
(31)【優先権主張番号】63/119,459
(32)【優先日】2020-11-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シュ,イン
(72)【発明者】
【氏名】ザレムーディ,ポーヤ
(72)【発明者】
【氏名】ブー,タン・ティエン
(72)【発明者】
【氏名】ホアン,コン・ズイ・ブー
(72)【発明者】
【氏名】ブリノフ,ブラディスラフ
(72)【発明者】
【氏名】ホング,ユ-ヘング
(72)【発明者】
【氏名】ダルマシリ,ヤクピティヤゲ・ドン・タヌジャ・サモッダイ
(72)【発明者】
【氏名】ビシュノイ,ビシャル
(72)【発明者】
【氏名】ジャラルッディン,エリアス・ルクマン
(72)【発明者】
【氏名】パレク,マニッシュ
(72)【発明者】
【氏名】ドゥオング,タン・ロング
(72)【発明者】
【氏名】ジョンソン,マーク・エドワード
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA01
5B175FA01
5B175FA03
(57)【要約】
自然言語処理においてチャットボットシステムに入力される発話およびメッセージを分類するためにロジット値を使用するための技術。ある方法は、チャットボットシステムと対話するユーザによって生成された発話を受信するチャットボットシステムを含むことができる。チャットボットシステムは、バイナリ分類器のセットを含む機械学習モデルに発話を入力することができる。バイナリ分類器のセットの各バイナリ分類器は、修正されたロジット関数に関連付けられることができる。本方法はまた、発話について距離ベースのロジット値のセットを生成するために、修正されたロジット関数を使用する機械学習モデルを含むことができる。本方法はまた、機械学習モデルが、強化された活性化関数を距離ベースのロジット値のセットに適用して、予測される出力を生成することを含むことができる。本方法はまた、チャットボットシステムが、予測される出力に基づいて、発話を特定のクラスに関連付けられるものとして分類することを含むことができる。
【特許請求の範囲】
【請求項1】
方法であって、
チャットボットシステムが、前記チャットボットシステムと対話するユーザによって生成された発話を受信することを含み、前記発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記方法はさらに、
前記チャットボットシステムが、バイナリ分類器のセットを含む機械学習モデルに前記発話を入力することを含み、前記バイナリ分類器のセットの各バイナリ分類器は、(i)前記発話が前記クラスのセットのうちのあるクラスに対応する確率を推定するよう構成され、(ii)前記あるクラスに対する前記確率を実数に変換する修正されたロジット関数に関連付けられ、前記修正されたロジット関数は、前記あるクラスに対する前記確率に対応するオッズの対数であり、前記オッズの対数は、前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる分布の重心との間で測定される距離に基づいて求められ、前記方法はさらに、
前記機械学習モデルが、前記発話について距離ベースのロジット値のセットを生成することを含み、前記距離ベースのロジット値のセットの各距離ベースのロジット値は、
前記バイナリ分類器のセットのそれぞれのバイナリ分類器が、前記発話が前記それぞれのバイナリ分類器に関連付けられるクラスに対応するそれぞれの確率を求めることと、
前記それぞれのバイナリ分類器が、前記修正されたロジット関数に基づいて、前記それぞれの確率を前記距離ベースのロジット値にマッピングすることとによって生成され、前記マッピングは、前記それぞれの確率と、前記それぞれのバイナリ分類器に関連付けられる前記クラスに関連付けられる分布の重心との間で測定されるそれぞれの距離を使用することを含み、前記方法はさらに、
前記機械学習モデルが、強化された活性化関数を前記距離ベースのロジット値のセットに適用して、予測される出力を生成することを含み、前記予測される出力は、前記発話がある確率分布内において前記クラスのセットのうちの特定のクラスに対応するかどうかを予測する正規化された確率を識別し、前記強化された活性化関数は、前記正規化された確率を求めるために前記強化された活性化関数の初期出力を正規化するための学習されたパラメータを含み、前記方法はさらに、
前記チャットボットシステムが、前記予測される出力に基づいて、前記発話を前記特定のクラスに関連付けられるものとして分類することを含む、方法。
【請求項2】
前記チャットボットシステムが、前記発話の前記特定のクラスに関連付けられているものとしての前記分類に基づいて、前記ユーザに応答することをさらに含む、請求項1に記載の方法。
【請求項3】
総損失を求めるために、前記予測される出力、および前記発話に対応する期待される出力に、強化された損失関数を適用することによって、前記機械学習モデルをトレーニングすることをさらに含み、前記総損失は、前記機械学習モデルの1つ以上のパラメータを調整するために使用され、前記強化された損失関数は、前記総損失を求めるための損失項のセットを含み、前記損失項のセットは、(i)バイナリ交差エントロピー損失項、(ii)平均二乗誤差項、(iii)マージン損失項、および(iv)閾値損失項を含む、請求項1または2に記載の方法。
【請求項4】
前記損失項のセットの各損失項は重みパラメータに関連付けられ、前記機械学習モデルの前記トレーニングは、前記総損失に基づいて、前記損失項のセットの損失項の前記重みパラメータを調整することを含む、請求項3に記載の方法。
【請求項5】
前記機械学習モデルの前記トレーニングは、前記総損失に基づいて前記強化された活性化関数の前記学習されたパラメータを調整することを含む、請求項3に記載の方法。
【請求項6】
前記マージン損失項は、0.1の最小信頼度マージンを特定する、請求項3~5のいずれか1項に記載の方法。
【請求項7】
前記閾値損失項は、0.5の最小閾値信頼度を特定する、請求項3~5のいずれか1項に記載の方法。
【請求項8】
前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる前記分布の前記重心との間で測定される前記距離は、ユークリッド距離または余弦距離の1つである、請求項1~7のいずれか1項に記載の方法。
【請求項9】
システムであって、
1つ以上のデータプロセッサと、
命令を含む非一時的なコンピュータ可読記憶媒体とを備え、前記命令は、前記1つ以上のデータプロセッサ上で実行されると、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
前記チャットボットシステムと対話するユーザによって生成された発話を受信することを含み、前記発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記動作はさらに、
バイナリ分類器のセットを含む機械学習モデルに前記発話を入力することを含み、前記バイナリ分類器のセットの各バイナリ分類器は、(i)前記発話が前記クラスのセットのうちのあるクラスに対応する確率を推定するよう構成され、(ii)前記あるクラスに対する前記確率を実数に変換する修正されたロジット関数に関連付けられ、前記修正されたロジット関数は、前記あるクラスに対する前記確率に対応するオッズの対数であり、前記オッズの対数は、前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる分布の重心との間で測定される距離に基づいて求められ、前記動作はさらに、
前記機械学習モデルが、前記発話について距離ベースのロジット値のセットを生成することを含み、前記距離ベースのロジット値のセットの各距離ベースのロジット値は、
前記バイナリ分類器のセットのそれぞれのバイナリ分類器が、前記発話が前記それぞれのバイナリ分類器に関連付けられるクラスに対応するそれぞれの確率を求めることと、
前記それぞれのバイナリ分類器が、前記修正されたロジット関数に基づいて、前記それぞれの確率を前記距離ベースのロジット値にマッピングすることとによって生成され、前記マッピングは、前記それぞれの確率と、前記それぞれのバイナリ分類器に関連付けられる前記クラスに関連付けられる分布の重心との間で測定されるそれぞれの距離を使用することを含み、前記動作はさらに、
前記機械学習モデルが、強化された活性化関数を前記距離ベースのロジット値のセットに適用して、予測される出力を生成することを含み、前記予測される出力は、前記発話がある確率分布内において前記クラスのセットのうちの特定のクラスに対応するかどうかを予測する正規化された確率を識別し、前記強化された活性化関数は、前記正規化された確率を求めるために前記強化された活性化関数の初期出力を正規化するための学習されたパラメータを含み、前記動作はさらに、
前記予測される出力に基づいて、前記発話を前記特定のクラスに関連付けられるものとして分類することを含む、システム。
【請求項10】
前記命令はさらに、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
前記発話の前記特定のクラスに関連付けられているものとしての前記分類に基づいて、前記ユーザに応答することを含む、請求項9に記載のシステム。
【請求項11】
前記命令はさらに、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
総損失を求めるために、前記予測される出力、および前記発話に対応する期待される出力に、強化された損失関数を適用することによって、前記機械学習モデルをトレーニングすることを含み、前記総損失は、前記機械学習モデルの1つ以上のパラメータを調整するために使用され、前記強化された損失関数は、前記総損失を求めるための損失項のセットを含み、前記損失項のセットは、(i)バイナリ交差エントロピー損失項、(ii)平均二乗誤差項、(iii)マージン損失項、および(iv)閾値損失項を含む、請求項9または10に記載のシステム。
【請求項12】
前記損失項のセットの各損失項は重みパラメータに関連付けられ、前記機械学習モデルの前記トレーニングは、前記総損失に基づいて、前記損失項のセットの損失項の前記重みパラメータを調整することを含む、請求項11に記載のシステム。
【請求項13】
前記機械学習モデルの前記トレーニングは、前記総損失に基づいて前記強化された活性化関数の前記学習されたパラメータを調整することを含む、請求項11に記載のシステム。
【請求項14】
前記マージン損失項は、0.1の最小信頼度マージンを特定する、請求項11~13のいずれか1項に記載のシステム。
【請求項15】
前記閾値損失項は、0.5の最小閾値信頼度を特定する、請求項11~13のいずれか1項に記載のシステム。
【請求項16】
前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる前記分布の前記重心との間で測定される前記距離は、ユークリッド距離または余弦距離の1つである、請求項9~15のいずれか1項に記載のシステム。
【請求項17】
1つ以上のデータプロセッサに、動作を実行させるよう構成される命令を含む、非一時的な機械可読記憶媒体において有形に具現化されたコンピュータプログラム製品であって、前記動作は、
前記チャットボットシステムと対話するユーザによって生成された発話を受信することを含み、前記発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記動作はさらに、
バイナリ分類器のセットを含む機械学習モデルに前記発話を入力することを含み、前記バイナリ分類器のセットの各バイナリ分類器は、(i)前記発話が前記クラスのセットのうちのあるクラスに対応する確率を推定するよう構成され、(ii)前記あるクラスに対する前記確率を実数に変換する修正されたロジット関数に関連付けられ、前記修正されたロジット関数は、前記あるクラスに対する前記確率に対応するオッズの対数であり、前記オッズの対数は、前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる分布の重心との間で測定される距離に基づいて求められ、前記動作はさらに、
前記機械学習モデルが、前記発話について距離ベースのロジット値のセットを生成することを含み、前記距離ベースのロジット値のセットの各距離ベースのロジット値は、
前記バイナリ分類器のセットのそれぞれのバイナリ分類器が、前記発話が前記それぞれのバイナリ分類器に関連付けられるクラスに対応するそれぞれの確率を求めることと、
前記それぞれのバイナリ分類器が、前記修正されたロジット関数に基づいて、前記それぞれの確率を前記距離ベースのロジット値にマッピングすることとによって生成され、前記マッピングは、前記それぞれの確率と、前記それぞれのバイナリ分類器に関連付けられる前記クラスに関連付けられる分布の重心との間で測定されるそれぞれの距離を使用することを含み、前記動作はさらに、
前記機械学習モデルが、強化された活性化関数を前記距離ベースのロジット値のセットに適用して、予測される出力を生成することを含み、前記予測される出力は、前記発話がある確率分布内において前記クラスのセットのうちの特定のクラスに対応するかどうかを予測する正規化された確率を識別し、前記強化された活性化関数は、前記正規化された確率を求めるために前記強化された活性化関数の初期出力を正規化するための学習されたパラメータを含み、前記動作はさらに、
前記予測される出力に基づいて、前記発話を前記特定のクラスに関連付けられるものとして分類することを含む、コンピュータプログラム製品。
【請求項18】
前記命令はさらに、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
前記発話の前記特定のクラスに関連付けられているものとしての前記分類に基づいて、前記ユーザに応答することを含む、請求項17に記載のコンピュータプログラム製品。
【請求項19】
前記命令はさらに、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
総損失を求めるために、前記予測される出力、および前記発話に対応する期待される出力に、強化された損失関数を適用することによって、前記機械学習モデルをトレーニングすることを含み、前記総損失は、前記機械学習モデルの1つ以上のパラメータを調整するために使用され、前記強化された損失関数は、前記総損失を求めるための損失項のセットを含み、前記損失項のセットは、(i)バイナリ交差エントロピー損失項、(ii)平均二乗誤差項、(iii)マージン損失項、および(iv)閾値損失項を含む、請求項17または18に記載のコンピュータプログラム製品。
【請求項20】
前記損失項のセットの各損失項は重みパラメータに関連付けられ、前記機械学習モデルの前記トレーニングは、前記総損失に基づいて、前記損失項のセットの損失項の前記重みパラメータを調整することを含む、請求項19に記載のコンピュータプログラム製品。
【請求項21】
前記機械学習モデルの前記トレーニングは、前記総損失に基づいて前記強化された活性化関数の前記学習されたパラメータを調整することを含む、請求項19に記載のコンピュータプログラム製品。
【請求項22】
前記マージン損失項は、0.1の最小信頼度マージンを特定する、請求項19~21のいずれか1項に記載のコンピュータプログラム製品。
【請求項23】
前記閾値損失項は、0.5の最小閾値信頼度を特定する、請求項19~21のいずれか1項に記載のコンピュータプログラム製品。
【請求項24】
前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる前記分布の前記重心との間で測定される前記距離は、ユークリッド距離または余弦距離の1つである、請求項17~23のいずれか1項に記載のコンピュータプログラム製品。
【請求項25】
方法であって、
トレーニングサブシステムが、トレーニングデータセットを受信することを含み、前記トレーニングデータセットは、チャットボットシステムと対話するユーザによって生成された複数の発話を含み、前記複数の発話のうちの少なくとも1つの発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記方法はさらに、
前記トレーニングサブシステムが、バイナリ分類器のセットを含む機械学習モデルを評価することを含み、前記バイナリ分類器のセットの各バイナリ分類器は、(i)前記発話が前記クラスのセットのうちのあるクラスに対応する確率を推定するよう構成され、(ii)前記あるクラスに対する前記確率を実数に変換する修正されたロジット関数に関連付けられ、前記修正されたロジット関数は、前記あるクラスに対する前記確率に対応するオッズの対数であり、前記オッズの対数は、前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる分布の重心との間で測定される距離に基づいて求められ、前記方法はさらに、
前記トレーニングサブシステムが、前記トレーニングデータセットを用いて前記機械学習モデルの前記バイナリ分類器のセットをトレーニングすることを含み、前記トレーニングは、
前記バイナリ分類器のセットの各バイナリ分類器について、
前記トレーニングデータセットの発話が前記バイナリ分類器に関連付けられるクラスに対応するそれぞれの確率を求めることと、
前記修正されたロジット関数に基づいて、前記バイナリ分類器に関連付けられる前記クラスについての前記それぞれの確率を距離ベースのロジット値にマッピングすることとを含み、前記マッピングすることは、前記それぞれの確率と、前記バイナリ分類器に関連付けられる前記クラスに関連付けられる分布の重心との間で測定されるそれぞれの距離を使用することを含み、前記トレーニングは、さらに、前記バイナリ分類器のセットの各バイナリ分類器について、
強化された活性化関数を前記距離ベースのロジット値に適用して、前記クラスについて予測される出力を生成することを含み、前記予測される出力は、前記発話がある確率分布内において前記クラスに対応するかどうかを予測する正規化された確率を識別し、前記強化された活性化関数は、前記正規化された確率を求めるために前記強化された活性化関数の初期出力を正規化するための学習されたパラメータを含み、前記トレーニングは、さらに、前記バイナリ分類器のセットの各バイナリ分類器について、
総損失を求めるために、前記予測される出力、および前記発話の期待される出力に強化された損失関数を適用することを含み、前記強化された損失関数は、前記総損失を求めるための損失項のセットを含み、前記損失項のセットは、(i)バイナリ交差エントロピー損失項、(ii)平均二乗誤差項、(iii)マージン損失項、および(iv)閾値損失項を含み、前記トレーニングは、さらに、前記バイナリ分類器のセットの各バイナリ分類器について、
前記バイナリ分類器の1つ以上のパラメータを調整すること含み、前記1つ以上のパラメータは、前記強化された活性化関数の前記学習されたパラメータを含み、前記方法はさらに、
前記トレーニングサブシステムが、前記トレーニングされた機械学習モデルを展開することを含む、方法。
【請求項26】
前記損失項のセットの各損失項は重みパラメータに関連付けられ、前記機械学習モデルの前記トレーニングは、前記総損失に基づいて、前記損失項のセットの損失項の前記重みパラメータを調整することを含む、請求項25に記載の方法。
【請求項27】
前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる前記分布の前記重心との間で測定される前記距離は、ユークリッド距離または余弦距離の1つである、請求項25または請求項26に記載の方法。
【請求項28】
前記機械学習モデルの前記トレーニングは、
前記トレーニングデータセットの第1のトレーニングサブデータセットを用いて前記バイナリ分類器のセットの第1のバイナリ分類器をトレーニングすることと、
前記トレーニングデータセットの第2のトレーニングサブデータセットを用いて前記バイナリ分類器のセットの第2のバイナリ分類器をトレーニングすることとを含み、前記第2のトレーニングサブデータセットは、前記複数の発話のうち、前記第1のトレーニングサブデータセットに存在しない1つ以上の発話を含む、請求項25~27のいずれか1項に記載の方法。
【請求項29】
前記マージン損失項は、0.1の最小信頼度マージンを特定する、請求項25~28のいずれか1項に記載の方法。
【請求項30】
前記閾値損失項は、0.5の最小閾値信頼度を特定する、請求項25~28のいずれか1項に記載の方法。
【請求項31】
システムであって、
1つ以上のデータプロセッサと、
命令を含む非一時的なコンピュータ可読記憶媒体とを備え、前記命令は、前記1つ以上のデータプロセッサ上で実行されると、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
トレーニングデータセットを受信することを含み、前記トレーニングデータセットは、チャットボットシステムと対話するユーザによって生成された複数の発話を含み、前記複数の発話のうちの少なくとも1つの発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記動作はさらに、
バイナリ分類器のセットを含む機械学習モデルを評価することを含み、前記バイナリ分類器のセットの各バイナリ分類器は、(i)前記発話が前記クラスのセットのうちのあるクラスに対応する確率を推定するよう構成され、(ii)前記あるクラスに対する前記確率を実数に変換する修正されたロジット関数に関連付けられ、前記修正されたロジット関数は、前記あるクラスに対する前記確率に対応するオッズの対数であり、前記オッズの対数は、前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる分布の重心との間で測定される距離に基づいて求められ、前記動作はさらに、
前記トレーニングデータセットを用いて前記機械学習モデルの前記バイナリ分類器のセットをトレーニングすることを含み、前記トレーニングは、
前記バイナリ分類器のセットの各バイナリ分類器について、
前記トレーニングデータセットの発話が前記バイナリ分類器に関連付けられるクラスに対応するそれぞれの確率を求めることと、
前記修正されたロジット関数に基づいて、前記バイナリ分類器に関連付けられる前記クラスについての前記それぞれの確率を距離ベースのロジット値にマッピングすることとを含み、前記マッピングすることは、前記それぞれの確率と、前記バイナリ分類器に関連付けられる前記クラスに関連付けられる分布の重心との間で測定されるそれぞれの距離を使用することを含み、前記トレーニングは、さらに、前記バイナリ分類器のセットの各バイナリ分類器について、
強化された活性化関数を前記距離ベースのロジット値に適用して、前記クラスについて予測される出力を生成することを含み、前記予測される出力は、前記発話がある確率分布内において前記クラスに対応するかどうかを予測する正規化された確率を識別し、前記強化された活性化関数は、前記正規化された確率を求めるために前記強化された活性化関数の初期出力を正規化するための学習されたパラメータを含み、前記トレーニングは、さらに、前記バイナリ分類器のセットの各バイナリ分類器について、
総損失を求めるために、前記予測される出力、および前記発話の期待される出力に強化された損失関数を適用することを含み、前記強化された損失関数は、前記総損失を求めるための損失項のセットを含み、前記損失項のセットは、(i)バイナリ交差エントロピー損失項、(ii)平均二乗誤差項、(iii)マージン損失項、および(iv)閾値損失項を含み、前記トレーニングは、さらに、前記バイナリ分類器のセットの各バイナリ分類器について、
前記バイナリ分類器の1つ以上のパラメータを調整すること含み、前記1つ以上のパラメータは、前記強化された活性化関数の前記学習されたパラメータを含み、前記動作はさらに、
前記トレーニングされた機械学習モデルを展開することを含む、システム。
【請求項32】
前記損失項のセットの各損失項は重みパラメータに関連付けられ、前記機械学習モデルの前記トレーニングは、前記総損失に基づいて、前記損失項のセットの損失項の前記重みパラメータを調整することを含む、請求項31に記載のシステム。
【請求項33】
前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる前記分布の前記重心との間で測定される前記距離は、ユークリッド距離または余弦距離の1つである、請求項31または請求項32に記載のシステム。
【請求項34】
前記機械学習モデルの前記トレーニングは、
前記トレーニングデータセットの第1のトレーニングサブデータセットを用いて前記バイナリ分類器のセットの第1のバイナリ分類器をトレーニングすることと、
前記トレーニングデータセットの第2のトレーニングサブデータセットを用いて前記バイナリ分類器のセットの第2のバイナリ分類器をトレーニングすることとを含み、前記第2のトレーニングサブデータセットは、前記複数の発話のうち、前記第1のトレーニングサブデータセットに存在しない1つ以上の発話を含む、請求項31~33のいずれか1項に記載のシステム。
【請求項35】
前記マージン損失項は、0.1の最小信頼度マージンを特定する、請求項31~34のいずれか1項に記載のシステム。
【請求項36】
前記閾値損失項は、0.5の最小閾値信頼度を特定する、請求項31~34のいずれか1項に記載のシステム。
【請求項37】
1つ以上のデータプロセッサに、動作を実行させるよう構成される命令を含む、非一時的な機械可読記憶媒体において有形に具現化されたコンピュータプログラム製品であって、前記動作は、
トレーニングデータセットを受信することを含み、前記トレーニングデータセットは、チャットボットシステムと対話するユーザによって生成された複数の発話を含み、前記複数の発話のうちの少なくとも1つの発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記動作はさらに、
バイナリ分類器のセットを含む機械学習モデルを評価することを含み、前記バイナリ分類器のセットの各バイナリ分類器は、(i)前記発話が前記クラスのセットのうちのあるクラスに対応する確率を推定するよう構成され、(ii)前記あるクラスに対する前記確率を実数に変換する修正されたロジット関数に関連付けられ、前記修正されたロジット関数は、前記あるクラスに対する前記確率に対応するオッズの対数であり、前記オッズの対数は、前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる分布の重心との間で測定される距離に基づいて求められ、前記動作はさらに、
前記トレーニングデータセットを用いて前記機械学習モデルの前記バイナリ分類器のセットをトレーニングすることを含み、前記トレーニングは、
前記バイナリ分類器のセットの各バイナリ分類器について、
前記トレーニングデータセットの発話が前記バイナリ分類器に関連付けられるクラスに対応するそれぞれの確率を求めることと、
前記修正されたロジット関数に基づいて、前記バイナリ分類器に関連付けられる前記クラスについての前記それぞれの確率を距離ベースのロジット値にマッピングすることとを含み、前記マッピングすることは、前記それぞれの確率と、前記バイナリ分類器に関連付けられる前記クラスに関連付けられる分布の重心との間で測定されるそれぞれの距離を使用することを含み、前記トレーニングは、さらに、前記バイナリ分類器のセットの各バイナリ分類器について、
強化された活性化関数を前記距離ベースのロジット値に適用して、前記クラスについて予測される出力を生成することを含み、前記予測される出力は、前記発話がある確率分布内において前記クラスに対応するかどうかを予測する正規化された確率を識別し、前記強化された活性化関数は、前記正規化された確率を求めるために前記強化された活性化関数の初期出力を正規化するための学習されたパラメータを含み、前記トレーニングは、さらに、前記バイナリ分類器のセットの各バイナリ分類器について、
総損失を求めるために、前記予測される出力、および前記発話の期待される出力に強化された損失関数を適用することを含み、前記強化された損失関数は、前記総損失を求めるための損失項のセットを含み、前記損失項のセットは、(i)バイナリ交差エントロピー損失項、(ii)平均二乗誤差項、(iii)マージン損失項、および(iv)閾値損失項を含み、前記トレーニングは、さらに、前記バイナリ分類器のセットの各バイナリ分類器について、
前記バイナリ分類器の1つ以上のパラメータを調整すること含み、前記1つ以上のパラメータは、前記強化された活性化関数の前記学習されたパラメータを含み、前記動作はさらに、
前記トレーニングされた機械学習モデルを展開することを含む、コンピュータプログラム製品。
【請求項38】
前記損失項のセットの各損失項は重みパラメータに関連付けられ、前記機械学習モデルの前記トレーニングは、前記総損失に基づいて、前記損失項のセットの損失項の前記重みパラメータを調整することを含む、請求項37に記載のコンピュータプログラム製品。
【請求項39】
前記あるクラスに対する前記確率と、前記あるクラスに関連付けられる前記分布の前記重心との間で測定される前記距離は、ユークリッド距離または余弦距離の1つである、請求項37または請求項38に記載のコンピュータプログラム製品。
【請求項40】
前記機械学習モデルの前記トレーニングは、
前記トレーニングデータセットの第1のトレーニングサブデータセットを用いて前記バイナリ分類器のセットの第1のバイナリ分類器をトレーニングすることと、
前記トレーニングデータセットの第2のトレーニングサブデータセットを用いて前記バイナリ分類器のセットの第2のバイナリ分類器をトレーニングすることとを含み、前記第2のトレーニングサブデータセットは、前記複数の発話のうち、前記第1のトレーニングサブデータセットに存在しない1つ以上の発話を含む、請求項37~39のいずれか1項に記載のコンピュータプログラム製品。
【請求項41】
前記マージン損失項は、0.1の最小信頼度マージンを特定する、請求項37~40のいずれか1項に記載のコンピュータプログラム製品。
【請求項42】
前記閾値損失項は、0.5の最小閾値信頼度を特定する、請求項37~40のいずれか1項に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の参照
本出願は、2020年11月30日提出の米国仮出願63/119,459の利益を主張し、その内容は、あらゆる目的のためにその全体が参照により本明細書に組み込まれる。
【0002】
技術分野
本開示は、概してチャットボットシステムに関し、より詳細には、自然言語処理においてチャットボットシステムに入力される発話およびメッセージを分類するためのロジット値を求めるための技術に関する。
【背景技術】
【0003】
背景
世界中の多くのユーザは、即時反応を得るためにインスタントメッセージングまたはチャットプラットフォーム上にいる。組織は、しばしば、これらのインスタントメッセージングまたはチャットプラットフォームを用いて、顧客(またはエンドユーザ)とライブ会話に携わる。しかしながら、顧客またはエンドユーザとのライブ通信に携わるためにサービス人員を雇用することは、組織にとって非常に費用がかかり得る。チャットボットまたはボットは、特にインターネット上で、エンドユーザとの会話をシミュレートするために開発され始めた。エンドユーザは、エンドユーザが既にインストールし使用しているメッセージングアプリを介してボットと通信することができる。一般に人工知能(AI)によって駆動されるインテリジェントなボットは、ライブ会話において、より知的にかつ文脈に沿って通信することができ、したがって、改善された会話体験のために、ボットとエンドユーザとの間の、より自然な会話を可能にすることができる。ボットが応答の仕方を知っているキーワードまたはコマンドの固定セットをエンドユーザが学習する代わりに、インテリジェントなボットは、自然言語でのエンドユーザ発話に基づいてエンドユーザの意図を理解し、それに応じて応答することができる。
【発明の概要】
【0004】
概要
自然言語処理においてチャットボットシステムに入力される発話およびメッセージを分類するための技術が提供される。ある方法は、チャットボットシステムと対話するユーザによって生成された発話を受信するチャットボットシステムを含むことができる。発話は、ユーザによって入力された音声から変換されたテキストデータを含むことができる。チャットボットシステムは、バイナリ分類器のセットを含む機械学習モデルに発話を入力することができる。バイナリ分類器のセットの各バイナリ分類器は、(i)発話がクラスのセットのうちのあるクラスに対応する確率を推定するよう構成されることができ、(ii)当該あるクラスに対する確率を実数に変換する修正されたロジット関数に関連付けられることができる。修正されたロジット関数は、当該あるクラスに対する確率に対応するオッズの対数とすることができ、オッズの対数は、当該あるクラスに対する確率と当該あるクラスに関連付けられる分布の重心との間で測定される距離に基づいて求められる。
【0005】
本方法はまた、機械学習モデルが発話に対して距離ベースのロジット値のセットを生成することを含むことができる。いくつかの例では、距離ベースのロジット値のセットの各距離ベースのロジット値は、(i)バイナリ分類器のセットのそれぞれのバイナリ分類器が、発話がそれぞれのバイナリ分類器に関連付けられるクラスに対応するそれぞれの確率を求めること、および(ii)それぞれのバイナリ分類器が、修正されたロジット関数に基づいて、それぞれの確率を距離ベースのロジット値にマッピングすることによって、生成される。マッピングは、それぞれの確率とそれぞれのバイナリ分類器に関連付けられるクラスに関連付けられる分布の重心との間で測定されるそれぞれの距離を使用することを含むことができる。
【0006】
本方法はまた、機械学習モデルが、強化された活性化関数を距離ベースのロジット値のセットに適用して、予測される出力を生成することを含むことができる。予測される出力は、発話がある確率分布内においてクラスのセットのうちの特定のクラスに対応するかどうかを予測する正規化された確率を識別することができる。強化された活性化関数は、正規化された確率を求めるために強化された活性化関数の初期出力を正規化するための学習されたパラメータを含むことができる。
【0007】
本方法はまた、チャットボットシステムが、予測される出力に基づいて、発話を特定のクラスに関連付けられるものとして分類することを含むことができる。
【0008】
発話およびメッセージを分類するために距離ベースのロジット値を使用する機械学習モデルをトレーニングするための技術も提供される。本方法は、トレーニングサブシステムがトレーニングデータセットを受信することを含むことができる。トレーニングデータセットは、チャットボットシステムと対話するユーザによって生成された複数の発話を含むことができる。複数の発話のうちの少なくとも1つの発話は、ユーザの音声入力から変換されたテキストデータを含むことができる。トレーニングサブシステムは、バイナリ分類器のセットを含む機械学習モデルにアクセスすることができる。バイナリ分類器のセットの各バイナリ分類器は、(i)発話がクラスのセットのうちのあるクラスに対応する確率を推定するよう構成されることができ、(ii)当該あるクラスに対する確率を実数に変換する修正されたロジット関数に関連付けられることができる。いくつかの例では、修正されたロジット関数は、当該あるクラスに対する確率に対応するオッズの対数であり、オッズの対数は、当該あるクラスに対する確率と当該あるクラスに関連付けられる分布の重心との間で測定される距離に基づいて求められる。
【0009】
本方法はまた、トレーニングサブシステムが、トレーニングデータセットを用いて機械学習モデルのバイナリ分類器のセットをトレーニングすることを含むことができる。トレーニングは、バイナリ分類器のセットの各バイナリ分類器について、トレーニングデータセットの発話がバイナリ分類器に関連付けられるクラスに対応するそれぞれの確率を求めることを含むことができる。トレーニングはまた、修正されたロジット関数に基づいて、バイナリ分類器に関連付けられるクラスについてのそれぞれの確率を距離ベースのロジット値にマッピングすることを含むことができる。マッピングは、それぞれの確率とバイナリ分類器に関連付けられるクラスに関連付けられる分布の重心との間で測定されるそれぞれの距離を使用することを含むことができる。
【0010】
トレーニングはまた、強化された活性化関数を距離ベースのロジット値に適用して、クラスについて予測される出力を生成することを含むことができる。予測される出力は、発話が確率分布内でクラスに対応するかどうかを予測する正規化された確率を識別することができる。強化された活性化関数は、正規化された確率を求めるために強化された活性化関数の初期出力を正規化するための学習されたパラメータを含むことができる。トレーニングはまた、発話の予測される出力および期待される出力に強化された損失関数を適用して総損失を求めることを含むことができる。強化された損失関数は、総損失を求めるための損失項のセットを含むことができ、損失項のセットは、(i)バイナリ交差エントロピー損失項、(ii)平均二乗誤差項、(iii)マージン損失項、および(iv)閾値損失項を含む。トレーニングはまた、バイナリ分類器の1つ以上のパラメータを調整することを含むことができ、1つ以上のパラメータは、強化された活性化関数の学習されたパラメータを含む。
【0011】
機械学習モデルのトレーニングが実行されると、本方法は、トレーニングサブシステムがそのトレーニングされた機械学習モデルを展開することを含むこともできる。
【0012】
いくつかの実施形態では、1つ以上のデータプロセッサと、1つ以上のデータプロセッサ上で実行されると1つ以上のデータプロセッサにここに開示される1つ以上の方法の一部またはすべてを実行させる命令を含む非一時的コンピュータ可読記憶媒体とを含む、システムが提供される。
【0013】
いくつかの実施形態では、非一時的な機械可読記憶媒体において有形に具現化され、1つ以上のデータプロセッサにここで開示される1つ以上の方法の一部またはすべてを実行させるように構成される命令を含むコンピュータプログラム製品が提供される。
【0014】
本開示のいくつかの実施形態は、1つ以上のデータプロセッサを含むシステムを含む。いくつかの実施形態では、システムは、1つ以上のデータプロセッサ上で実行されると1つ以上のデータプロセッサにここで開示される1つ以上の方法の一部もしくはすべて、および/または1つ以上のプロセスの一部もしくはすべてを実行させる命令を含む、非一時的コンピュータ可読記憶媒体を含む。本開示のいくつかの実施形態は、1つ以上のデータプロセッサにここで開示される1つ以上の方法の一部もしくはすべておよび/または1つ以上のプロセスの一部もしくはすべてを実行させるように構成される命令を含む、非一時的機械可読記憶媒体において有形に具現化されるコンピュータプログラム製品を含む。
【0015】
上記および以下で説明する技術は、いくつかの方法で、およびいくつかの状況で実現され得る。いくつかの例示的な実現例および状況が、以下でより詳細に説明されるように、以下の図面を参照して提供される。しかしながら、以下の実現例および状況は、多くのうちの少数にすぎない。
【図面の簡単な説明】
【0016】
図1】例示的な実施形態を組み込んだ分散環境の簡略化されたブロック図である。
図2】ある実施形態による、マスタボットを実現するコンピューティングシステムの簡略化されたブロック図である。
図3】ある実施形態による、スキルボットを実現するコンピューティングシステムの簡略化されたブロック図である。
図4】様々な実施形態によるチャットボットトレーニングおよび展開システムの簡略化されたブロック図である。
図5】いくつかの実施形態による、例示的なニューラルネットワークの概略図を示す。
図6】いくつかの実施形態による、距離ベースのロジット値を求めるためにロジット関数を修正するための例示的なプロセスを示すフローチャートである。
図7】いくつかの実施形態による、発話が特定のクラスに対応する確率を推定するために活性化関数を修正するための例示的なプロセスを示すフローチャートである。
図8】いくつかの実施形態による、発話が特定のクラスに対応する確率を推定するために損失関数を修正するための例示的なプロセスを示すフローチャートである。
図9】いくつかの実施形態による、発話を分類するために距離ベースのロジット値を使用する機械学習モデルをトレーニングするためのプロセスを示すフローチャートである。
図10】いくつかの実施形態による、距離ベースのロジット値を使用して発話またはメッセージのインテントを分類するためのプロセスを示すフローチャートである。
図11】様々な実施形態を実現するための分散型システムの簡略図である。
図12】様々な実施形態による、実施形態のシステムの1つ以上のコンポーネントによって提供されるサービスがクラウドサービスとして提供され得る、システム環境の1つ以上のコンポーネントの簡略ブロック図である。
図13】様々な実施形態を実現するために用いられ得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0017】
詳細な説明
以下の説明では、説明の目的のために、特定の詳細が、特定の実施形態の完全な理解を促すために記載される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実施され得ることは明らかであろう。図および記載は、限定することを意図したものではない。「例示的」という用語は、ここでは、「例、事例、または例示として供される」ことを意味するために用いられる。「例示的」としてここに記載される任意の実施形態または設計は、必ずしも、他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0018】
A.概要
1.インテント
デジタルアシスタントは、ユーザが自然言語会話において様々なタスクを達成するのを助ける人工知能駆動型インターフェイスである。各デジタルアシスタントについて、顧客は、1つ以上のスキルをアセンブルすることができる。スキル(ここでは、チャットボット、ボット、またはスキルボットとしても記載される)は、在庫の追跡、タイムカードの提出、および経費報告の作成など、特定の種類のタスクに焦点を当てる個々のボットである。エンドユーザがデジタルアシスタントに携わると、デジタルアシスタントは、エンドユーザ入力を評価し、適切なチャットボットに会話をルーティングし、適切なチャットから会話をルーティングする。デジタルアシスタントは、FACEBOOK(登録商標)メッセンジャー、SKYPE MOBILE(登録商標)メッセンジャー、またはショートメッセージサービス(SMS)などの様々なチャネルを介してエンドユーザに利用可能にすることができる。チャネルは、様々なメッセージングプラットフォーム上でエンドユーザからデジタルアシスタントおよびその様々なチャットボットへチャットを行き来させる。チャネルはまた、ユーザエージェント漸増、イベント起動型会話、およびテストをサポートしてもよい。
【0019】
インテントにより、チャットボットは、ユーザがチャットボットに何をして欲しいかを理解することができる。インテントは、発話(例えば、口座残高を入手する、購入を行うなど)とも称される、ユーザ要求およびステートメントを介してチャットボットに通信されるユーザの意図である。ここで用いられる場合、発話またはメッセージは、チャットボットとの会話の間に交換される単語のセット(たとえば、1つ以上の文)を指し得る。インテントは、何らかのユーザアクション(例えば、ピザを注文する)を示す名前を提供し、そのアクションをトリガすることに一般に関連付けられる実生活ユーザステートメントまたは発話のセットをコンパイルすることによって、作成されてもよい。チャットボットの認知は、これらのインテントから導き出されるので、各インテントは、ロバストな(1から二十数個の発話)であるデータセットから作成され、チャットボットがあいまいなユーザ入力を解釈できるように、変動してもよい。豊富な発話のセットは、チャットボットが、「この注文は無視して」または「配達は取りやめて!」のような、同じものを意味するが異なって表現されるメッセージを受信したときに、ユーザが何を望むかを理解することを可能にする。集合的に、インテントおよびそれらに属する発話は、チャット用のトレーニングコーパスを構成する。コーパスを用いてモデルをトレーニングすることによって、顧客は、そのモデルを、本質的に、エンドユーザ入力を単一のインテントに解決するための参照ツールに変換することができる。顧客は、インテントテストおよびインテントトレーニングの循環を通じてチャットの認知の鋭敏さを改善することができる。
【0020】
本明細書で説明される例はインテント予測に焦点を当てているが、他の分類タスクも同様に扱われ得ることを理解されたい。例えば、チャットボットシステムは、スキルボット呼出しなどの他のレベルでの発話に対処するために分類器を含み得る。
【0021】
しかしながら、ユーザ発話に基づいてエンドユーザのインテントを判断することができるチャットボットを構築することは、部分的には、自然言語の微妙さおよび曖昧さ、ならびに入力空間の次元(例えば、可能性のあるユーザ発話)および出力空間のサイズ(インテントの数)のため、困難なタスクである。この困難の例示的な例は、インテントを表現するために、婉曲語法、同義語、または非文法的言語運用を採用するといった、自然言語の特性から生じる。例えば、ある発話は、ピザ、注文、または配達に明示的に言及することなく、ピザを注文するインテントを表す場合がある。例えば、特定の地域の日常語では、「ピザ」は「パイ」と呼ばれる。不正確さまたは変動性といった、自然言語におけるこれらの傾向は、不確実性を生じさせ、インテントの明示的な指示とは対照的に、例えばキーワードの包含を通して、インテントの予測のためのパラメータとして信頼性を導入する。したがって、チャットボットの性能およびチャットボットによるユーザ体験を改善するために、チャットボットをトレーニング、監視、デバッグ、および再トレーニングする必要がある場合がある。従来のシステムでは、口語理解(SLU)および自然言語処理(NLP)におけるデジタルアシスタントまたはチャットボットの機械学習モデルをトレーニングおよび再トレーニングするために、トレーニングシステムが提供される。
【0022】
2.機械学習モデルを用いてインテントを判断する
1つ以上の点で、チャットボットシステムは、出力を確率分布にマッピングするためにロジスティック回帰関数を使用するニューラルネットワークモデルへの入力として発話を提供することができる。分類のために、例えば、確率分布において出力のセットを順序付けることは、発話において呼び出されるインテントの予測を可能にする。正確な予測は、次に、チャットボットがエンドユーザと正確に対話することを可能にする。この意味で、精度は、ニューラルネットワーク分類器の出力を確率分布にマッピングすることに少なくとも部分的に依存する。
【0023】
ニューラルネットワーク機械学習モデルの出力を確率分布にマッピングするために、ロジット値が入力に基づいて求められる。ロジット値は、「ロジット」とも呼ばれ、機械学習モデルのネットワーク層のロジット関数によって出力される値である。ロジット値は、発話が特定のクラスに対応するオッズを表すことができる。ロジット関数は、特定のクラス(例えば、order_pizzaインテントクラス、未解決のクラス)に対するオッズの対数であり、機械学習モデルの出力を、確率分布内に適合する対応するロジット値に変換する。確率分布は、(-∞,+∞)の間の範囲である。
【0024】
次いで、ロジット値は、入力(たとえば、発話)がクラスのセットのうちの特定のクラスに対応するかどうかの予測される尤度を生成するために、活性化関数(たとえば、softmax関数)への入力として提供され得る。インテント分類の文脈では、入力は、ニューラルネットワークモデルの重み付けされた出力であり得る。例えば、特定のクラス(例えば、order_pizza)に対応する数値出力は、多項式機械学習モデルの1つ以上の中間層を通して入力発話(例えば、「I want to grab a pie(私はパイを食べたい」)を処理することによって生成される。出力は、特定のクラスのロジット関数によって処理されて、9.4のロジット値を生成し得る。次いで、活性化関数をロジット値に適用して、0と1との間の範囲の確率値(例えば、0.974)を求めることができ、これは、入力発話がorder_pizzaクラスに対応することを示す。分類器がまた識別するようトレーニングされ得るインテント以外の任意のインテントを呼び出す発話は、範囲外またはドメイン外発話に対応する。例えば、「how is the weather today?(今日の天気はどのようですか?)」という発話は、発話が特定の食物に対する注文を指定するかどうかを予測するようトレーニングされる識別器にとっては範囲外であると考えられ得る。
【0025】
分類精度は、ロジット関数の1つ以上のパラメータを重み付けすることによってさらに高めることができる。例えば、各インテントクラスは、インテントクラスの重心によって重み付けされてもよいロジット関数に関連付けられてもよい。本明細書で使用されるとおりでは、「重心」という語は、発話を分類するために使用されるクラスタの中心位置の場所を指し、クラスタは、特定のエンドユーザインテントクラスに対応するデータを識別する。いくつかの例では、重心は、発話の対応するデータセット(たとえば、トレーニングデータセット)からのデータを使用して求められる。分布の重心によるロジット関数の重み付けは、特に所与の発話がドメイン内または範囲内(例えば、システムが認識するようトレーニングされた発話)である場合に、ロジット関数がその発話の分類をより正確に予測することを可能にする。
【0026】
3.機械学習モデルに関連付けられる過信頼問題
ディープニューラルネットワークは、(信頼度スコアの)過信頼の問題に悩まされ、あるクラスについてニューラルネットワークによって生成される信頼度スコアは、現実の信頼度スコアから非相関になる場合がある。ディープニューラルネットワークモデルは、実際の入力が、ニューラルネットワークモデルをトレーニングするために使用されたトレーニングデータによってうまく表されないとき、すなわち、実際のサンプルが、トレーニング中に観察される分布の外側から引き出されるときでも、誤った高確度の分類予測を生成し得る。したがって、ディープニューラルネットワークは、精度が高いため使用が望ましい一方で、ディープニューラルネットワークに関連付けられる過信頼問題は、ニューラルネットワークの性能問題を回避するために対処されなければならない。
【0027】
softmax関数を使用する従来の技術は、上記の過信頼問題に効果的に対処しない。いくつかの例では、softmax関数は、ニューラルネットワークモデルの出力信号の個々の強度を考慮しないことによって、過信頼問題を永続化する。代わりに、softmax関数は、出力信号を互いと比較して考慮し、その結果、予測の信頼性が過大評価される可能性がある。これは、1つの要素のみが正であるロジット値に特に当てはまり得る。例示的な例として、第1の発話に対する3方向分類のロジット値を[10,3,1]とし、第2の発話に対するそれを[3,-2,-4]と考える。第2の発話では、3つのクラスのうちの1つのみが正(例えば、3)であり、モデルが、その予測について、第1の発話の予測(例えば、10)に対するほど確信がないことを示す。しかしながら、softmax正規化の後、正の出力に対する信頼度スコアが増幅され、両方の発話に対して100%に近い信頼度スコアをもたらす。このようにして、softmax正規化は、予測におけるモデル信頼性を過大評価し、予測精度に影響を及ぼす。
【0028】
過信頼問題に対処するために、他の従来技術が試みられている。例えば、nクラスに対するnバイナリ分類器は、nマルチクラス分類器の代替として実現されている。nバイナリ分類器は、入力発話を各インテントクラスについて「イン」または「アウト」のいずれかに分類する「n」個の分類器を実現する。このように、nバイナリアプローチは、「1対多」アプローチとは対照的に、「1対全」分類に対応する。加えて、softmaxアプローチのようにカテゴリ的交差エントロピー損失を計算するのではなく、n-バイナリアプローチは、クラスごとにバイナリ交差エントロピー損失を計算する。例えば、nバイナリ分類器は、softmax関数の代わりに、シグモイド関数を出力活性化関数として用いることができる。
【0029】
nバイナリ分類器の使用は、個々のモデル出力信号の強度に関するsoftmax正規化の制限に対処し得るが、nバイナリ分類器は、それら自体の欠点を呈し得る。例えば、精度は、softmaxアプローチの場合よりもnバイナリ分類器の場合の方が低い場合がある。さらに、nバイナリ分類器は、単一のクラスを予測するのに閾値信頼度マージンを満たさないことがある。例えば、10%の最小信頼度マージンが、最もありそうな予測と2番目に最もありそうな予測との間で発話を分類するために課される場合がある。softmax関数は、合計で100%となる確率分布ですべてのクラスを分布させるので、最上位予測信頼度スコアが≧55%である場合、2番目に最良の予測は≦45%となり、したがって最小10%マージンを満たす。しかしながら、nバイナリ分類器アプローチでは、各クラスの信頼度スコアは独立して求められ、合計で100%と定義される。信頼度マージンの重要性は、例えば、複数の異なるインテントを含む発話において強調される。したがって、信頼度マージンが満たされず、発話が未解決、ドメイン外、または範囲外として誤分類される可能性がより高い場合がある。
【0030】
したがって、機械学習モデルが、所与の発話について特定のクラスを予測するとき、その信頼度を正確に判断することは困難である。これは、過信頼が発生した場合に、分類出力の誤解釈につながり得る。
【0031】
4.発話を、未解決のインテントを有するものとして分類するための、距離ベースのロジット値
上記の欠点を克服するために、本技術は、発話が特定のクラスに対応する確率を正確に推定するために機械学習モデルにおいて距離ベースのロジットを使用するためのシステムおよび方法を含む。これは、機械学習モデルの分類結果をより正確にすることができ、すなわち、機械学習モデルが発話をより頻繁に正しく分類することができるので、発話の分類が改善される。本方法は、チャットボットシステムのインテント分類器が1つ以上の発話またはメッセージを受信することを含む。本方法は、チャットボットシステムが、バイナリ分類器のセット(たとえば、nバイナリ分類器)を使用して、1つ以上の発話またはメッセージのインテントを判断することを含む。バイナリ分類器のセットの各バイナリ分類器は、対応する距離ベースのロジット値を出力するための修正されたロジット関数を含む。たとえば、距離ベースのロジット値は、修正されたロジット関数を所与のクラス「Ci」に対して使用することによって計算されてもよく、修正されたロジット関数は、そのクラス「Wi」に対する重心と対応するバイナリ分類器「f(x)」の中間出力との間の距離を求めることを含む。いくつかの例では、重心と出力ベクトルとの間の距離は、ユークリッド距離、余弦距離などの異なる距離メトリックによって測定される。
【0032】
いくつかの例では、確率推定の精度は、強化された活性化関数を実現することによってさらに改善される。強化された活性化関数は、スケーリング値を使用して距離ベースロジットをスケーリングすることを含む。スケーリング値は、固定値またはインテント分類器の学習されたパラメータとすることができ、固定値は、ハイパーパラメータチューニングを通じて決定することができ、パラメータの値は、モデルトレーニング中に学習される。追加または代替として、機械学習モデルは、所与の発話の確率推定の精度を改善するために、いくつかの追加の損失項を組み込む強化された損失関数を含み得る。強化された損失関数の損失項は、(i)バイナリ交差エントロピー損失項、(ii)平均二乗誤差項、(iii)マージン損失項、および(iv)閾値損失項のうちの1つ以上を含むことができる。いくつかの例では、損失関数の各項は、それぞれの重み付け係数によって重み付けされる。重み付け係数は、インテント分類器のハイパーパラメトリックチューニングの一部としてチューニングされることができる。
【0033】
したがって、距離ベースのロジット値のそのような組み込みは、インテント分類器が、発話が特定のインテントクラスに対応するかどうかの確率を予測する際のその精度を改善することを容易にすることができる。加えて、距離ベースのロジット値は、nバイナリ分類器の出力を正規化することができ、それによって、従来のsoftmax関数ベースの技術が遭遇し得る過信頼問題を低減する。距離ベースのロジット値はまた、従来のnバイナリ「1対全」分類器を上回る改善でもあることができ、なぜならば、距離ベースのロジット値は、機械学習モデルが、1つ以上の発話におけるインテントの予測を、閾値信頼度を上回り、かつ最も確信のあるインテントと2番目に確信のあるインテントとの間に最小限のマージンを伴って、提供することを可能にし得るからである。
【0034】
B.ボットおよび分析システム
ボット(スキル、チャットボット、チャターボット、またはトークボットとも称される)は、エンドユーザとの会話を実行することができるコンピュータプログラムである。ボットは一般に、自然言語メッセージを用いるメッセージングアプリケーションを通じて自然言語メッセージ(例えば質問またはコメント)に応答することができる。企業は、1つ以上のボットシステムを用いて、メッセージングアプリケーションを通じてエンドユーザと通信し得る。メッセージングアプリケーションは、チャネルと呼ばれることもあり、エンドユーザが既にインストールし、慣れ親しんでいる、エンドユーザの好みのメッセージングアプリケーションであり得る。したがって、エンドユーザは、ボットシステムとチャットするために新たなアプリケーションをダウンロードおよびインストールする必要がない。メッセージングアプリケーションは、例えば、オーバーザトップ(OTT)メッセージングチャネル(例えば、Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack,またはSMS)、バーチャルプライベートアシスタント(例えば、Amazon Dot, Echo,またはShow, Google(登録商標) Home, Apple HomePodなど)、チャット機能を有するネイティブもしくはハイブリッド/応答モバイルアプリもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリ拡張、または音声ベースの入力(例えば、Siri, Cortana, Google Voice、または対話のための他の音声入力を用いるインターフェイスを有するデバイスもしくはアプリ)を含むことができる。
【0035】
いくつかの例では、ボットシステムは、統一資源識別子(URI)に関連付けられ得る。URIは、文字列を用いてボットシステムを識別することができる。URIは、1つ以上のメッセージングアプリケーションシステムのためのウェブフックとして用いられ得る。URIは、例えば、統一資源位置指定子(URL)または統一資源名(URN)を含むことができる。ボットシステムは、メッセージングアプリケーションシステムからメッセージ(例えば、ハイパーテキスト転送プロトコル(HTTP)ポストコールメッセージ)を受信するように設計されてもよい。HTTPポストコールメッセージは、メッセージングアプリケーションシステムからURIに向けられてもよい。いくつかの実施形態では、メッセージはHTTPポストコールメッセージとは異なり得る。例えば、ボットシステムは、ショートメッセージサービス(SMS)からメッセージを受信し得る。ここにおける議論は、ボットシステムがメッセージとして受信する通信に言及し得るが、メッセージは、HTTPポストコールメッセージ、SMSメッセージ、または2つのシステム間の任意の他のタイプの通信であり得ることを理解されたい。
【0036】
エンドユーザは、人々間の対話のように、会話による対話(会話によるユーザインターフェイス(UI)と呼ばれることもある)を通じてボットシステムと対話することができる。場合によっては、対話は、エンドユーザがボットに「Hello(こんにちは)」と言い、ボットが「Hi(やあ)」と応答し、エンドユーザをどのように支援できるかをエンドユーザに問い合わせることを含んでもよい。場合によっては、対話はまた、例えば、ある口座から別の口座へ送金するなど、銀行ボットとの取引対話;たとえば、バケーションバランスのチェックなど、HRボットとの情報対話;または、例えば、購入した商品を返品するもしくは技術的サポートを求める議論など、小売店ボットとの対話であってもよい。
【0037】
いくつかの実施形態では、ボットシステムは、ボットシステムの管理者または開発者との対話なしにエンドユーザ対話を知的に扱うことができる。例えば、エンドユーザは、所望の目標を達成するために、ボットシステムに1つ以上のメッセージを送信してもよい。メッセージは、テキスト、絵文字、オーディオ、画像、ビデオ、またはメッセージを伝達する他の方法など、あるコンテンツを含み得る。いくつかの実施形態では、ボットシステムは、コンテンツを標準化された形式(例えば、適切なパラメータを有する企業サービスに対するrepresentational state transfer(REST)コール)に変換し、自然言語応答を生成することができる。ボットシステムはまた、追加の入力パラメータをエンドユーザに促すか、または他の追加の情報を要求することもできる。いくつかの実施形態では、ボットシステムはまた、エンドユーザ発話に受動的に応答するのではなく、エンドユーザとの通信を開始してもよい。ここでは、ボットシステムの明示的な呼出しを識別し、呼び出されるボットシステムに対する入力を決定するための様々な技術が説明される。ある実施形態では、明示的な呼出し分析は、発話における呼出し名の検出に基づいて、マスタボットによって実行される。呼出し名の検出に応答して、発話は、呼出し名に関連付けられるスキルボットへの入力のために精緻化されてもよい。
【0038】
ボットとの会話は、複数の状態を含む特定の会話フローに従うことができる。フローは、入力に基づいて次に起こるものを定義することができる。いくつかの実施形態では、ユーザが定義した状態(例えば、エンドユーザのインテント)と、状態において、または状態から状態にとるべきアクションとを含む状態機械を用いて、ボットシステムを実現することができる。会話は、エンドユーザ入力に基づいて異なる経路をとることができ、これは、ボットがフローについて行う決定に影響を及ぼし得る。例えば、各状態において、エンドユーザ入力または発話に基づいて、ボットは、エンドユーザのインテントを判断して、次にとるべき適切なアクションを決定することができる。ここにおいて、および発話の文脈において、「インテント」という語は、発話を与えたユーザのインテントを指す。例えば、ユーザは、ピザを注文するために会話でボットに関わるつもりであり、ユーザのインテントは、「ピザを注文して」という発話によって表現されてもよい。ユーザのインテントは、ユーザがユーザに代わってチャットボットに実行して欲しい特定のタスクに向けられ得る。したがって、発話は、ユーザのインテントを反映する質問、コマンド、要求などとして表現することができる。インテントは、エンドユーザが達成することを望む目標を含むことができる。
【0039】
チャットの構成の文脈において、「インテント」という語は、ここでは、ユーザの発話を、チャットボットが実行できる特定のタスク/アクションまたはタスク/アクションのカテゴリにマッピングするための設定情報を指すために用いられる。発話のインテント(すなわち、ユーザのインテント)とチャットボットのインテントとを区別するために、後者をここでは「ボットインテント」と呼ぶことがある。ボットインテントは、そのインテントに関連付けられる1つ以上発話のセットを含んでもよい。例えば、ピザを注文することに対するインテントは、ピザの注文を行う要望を表す発話の様々な順列を有することができる。これらの関連付けられた発話は、チャットボットのインテント分類器をトレーニングするために用いられ得、インテント分類器が、その後、ユーザからの入力発話がピザ注文インテントと一致するかどうかを判断することを可能にする。ボットインテントは、ユーザとある状態において会話を開始するための1つ以上のダイアログフローに関連付けられ得る。例えば、ピザ注文インテントに関する第1のメッセージは、「どの種類のピザがよろしいですか?」という質問であり得る。関連付けられた発話に加えて、ボットインテントは、さらに、そのインテントに関連する指名されたエンティティを含み得る。例えば、ピザ注文インテントは、ピザを注文するタスクを実行するために用いられる変数またはパラメータ、例えば、トッピング1、トッピング2、ピザの種類、ピザサイズ、ピザ数量などを含み得る。エンティティの値は、典型的には、ユーザとの会話を通じて取得される。
【0040】
ある例では、発話を分析して、発話がスキルボットの呼出し名を含むかどうかを判断する。呼出し名が見つからない場合、発話は非明示的に呼び出しているとみなされ、プロセスはトレーニングされたモデルなどのインテント分類器に進む。呼出し名があると判断された場合、発話は明示的な呼出しであるとみなされ、プロセスは、発話のどの部分が呼出し名に関連付けられているかを判断することに進む。トレーニングされたモデルが呼び出される場合、受信された発話全体が、インテント分類器への入力として提供される。
【0041】
発話を受信するインテント分類器は、マスタボットのインテント分類器(例えば、図2のインテント分類器242)であり得る。インテント分類器は、発話のインテントがシステムインテント(例えば、退出、ヘルプ)または特定のスキルボットにマッチするかどうかを判断するようトレーニングされた、機械学習ベースまたはルールベースの分類器であり得る。ここで説明されるように、マスタボットによって実行されるインテント分析は、特定のスキルボット内のどのインテントが発話にとって最良のマッチであるかを判断することなく当該特定のスキルボットに対してマッチングすることに限定されてもよい。したがって、発話を受信するインテント分類器は、呼び出されるべき特定のスキルボットを識別してもよい。代替として、発話が特定のシステムインテントを表す(例えば、発話は、単語「退出」または「ヘルプ」を含む)場合、その発話を受信するインテント分類器は、この特定のシステムインテントのために構成されるダイアログフローに基づいて、マスタボットとユーザとの間の会話をトリガするよう、その特定のシステムインテントを識別してもよい。
【0042】
インテント分類器は、発話のインテントを予測することの一部として、バイナリ交差エントロピー損失関数および距離ベースのロジット値を使用することができる。このように、距離は、インテント分類器の出力ベクトルと特定のインテントについての重心との間で計算される距離を指す。異なるインテントについてのロジット値は、その後、モデルの全体的な損失関数に含まれる損失関数への入力としての役割を果たす。例えば、全体損失関数は、バイナリ交差エントロピー損失項と、マージン損失項と、閾値損失項とを含み得る。このようにして、インテント分類器は、最もありそうなインテントが、最もありそうなインテントと2番目にありそうなインテントとの間の最小差を満たすとき、および最もありそうなインテントが、インテントの重心からの距離測定値に関連する最小閾値信頼度を満たすときに、インテントを予測してもよい。
【0043】
呼出し名がある場合、1つ以上の明示的な呼出しルールを適用して、発話のどの部分が呼出し名に関連付けられているかを判断する。この判断は、POSタグ、依存関係情報、および/または発話とともに受信される他の抽出された情報を使用する、発話の文構造の分析に基づくことができる。例えば、呼出し名に関連付けられるある部分は、呼出し名を含む名詞句、または呼出し名に対応する前置詞付きの目的語であり得る。処理に基づいて判断される、呼出し名に関連付けられる任意の部分は、除去される。発話の意味を伝えるために必要とされない発話の他の部分(例えば、前置詞単語)も除去することができる。発話の特定の部分の除去は、呼出し名に関連付けられるスキルボットに対する入力を生成する。除去後に、受信された発話に残る部分がある場合、その残りの部分は、例えば、テキストストリングとして、スキルボットへの入力のための新たな発話を形成する。そうではなく、受信された発話が完全に除去された場合、入力は空のストリングであってもよい。その後、呼出し名に関連付けられるスキルボットが呼び出され、そのスキルボットには生成された入力が提供される。
【0044】
生成された入力を受信すると、呼び出されたスキルボットは、例えば、トレーニングされたスキルボットのインテント分類器を使用してインテント分析を実行して、入力に表されたユーザインテントに一致するボットインテントを識別することによって、その入力を処理する。一致するボットインテントの識別の結果、スキルボットは、一致するボットインテントに関連付けられるダイアログフローに従って、特定のアクションを実行するかまたはユーザとの会話を開始してもよい。例えば、入力が空のストリングである場合、会話は、ダイアログフローに対して定義されるデフォルト状態で開始され得、例えば、歓迎メッセージであり得る。代替的に、入力が空のストリングでない場合、例えば、入力が、エンティティについての値、またはスキルボットが入力の一部として受信したことにより、もはやユーザに求める必要がない何らかの他の情報を含むので、会話は何らかの中間状態で開始され得る。別の例として、スキルボットは、(例えば、スキルボットに対して構成されたすべてのボットインテントの信頼度スコアが特定の閾値を下回るため、)入力を処理できない、と判断してもよい。この状況では、スキルボットは、入力を処理のためにマスタボットに戻して任せてもよく(例えば、マスタボットのインテント分類器を使用するインテント分析)、またはスキルボットは、ユーザに明確化を促してもよい。
【0045】
1.全体的な環境
図1は、特定の実施形態によるチャットボットシステムを組み込んだ環境100の簡略ブロック図である。環境100は、デジタルアシスタントビルダプラットフォーム(DABP)102を含み、DABP102のユーザがデジタルアシスタントまたはチャットボットシステムを作成および展開することを可能にする。DABP102は、1つ以上のデジタルアシスタント(またはDA)またはチャットボットシステムを作成するために使用することができる。例えば、図1に示すように、特定の企業を表すユーザ104は、DABP102を使用して、特定の企業のユーザ用のデジタルアシスタント106を作成および展開することができる。例えば、銀行が、DABP102を使用して、銀行の顧客による使用のために1つ以上のデジタルアシスタントを作成することができる。複数の企業が、同じDABP102プラットフォームを使用して、デジタルアシスタントを作成することができる。別の例として、レストラン(例えば、ピザショップ)の所有者は、DABP102を用いて、レストランの顧客が食べ物を注文すること(例えば、ピザを注文すること)を可能にするデジタルアシスタントを作成および展開することができる。
【0046】
本開示の目的のために、「デジタルアシスタント」は、デジタルアシスタントのユーザが自然言語会話を通じて様々なタスクを達成するのに役立つエンティティである。デジタルアシスタントは、ソフトウェア(たとえば、デジタルアシスタントは、1つ以上のプロセッサによって実行可能なプログラム、コード、または命令を用いて実現されるデジタルエンティティである)のみを用いて、ハードウェアを用いて、またはハードウェアとソフトウェアとの組み合わせを用いて、実現されてもよい。デジタルアシスタントは、コンピュータ、携帯電話、腕時計、器具、車両など、様々な物理的システムもしくはデバイスにおいて具現化または実現されてもよい。デジタルアシスタントは、チャットボットシステムとも称されることもある。したがって、本開示の目的のために、デジタルアシスタントおよびチャットボットシステムという文言は交換可能である。
【0047】
DABP102を使用して構築されるデジタルアシスタント106等のデジタルアシスタントは、デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を介して、種々のタスクを行うために使用されることができる。会話の一部として、ユーザは、1つ以上のユーザ入力110をデジタルアシスタント106に提供し、デジタルアシスタント106から応答112を得てもよい。会話は、入力110および応答112のうちの1つ以上を含むことができる。これらの会話を介して、ユーザは、1つ以上のタスクがデジタルアシスタント106によって実行されるよう要求することができ、それに応答して、デジタルアシスタント106は、ユーザ要求タスクを実行し、ユーザに適切な応答で応答するよう構成される。
【0048】
ユーザ入力110は、概して自然言語形式であり、発話と呼ばれる。ユーザ発話110は、ユーザが文、質問、テキスト片、または単一の単語でさえタイプし、それを入力としてデジタルアシスタント106に提供するときなどの、テキスト形式であり得る。いくつかの実施形態では、ユーザ発話110は、ユーザがデジタルアシスタント106に入力として提供される何かを言うかまたは話すときなどの、音声入力または発話形式であり得る。発話は、典型的には、ユーザ108によって話される言語である。たとえば、発話は、英語または何らかの他の言語であってもよい。発話が音声形式である場合、音声入力はその特定の言語のテキスト形式の発話に変換され、次いで、テキスト発話はデジタルアシスタント106によって処理される。様々な音声-テキスト処理技術を用いて、音声または聴覚的入力をテキスト発話に変換してもよく、テキスト発話は、その後、デジタルアシスタント106によって処理される。いくつかの実施形態では、音声からテキストへの変換は、デジタルアシスタント106自体によって行われてもよい。
【0049】
テキスト発話または音声発話であってもよい発話は、断章、文、複数の文、1つ以上の単語、1つ以上の質問、前述のタイプの組合せなどであってもよい。デジタルアシスタント106は、ユーザ入力の意味を理解するために発話に自然言語理解(NLU)技術を適用するよう構成される。発話に対するNLU処理の一部として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成され、これは、発話に対応する1つ以上のインテントおよび1つ以上のエンティティを識別することを伴う。発話の意味を理解すると、デジタルアシスタント106は、理解された意味またはインテントに応答して1つ以上のアクションまたは動作を実行することができる。本開示の目的のために、発話は、デジタルアシスタント106のユーザ108によって直接提供されるテキスト発話であるか、または入力音声発話のテキスト形式への変換の結果であると仮定する。しかしながら、これは、いかなる態様においても限定的または制限的であることを意図するものではない。
【0050】
例えば、ユーザ108の入力は、「私はピザを注文したい」等の発話を提供することによって、ピザが注文されることを要求してもよい。そのような発話を受信すると、デジタルアシスタント106は、発話の意味を理解し、適切なアクションを取るよう構成される。適切なアクションは、例えば、ユーザが注文したいピザのタイプ、ピザのサイズ、ピザの任意のトッピングなどに関する、ユーザ入力を要求する質問で、ユーザに応答することを含んでもよい。デジタルアシスタント106によって提供される応答はまた、自然言語形式であってもよく、典型的には入力発話と同じ言語であってもよい。これらの応答を生成することの一部として、デジタルアシスタント106は、自然言語生成(NLG)を実行してもよい。ユーザがピザを注文するために、ユーザとデジタルアシスタント106との間の会話を介して、デジタルアシスタントは、ピザを注文するためのすべての必要な情報を提供するようにユーザを誘導してもよく、次いで、会話の終わりに、ピザを注文させてもよい。デジタルアシスタント106は、ピザが注文されたことを示す情報をユーザに出力することによって、会話を終了してもよい。
【0051】
概念レベルでは、デジタルアシスタント106は、ユーザから受信された発話に応答して、種々の処理を実行する。いくつかの実施形態では、この処理は、例えば、入力発話の意味を理解すること(自然言語理解(NLU)と呼ばれることもある)、発話に応答して実行されるべきアクションを決定すること、適切な場合にはアクションが実行されることを引き起こすこと、ユーザ発話に応答してユーザに出力されるべき応答を生成すること、応答をユーザに出力することなどを含む、一連の処理ステップまたは処理ステップのパイプラインを伴う。NLU処理は、受信した入力発話を構文解析して発話の構造および意味を理解することと、発話を精緻化および再構成して、発話について、よりよく理解可能な形式(例えば、論理形式)または構造を展開することとを含むことができる。応答を生成することは、NLG技術を使用することを含んでもよい。
【0052】
デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理は、文解析(例えば、トークン化、並べ換え、文に対する品詞タグの識別、文における固有表現の識別、文構造を表すための依存関係ツリーの生成、文の節への分割、個々の節の分析、照応形の解決、チャンク化の実行など)などの様々なNLP関連処理を含み得る。ある実施形態では、NLU処理またはその一部は、デジタルアシスタント106自体によって実行される。いくつかの他の実施形態では、デジタルアシスタント106は、他のリソースを用いて、NLU処理の一部を実行することができる。例えば、入力発話文の構文および構造は、構文解析、品詞タグ付け、および/または固有表現認識を用いて文を処理することによって識別されてもよい。一実現例では、英語の場合、文構造および構文を解析するために、Stanford Natural Language Processing (NLP) Groupによって提供されるもののような、構文解析、品詞タグ付け、および固有表現認識が用いられる。これらは、Stanford CoreNLPツールキットの一部として提供される。
【0053】
本開示で提供される様々な例は英語の発話を示すが、これは単なる例として意味される。特定の実施形態では、デジタルアシスタント106は、英語以外の言語で発話を処理することもできる。デジタルアシスタント106は、異なる言語に対する処理を実行するよう構成されるサブシステム(例えば、NLU機能を実現するコンポーネント)を提供してもよい。これらのサブシステムは、NLUコアサーバからのサービスコールを用いて呼び出され得るプラグ可能ユニットとして実現されてもよい。これは、NLU処理を、異なる順序の処理を可能にすることを含めて、各言語に対して柔軟かつ拡張可能にする。言語パックは、個々の言語に対して提供されてもよく、言語パックは、NLUコアサーバからサービス提供され得るサブシステムのリストを登録することができる。
【0054】
図1に示されるデジタルアシスタント106等のデジタルアシスタントは、限定ではないが、あるアプリケーションを介して、ソーシャルメディアプラットフォームを介して、種々のメッセージングサービスおよびアプリケーションを介して、ならびに他のアプリケーションまたはチャネル等の種々の異なるチャネルを介して、そのユーザ108に利用可能またはアクセス可能にされることができる。単一のデジタルアシスタントは、それのためにいくつかのチャネルを構成することができるので、異なるサービス上で同時に実行され、異なるサービスによって同時にアクセスされることができる。
【0055】
デジタルアシスタントまたはチャットボットシステムは、一般に、1つ以上のスキルを含むか、または1つ以上のスキルに関連付けられる。ある実施形態では、これらのスキルは、ユーザと対話し、在庫の追跡、タイムカードの提出、経費報告の作成、食品の注文、銀行口座の確認、予約の作成、ウィジェットの購入などの特定の種類のタスクを満たすように構成された個々のチャットボット(スキルボットと呼ばれる)である。例えば、図1に示される実施形態では、デジタルアシスタントまたはチャットボットシステム106は、スキル116-1、116-2等を含む。本開示の目的のために、「スキル」という語は、「スキルボット」という語と同義的に用いられる。
【0056】
デジタルアシスタントに関連付けられる各スキルは、ユーザとの会話を通じて、デジタルアシスタントのユーザがタスクを完了するのを助け、会話は、ユーザによって提供されるテキストまたは聴覚的入力と、スキルボットによって提供される応答との組み合わせを含むことができる。これらの応答は、ユーザへのテキストメッセージもしくは聴覚メッセージの形態、および/またはユーザが選択を行うようユーザに提示される単純なユーザインターフェイス要素(たとえば、選択リスト)を用いる形態であってもよい。
【0057】
スキルまたはスキルボットをデジタルアシスタントに関連付けるかまたは追加することができる様々な方法がある。ある例では、スキルボットは企業によって開発され、次いでDABP102を用いてデジタルアシスタントに追加され得る。他の例では、スキルボットは、DABP102を用いて開発および作成され、次いで、DABP102を用いて作成されたデジタルアシスタントに追加され得る。さらに他の例では、DABP102は、広範囲のタスクに向けられた複数のスキルを提供するオンラインデジタルストア(「スキルストア」と呼ばれる)を提供する。スキルストアを通じて提供されるスキルも、様々なクラウドサービスを公開してもよい。DABP102を使用して生成されるデジタルアシスタントにスキルを追加するために、DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択されたスキルがDABP102を使用して作成されるデジタルアシスタントに追加されることを示すことができる。スキルストアからのスキルは、そのまま、または修正された形態で、デジタルアシスタントに追加することができる(例えば、DABP102のユーザは、スキルストアによって提供される特定のスキルボットを選択してクローニングし、選択されたスキルボットをカスタマイズまたは修正し、次いで、修正されたスキルボットを、DABP102を用いて作成されたデジタルアシスタントに追加してもよい)。
【0058】
デジタルアシスタントまたはチャットボットシステムを実現するために、様々な異なるアーキテクチャが使用されてもよい。例えば、ある実施形態では、DABP102を用いて作成および展開されるデジタルアシスタントは、マスタボット/子(もしくはサブ)ボットパラダイムまたはアーキテクチャを用いて実現されてもよい。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つ以上の子ボットと対話するマスタボットとして実現される。例えば、図1に示す実施形態では、デジタルアシスタント106は、マスタボット114と、マスタボット114の子ボットであるスキルボット116-1、116-2などとを含む。特定の実施形態では、デジタルアシスタント106自体がマスタボットとして動作すると考えられる。
【0059】
マスタ・子ボットアーキテクチャに従って実現されるデジタルアシスタントは、デジタルアシスタントのユーザが、統合されたユーザインターフェイスを介して、すなわちマスタボットを介して、複数のスキルと対話することを可能にする。ユーザがデジタルアシスタントに関与すると、ユーザ入力はマスタボットによって受信される。次いで、マスタボットは、ユーザ入力発話の意味を判定するための処理を実行する。次いで、マスタボットは、発話においてユーザによって要求されたタスクがマスタボット自体によって処理され得るかどうかを判定し、そうでなければ、マスタボットは、ユーザ要求を処理するために適切なスキルボットを選択し、会話を選択されたスキルボットにルーティングする。これにより、ユーザは共通の単一のインターフェイスを介してデジタルアシスタントと会話することができ、特定のタスクを実行するよう構成されるいくつかのスキルボットを使用する能力を依然として提供することができる。例えば、企業用に開発されたデジタルアシスタントの場合、デジタルアシスタントのマスタボットは、顧客関係管理(CRM)に関連する機能を実行するためのCRMボット、企業資源計画(ERP)に関連する機能を実行するためのERPボット、人的資本管理(HCM)に関連する機能を実行するためのHCMボットなどの特定の機能を有するスキルボットとインターフェイスすることができる。このように、デジタルアシスタントのエンドユーザまたは消費者は、共通のマスタボットインターフェイスを介してデジタルアシスタントにアクセスする方法を知るだけでよく、背後には、複数のスキルボットがユーザ要求を処理するために提供される。
【0060】
ある実施形態では、マスタボット/子ボットインフラストラクチャにおいて、マスタボットは、スキルボットの利用可能なリストを認識するよう構成される。マスタボットは、様々な利用可能なスキルボット、および各スキルボットについて、各スキルボットによって実行され得るタスクを含む各スキルボットの能力を識別するメタデータへのアクセスを有してもよい。ユーザ要求を発話の形態で受信すると、マスタボットは、複数の利用可能なスキルボットから、ユーザ要求に最も良く対応できるかもしくはユーザ要求をもっとも良く処理することができる特定のスキルボットを識別または予測するよう構成される。次いで、マスタボットは、その発話(またはその発話の一部分)を、さらなる処理のために、その特定のスキルボットにルーティングする。従って、制御はマスタボットからスキルボットに流れる。マスタボットは、複数の入力および出力チャネルをサポートすることができる。
【0061】
図1の実施形態は、マスタボット114ならびにスキルボット116-1、116-2、および116-3を備えるデジタルアシスタント106を示すが、これは限定を意図するものではない。デジタルアシスタントは、デジタルアシスタントの機能を提供する様々な他のコンポーネント(例えば、他のシステムおよびサブシステム)を含むことができる。これらのシステムおよびサブシステムは、ソフトウェア(例えば、コンピュータ可読媒体上に記憶され、1つ以上のプロセッサによって実行可能なコード、命令)のみ、ハードウェアのみ、またはソフトウェアとハードウェアとの組み合わせを用いる実現例において実現されてもよい。
【0062】
DABP102は、DABP102のユーザが、デジタルアシスタントに関連付けられる1つ以上のスキルボットを含むデジタルアシスタントを作成することを可能にする、インフラストラクチャならびに種々のサービスおよび特徴を提供する。場合によっては、スキルボットは、既存のスキルボットをクローニングすることによって、例えば、スキルストアによって提供されるスキルボットをクローニングすることによって、作成することができる。前述のように、DABP102は、様々なタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットをクローニングすることができる。必要に応じて、クローニングされたスキルボットに修正またはカスタマイズを行ってもよい。いくつかの他の事例では、DABP102のユーザは、DABP102によって提供されるツールおよびサービスを使用して、スキルボットをゼロから作成した。前述のように、DABP102によって提供されるスキルストアまたはスキルカタログは、様々なタスクを実行するための複数のスキルボットを提供してもよい。
【0063】
特定の実施形態では、ある高次レベルにおいて、スキルボットを作成またはカスタマイズすることは、以下のステップを含む:
(1)新たなスキルボットに対する設定を設定する
(2)スキルボットに対して1つ以上のインテントを設定する
(3)1つ以上のインテントに対して1つ以上のエンティティを設定する
(4)スキルボットをトレーニングする
(5)スキルボットのためのダイアログフローを作成する
(6)必要に応じてカスタムコンポーネントをスキルボットに追加する
(7)スキルボットをテストおよび展開する。
以下、各工程について簡単に説明する。
【0064】
(1)新たなスキルボットに対する設定を設定する-様々な設定がスキルボットのために設定されてもよい。例えば、スキルボット設計者は、作成されているスキルボットの1つ以上の呼出し名を指定することができる。これらの呼出し名は、次いで、スキルボットを明示的に呼び出すためにデジタルアシスタントのユーザによって使用されることができる。例えば、ユーザは、ユーザの発話に呼出し名を入力して、対応するスキルボットを明示的に呼び出すことができる。
【0065】
(2)スキルボットに対して1つ以上のインテントおよび関連付けられる例示的な発話を設定する-スキルボット設計者は、作成されているスキルボットに対して1つ以上のインテント(ボットインテントとも呼ばれる)を指定する。次いで、スキルボットは、これらの指定されたインテントに基づいてトレーニングされる。これらのインテントは、スキルボットが入力発話について推論するようにトレーニングされるカテゴリまたはクラスを表す。発話を受信すると、トレーニングされたスキルボットは、発話のインテントを推論し、推論されるインテントは、スキルボットをトレーニングするために使用されたインテントの事前定義されたセットから選択される。次いで、スキルボットは、発話に対して推論されたインテントに基づいて、その発話に応答する適切なアクションを取る。場合によっては、スキルボットのためのインテントは、スキルボットがデジタルアシスタントのユーザに対して実行することができるタスクを表す。各インテントには、インテント識別子またはインテント名が与えられる。例えば、銀行に対してトレーニングされたスキルボットの場合、そのスキルボットに対して指定されたインテントは、「CheckBalance(残高照会)」、「TransferMoney(送金)」、「DepositCheck(小切手を預け入れる)」などを含んでもよい。
【0066】
スキルボットに対して定義される各インテントについて、スキルボット設計者はまた、そのインテントを代表し示す1つ以上の例示的な発話も提供してもよい。これらの例示的な発話は、ユーザがそのインテントのためにスキルボットに入力してもよい発話を表すよう意味される。例えば、残高照会のインテントについては、例示的な発話は、「What's my savings account balance?(私の普通預金口座の残高は?)」、「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」、「How much money do I have in my account(私の口座にはいくらのお金がありますか?)」などを含んでもよい。したがって、典型的なユーザ発話の様々な順列が、インテントのための発話例として指定されてもよい。
【0067】
インテントおよびそれらの関連付けられる例示的発話は、スキルボットをトレーニングするためのトレーニングデータとして使用される。様々な異なるトレーニング技術が使用されてもよい。このトレーニングの結果として、予測モデルが生成され、それは、発話を入力として取り込み、予測モデルによって発話について推論されたインテントを出力するよう構成される。いくつかの事例では、入力発話は、トレーニングされたモデルを使用して入力発話に対するインテントを予測または推測するよう構成される、インテント分析エンジンに提供される。次いで、スキルボットは、推論されたインテントに基づいて1つ以上のアクションを取ってもよい。
【0068】
(3)1つ以上のインテントに対して1つ以上のエンティティを設定する-いくつかの例では、スキルボットがユーザ発話に適切に応答することを可能にするために追加のコンテキストが必要とされてもよい。例えば、ユーザ入力発話が、スキルボットにおいて同じインテントに解決する状況があり得る。例えば、上記の例では、発話「What's my savings account balance?(私の普通預金口座の残高は?)」および「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」は両方とも、同じ残高照会のインテントに解決しているが、これらの発話は、異なることを望む異なる要求である。そのような要求を明確にするために、1つ以上のエンティティがインテントに追加される。銀行業務スキルボットの例を用いると、「checking(当座)」および「saving(普通)」と呼ばれる値を定義するAccountType(口座種類)と呼ばれるエンティティは、スキルボットがユーザ要求を解析し、適切に応答することを可能にしてもよい。上記の例では、発話は同じインテントに解決するが、AccountTypeエンティティに関連付けられる値は、2つの発話について異なる。これにより、スキルボットは、2つの発話が同じインテントに解決するにもかかわらず、2つの発話に対して場合によっては異なるアクションを実行することができる。1つ以上のエンティティは、スキルボットに対して設定された特定のインテントのために指定され得る。したがって、エンティティは、コンテキストをインテント自体に追加するために用いられる。エンティティは、インテントをより充分に記述するのに役立ち、スキルボットがユーザ要求を完了できるようにする。
【0069】
ある実施形態では、2つのタイプのエンティティ、すなわち、(a)DABP102によって提供される組込みエンティティ、および(2)スキルボット設計者によって指定され得るカスタムエンティティがある。組込みエンティティは、多種多様なボットとともに用いることができる汎用エンティティである。組込みエンティティの例は、限定はしないが、時間、日付、アドレス、番号、電子メールアドレス、持続時間、循環期間、通貨、電話番号、URLなどに関連するエンティティを含む。カスタムエンティティは、よりカスタマイズされた用途に用いられる。例えば、銀行業務スキルについては、AccountTypeエンティティは、スキルボット設計者によって、当座、普通およびクレジットカードなどのようなキーワードについてユーザ入力をチェックすることによって様々な銀行取引を可能にするよう定義されてもよい。
【0070】
(4)スキルボットをトレーニングする-スキルボットは、ユーザ入力を発話の形態で受信し、受信した入力を解析またはその他の方法で処理し、受信したユーザ入力に関連するインテントを識別または選択するように構成される。上述のように、スキルボットは、このためにトレーニングされなければならない。ある実施形態では、スキルボットは、そのスキルボットに対して設定されたインテント、およびそのインテントに関連付けられる例示的な発話(集合的にトレーニングデータ)に基づいてトレーニングされ、それにより、スキルボットは、ユーザ入力発話を、スキルボットの設定されたインテントの1つに解決することができる。特定の実施形態では、スキルボットは、トレーニングデータを用いてトレーニングされ、ユーザが何を言っているか(または場合によっては、何を言おうとしているか)をスキルボットが識別することを可能にする予測モデルを使用する。DABP102は、様々な機械学習ベースのトレーニング技術、ルールベースのトレーニング技術、および/またはそれらの組み合わせを含む、スキルボットをトレーニングするためにスキルボット設計者によって用いられ得る様々な異なるトレーニング技術を提供する。ある実施形態では、トレーニングデータの一部分(例えば80%)は、スキルボットモデルをトレーニングするために用いられ、別の部分(例えば残りの20%)は、モデルをテストまたは検証するために用いられる。トレーニングされると、トレーニングされたモデル(トレーニングされたスキルボットと呼ばれることもある)は、次いで、ユーザ発話を処理し、それに応答するよう使用されることができる。ある場合には、ユーザの発話は、単一の回答だけを必要とし、さらなる会話を必要としない質問であり得る。このような状況に対処するために、スキルボットに対してQ&A(質疑応答)インテントを定義してもよい。これは、スキルボットがダイアログ定義を更新する必要なしにユーザ要求に対する返答を出力することを可能にする。Q&Aインテントは、通常のインテントと同様に生成される。Q&Aインテントについてのダイアログフローは、通常のインテントについてのダイアログフローとは異なり得る。
【0071】
(5)スキルボットのためにダイアログフローを作成する-スキルボットに対して指定されるダイアログフローは、受信されたユーザ入力に応答してスキルボットに対する異なるインテントが解決される際にスキルボットがどのように反応するかを記述する。ダイアログフローは、例えば、スキルボットがどのようにユーザ発話に応答するか、スキルボットがどのようにユーザに入力を促すか、スキルボットがどのようにデータを返すかといった、スキルボットがとる動作またはアクションを定義する。ダイアログフローは、スキルボットが辿るフローチャートのようなものである。スキルボット設計者は、マークダウン言語などの言語を用いてダイアログフローを指定する。ある実施形態では、OBotMLと呼ばれるYAMLのバージョンを用いて、スキルボットのためのダイアログフローを指定することができる。スキルボットのためのダイアログフロー定義は、スキルボット設計者に、スキルボットとスキルボットが対応するユーザとの間の対話のコレオグラフィを行わせる、会話自体のモデルとして働く。
【0072】
ある実施形態では、スキルボットのダイアログフロー定義は、3つのセクションを含む:
(a)コンテキストセクション
(b)デフォルト遷移セクション
(c)状態セクション。
【0073】
コンテキストセクション-スキルボット設計者は、コンテキストセクションにおいて、会話フローで用いられる変数を定義することができる。コンテキストセクションで指名され得る他の変数は、限定されないが、エラー処理のための変数、組込みエンティティまたはカスタムエンティティのための変数、スキルボットがユーザ選好を認識および持続することを可能にするユーザ変数などを含む。
【0074】
デフォルト遷移セクション-スキルボットのための遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクションで定義することができる。デフォルト遷移セクションで定義される遷移は、フォールバックとして作用し、状態内に定義される適用可能な遷移がない場合または状態遷移をトリガするために必要な条件を満たせない場合にトリガされる。デフォルト遷移セクションは、スキルボットが予想外のユーザアクションをそつなく処理することを可能にするルーティングを定義するために用いられ得る。
【0075】
状態セクション-ダイアログフローおよびその関連動作は、ダイアログフロー内の論理を管理する一連の一時的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログのその点において必要とされる機能を提供するコンポーネントを指名する。このようにして、コンポーネントの周囲に状態を構築する。状態は、コンポーネント固有の特性を含み、コンポーネントが実行された後にトリガされる他の状態への遷移を定義する。
【0076】
特別なケースのシナリオは、状態セクションを用いて取り扱うことができる。例えば、ユーザが取りかかっている第1のスキルを一時的に出て、デジタルアシスタント内で第2のスキルにおいて何かを行うというオプションを、ユーザに与えたい場合があるかもしれない。例えば、ユーザがショッピングスキルとの会話に関わっている(例えば、ユーザは、購入のために何らかの選択を行った)場合、ユーザは、銀行業務スキルにジャンプし(例えば、ユーザは、その購入に十分な金額を有することを確かめたい場合がある)、その後、ユーザの注文を完了するためにショッピングスキルに戻ることを望む場合がある。これに対処するために、第1のスキルにおけるアクションは、同じデジタルアシスタントにおいて第2の異なるスキルとの対話を開始し、次いで元のフローに戻るように構成されることができる。
【0077】
(6)カスタムコンポーネントをスキルボットに追加する-上述のように、スキルボットのためにダイアログフローにおいて指定される状態は、その状態に対応する必要な機能を提供するコンポーネントを指名する。コンポーネントは、スキルボットが機能を実行することを可能にする。ある実施形態では、DABP102は、広範囲の機能を実行するための事前設定されたコンポーネントのセットを提供する。スキルボット設計者は、これらの事前設定されたコンポーネントのうちの1つ以上を選択し、それらをスキルボットのためのダイアログフロー内の状態と関連付けることができる。スキルボット設計者はまた、DABP102によって提供されるツールを用いてカスタムまたは新たなコンポーネントを作成し、カスタムコンポーネントをスキルボットのためのダイアログフロー内の1つ以上の状態と関連付けることができる。
【0078】
(7)スキルボットをテストおよび展開する-DABP102は、スキルボット設計者が開発中のスキルボットをテストすることを可能にするいくつかの特徴を提供する。次いで、スキルボットは、デジタルアシスタントにおいて展開され、それに含めることができる。
【0079】
上記の説明は、スキルボットをどのように作成するかについて説明しているが、同様の技術を用いて、デジタルアシスタント(またはマスタボット)を作成することもできる。マスタボットまたはデジタルアシスタントレベルでは、デジタルアシスタントのために組込みシステムインテントを設定することができる。これらの組込みシステムインテントは、デジタルアシスタント自体(すなわち、マスタボット)が、デジタルアシスタントに関連付けられるスキルボットを呼び出すことなく取り扱うことができる一般的なタスクを識別するために用いられる。マスタボットに対して定義されるシステムインテントの例は、以下を含む:(1)退出:ユーザがデジタルアシスタントにおいて現在の会話またはコンテキストを終了したい旨を知らせる場合に当てはまる;(2)ヘルプ:ユーザがヘルプまたは方向付けを求める場合に当てはまる;(3)未解決のインテント(UnresolvedIntent):退出インテントおよびヘルプインテントとうまく一致しないユーザ入力に当てはまる。デジタルアシスタントはまた、デジタルアシスタントに関連付けられる1つ以上のスキルボットに関する情報を記憶する。この情報は、マスタボットが、発話を処理するために、特定のスキルボットを選択することを可能にする。
【0080】
マスタボットまたはデジタルアシスタントレベルでは、ユーザがデジタルアシスタントに句または発話を入力すると、デジタルアシスタントは、発話および関連する会話をどのようにルーティングするかを判断する処理を行うように構成される。デジタルアシスタントは、ルールベース、AIベース、またはそれらの組み合わせとすることができるルーティングモデルを用いて、これを判断する。デジタルアシスタントは、ルーティングモデルを用いて、ユーザ入力発話に対応する会話が、処理のために特定のスキルにルーティングされるべきか、組込みシステムインテントに従ってデジタルアシスタントまたはマスタボット自体によって処理されるべきか、または現在の会話フローにおいて異なる状態として処理されるべきかを判断する。
【0081】
特定の実施形態では、この処理の一部として、デジタルアシスタントは、ユーザ入力発話が、スキルボットを、その呼出し名を用いて明示的に識別するかどうかを判断する。呼出し名がユーザ入力に存在する場合、それは、呼出し名に対応するスキルボットの明示的な呼出しとして扱われる。そのようなシナリオでは、デジタルアシスタントは、ユーザ入力を、さらなる処理のために、明示的に呼び出されたスキルボットにルーティングすることができる。特定の、または明示的な呼出しがない場合、ある実施形態では、デジタルアシスタントは、受信されたユーザ入力発話を評価し、デジタルアシスタントに関連付けられるシステムインテントおよびスキルボットについて信頼度スコアを計算する。スキルボットまたはシステムインテントについて計算されるスコアは、ユーザ入力が、スキルボットが実行するように構成されるタスクを表すかまたはシステムインテントを表す可能性を表す。関連付けられる計算された信頼度スコアが閾値(例えば、Confidence Threshold(信頼度閾値)ルーティングパラメータ)を超えるシステムインテントまたはスキルボットは、さらなる評価の候補として選択される。次いで、デジタルアシスタントは、識別された候補から、ユーザ入力発話のさらなる処理のために、特定のシステムインテントまたはスキルボットを選択する。特定の実施形態では、1つ以上のスキルボットが候補として識別された後、それらの候補スキルに関連付けられるインテントが(各スキルに対するインテントモデルに従って)評価され、信頼度スコアが各インテントについて判断される。一般に、閾値(例えば70%)を超える信頼度スコアを有するインテントは、候補インテントとして扱われる。特定のスキルボットが選択された場合、ユーザ発話は、さらなる処理のために、そのスキルボットにルーティングされる。システムインテントが選択された場合、選択されたシステムインテントに従って、マスタボット自体によって、1つ以上のアクションが実行される。
【0082】
2.マスタボットシステムの構成要素
図2は、ある実施形態による、マスタボット(MB)システム200の簡略化されたブロック図である。MBシステム200は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアとの組み合わせで実現することができる。MBシステム200は、前処理サブシステム210と、複数インテントサブシステム(MIS)220と、明示的呼出サブシステム(EIS)230と、スキルボット呼出部240と、データストア250とを含む。図2に示すMBシステム200は、マスタボットにおける構成要素の構成の単なる例である。当業者は、多くの可能な変形、代替、および修正を認識するであろう。例えば、いくつかの実現例では、MBシステム200は、図2に示されるものより多いかもしくは少ないシステムもしくは構成要素を有してもよく、2つ以上のサブシステムを組み合わせてもよく、または異なる構成もしくは配置のサブシステムを有してもよい。
【0083】
前処理サブシステム210は、ユーザから発話「A」202を受信し、言語検出部212および言語パーサ214を通して発話を処理する。上述したように、発話は、音声またはテキストを含む様々な方法で提供され得る。発話202は、断章、完全な文、複数の文などであり得る。発話202は、句読点を含むことができる。例えば、発話202が音声として提供される場合、前処理サブシステム210は、結果として生じるテキストに句読点、例えば、カンマ、セミコロン、ピリオド等を挿入する、音声テキスト変換器(図示せず)を使用して、音声をテキストに変換してもよい。
【0084】
言語検出部212は、発話202のテキストに基づいて、発話202の言語を検出する。各言語は独自の文法および意味を有するので、発話202が処理される態様はその言語に依存する。言語の違いは、発話の構文および構造を解析する際に考慮される。
【0085】
言語パーサ214は、発話202を構文解析して、発話202内の個々の言語単位(例えば、単語)について品詞(POS)タグを抽出する。POSタグは、例えば、名詞(NN)、代名詞(PN)、動詞(VB)などを含む。言語パーサ214はまた、(例えば、各単語を別々のトークンに変換するために)発話202の言語単位をトークン化し、単語を見出し語化してもよい。見出し語は、辞書で表される単語のセットの主な形態である(例えば、「run」は、run, runs, ran, runningなどに対する見出し語である)。言語パーサ214が実行できる他のタイプの前処理は、複合表現のチャンク化、例えば、「credit」および「card」を単一の表現「credit_card」に組み合わせることを含む。言語パーサ214はまた、発話202内の単語間の関係を識別してもよい。例えば、いくつかの実施形態では、言語パーサ214は、発話のどの部分(例えば、特定の名詞)が直接目的語であるか、発話のどの部分が前置詞であるか等を示す依存関係ツリーを生成する。言語パーサ214によって実行された処理の結果は、抽出情報205を形成し、発話202それ自体とともにMIS220に入力として提供される。
【0086】
上述したように、発話202は、複数の文を含み得る。複数のインテントおよび明示的な呼出しを検出する目的で、発話202は、たとえそれが複数の文を含む場合であっても、単一の単位として扱われることができる。しかしながら、ある実施形態では、前処理は、例えば、前処理サブシステム210によって、複数インテント分析および明示的呼出し分析のために、複数の文の中で単一の文を識別するよう、実行されることができる。概して、MIS220およびEIS230によって生成される結果は、発話202が個々の文のレベルで処理されるか、または複数の文を含む単一の単位として処理されるかにかかわらず、実質的に同じである。
【0087】
MIS220は、発話202が複数のインテントを表すかどうかを判断する。MIS220は、発話202において複数のインテントの存在を検出することができるが、MIS220によって実行される処理は、発話202のインテントがボットのために構成された任意のインテントと一致するかどうかを判断することを伴わない。代わりに、発話202のインテントがボットインテントと一致するかどうかを判断するための処理は、(例えば、図3の実施形態に示すように、)MBシステム200のインテント分類器242によって、またはスキルボットのインテント分類器によって実行され得る。MIS220によって実行される処理は、発話202を処理することができるボット(例えば、特定のスキルボットまたはマスタボット自体)が存在する、と仮定する。したがって、MIS220によって実行される処理は、どのようなボットがチャットボットシステム内にあるかについての知識(例えば、マスタボットに登録されたスキルボットのアイデンティティ)または特定のボットに対してどのようなインテントが設定されているかについての知識を必要としない。
【0088】
発話202が複数のインテントを含む、と判断するために、MIS220は、データストア250内のルール252のセットから1つ以上のルールを適用する。発話202に適用されるルールは、発話202の言語に依存し、複数のインテントの存在を示す文パターンを含んでもよい。例えば、ある文パターンは、文の2つの部分(例えば等位項)を接続する接続詞を含んでもよく、両方の部分は別個のインテントに対応する。発話202が文パターンに一致する場合、発話202は複数のインテントを表す、と推測することができる。複数のインテントを有する発話は、必ずしも異なるインテント(例えば、異なるボットに向けられるインテント、または同じボット内の異なるインテント)を有するとは限らないことに留意されたい。代わりに、発話は、同じインテントの別々のインスタンス、例えば、「支払い口座Xを使用してピザを注文し、次いで支払い口座Yを使用してピザを注文する」、を有し得る。
【0089】
発話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の他方)が、次いで、処理のためにEIS230に送られ得る。
【0090】
EIS230は、受信した発話(例えば、発話206または発話208)がスキルボットの呼出し名を含むかどうかを判断する。ある実施形態では、チャットボットシステム内の各スキルボットは、そのスキルボットをチャットボットシステム内の他のスキルボットから区別する固有の呼出し名を割り当てられる。呼出し名のリストは、データストア250内にスキルボット情報254の一部として維持することができる。発話が呼出し名に一致する単語を含むとき、発話は明示的な呼出しであると見なされる。ボットが明示的に呼び出されない場合、EIS230によって受信された発話は、非明示的に呼び出す発話234と見なされ、マスタボットのインテント分類器(例えば、インテント分類器242)に入力されて、発話を処理するためにどのボットを使用するかが判断される。いくつかの例では、インテント分類器242は、マスタボットが非明示的に呼び出す発話を処理すべきであると判断する。他の例では、インテント分類器242は、処理のために発話をルーティングするためのスキルボットを決定する。
【0091】
EIS230によって提供される明示的な呼出し機能は、いくつかの利点を有する。それは、マスタボットが実行しなければならない処理の量を低減することができる。例えば、明示的な呼出しがある場合、マスタボットは、(例えば、インテント分類器242を使用して)いかなるインテント分類分析も行わなくてもよく、またはスキルボットを選択するために、低減されたインテント分類分析を行わなければならなくてもよい。したがって、明示的な呼出し分析は、インテント分類分析に頼ることなく、特定のスキルボットの選択を可能にしてもよい。
【0092】
また、複数のスキルボット間で機能に重複がある状況もあり得る。これは、例えば、2つのスキルボットによって取り扱われるインテントが重なり合うかまたは互いに非常に近い場合に起こり得る。そのような状況では、マスタボットが、インテント分類分析のみに基づいて、複数のスキルボットのうちのどれを選択するかを識別することは、困難であり得る。このようなシナリオでは、明示的な呼出しは、使用されるべき特定のスキルボットの曖昧さを解消する。
【0093】
発話が明示的な呼出しであると判断することに加えて、EIS230は、発話の任意の部分が明示的に呼び出されるスキルボットへの入力として使用されるべきかどうかを判断することを担う。特に、EIS230は、発話の一部が呼出しに関連付けられていないかどうかを判断することができる。EIS230は、発話の分析および/または抽出された情報205の分析を通して、この判断を行うことができる。EIS230は、EIS230によって受信された発話全体を送信する代わりに、呼出しに関連付けられていない発話の部分を呼び出されたスキルボットに送信することができる。いくつかの例では、呼び出されたスキルボットへの入力は、単に、呼出しに関連付けられる発話の任意の部分を除去することによって、形成される。例えば、「Pizza Botを使用してピザを注文したい」は、「ピザを注文したい」に短縮することができ、なぜならば、「Pizza Botを使用して」は、ピザボットの呼出しに関係するが、ピザボットによって実行されるいかなる処理にも関係しないからである。いくつかの例では、EIS230は、たとえば完全な文を形成するために、呼び出されたボットに送られるべき部分を再フォーマットしてもよい。したがって、EIS230は、明示的な呼出しがあることだけでなく、明示的な呼出しがあるときに何をスキルボットに送るべきかも判断する。いくつかの例においては、呼び出されるボットに入力するテキストがない場合がある。例えば、発話が「Pizza Bot」であった場合、EIS230は、ピザボットが呼び出されているが、ピザボットによって処理されるテキストはないと判断し得る。そのようなシナリオでは、EIS230は、送信すべきものがないことをスキルボット呼出部240に示すことができる。
【0094】
スキルボット呼出部240は、様々な態様でスキルボットを呼び出す。例えば、スキルボット呼出部240は、特定のスキルボットが明示的な呼出しの結果として選択されたという指示235の受信に応答してボットを呼び出すことができる。指示235は、明示的に呼び出されたスキルボットに対する入力とともにEIS230によって送信され得る。このシナリオでは、スキルボット呼出部240は、明示的に呼び出されたスキルボットに会話の制御を引き継ぐ。明示的に呼び出されたスキルボットは、入力を独立した発話として扱うことによって、EIS230からの入力に対する適切な応答を判断する。たとえば、応答は、特定のアクションを実行すること、または特定の状態で新たな会話を開始することであり得、新たな会話の初期状態は、EIS230から送信された入力に依存する。
【0095】
スキルボット呼出部240がスキルボットを呼び出すことができる別の態様は、インテント分類器242を使用する暗黙的な呼出しによるものである。インテント分類器242は、機械学習および/またはルールベースのトレーニング技術を使用してトレーニングされて、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断することができる。インテント分類器242は、スキルボットごとに1つのクラスである、異なるクラスでトレーニングされる。例えば、新たなスキルボットがマスタボットに登録されるたびに、その新たなスキルボットに関連付けられる例示的な発話のリストを使用して、インテント分類器242をトレーニングして、ある特定の発話が、その新たなスキルボットが実行できるあるタスクを表す尤度を判断することができる。このトレーニングの結果として生成されるパラメータ(例えば、機械学習モデルのパラメータに対する値のセット)は、スキルボット情報254の一部として記憶することができる。
【0096】
ある実施形態では、インテント分類器242は、ここでさらに詳細に説明されるように、機械学習モデルを使用して実現される。機械学習モデルのトレーニングは、機械学習モデルの出力として、どのボットが任意の特定のトレーニング発話を処理するための正しいボットであるかについての推論を生成するために、様々なスキルボットに関連付けられる例示的な発話から、発話の少なくともサブセットを入力することを含んでもよい。各トレーニング発話について、そのトレーニング発話のために使用すべき正しいボットの指示が、グラウンドトゥルース情報として提供され得る。機械学習モデルの挙動は、次いで、生成された推論とグラウンドトルース情報との間の差異を最小限にするように(例えば、逆伝搬を通して)適合させることができる。
【0097】
特定の実施形態では、インテント分類器242は、マスタボットに登録された各スキルボットについて、そのスキルボットがある発話(例えば、EIS230から受信した非明示的に呼び出す発話234)を処理できる尤度を示す信頼度スコアを判定する。インテント分類器242はまた、構成された各システムレベルインテント(例えば、ヘルプ、退出)について信頼度スコアを判定してもよい。ある特定の信頼度スコアが1つ以上の条件を満たす場合、スキルボット呼出部240は、その特定の信頼度スコアに関連付けられるボットを呼び出すことになる。例えば、ある閾値信頼度スコア値が満たされる必要があってもよい。したがって、インテント分類器242の出力245は、あるシステムインテントの識別またはある特定のスキルボットの識別のいずれかである。いくつかの実施形態では、閾値信頼度スコア値を満たすことに加えて、信頼度スコアは、次の高い信頼度スコアを特定の勝利マージン分だけ超えなければならない。そのような条件を課すことは、複数のスキルボットの信頼度スコアが各々閾値信頼度スコア値を超える場合に特定のスキルボットへのルーティングを可能にする。
【0098】
信頼度スコアの評価に基づいてボットを識別した後、スキルボット呼出部240は、識別されたボットに処理を引き渡す。システムインテントの場合、識別されたボットはマスタボットである。そうでない場合、識別されたボットはスキルボットである。さらに、スキルボット呼出部240は、識別されたボットに対する入力247として何を提供するかを判断することになる。上述したように、明示的な呼出しの場合、入力247は、呼出に関連付けられていない発話の一部に基づくことができ、または入力247は、無(例えば、空のストリング)であることができる。暗黙的な呼出の場合、入力247は発話全体であり得る。
【0099】
データストア250は、マスタボットシステム200の種々のサブシステムによって使用されるデータを記憶する、1つ以上のコンピューティングデバイスを備える。上記で説明したように、データストア250は、ルール252およびスキルボット情報254を含む。ルール252は、例えば、MIS220によって、発話がいつ複数のインテントを表すか、および複数のインテントを表す発話をどのように分割するか、を判断するためのルールを含む。ルール252はさらに、EIS230によって、スキルボットを明示的に呼び出す発話のどの部分をスキルボットに送信すべきかを判断するためのルールを含む。スキルボット情報254は、チャットボットシステム内のスキルボットの呼出し名、例えば、ある特定のマスタボットに登録されたすべてのスキルボットの呼出し名のリストを含む。スキルボット情報254はまた、チャットボットシステム内の各スキルボットについて信頼度スコアを判定するためにインテント分類器242によって使用される情報、例えば、機械学習モデルのパラメータを含むことができる。
【0100】
3.スキルボットシステムの構成要素
図3は、特定の実施形態に係るスキルボットシステム300の簡略ブロック図である。スキルボットシステム300は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアとの組み合わせで実現され得る、コンピューティングシステムである。図1に示される実施形態等のある実施形態では、スキルボットシステム300は、デジタルアシスタント内で1つ以上のスキルボットを実現するために使用されることができる。
【0101】
スキルボットシステム300は、MIS310と、インテント分類器320と、会話マネージャ330とを含む。MIS310は、図2のMIS220に類似しており、(1)発話が複数のインテントを表すかどうか、およびそうである場合、(2)発話を複数のインテントの各インテントについてどのように別個の発話に分割するか、をデータストア350内のルール352を使用して判断するよう動作可能であることを含む、同様の機能を提供する。ある実施形態では、複数のインテントを検出し、発話を分割するために、MIS310によって適用されるルールは、MIS220によって適用されるルールと同じである。MIS310は、発話302および抽出された情報304を受信する。抽出された情報304は、図1の抽出された情報205に類似しており、言語パーサ214またはスキルボットシステム300にローカルな言語パーサを使用して生成することができる。
【0102】
インテント分類器320は、図2の実施形態に関連して上で論じられたインテント分類器242と同様の態様で、ここにおいてさらに詳細に説明されるように、トレーニングされ得る。例えば、特定の実施形態では、インテント分類器320は、機械学習モデルを使用して実現される。インテント分類器320の機械学習モデルは、トレーニング発話として特定のスキルボットに関連付けられる例示的な発話の少なくともサブセットを使用して、当該特定のスキルボットについてトレーニングされる。各トレーニング発話に対するグラウンドトゥルースは、そのトレーニング発話に関連付けられる特定のボットインテントであろう。
【0103】
発話302は、ユーザから直接受信され得るか、またはマスタボットを介して供給され得る。発話302が、例えば、図2に示される実施形態におけるMIS220およびEIS230を通した処理の結果として、マスタボットを通して供給されるとき、MIS310は、MIS220によって既に行われている処理の反復を回避するようにバイパスされることができる。しかしながら、発話302が、例えば、スキルボットへのルーティング後に生じる会話中に、ユーザから直接受信される場合、MIS310は、発話302を処理して、発話302が複数のインテントを表すかどうかを判断することができる。発話302が複数のインテントを表す場合、MIS310は、1つ以上のルールを適用して、発話302を各インテントごとに別個の発話、例えば、発話「D」306および発話「E」308に分割する。発話302が複数のインテントを表さない場合、MIS310は、発話302を、分割することなく、インテント分類のために、インテント分類器320に転送する。
【0104】
インテント分類器320は、受信された発話(例えば、発話306または308)をスキルボットシステム300に関連付けられるインテントと照合するよう構成される。上記で説明したように、スキルボットは、1つ以上のインテントとともに構成されることができ、各インテントは、そのインテントに関連付けられ、分類器をトレーニングするために使用される、少なくとも1つの例示的な発話を含む。図2の実施形態では、マスタボットシステム200のインテント分類器242は、個々のスキルボットの信頼度スコアおよびシステムインテントの信頼度スコアを判定するようトレーニングされる。同様に、インテント分類器320は、スキルボットシステム300に関連付けられる各インテントの信頼度スコアを判定するようトレーニングされ得る。インテント分類器242によって実行される分類はボットレベルであるが、インテント分類器320によって実行される分類はインテントレベルであり、したがってより細かい粒度である。インテント分類器320は、インテント情報354へのアクセスを有する。インテント情報354は、スキルボットシステム300に関連付けられる各インテントごとに、そのインテントの意味を表わして示し、典型的にはそのインテントによって実行可能なタスクに関連付けられる発話のリストを含む。インテント情報354は、さらに、この発話のリストでのトレーニングの結果として生成されるパラメータを含むことができる。
【0105】
会話マネージャ330は、インテント分類器320の出力として、インテント分類器320に入力された発話に最もよくマッチするものとして、インテント分類器320によって識別された特定のインテントの指示322を受信する。いくつかの例では、インテント分類器320は、何らかのマッチを判断することができない。例えば、インテント分類器320によって計算される信頼度スコアは、発話がシステムインテントまたは異なるスキルボットのインテントに向けられる場合、閾値信頼度スコア値を下回るかもしれない。これが発生すると、スキルボットシステム300は、発話を、処理のため、例えば、異なるスキルボットにルーティングするために、マスタボットに任せてもよい。しかしながら、インテント分類器320がスキルボット内においてインテントの識別に成功した場合、会話マネージャ330はユーザとの会話を開始する。
【0106】
会話マネージャ330によって開始される会話は、インテント分類器320によって識別されたインテントに固有の会話である。たとえば、会話マネージャ330は、識別されたインテントのために、あるダイアログフローを実行するよう構成される状態機械を使用して実現されてもよい。状態機械は、(例えば、インテントがいかなる追加の入力もなしに呼び出されるときに対する)デフォルト開始状態、および1つ以上の追加の状態を含むことができ、各状態は、スキルボットによって実行されるべきアクション(たとえば、購入取引を実行する)および/またはユーザに提示されるべきダイアログ(たとえば、質問、応答)がそれに関連付けられている。したがって、会話マネージャ330は、インテントを識別する指示322を受信すると、アクション/ダイアログ335を決定することができ、会話中に受信された後続の発話に応答して、追加のアクションまたはダイアログを決定することができる。
【0107】
データストア350は、スキルボットシステム300の様々なサブシステムによって使用されるデータを記憶する1つ以上のコンピューティングデバイスを備える。図3に示すように、データストア350は、ルール352およびインテント情報354を含む。特定の実施形態では、データストア350は、マスタボットまたはデジタルアシスタントのデータストア、例えば、図2のデータストア250に統合されることができる。
【0108】
4.トレーニングされたインテント分類器を使用して発話を分類するためのスキーム
図4は、テキストデータ405に基づいて分類器(たとえば、図2および図3に関して説明したインテント分類器242または320)をトレーニングし利用するよう構成されるチャットボットシステム400の局面を示すブロック図である。図4に示すように、この例におけるチャットボットシステム400によって実行されるテキスト分類は、様々な段階、即ち、予測モデルトレーニング段階410と、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断するためのスキルボット呼出段階415と、発話を1つ以上のインテントとして分類するためのインテント予測段階420とを含む。予測モデルトレーニング段階410は、他の段階によって使用される1つ以上の予測モデル425a~425n(「n」は任意の自然数を表す)(ここでは個々に予測モデル425と呼ばれてもよく、集合的に予測モデル425と呼ばれてもよい)を構築し、トレーニングする。例えば、予測モデル425は、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断するためのモデルと、第1のタイプのスキルボットについて発話からインテントを予測するための別のモデルと、第2のタイプのスキルボットについて発話からインテントを予測するための別のモデルとを含むことができる。さらに他のタイプの予測モデルが、本開示による他の例で実現されてもよい。
【0109】
予測モデル425は、畳み込みニューラルネットワーク(「CNN」)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、または回帰型ニューラルネットワーク、例えば長短期記憶(「LSTM」)モデルもしくはゲート付き回帰型ユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の他の変形物(たとえば、単一インテント分類のためのマルチレベルnバイナリDNN分類器もしくはマルチクラスDNN分類器)などの機械学習(「ML」)モデルであり得る。予測モデル425はまた、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組合せ、たとえば、CNN-HMMまたはMCNN(マルチスケール畳み込みニューラルネットワーク)など、自然言語処理のためにトレーニングされた任意の他の適切なMLモデルであり得る。チャットボットシステム400は、特定のスキルボットが実行するよう構成されるタスクの尤度を判断し、第1のタイプのスキルボットについて発話からインテントを予測し、第2のタイプのスキルボットについて発話からインテントを予測するために、同じタイプの予測モデルまたは異なるタイプの予測モデルを採用してもよい。さらに他のタイプの予測モデルが、本開示による他の例で実現されてもよい。
【0110】
様々な予測モデル425をトレーニングするために、トレーニング段階410は、3つの主要な構成要素、即ち、データセット準備430、特徴エンジニアリング435、およびモデルトレーニング440から構成される。データセット準備430は、データアセット445をロードし、システムが予測モデル425をトレーニングおよびテストすることができるように、データアセット445をトレーニングおよび検証セット445a~nに分割し、基本的な前処理を実行するプロセスを含む。データアセット445は、様々なスキルボットに関連付けられる例示的な発話からの発話の少なくともサブセットを含んでもよい。上述したように、発話は、音声またはテキストを含む様々な方法で提供され得る。発話は、断章、完全な文、複数の文などであり得る。例えば、発話が音声として提供される場合、データ準備430は、結果として生じるテキストに句読点、例えば、カンマ、セミコロン、ピリオド等を挿入する、音声テキスト変換器(図示せず)を使用して、音声をテキストに変換してもよい。いくつかの例では、例示的な発話は、クライアントまたは顧客によって提供される。他の例では、例示的な発話は、(例えば、チャットボットが学習するスキルに特定のライブラリからの発話を識別する)以前の発話のライブラリから自動的に生成される。予測モデル425のためのデータアセット445は、入力テキストもしくは音声(またはテキストもしくは音声フレームの入力特徴)と、値の行列またはテーブルとして入力テキストもしくは音声(または入力特徴)に対応するラベル450とを含むことができる。例えば、トレーニング発話ごとに、そのトレーニング発話に使用すべき正しいボットの指示が、ラベル450のためのグラウンドトルース情報として提供されてもよい。予測モデル425の挙動は、次いで、生成された推論とグラウンドトルース情報との間の差を最小にするように(例えば、逆伝搬を通して)適合させることができる。代替的に、予測モデル425は、トレーニング発話として特定のスキルボットに関連付けられる例示的な発話の少なくともサブセットを使用して、当該特定のスキルボットについてトレーニングされてもよい。各トレーニング発話に対するラベル450のためのグラウンドトゥルースは、そのトレーニング発話に関連付けられる特定のボットインテントであろう。
【0111】
いくつかの実施形態では、特徴エンジニアリング435は、データアセット445を特徴ベクトルに変換することを含み、および/または新たな特徴を作成することはデータアセット445を使用して作成されることになる。特徴ベクトルは、特徴としてのカウントベクトル、単語レベル、nグラムレベルもしくは文字レベルなどの特徴としての単語頻度・逆文書頻度(TF-IDF)ベクトル、特徴としての単語埋め込み、特徴としてのテキスト/NLP、特徴としてのトピックモデル、またはそれらの組合せを含んでもよい。カウントベクトルは、各行が発話を表し、各列が発話からの単語を表し、各セルが発話内の特定の単語の頻度カウントを表す、データアセット445の行列表記である。TF-IDFスコアは、発話における単語の相対的重要度を表す。単語埋め込みは、密なベクトル表現を用いて単語および発話を表す形式である。ベクトル空間内の単語の位置は、テキストから学習され、その単語が使用されるときにその単語を取り囲む単語に基づく。テキスト/NLPベースの特徴は、発話内の単語数、発話内の文字数、平均単語密度、句読点数、大文字数、見出し語数、品詞タグ(たとえば、名詞および動詞)の頻度分布、またはそれらの任意の組合せを含んでもよい。トピックモデリングは、発話の集まりから、当該集まりにおいて最良の情報を含む単語のグループ(トピックと呼ばれる)を識別する技術である。
【0112】
いくつかの実施形態では、モデルトレーニング440は、特徴エンジニアリング435において作成された特徴ベクトルおよび/または新たな特徴を使用して分類器をトレーニングすることを含む。いくつかの例では、トレーニングプロセスは、予測モデル425について損失関数または誤差関数を最小化する、予測モデル425のためのパラメータのセットを見つけるための反復動作を含む。各反復は、予測モデル425のためのパラメータのセットを使用する損失関数または誤差関数の値が、前の反復において別のパラメータのセットを使用する損失関数または誤差関数の値よりも小さくなるように、予測モデル425のためのパラメータのセットを見つけることを伴い得る。損失関数または誤差関数は、予測モデル425を使用して予測される出力とデータアセット445に含まれるラベル450との間の差を測定するように構築することができる。パラメータのセットが識別されると、予測モデル425はトレーニングされ、設計通りに予測に利用することができる。
【0113】
データアセット445、ラベル450、特徴ベクトルおよび/または新たな特徴に加えて、他の技術および情報も、予測モデル425のトレーニングプロセスを改良するために採用されることができる。たとえば、特徴ベクトルおよび/または新たな特徴は、分類器またはモデルの精度を改善するのに役立つよう、互いに組み合わされてもよい。加えて、または代替として、ハイパーパラメータが、調整または最適化されてもよく、例えば、ツリー長、リーフ、ネットワークパラメータ等のいくつかのパラメータが、最良適合モデルを得るように微調整されることができる。しかしながら、ここに記載のトレーニング機構は、主に予測モデル425のトレーニングに焦点を当てる。これらのトレーニング機構は、他のデータアセットからトレーニングされた既存の予測モデル425を微調整するためにも利用され得る。例えば、場合によっては、予測モデル425は、別のスキルボットに特有の発話を使用して事前にトレーニングされているかもしれない。そのような場合、予測モデル425は、ここで論じられるように、データアセット445を使用して再トレーニングされることができる。
【0114】
予測モデルトレーニング段階410は、タスク予測モデル460およびインテント予測モデル465を含むトレーニングされた予測モデル425を出力する。タスク予測モデル460は、スキルボット呼出段階415において、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断するために使用されてもよく(470)、インテント予測モデル465は、インテント予測段階420において、発話を1つ以上のインテントとして分類するために、使用されてもよい(475)。いくつかの例では、スキルボット呼出段階415およびインテント予測段階420は、いくつかの例では、別個のモデルを用いて、独立して進行してもよい。例えば、トレーニングされたインテント予測モデル465は、最初にスキルボット呼出段階415においてスキルボットを識別することなく、インテント予測段階420においてスキルボットについてインテントを予測するために使用されてもよい。同様に、タスク予測モデル460は、インテント予測段階420において発話のインテントを識別することなく、スキルボット呼出段階415において、発話に対して使用されるべきタスクまたはスキルボットを予測するために、使用されてもよい。
【0115】
代替として、スキルボット呼出段階415およびインテント予測段階420は、一方の段階が他方の段階の出力を入力として用いるか、または一方の段階が他方の段階の出力に基づいて特定のスキルボットについて特定の態様で呼び出される状態で、連続的に行われてもよい。例えば、所与のテキストデータ405について、スキルボット呼出部は、スキルボット呼出段階415およびタスク予測モデル460を使用して暗黙の呼出しを通じてスキルボットを呼び出すことができる。タスク予測モデル460は、機械学習および/またはルールベースのトレーニング技術を使用してトレーニングされて、ある発話が、ある特定のスキルボット470が実行するよう構成されるあるタスクを表す尤度を判断することができる。次いで、識別または呼び出されたスキルボットおよび所与のテキストデータ405について、インテント予測段階420およびインテント予測モデル465を使用して、受信された発話(例えば、所与のデータアセット445内の発話)を、スキルボットに関連付けられるインテント475にマッチさせることができる。ここで説明するように、スキルボットは、1つ以上のインテントを用いて構成することができ、各インテントは、そのインテントに関連付けられ、分類器をトレーニングするために使用される、少なくとも1つの例示的な発話を含む。いくつかの実施形態では、マスタボットシステムで使用されるスキルボット呼出段階415およびタスク予測モデル460は、個々のスキルボットについての信頼度スコアおよびシステムインテントについての信頼度スコアを判定するようトレーニングされる。同様に、インテント予測段階420およびインテント予測モデル465は、スキルボットシステムに関連付けられる各インテントについて信頼度スコアを判定するようトレーニングされ得る。スキルボット呼出段階415およびタスク予測モデル460によって実行される分類はボットレベルであるが、インテント予測段階420およびインテント予測モデル465によって実行される分類はインテントレベルであり、したがってより細かい粒度である。
【0116】
C.ロジット関数
図5は、いくつかの実施形態による、例示的なニューラルネットワーク500の概略図を示す。ニューラルネットワーク500は、トレーニングシステムによってトレーニングされ、チャットボットシステムによって実現される機械学習モデルとすることができ、機械学習モデルは、発話が特定のインテントクラスに対応するかどうかを予測するようにトレーニングされる。いくつかの例では、ニューラルネットワーク500は、入力層502と、隠れ層504と、出力層506とを含む。いくつかの例では、ニューラルネットワーク500は、隠れ層504がニューラルネットワークの最終隠れ層に対応する、複数の隠れ層を含む。
【0117】
入力層502は、入力データまたは入力データの表現(例えば、発話を表す値のn次元配列)を受信し、1つ以上の学習されたパラメータを入力データに適用して、出力のセット(たとえば、数値のセット)を生成することができる。出力のセットは、隠れ層504によって処理することができる。
【0118】
隠れ層504は、出力のセットを、異なるクラスからの入力データポイントがより良好に分離される異なる特徴空間に変換する、1つ以上の学習されたパラメータを含むことができる。
【0119】
出力層506は、隠れ層からの出力をロジット値にマッピングする分類層を含むことができ、各値は1つの特定のクラス(例えば、解決可能なクラス、解決不可能なクラス)に対応する。いくつかの例では、出力層506は、ロジット値を合計で1である確率値のセットに制約するための活性化関数を含む。したがって、各クラスについて分類層(ロジット関数)によって生成されたロジット値は、次いで、発話について分類を予測するために出力層(本明細書では「活性化層」とも呼ばれる)の活性化関数によって処理され得る。
【0120】
出力値のセットから単一のインテントを予測することの一部として、機械学習モデルは、ニューラルネットワーク500のネットワーク層においてロジット関数(「ロジスティック回帰関数」の略)を採用してもよい。出力層506は、中間出力(例えば、発話が特定のクラスに対応するかどうかを予測する確率値)をロジット値に変換するためのロジット関数を含み得る。場合によっては、ロジット関数は、特定のクラスについて、0と1との間の確率値に対応する入力を受け取り、負の無限大と正の無限大との間の非有界範囲内でロジット値を出力する、オッズの対数である。ロジット関数は、中間出力のセットの各中間出力を正規化するために使用され得、その結果、結果として生じるロジット値のセットは、予測される出力クラスにわたって対称的な単峰性の確率分布に表現され得る。数学的に言えば、ロジット関数は、
【0121】
【数1】
【0122】
と定義され、ここで、pは、特定のクラスに対応する入力の確率である。確率pは、(0,1)の間の範囲内で設定することができる。出力ロジットは、(-∞,+∞)の間の範囲のロジット値に対応することができる。このようにして、機械学習モデルは、次いで起こる活性化関数が分類器の他のあまり可能性のない出力から最も可能性のある出力(たとえば、インテント)を予測することができるように、ロジット関数を採用し得る。
【0123】
機械学習モデル(例えば、図3のインテント分類器320)のトレーニングの一部として、機械学習モデルは、各クラスについて重心を学習してもよく、重心はロジット関数の一部である。インテント分類器が認識するようにトレーニングされた、識別されたインテントのセットについて、重心は、たとえば、重心を、隣接するクラスタ間の距離およびクラスタとモデル出力との間の距離を測定するための位置として使用することによって、発話を、他のインテントよりも、ある特定のインテントに属するものとして分類する役割を果たす。
【0124】
重心を、ロジット関数を重み付けるために使用して、ロジット関数を、例えば、発話から可能性のあるインテントを分離するために分類器出力をフィルタリングすることの一部として使用されるようにすることができる。数学的用語では、ロジット関数を関係付ける方程式は、logiti = f(x)*Wiであってもよく、式中、xはモデルへの入力であり、f(x)は変換のセット(例えば、ハイウェイネットワーク関数)であり、Wiは、インテント「i」に対するモデル出力の重み付け係数として働く、当該インテントに対する重心である。したがって、インテント分類器が認識するようにトレーニングされた、識別されたインテントのセットについて、重心は、たとえば、重心を、隣接するクラスタ間の距離を測定するための位置として使用することによって、発話を、他のインテントよりも、ある特定のインテントに属するものとして分類する役割を果たす。
【0125】
次いで、予測される出力クラスの各々について生成されたロジット値は、ロジット値によって表されるオッズをすべての予測される出力クラスにわたる確率分布にマッピングするために、活性化関数によって処理され得る。活性化関数の一例として、softmax関数を使用して、ネットワークの出力(例えば、order_pizzaクラスに対応するロジット値)をすべての予測される出力クラス(たとえば、order_pizza、未解決のインテント)にわたる確率分布に正規化してもよい。
【0126】
softmaxを適用する前、ロジット値は負であるかもしれず、または1より大きいかもしれず、そして、合計が1ではないかもしれない。softmaxを適用すると、各出力は区間(0,1)にあることになり、出力は合計で1になることになる。さらに、より大きい入力ロジット値は、より大きい確率に対応することになる。関数用語では、softmax関数は、以下によって表され、
【0127】
【数2】
【0128】
i= 1:Kであり、zはK個の実数の集合(z1 : zK)である。いくつかの例では、softmax関数は、最大入力値の位置の周りにより集中した確率分布を生成するベースファクタbによって重み付けされ得る。そのような場合、softmax関数は
【0129】
【数3】
【0130】
であり、式中、βは実数である。インテント分類の文脈では、ziはf(x)*wiに設定されてもよい。
【0131】
D.発話分類のための距離ベースのロジット決定のための技術
しかしながら、softmax関数の分母は、実数「i」に対するsoftmax関数の値が、機械学習モデルが区別するようにトレーニングされる他のすべてのクラスの指数の関数であることを示す。したがって、softmax正規化は、分類器モデルによって出力される個の強さに対してあまり敏感ではない可能性がある。加えて、特にモデル出力のいくつかが負である場合、softmaxは信頼度値を過大評価し得る。
【0132】
例示的な例として、2つの発話の所与の3方向分類に対するロジット値は、[10,3,1]および[3,-2,-4]である。第2の発話では、モデルは、より低い全体的ロジット値および負のロジット値の包含に反映されるように、予測について、第1の発話におけるほど信頼性はないが、softmax関数を使用した正規化後、両方の発話に対する信頼度スコアは、100%に近い。ロジットの公称値は、それぞれのクラスにおけるモデルの信頼度に対応するはずである(例えば、より大きいロジット値は、より高い確率に対応するはずである)ので、この例では、softmax関数は、分類器の部分に過信頼および不正確さを導入する。
【0133】
nバイナリ分類器手法の欠点に対処することの一部として、発話が特定のクラスに対応するかどうかを予測するために距離ベースのロジット値を生成することができる。インテントクラスの確率に対応する距離ベースのロジット値は、所与のクラス「i」について、機械学習モデルの最終層によって生成される中間出力「f(x)」と重心Wiとの間の距離(例えば、ユークリッド距離)を測定することによって求められ得る。
【0134】
例えば、機械学習モデルは、出力のセットを生成するよう構成され得、セットの各出力は、発話がクラスのセットのそれぞれのクラスに対応するかどうかを予測する確率を含む。機械学習モデルは、バイナリ分類器のセットを含むことができる。セットの各バイナリ分類器は、発話が、クラスのセットのうち、他のクラスよりも特定のクラスに対応するかどうかを表す中間出力を生成することができる。中間出力を、修正されたロジット関数に適用して、特定のクラスについての距離ベースのロジット値を生成することができる。距離ベースのロジット値は、発話が特定のクラスに対応するオッズを表すことができ、特定のクラスについてのオッズは、バイナリ分類器の中間出力と特定のクラスの重心との間の距離に基づいて正規化される。ロジット関数は、特定のクラス(例えば、order_pizzaインテントクラス、cancel_pizzaインテントクラス)に対するオッズの対数とすることができ、中間出力を確率分布内に適合する対応するロジット値に変換する。ロジット値分布は、(-∞,+∞)の間の範囲であり得る。ロジット値は、特定のクラスについて[0,1]の間の範囲である確率値を生成するために、活性化関数を通じて処理され得る。
【0135】
いくつかの例では、確率の精度は、強化された活性化関数を実現することによってさらに改善される。強化された活性化関数は、スケーリング値を使用して距離ベースのロジットをスケーリングすることを含む。スケーリング値は、ハイパーパラメータチューニング中に決定される固定値であり得る。代替的に、スケーリング値は、インテント分類器の学習されたパラメータであり得、パラメータの値は、モデルトレーニング中に学習される。追加または代替として、機械学習モデルは、所与の発話の確率推定の精度を改善するために、強化された損失関数の使用を組み込むことができる。強化された損失関数の損失項は、(i)バイナリ交差エントロピー損失項、(ii)平均二乗誤差項、(iii)マージン損失項、および(iv)閾値損失項のうちの1つ以上を含むことができる。いくつかの例では、損失関数の各項は、それぞれの重み付け係数によって重み付けされる。重み付け係数は、インテント分類器のハイパーパラメトリックチューニングの一部としてチューニングされることができる。
【0136】
したがって、距離ベースのロジット値を実現することは、発話の分類(例えば、インテント、範囲、技能など)が着手され得るときはいつでも、図1図2、および図3に関して説明されるように、チャットボットシステムに統合され得る自動プロセスを伴う。有利なことに、モデルおよびチャットボットは、少なくとも部分的に、モデルが、softmax関数から生じる過信頼問題の影響を低減し、n-バイナリ「1対全」分類器の不確実性欠点に悩まされないため、距離ベースのロジットを使用して、発話に対して、より良好に機能する。さらに、プロセスが自動的に適用されるので、顧客またはクライアントは、チャットボットシステムからの誤って指示された問い合わせを経験することはない。
【0137】
1.距離ベースのロジット値
いくつかの実施形態では、nバイナリ「1対全」アプローチは、スキルボット呼出し415および/またはインテント予測420において実現される。距離ベースのロジットは、分類が、発話の表現f(x)と所与のクラス「i」の重心Wiとの間の距離を測定することによってロジット値を求めることを含む手法を記述する。例えば、関数「distance」を、logits = -1.0*distance(Wi, f(x))のように定義してもよく、ここで、「distance」はユークリッド距離関数によって測定されてもよい。このようにして、クラスの確率によって測定される信頼度スコアは、ロジット値のスケーリングされたシグモイド活性化を計算することによってロジット値から導出されてもよい。
【0138】
図6は、いくつかの実施形態による、距離ベースのロジット値を求めるためにロジット関数を修正するための例示的なプロセス600を示すフローチャートを示す。図6に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図6に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図6は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。いくつかの実施形態では、ステップは、トレーニングサブシステムによって実行されて、解決できないクラスに対応する確率値を、1つ以上の機械学習モデル(例えば、インテント分類器242または320)の距離ベースのロジット値にマッピングする。トレーニングサブシステムは、データ処理システム(例えば、図4に関して説明したチャットボットシステム400)の一部、または機械学習モデルをトレーニングおよび展開するよう構成される別のシステムの構成要素であることができる。
【0139】
605において、トレーニングサブシステムはトレーニングデータセットを受信する。トレーニングデータセットは、発話またはメッセージのセットを含むことができる。セットの各発話は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話の予測されるインテントクラスを識別する。いくつかの例では、トレーニングデータセットは、1つ以上のトレーニングサブデータセットにグループ化され、各トレーニングサブデータセットは、バイナリ分類器のセットのうちのあるバイナリ分類器をトレーニングするために使用され得るトレーニングデータ(たとえば、発話)を含む。
【0140】
610において、トレーニングサブシステムは、機械学習モデルを初期化する。機械学習モデルは、畳み込みニューラルネットワーク(「CNN」)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、または再帰型ニューラルネットワーク、例えば長短期記憶(「LSTM」)モデルもしくはゲート付き再帰型ユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の他の変形物(たとえば、単一インテント分類のためのマルチレベルnバイナリDNN分類器もしくはマルチクラスDNN分類器であり得る。機械学習モデルはまた、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組合せ、たとえば、CNN-HMMまたはMCNN(マルチスケール畳み込みニューラルネットワーク)など、自然言語処理のためにトレーニングされた任意の他の適切なMLモデルであり得る。
【0141】
いくつかの例では、機械学習モデルは、出力のセットを生成するよう構成され、セットの各出力は、発話がクラスのセットのそれぞれのクラスに対応するかどうかを予測する確率を含む。機械学習モデルは、バイナリ分類器のセットを含むことができる。セットの各バイナリ分類器は、発話が、クラスのセットのうち、他のクラスよりも特定のクラスに対応するかどうかを表す値を含む中間出力を生成することができる。中間出力をロジット関数に入力して、特定のクラスに対するロジット値を生成することができる。ロジット値は、発話が特定のクラスに対応するオッズを表すことができる。ロジット関数は、特定のクラス(例えば、order_pizzaインテントクラス、cancel_pizzaインテントクラス)に対するオッズの対数であり、機械学習モデルの出力を、確率分布内に適合する対応するロジット値に変換する。ロジット値分布は、(-∞,+∞)の間の範囲である。
【0142】
ロジット値は、特定のクラスについての確率値を生成するために、活性化関数を通じて処理され得る。確率値は[0,1]の間の範囲である。機械学習モデルの初期化は、層の数、各層のタイプ(例えば、全結合型、畳み込みニューラルネットワーク)、および各層の活性化関数のタイプ(たとえば、シグモイド)を定義することを含むことができる。
【0143】
615において、トレーニングサブシステムは、機械学習モデルの最終層からロジット関数のセットを取り出す。上述のように、バイナリ分類器の中間出力は、セットのそれぞれのロジット関数に入力されて、特定のクラスに対するロジット値を生成することができる。したがって、セットのロジット関数は、クラスのセットのうちのあるクラスに対する確率に対応するオッズの対数とすることができ、オッズの対数は、クラスに関連付けられる分布の重心によって重み付けされる。さらに、セットの各ロジット関数は、機械学習モデルのバイナリ分類器のセットのうちのあるバイナリ分類器に関連付けることができる。ロジット関数のセットを取り出すために、トレーニングシステムは、全結合型ニューラルネットワーク内の層のセットから最終層を選択することができる。最終層のロジット関数のセットは、次いで、修正のためにアクセスされ得る。
【0144】
620において、トレーニングサブシステムは、ロジット関数のセットを修正する。例えば、セットの各ロジット関数は、クラスのセットの所与のクラス「i」について、バイナリ分類器「f(x)」の中間出力と重心「Wi」との間の距離を求めるように修正され得る。したがって、修正された関数は、logits = -1.0*distance(Wi, f(x))によって表すことができる。この距離は、中間出力とクラスの重心との間のユークリッド距離または余弦距離を含むことができる。
【0145】
625において、トレーニングサブシステムは、トレーニングデータセットを処理し、修正されたロジット関数を用いて機械学習モデルをトレーニングする。機械学習モデルのトレーニングは、各バイナリ分類器をトレーニングすることを含むことができる。トレーニングは、機械学習モデルが、発話が特定のクラスに対応する確率に対応する距離ベースのロジット値を生成するのを容易にする。したがって、機械学習モデルは、修正されたロジット関数のセットの各修正されたロジット関数によって出力される距離ベースのロジット値を生成することができる。トレーニングサブシステムは、バイナリ分類器のセットの各バイナリ分類器をトレーニングすることによって機械学習モデルをトレーニングすることができ、重心およびバイナリ分類器の中間出力に対応する値は、トレーニングデータセットに基づいて学習される。いくつかの例では、機械学習モデルの第1のバイナリ分類器をトレーニングするために使用される第1のトレーニングデータセットは、第2のバイナリ分類器をトレーニングするために使用される第2のトレーニングデータセットとは異なる。活性化関数(例えば、シグモイド関数)が、修正されたロジット関数によって出力される距離ベースのロジット値に適用されて、予測される出力を生成することができ、期待される出力は、発話がクラスのセットのそれぞれのクラスに対応するかどうかを予測する確率を識別する。
【0146】
次いで、バイナリ分類器によって生成される予測される出力と、対応する発話のトレーニングラベルによって示される期待される出力との間の総損失を最小限に抑えるよう、各バイナリ分類器の1つ以上のパラメータが学習され得る。総損失は、損失関数を、予測される出力および期待される出力に適用することによって、求めることができる。機械学習モデルのトレーニングは、損失が最小誤差閾値に達するまで実行することができる。
【0147】
630において、トレーニングサブシステムは、トレーニングされた機械学習モデルをチャットボットシステムに(例えば、スキルボットの一部として)展開し、ここで、トレーニングされた機械学習モデルは、修正されたロジット関数を含む。その後、プロセス600は終了する。
【0148】
2.強化された活性化関数
いくつかの例では、確率推定の精度は、強化された活性化関数を実現することによってさらに改善される。強化された活性化関数は、スケーリング値を使用して距離ベースロジットをスケーリングすることを含む。スケーリング値は、ハイパーパラメータチューニングによって決定される固定値、または、モデルトレーニング中にパラメータの値が学習される、インテント分類器の学習されたパラメータとすることができる。強化された活性化関数のスケーリング値は、機械学習モデルの最高出力と2番目に高い出力との間に最小マージン値を課すように学習されることができる。最小マージン値を組み込むことによって、従来のnバイナリ「1対全」分類器が遭遇する不確実性問題を低減することができる。
【0149】
図7は、いくつかの実施形態による、発話が特定のクラスに対応する確率を推定するために活性化関数を修正するための例示的なプロセス700を示すフローチャートを示す。図7に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図7に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図7は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。いくつかの実施形態では、ステップは、トレーニングサブシステムによって実行されて、解決できないクラスに対応する確率値を、1つ以上の機械学習モデル(例えば、インテント分類器242または320)の距離ベースのロジット値にマッピングする。トレーニングサブシステムは、データ処理システム(例えば、図4に関して説明したチャットボットシステム400)の一部、または機械学習モデルをトレーニングおよび展開するよう構成される別のシステムの構成要素であることができる。
【0150】
705において、トレーニングサブシステムはトレーニングデータセットを受信する。トレーニングデータセットは、発話またはメッセージのセットを含むことができる。セットの各発話は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話の予測されるインテントクラスを識別する。いくつかの例では、トレーニングデータセットは、1つ以上のトレーニングサブデータセットにグループ化され、各トレーニングサブデータセットは、バイナリ分類器のセットのうちのあるバイナリ分類器をトレーニングするために使用され得るトレーニングデータ(たとえば、発話)を含む。
【0151】
710において、トレーニングサブシステムは、機械学習モデルを初期化する。機械学習モデルは、畳み込みニューラルネットワーク(「CNN」)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、または再帰型ニューラルネットワーク、例えば長短期記憶(「LSTM」)モデルもしくはゲート付き再帰型ユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の他の変形物(たとえば、単一インテント分類のためのマルチレベルnバイナリDNN分類器もしくはマルチクラスDNN分類器であり得る。機械学習モデルはまた、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組合せ、たとえば、CNN-HMMまたはMCNN(マルチスケール畳み込みニューラルネットワーク)など、自然言語処理のためにトレーニングされた任意の他の適切なMLモデルであり得る。
【0152】
いくつかの例では、機械学習モデルは、出力のセットを生成するよう構成され、セットの各出力は、発話がクラスのセットのそれぞれのクラスに対応するかどうかを予測する確率を含む。機械学習モデルは、バイナリ分類器のセットを含むことができる。セットの各バイナリ分類器は、発話が、クラスのセットのうち、他のクラスよりも特定のクラスに対応するかどうかを表す値を含む中間出力を生成することができる。中間出力をロジット関数に入力して、特定のクラスに対するロジット値を生成することができる。ロジット値は、発話が特定のクラスに対応するオッズを表すことができる。ロジット関数は、特定のクラス(例えば、order_pizzaインテントクラス、cancel_pizzaインテントクラス)に対するオッズの対数であり、機械学習モデルの出力を、確率分布内に適合する対応するロジット値に変換する。ロジット値は、(-∞,+∞)の間の範囲である。
【0153】
ロジット値は、特定のクラスについての確率値を生成するために、活性化関数を通じて処理され得る。確率値は[0,1]の間の範囲である。機械学習モデルの初期化は、層の数、各層のタイプ(例えば、全結合型、畳み込みニューラルネットワーク)、および各層の活性化関数のタイプ(たとえば、シグモイド)を定義することを含むことができる。
【0154】
715において、トレーニングサブシステムは、機械学習モデルの最終層からロジット関数のセットを取り出す。上述のように、バイナリ分類器の中間出力は、セットのそれぞれのロジット関数に入力されて、特定のクラスに対するロジット値を生成することができる。したがって、セットのロジット関数は、クラスのセットのうちのあるクラスに対する確率に対応するオッズの対数とすることができ、オッズの対数は、クラスに関連付けられる分布の重心によって重み付けされる。さらに、セットの各ロジット関数は、機械学習モデルのバイナリ分類器のセットのうちのあるバイナリ分類器に関連付けることができる。ロジット関数のセットを取り出すために、トレーニングシステムは、全結合型ニューラルネットワーク内の層のセットから最終層を選択することができる。最終層のロジット関数のセットは、次いで、修正のためにアクセスされ得る。
【0155】
720において、トレーニングサブシステムは、ロジット関数のセットを修正する。例えば、セットの各ロジット関数は、クラスのセットの所与のクラス「i」について、バイナリ分類器「f(x)」の中間出力と重心「Wi」との間の距離を求めるように修正され得る。したがって、修正された関数は、logits = -1.0*distance(Wi, f(x))によって表すことができる。この距離は、中間出力とクラスの重心との間のユークリッド距離または余弦距離を含むことができる。
【0156】
725において、トレーニングサブシステムは、スケーリング値を含むことによって機械学習モデルの活性化関数を修正する。上述のように、強化された活性化関数は、スケーリング値を使用して距離ベースのロジットをスケーリングすることを含む。スケーリング値は、ハイパーパラメータチューニングによって決定される固定値、または、モデルトレーニング中にパラメータの値が学習される、インテント分類器の学習されたパラメータとすることができる。強化された活性化関数は、confidence_score = distance_scale * sigmoid(-1.0*dist(Wi, f(x)))によって表すことができ、ここで、confidence_scoreは、機械学習モデルの出力を表し、発話がクラスのセットのそれぞれのクラスに対応するかどうかを予測する確率に対応する。distance_scaleは、ハイパーパラメータチューニングによって決定される固定値、または、以下で説明するように、トレーニング段階410の一部として自動的に決定されるトレーニング可能なモデルパラメータであり得る。
【0157】
したがって、確率は、出力を0と1との間で正規化し、機械学習モデルによって生成される最高出力と2番目に高い出力との間に最小マージン値を課すことによって、強化された活性化関数(例えば、スケーリングされたシグモイド関数)から求めることができる。例えば、強化された活性化関数は、最上位2つのクラススコア間に0.1の最小差を課すよう使用され得る。最上位2つのスコアの差が0.1未満である場合、残りのクラスに対する出力は、明示的に0.1に低減され得る。そして、最上位2つのスコアの間の差を再度算出することができる。
【0158】
730において、トレーニングサブシステムは、トレーニングデータセットを処理し、ロジット関数のセットおよび強化された活性化関数を用いて機械学習モデルをトレーニングする。トレーニングは、機械学習モデルが、発話が特定のクラスに対応する正規化された確率に対応する予測される出力を生成するのを容易にする。正規化された確率は、強化された活性化関数の学習されたパラメータに少なくとも部分的に基づいて求められ得る。トレーニングサブシステムは、バイナリ分類器のセットの各バイナリ分類器をトレーニングすることによって機械学習モデルをトレーニングすることができ、重心およびバイナリ分類器の中間出力に対応する値は、トレーニングデータセットに基づいて学習される。いくつかの例では、機械学習モデルの第1のバイナリ分類器をトレーニングするために使用される第1のトレーニングデータセットは、第2のバイナリ分類器をトレーニングするために使用される第2のトレーニングデータセットとは異なる。
【0159】
いくつかの例では、機械学習モデルは、修正されたロジット関数によって出力された距離ベースのロジット値に、強化された活性化関数を適用して、予測される出力を生成するよう、トレーニングされる。予測される出力は、発話がクラスのセットのそれぞれのクラスに対応するかどうかを予測する確率に対応する。トレーニングサブシステムは、強化された活性化関数のスケーリング値がトレーニングデータセットに基づいて学習されるように機械学習モデルをトレーニングすることができる。
【0160】
次いで、バイナリ分類器によって生成される予測される出力と、対応する発話のトレーニングラベルによって示される期待される出力との間の総損失を最小限に抑えるよう、各バイナリ分類器の1つ以上のパラメータが学習され得る。総損失は、損失関数を、予測される出力および期待される出力に適用することによって、求めることができる。機械学習モデルのトレーニングは、損失が最小誤差閾値に達するまで実行することができる。
【0161】
735において、トレーニングサブシステムは、トレーニングされた機械学習モデルをチャットボットシステムに(例えば、スキルボットの一部として)展開し、ここで、トレーニングされた機械学習モデルは、修正されたロジット関数を含む。その後、プロセス700は終了する。
【0162】
3.強化された損失関数
発話を分類するための機械学習モデルの精度をさらに改善するために、損失関数を、追加の損失項を組み込むように修正し、それによって、強化された損失関数を生成する。強化された損失関数の追加損失項は、(i)バイナリ交差エントロピー損失項、(ii)平均二乗誤差項、(iii)マージン損失項、および(iv)閾値損失項のうちの1つ以上を含むことができる。いくつかの実施形態では、損失関数は、4つの損失を異なる重みと組み合わせ、各重みは、ハイパーパラメータチューニングを使用して学習することができる。強化された損失関数の使用はさらに、所与の発話が特定のクラスに対応するかどうかを予測する際のその信頼度の正確な推定を提供するように、機械学習モデルをトレーニングすることを促進することができる。
【0163】
図8は、いくつかの実施形態による、発話が特定のクラスに対応する確率を推定するために損失関数を修正するための例示的なプロセス800を示すフローチャートを示す。図8に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図8に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図8は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。いくつかの実施形態では、ステップは、トレーニングサブシステムによって実行されて、解決できないクラスに対応する確率値を、1つ以上の機械学習モデル(例えば、インテント分類器242または320)の距離ベースのロジット値にマッピングする。トレーニングサブシステムは、データ処理システム(例えば、図4に関して説明したチャットボットシステム400)の一部、または機械学習モデルをトレーニングおよび展開するよう構成される別のシステムの構成要素であることができる。
【0164】
805において、トレーニングサブシステムはトレーニングデータセットを受信する。トレーニングデータセットは、発話またはメッセージのセットを含むことができる。セットの各発話は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話の予測されるインテントクラスを識別する。いくつかの例では、トレーニングデータセットは、1つ以上のトレーニングサブデータセットにグループ化され、各トレーニングサブデータセットは、バイナリ分類器のセットのうちのあるバイナリ分類器をトレーニングするために使用され得るトレーニングデータ(たとえば、発話)を含む。
【0165】
810において、トレーニングサブシステムは、機械学習モデルを初期化する。機械学習モデルは、畳み込みニューラルネットワーク(「CNN」)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、または再帰型ニューラルネットワーク、例えば長短期記憶(「LSTM」)モデルもしくはゲート付き再帰型ユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の他の変形物(たとえば、単一インテント分類のためのマルチレベルnバイナリDNN分類器もしくはマルチクラスDNN分類器であり得る。機械学習モデルはまた、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組合せ、たとえば、CNN-HMMまたはMCNN(マルチスケール畳み込みニューラルネットワーク)など、自然言語処理のためにトレーニングされた任意の他の適切なMLモデルであり得る。
【0166】
いくつかの例では、機械学習モデルは、出力のセットを生成するよう構成され、セットの各出力は、発話がクラスのセットのそれぞれのクラスに対応するかどうかを予測する確率を含む。機械学習モデルは、バイナリ分類器のセットを含むことができる。セットの各バイナリ分類器は、発話が、クラスのセットのうち、他のクラスよりも特定のクラスに対応するかどうかを表す値を含む中間出力を生成することができる。中間出力をロジット関数に入力して、特定のクラスに対するロジット値を生成することができる。ロジット値は、発話が特定のクラスに対応するオッズを表すことができる。ロジット関数は、特定のクラス(例えば、order_pizzaインテントクラス、cancel_pizzaインテントクラス)に対するオッズの対数であり、機械学習モデルの出力を、確率分布内に適合する対応するロジット値に変換する。ロジット値は、(-∞,+∞)の間の範囲である。
【0167】
ロジット値は、特定のクラスについての確率値を生成するために、活性化関数を通じて処理され得る。確率は[0,1]の間の範囲である。機械学習モデルの初期化は、層の数、各層のタイプ(例えば、全結合型、畳み込みニューラルネットワーク)、および各層の活性化関数のタイプ(たとえば、シグモイド)を定義することを含むことができる。
【0168】
815において、トレーニングサブシステムは、機械学習モデルの損失関数を取り出す。トレーニングデータセットにおける所与の発話について、損失関数は、機械学習モデルの活性化関数の出力と発話のトレーニングラベルに示される目標値との間の誤差(すなわち、損失)を求めるために使用され得る。誤差に基づいて、損失関数は、計算された出力がマークからどれだけ離れているかを表すことができ、誤差は、機械学習モデルのパラメータの重みを調整するために使用することができる。
【0169】
いくつかの例では、損失関数はバイナリ交差エントロピー損失関数である。シグモイド交差エントロピー損失とも呼ばれる、バイナリ交差エントロピー損失関数は、第1のクラス「1」について、以下のように定義され、
【0170】
【数4】
【0171】
C個のクラスの各々について(例えば、3つの定義されたクラス、C=3を伴うスキルボットについて)、C個の独立したバイナリ分類問題
【0172】
【数5】
【0173】
が定義され、「f(s)」はシグモイド関数であり、「s」はスコアであり、「t」はクラスに対するグラウンドトゥルースラベルである。いくつかの例では、交差エントロピー損失は、C個の項を定義するワンホットベクトル手法によって実現されてもよい。例えば、交差エントロピー損失項は、"xent_loss" = CE(logits, one_hot_labels)として実現されてもよく、ここで、「CE」は、上で定義された交差エントロピー損失関数であり、「one_hot_labels」は、クラスごとに、
【0174】
【数6】
【0175】
を定義するベクトルである(たとえば、C=3の場合、one_hot_labelsは[1 0 0]、[0 1 0]、および/または[0 0 1]に等しくてもよい)。
【0176】
他のタイプの損失関数が、機械学習モデルが発話を分類するのに、考慮され得る。例えば、ある損失関数は、平均二乗誤差損失関数、平均二乗対数誤差損失関数、平均絶対誤差損失関数、尤度損失関数、ヒンジ損失関数、二乗ヒンジ損失関数、多クラス交差エントロピー損失関数、スペア多クラス交差エントロピー損失、およびカルバック・ライブラー情報量損失関数を含むことができるが、それらに限定されない。
【0177】
820において、トレーニングサブシステムは、損失関数を修正して、強化された損失関数を生成する。損失関数(例えば、バイナリ交差エントロピー損失関数)は、追加の損失項を含むように修正することができる。追加の損失項は、以下のうちの1つ以上を含むことができる:
●平均二乗誤差(MSE)。MSE項は、活性化関数の出力(例えば、信頼度値)を平滑化することができる。MSE項は"mse_loss" = MSE(distance_scale * sigmoid(-1.0*distance(Wi, f(x)), one_hot_labels)によって表すことができ、ここで、MSEは平均二乗誤差関数である;
●マージン損失項。マージン損失項は、クラスの中で最も高いスコアと2番目に高いスコアとの間のマージンを保証するために使用することができる。例えば、マージン損失項は、"margin_loss" = max(0, M - (top_1_confidence_score - top_2_ confidence_score))によって表すことができる;
●閾値損失項。閾値損失項は、ドメイン内発話およびユーザ定義ドメイン外発話に対する真のラベル信頼度スコアを第1の閾値T1(例えば、T1=0.7)より高くなるよう制約するために使用することができる。加えて、閾値損失項はまた、すべてのクラスに対する信頼度スコアを第2の閾値T2(例えば、T2=0.5)より低くなるよう制約するために使用することができる。したがって、閾値損失項は、"threshold_loss"= max(0, T1-true_label_confidence_score) + max(0, top_1_confidence_score - T2)によって表すことができる。
【0178】
いくつかの実施形態では、強化された損失関数は、4つの損失をそれらのそれぞれの重み(λi)と組み合わせる。重みの各々は、トレーニング中にチューニングすることができる。例えば、強化された損失関数は、"overall loss" = λ1 * xent_loss + λ2 * mse_loss + λ3 * margin_loss + λ4 * threshold_lossによって表すことができ、ここでλiはハイパーパラメトリックチューニングのためのチューニング可能なパラメータである。
【0179】
825において、トレーニングサブシステムは、トレーニングデータセットを処理し、強化された損失関数を用いて機械学習モデルをトレーニングする。いくつかの例では、機械学習モデルのトレーニングは、分類器のセットの各バイナリ分類器をトレーニングすることを含む。強化された損失関数を用いた機械学習モデルのトレーニングは、機械学習モデルが、発話が特定のクラスに対応する確率を正確に推定することを容易にする。トレーニングは、強化された損失関数の損失項のうちの1つに関連付けられる重みのハイパーパラメータチューニングを実行することを含むことができる。ステップ820における上記表現を参照すると、強化された損失関数の1つ以上の重み(例えば、λ、λ、λ、λ)は、スキルボット呼出しおよび/またはインテント分類のために使用される分類器のハイパーパラメトリックチューニングの一部として、トレーニング段階410中にチューニングされ得る。
【0180】
いくつかの例では、トレーニングサブシステムは、トレーニングデータセットを処理し、修正されたロジット関数、強化された活性化関数、および強化された損失関数を用いて機械学習モデルをトレーニングする。したがって、強化された損失関数の重みに加えて、トレーニングサブシステムは、バイナリ分類器のセットの各バイナリ分類器をトレーニングすることによって機械学習モデルをトレーニングすることができ、重心およびバイナリ分類器の中間出力に対応する値は、トレーニングデータセットに基づいて学習される。いくつかの例では、機械学習モデルはまた、発話がクラスのセットのそれぞれのクラスに対応するかどうかを予測する確率を生成するために、修正されたロジット関数によって出力される距離ベースのロジット値に、強化された活性化関数を適用するようにトレーニングされる。トレーニングサブシステムは、強化された活性化関数のスケーリング値がトレーニングデータセットに基づいて学習されるように機械学習モデルをトレーニングすることができる。
【0181】
次いで、バイナリ分類器によって生成される予測される出力と、対応する発話のトレーニングラベルによって示される期待される出力との間の総損失を最小限に抑えるよう、各バイナリ分類器の1つ以上のパラメータが学習され得る。総損失は、損失関数を、予測される出力および期待される出力に適用することによって、求めることができる。機械学習モデルのトレーニングは、損失が最小誤差閾値に達するまで実行することができる。
【0182】
830において、トレーニングサブシステムは、トレーニングされた機械学習モデルをチャットボットシステムに(例えば、スキルボットの一部として)展開し、ここで、トレーニングされた機械学習モデルは、修正されたロジット関数を含む。その後、プロセス800は終了する。
【0183】
4.実験結果
上述のように、距離ベースのロジット値を実現するトレーニングおよびチューニングされた分類器は、インテント分類のための改善された精度および信頼性を提供し得る。例示的な例では、あるスイートのユーザ定義スキルについて、距離ベースのロジットをnバイナリ分類器で実現すると、分類器予測の精度を総計で約6%以上向上させ、個々のスキルボットの精度を約100%以上向上させることができる。以下の表1に示すように、テストデータにおいてインテントを正しく分類する際のスキルボットの性能は、大多数のケースについて、および総計において、有意に改善される。例えば、表1の例では、ドメイン内精度が6%向上し、ドメイン内再現度が28%向上し、ドメイン外適合率が総計で影響を受けず、ドメイン外再現度が8%向上した。
【0184】
【表1-1】
【0185】
【表1-2】
【0186】
【表1-3】
【0187】
【表1-4】
【0188】
E.発話分類のために距離ベースのロジット値を実現する機械学習モデルをトレーニングするためのプロセス
図9は、いくつかの実施形態による、発話を分類するために距離ベースのロジット値を使用する機械学習モデルをトレーニングするためのプロセス900を示すフローチャートである。図9に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図9に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図9は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。特定の代替実施形態では、それらのステップはなんらかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。図1図4に示される実施形態におけるような特定の実施形態では、図9に示される処理は、発話をユーザ定義のクラスに分類するために、チャットボットシステムのサブシステム(例えば、図4のスキルボット呼出し415またはインテント予測420)によって行われてもよい。
【0189】
905において、トレーニングサブシステムはトレーニングデータセットを受信する。トレーニングデータセットは、発話またはメッセージのセットを含むことができる。場合によっては、発話は、音声入力(例えば、音声発話)から変換されたテキストデータを含み、音声入力は、その特定の言語におけるテキスト形式の発話に変換され得、次いで、そのテキスト発話が処理され得る。セットの各発話は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話の予測されるインテントクラスを識別する。いくつかの例では、トレーニングデータセットは、1つ以上のトレーニングサブデータセットにグループ化され、各トレーニングサブデータセットは、バイナリ分類器のセットのうちのあるバイナリ分類器をトレーニングするために使用され得るトレーニングデータ(たとえば、発話)を含む。
【0190】
910において、トレーニングサブシステムは、機械学習モデルを初期化する。機械学習モデルは、バイナリ分類器のセットを含むことができる。例えば、機械学習モデルは、nバイナリ「1対全」分類器を実現してもよく、「n」はクラス「C」の数である。バイナリ分類器のセットの各バイナリ分類器は、(i)発話がクラスのセットのうちのあるクラスに対応する確率を推定するよう構成され、(ii)当該あるクラスに対する確率を実数に変換する修正されたロジット関数に関連付けられる。修正されたロジット関数は、当該あるクラスに対する確率に対応するオッズの対数であり、オッズの対数は、当該あるクラスに対する確率と当該あるクラスに関連付けられる分布の重心との間で測定される距離に基づいて求められる。いくつかの例では、当該あるクラスに対する確率と当該あるクラスに関連付けられる分布の重心との間で測定される距離は、ユークリッド距離または余弦距離の1つである。
【0191】
機械学習モデルは、畳み込みニューラルネットワーク(「CNN」)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、または再帰型ニューラルネットワーク、例えば長短期記憶(「LSTM」)モデルもしくはゲート付き再帰型ユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の他の変形物(たとえば、単一インテント分類のためのマルチレベルnバイナリDNN分類器もしくはマルチクラスDNN分類器であり得る。機械学習モデル425はまた、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組合せ、たとえば、CNN-HMMまたはMCNN(マルチスケール畳み込みニューラルネットワーク)など、自然言語処理のためにトレーニングされた任意の他の適切なMLモデルであり得る。
【0192】
機械学習モデルの初期化は、層の数、各層のタイプ(例えば、全結合型、畳み込みニューラルネットワーク)、および各層の活性化関数のタイプ(たとえば、シグモイド、ReLU、softmax)を定義することを含むことができる。
【0193】
915において、トレーニングサブシステムは、トレーニングデータセットを使用して機械学習モデルをトレーニングして、発話もしくはメッセージが、スキルボットが実行するよう構成されるタスクを表すかどうかを予測するよう、または発話もしくはメッセージを、スキルボットに関連付けられるインテントにマッチさせるようにする。機械学習モデルのトレーニングは、トレーニングデータセットを用いて機械学習モデルのバイナリ分類器のセットをトレーニングすることを含む。たとえば、バイナリ分類器のセットの各バイナリ分類器は、トレーニングデータセットの発話がバイナリ分類器に関連付けられるクラスに対応するそれぞれの確率を求めることによって、トレーニングされ得る。各バイナリ分類器のトレーニングは、修正されたロジット関数に基づいて、バイナリ分類器に関連付けられるクラスについてのそれぞれの確率を距離ベースのロジット値にマッピングすることをさらに含むことができる。いくつかの例では、マッピングは、それぞれの確率とバイナリ分類器に関連付けられるクラスに関連付けられる分布の重心との間で測定されるそれぞれの距離を使用することを含む。
【0194】
各バイナリ分類器のトレーニングは、強化された活性化関数を距離ベースのロジット値に適用して、クラスについて予測される出力を生成することをさらに含むことができる。予測される出力は、発話が確率分布内でクラスに対応するかどうかを予測する正規化された確率を識別することができる。強化された活性化関数は、正規化された確率を求めるために強化された活性化関数の初期出力を正規化するための学習されたパラメータを含むことができる。各バイナリ分類器のトレーニングは、発話の予測される出力および期待される出力に強化された損失関数を適用して総損失を求めることをさらに含むことができる。強化された損失関数は、総損失を求めるための損失項のセットを含むことができ、損失項のセットは、(i)バイナリ交差エントロピー損失項、(ii)平均二乗誤差項、(iii)マージン損失項、および(iv)閾値損失項を含む。各バイナリ分類器のトレーニングは、バイナリ分類器の1つ以上のパラメータを調整することをさらに含むことができる。いくつかの例では、1つ以上のパラメータは、強化された活性化関数の学習されたパラメータを含む。
【0195】
したがって、バイナリ分類器によって生成される予測される出力と、対応する発話のトレーニングラベルによって示される期待される出力との間の総損失を最小限に抑えるよう、各バイナリ分類器の1つ以上のパラメータが学習され得る。機械学習モデルのトレーニングは、損失が最小誤差閾値に達するまで実行することができる。
【0196】
920において、トレーニングされた機械学習モデルをチャットボットシステム内に(例えば、スキルボットの一部として)展開して、発話もしくはメッセージが、スキルボットが実行するよう構成されるタスクを表すかどうかを予測するか、もしくは発話もしくはメッセージを、スキルボットに関連付けられるインテントにマッチさせるか、または発話もしくはメッセージが解決不可能なクラスに対応するかどうかを予測するようにしてもよい。その後、プロセス900は終了する。
【0197】
F.距離ベースのロジット値を使用して発話を分類するためのプロセス
図10は、いくつかの実施形態による、距離ベースのロジット値を使用して発話またはメッセージのインテントを分類するためのプロセス1000を示すフローチャートである。図10に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図10に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図10は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。特定の代替実施形態では、それらのステップはなんらかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。図1図4に示される実施形態におけるような特定の実施形態では、図10に示される処理は、発話をユーザ定義のクラスに分類するために、チャットボットシステムのサブシステム(例えば、図4のスキルボット呼出し415またはインテント予測420)によって行われてもよい。
【0198】
1005において、チャットボットシステムは、チャットボットシステムと対話するユーザによって生成された発話を受信する。発話は、チャットボットとの会話中に交換される単語のセット(たとえば、1つ以上の文)を指し得る。場合によっては、発話は、音声入力(例えば、音声発話)から変換されたテキストデータを含み、音声入力は、その特定の言語におけるテキスト形式の発話に変換され得、次いで、そのテキスト発話が処理され得る。
【0199】
1010において、チャットボットシステムは、発話を機械学習モデルに入力する。機械学習モデルは、バイナリ分類器のセットを含むことができる。バイナリ分類器のセットの各バイナリ分類器は、(i)発話がクラスのセットのうちのあるクラスに対応する確率を推定するよう構成され、(ii)当該あるクラスに対する確率を実数に変換する修正されたロジット関数に関連付けられる。修正されたロジット関数は、当該あるクラスに対する確率に対応するオッズの対数であり、オッズの対数は、当該あるクラスに対する確率と当該あるクラスに関連付けられる分布の重心との間で測定される距離に基づいて求められる。いくつかの例では、当該あるクラスに対する確率と当該あるクラスに関連付けられる分布の重心との間で測定される距離は、ユークリッド距離または余弦距離の1つである。
【0200】
機械学習モデルは、発話が特定のクラスに対応するかどうかを予測する、予測される出力を生成するよう、動作1015および1020を実行することができる。1015において、機械学習モデルは、発話に対して、距離ベースのロジット値のセットを生成する。距離ベースのロジット値のセットの各距離ベースのロジット値は、(i)バイナリ分類器のセットのそれぞれのバイナリ分類器が、発話がそれぞれのバイナリ分類器に関連付けられるクラスに対応するそれぞれの確率を求めること、および(ii)それぞれのバイナリ分類器が、修正されたロジット関数に基づいて、それぞれの確率を距離ベースのロジット値にマッピングすることによって、生成される。マッピングは、それぞれの確率とそれぞれのバイナリ分類器に関連付けられるクラスに関連付けられる分布の重心との間で測定されるそれぞれの距離を使用することを含む。
【0201】
1020において、機械学習モデルは、距離ベースのロジット値のセットに強化された活性化関数を適用して、予測される出力を生成する。予測される出力は、発話がある確率分布内においてクラスのセットのうちの特定のクラスに対応するかどうかを予測する正規化された確率を識別することができる。いくつかの例では、強化された活性化関数は、正規化された確率を求めるために強化された活性化関数の初期出力を正規化するための学習されたパラメータを含む。
【0202】
例えば、強化された活性化関数は、confidence_score = distance_scale * sigmoid(-1.0*dist(Wi, f(x)))によって表すことができ、ここで、confidence_scoreは、機械学習モデルの出力を表し、発話が特定のクラスに対応するかどうかを予測する正規化された確率に対応する。distance_scaleは、強化された活性化関数の出力を正規化するための学習されたパラメータである。
【0203】
1025において、チャットボットシステムは、予測される出力に基づいて、発話を特定のクラスに関連付けられるものとして分類する。その後、プロセス1000は終了する。
【0204】
G.例示的なシステム
図11は、分散型システム1100の簡略図を示す。図示される例において、分散型システム1100は、1つ以上の通信ネットワーク1110を介してサーバ1112に結合された1つ以上のクライアントコンピューティングデバイス1102、1104、1106、および1108を含む。クライアントコンピューティングデバイス1102、1104、1106、および1108は、1つ以上のアプリケーションを実行するように構成され得る。
【0205】
さまざまな例において、サーバ1112は、本開示に記載される1つ以上の実施形態を可能にする1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。ある例では、サーバ1112はまた、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの例では、これらのサービスは、クライアントコンピューティングデバイス1102、1104、1106および/または1108のユーザに対して、サービスとしてのソフトウェア(Software as a Service:SaaS)モデル下のように、ウェブベースのサービスまたはクラウドサービスとして提供され得る。クライアントコンピューティングデバイス1102、1104、1106および/または1108を操作するユーザは、1つ以上のクライアントアプリケーションを利用してサーバ1112とやり取りすることで、これらのコンポーネントによって提供されるサービスを利用し得る。
【0206】
図11に示される構成では、サーバ1112は、サーバ1112によって実行される機能を実現する1つ以上のコンポーネント1118、1120および1122を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはそれらの組合わせによって実行され得るソフトウェアコンポーネントを含み得る。分散型システム1100とは異なり得る多種多様なシステム構成が可能であることが認識されるはずである。したがって、図11に示される例は、例のシステムを実現するための分散型システムの一例であり、限定するよう意図されたものではない。
【0207】
ユーザは、クライアントコンピューティングデバイス1102、1104、1106および/または1108を用いて、1つ以上のアプリケーション、モデルまたはチャットボットを実行し、それは、1つ以上のイベントまたはモデルを生成してもよく、それは次いで本開示の教示に従って実現または処理されてもよい。クライアントデバイスは、当該クライアントデバイスのユーザが当該クライアントデバイスと対話することを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介してユーザに情報を出力してもよい。図11は4つのクライアントコンピューティングデバイスだけを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0208】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどの、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、さまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえばMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、Linux(登録商標)またはLinux系オペレーティングシステム、たとえば、各種モバイルオペレーティングシステム(たとえばMicrosoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含むGoogle Chrome(登録商標)OS)を含み得る。ポータブルハンドヘルドデバイスは、セルラーフォン、スマートフォン(たとえばiPhone(登録商標))、タブレット(たとえばiPad(登録商標))、携帯情報端末(PDA)などを含み得る。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイおよびその他のデバイスを含み得る。ゲームシステムは、各種ハンドヘルドゲームデバイス、インターネット接続可能なゲームデバイス(たとえばKinect(登録商標)ジェスチャ入力デバイス付き/無しのMicrosoft Xbox(登録商標)ゲーム機、Sony PlayStation(登録商標)システム、Nintendo(登録商標)が提供する各種ゲームシステムなど)を含み得る。クライアントデバイスは、各種インターネット関連アプリケーション、通信アプリケーション(たとえばEメールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)のような多種多様なアプリケーションを実行可能であってもよく、各種通信プロトコルを使用してもよい。
【0209】
ネットワーク1110は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当該技術の当業者には周知のいずれかの種類のネットワークであればよく、上記プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない。単に一例として、ネットワーク1110は、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば電気電子学会(IEEE)1002.11プロトコルスイートのいずれかの下で動作する無線ネットワーク、Bluetooth(登録商標)および/または任意の他の無線プロトコル)、および/またはこれらおよび/または他のネットワークの任意の組み合わせを含み得る。
【0210】
サーバ1112は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組み合わせで構成されてもよい。サーバ1112は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。これはたとえば、サーバに対して仮想記憶装置を維持するように仮想化できる論理記憶装置の1つ以上のフレキシブルプールなどである。様々な例において、サーバ1112を、上記開示に記載の機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合させてもよい。
【0211】
サーバ1112内のコンピューティングシステムは、上記オペレーティングシステムのうちのいずれかを含む1つ以上のオペレーティングシステム、および、市販されているサーバオペレーティングシステムを実行し得る。また、サーバ1112は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらに他のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものを含むが、それらに限定されない。
【0212】
いくつかの実現例において、サーバ1112は、クライアントコンピューティングデバイス1102、1104、1106および1108のユーザから受信したデータフィードおよび/またはイベントアップデートを解析および整理統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどに関連するリアルタイムのイベントを含んでもよい、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムのアップデートを含み得るが、それらに限定されない。サーバ1112は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス1102、1104、1106および1108の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションも含み得る。
【0213】
分散型システム1100はまた、1つ以上のデータリポジトリ1114、1116を含み得る。特定の例において、これらのデータリポジトリを用いてデータおよびその他の情報を格納することができる。たとえば、データリポジトリ1114、1116のうちの1つ以上を用いて、様々な実施形態による様々な機能を実行するときにチャットボット性能またはサーバ1112によって使用されるチャットボットによる使用のための生成されたモデルに関連する情報のような情報を格納することができる。データリポジトリ1114、1116は、さまざまな場所に存在し得る。たとえば、サーバ1112が使用するデータリポジトリは、サーバ1112のローカル位置にあってもよく、またはサーバ1112から遠隔の位置にあってもよく、ネットワークベースの接続または専用接続を介してサーバ1112と通信する。データリポジトリ1114、1116は、異なる種類であってもよい。特定の例において、サーバ1112が使用するデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および他の製造業者が提供するデータベースのようなリレーショナルデータベースであってもよい。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするように適合させてもよい。
【0214】
特定の例では、データリポジトリ1114、1116のうちの1つ以上は、アプリケーションデータを格納するためにアプリケーションによって用いられてもよい。アプリケーションが使用するデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリのようなさまざまな種類のものであってもよい。
【0215】
特定の例において、本開示に記載される機能は、クラウド環境を介してサービスとして提供され得る。図12は、特定の例に係る、各種サービスをクラウドサービスとして提供し得るクラウドベースのシステム環境の簡略化されたブロック図である。図12に示される例において、クラウドインフラストラクチャシステム1202は、ユーザが1つ以上のクライアントコンピューティングデバイス1204、1206および1208を用いて要求し得る1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム1202は、サーバ1112に関して先に述べたものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。クラウドインフラストラクチャシステム1202内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および/または組み合わせとして編成され得る。
【0216】
ネットワーク1210は、クライアント1204、1206、および1208と、クラウドインフラストラクチャシステム1202との間におけるデータの通信および交換を容易にし得る。ネットワーク1210は、1つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク1210は、通信を容易にするために、有線および/または無線プロトコルを含む、1つ以上の通信プロトコルをサポートし得る。
【0217】
図12に示される例は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの例において、クラウドインフラストラクチャシステム1202が、図12に示されるものよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、または、異なる構成または配置のコンポーネントを有していてもよいことが、理解されるはずである。たとえば、図12は3つのクライアントコンピューティングデバイスを示しているが、代替例においては、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0218】
クラウドサービスという用語は一般に、サービスプロバイダのシステム(たとえばクラウドインフラストラクチャシステム1202)により、インターネット等の通信ネットワークを介してオンデマンドでユーザにとって利用可能にされるサービスを指すのに使用される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストし得るとともに、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介してオンデマンドでアプリケーションをオーダーして使用し得る。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。たとえば、ミドルウェアサービス、データベースサービス、Java(登録商標)クラウドサービスなどのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)から提供される。
【0219】
特定の例において、クラウドインフラストラクチャシステム1202は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデルなどのさまざまなモデルを使用して、1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム1202は、各種クラウドサービスのプロビジョンを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースのスイートを含み得る。
【0220】
SaaSモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。たとえば、SaaSモデルを用いることにより、クラウドインフラストラクチャシステム1202がホストするオンデマンドアプリケーションに顧客がアクセスできるようにし得る。Oracle Corporation(登録商標)が提供するSaaSサービスの例は、人的資源/資本管理のための各種サービス、カスタマー・リレーションシップ・マネジメント(CRM)、エンタープライズ・リソース・プランニング(ERP)、サプライチェーン・マネジメント(SCM)、エンタープライズ・パフォーマンス・マネジメント(EPM)、解析サービス、ソーシャルアプリケーションなどを含むがこれらに限定されない。
【0221】
IaaSモデルは一般に、インフラストラクチャリソース(たとえばサーバ、ストレージ、ハードウェアおよびネットワーキングリソース)を、クラウドサービスとして顧客に提供することにより、柔軟な計算およびストレージ機能を提供するために使用される。各種IaaSサービスがOracle Corporation(登録商標)から提供される。
【0222】
PaaSモデルは一般に、顧客が、環境リソースを調達、構築、または管理しなくても、アプリケーションおよびサービスを開発、実行、および管理することを可能にするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例は、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、各種アプリケーション開発ソリューションサービスなどを含むがこれらに限定されない。
【0223】
クラウドサービスは一般に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。たとえば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム1202が提供する1つ以上のサービスをオーダーしてもよい。次いで、クラウドインフラストラクチャシステム1202は、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。例えば、ユーザは、発話を用いて、クラウドインフラストラクチャシステムに、上記のように特定のアクション(例えばインテント)をとらせ、および/または本明細書で説明するようにチャットボットシステムのためのサービスを提供させるように要求することができる。クラウドインフラストラクチャシステム1202を、1つのクラウドサービスまたは複数のクラウドサービスであっても提供するように構成してもよい。
【0224】
クラウドインフラストラクチャシステム1202は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム1202は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。このカスタマーは個人または企業であってもよい。ある他の例では、プライベートクラウドモデル下において、クラウドインフラストラクチャシステム1202がある組織内で(たとえば企業組織内で)機能してもよく、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部などの企業のさまざまな部署であってもよく、企業内の個人であってもよい。ある他の例では、コミュニティクラウドモデル下において、クラウドインフラストラクチャシステム1202および提供されるサービスは、関連コミュニティ内のさまざまな組織で共有されてもよい。上記モデルの混成モデルなどのその他各種モデルが用いられてもよい。
【0225】
クライアントコンピューティングデバイス1204、1206、および1208は、異なるタイプであってもよく(たとえば図11に示されるクライアントコンピューティングデバイス1102、1104、1106および1108)、1つ以上のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム1202が提供するサービスを要求することなど、クラウドインフラストラクチャシステム1202とのやり取りを行い得る。例えば、ユーザは、本開示に記載されているように、クライアントデバイスを使用してチャットボットから情報またはアクションを要求することができる。
【0226】
いくつかの例において、クラウドインフラストラクチャシステム1202が、サービスを提供するために実行する処理は、モデルトレーニングおよび展開を含み得る。この解析は、データセットを使用し、解析し、処理することにより、1つ以上のモデルをトレーニングおよび展開することを含み得る。この解析は、1つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行してもよい。たとえば、チャットボットシステムのために1つ以上のモデルを生成およびトレーニングするために、ビッグデータ解析がクラウドインフラストラクチャシステム1202によって実行されてもよい。この解析に使用されるデータは、構造化データ(たとえばデータベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含み得る。
【0227】
図12の例に示されるように、クラウドインフラストラクチャシステム1202は、クラウドインフラストラクチャシステム1202が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース1230を含み得る。インフラストラクチャリソース1230は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。特定の例では、アプリケーションから要求されたストレージを処理するために利用可能なストレージ仮想マシンは、クラウドインフラストラクチャシステム1202の一部である場合がある。他の例では、ストレージ仮想マシンは、異なるシステムの一部である場合がある。
【0228】
特定の例において、異なる顧客に対しクラウドインフラストラクチャシステム1202が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースのセットまたはリソースモジュール(「ポッド」とも処される)にまとめてもよい。各リソースモジュールまたはポッドは、1種類以上のリソースを予め一体化し最適化した組み合わせを含み得る。特定の例において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングしてもよい。たとえば、第1のポッドセットをデータベースサービスのためにプロビジョニングしてもよく、第1のポッドセット内のポッドと異なるリソースの組み合わせを含み得る第2のポッドセットをJavaサービスなどのためにプロビジョニングしてもよい。いくつかのサービスについて、これらのサービスをプロビジョニングするために割り当てられたリソースをサービス間で共有してもよい。
【0229】
クラウドインフラストラクチャシステム1202自体が、クラウドインフラストラクチャシステム1202の異なるコンポーネントによって共有されるとともにクラウドインフラストラクチャシステム1202によるサービスのプロビジョニングを容易にするサービス1232を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性、バックアップリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【0230】
クラウドインフラストラクチャシステム1202は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組み合わせで実現され得る。図12に示されるように、サブシステムは、クラウドインフラストラクチャシステム1202のユーザまたは顧客がクラウドインフラストラクチャシステム1202とやり取りすることを可能にするユーザインターフェイスサブシステム1212を含み得る。ユーザインターフェイスサブシステム1212は、ウェブインターフェイス1214、クラウドインフラストラクチャシステム1202が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス1216、およびその他のインターフェイス1218などの、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用いて、クラウドインフラストラクチャシステム1202がインターフェイス1214、1216、および1218のうちの1つ以上を用いて提供する1つ以上のサービスを要求(サービス要求1234)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム1202が提供するクラウドサービスをブラウズし、クラウドインフラストラクチャシステム1202が提供するとともに顧客が申し込むことを所望する1つ以上のサービスについてサブスクリプションオーダーを行い得る。このサービス要求は、顧客と、顧客が申しむことを所望する1つ以上のサービスを識別する情報を含んでいてもよい。たとえば、顧客は、クラウドインフラストラクチャシステム1202によって提供されるサービスの申し込み注文を出すことができる。注文の一部として、顧客は、サービスが提供されるチャットボットシステムを識別する情報と、任意選択でチャットボットシステムの1つ以上の資格情報を提供することができる。
【0231】
図12に示される例のような特定の例において、クラウドインフラストラクチャシステム1202は、新しいオーダーを処理するように構成されたオーダー管理サブシステム(order management subsystem:OMS)1220を含み得る。この処理の一部として、OMS1220は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。
【0232】
適切に妥当性確認がなされると、OMS1220は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(OPS)1224を呼び出し得る。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。たとえば、あるワークフローに従うと、OPS1224を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
【0233】
特定の例では、セットアップ段階処理は、上記のように、クラウドインフラストラクチャシステム1202によって、プロビジョニングプロセスの一部として実行され得る。クラウドインフラシステム1202は、アプリケーションIDを生成し、クラウドインフラシステム1202自体によって提供されるストレージ仮想マシンの中から、またはクラウドインフラシステム1202以外の他のシステムによって提供されるストレージ仮想マシンから、アプリケーション用のストレージ仮想マシンを選択することができる。
【0234】
クラウドインフラストラクチャシステム1202は、要求されたサービスがいつ使用できるようになるかを示すために、応答または通知1244を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(たとえばリンク)を顧客に送信してもよい。特定の例では、サービスを要求する顧客に対して、応答は、クラウドインフラストラクチャシステム1202によって生成されたチャットボットシステムID、およびチャットボットシステムIDに対応するチャットボットシステムのためにクラウドインフラストラクチャシステム1202によって選択されたチャットボットシステムを識別する情報を含み得る。
【0235】
クラウドインフラストラクチャシステム1202はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム1202は、顧客から受けた1つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を果たす。また、クラウドインフラストラクチャシステム1202は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金はたとえば月ごとに行ってもよい。
【0236】
クラウドインフラストラクチャシステム1202は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム1202は、場合によっては著作権情報を含む、これらの顧客についての情報を格納してもよい。特定の例において、クラウドインフラストラクチャシステム1202は、顧客の情報を管理するとともに管理される情報を分離することで、ある顧客に関する情報が別の顧客に関する情報からアクセスされないようにするように構成された、アイデンティティ管理サブシステム(IMS)1228を含む。IMS1228は、情報アクセス管理などのアイデンティティサービス、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスなどの、各種セキュリティ関連サービスを提供するように構成されてもよい。
【0237】
図13は、コンピュータシステム1300の例を示す。いくつかの例では、コンピュータシステム1300は、分散環境内の任意のデジタルアシスタントまたはチャットボットシステムのいずれか、ならびに上記の様々なサーバおよびコンピュータシステムを実現するために用いられ得る。図13に示されるように、コンピュータシステム1300は、バスサブシステム1302を介して他のいくつかのサブシステムと通信する処理サブシステム1304を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット1306、I/Oサブシステム1308、ストレージサブシステム1318、および通信サブシステム1324を含み得る。ストレージサブシステム1318は、記憶媒体1322およびシステムメモリ1310を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0238】
バスサブシステム1302は、コンピュータシステム1300のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム1302は単一のバスとして概略的に示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム1302は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスなどを含み得る。
【0239】
処理サブシステム1304は、コンピュータシステム1300の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム1300の処理リソースを、1つ以上の処理ユニット1332、1334などに組織することができる。処理ユニットは、1つ以上のプロセッサ、同一のまたは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの例において、処理サブシステム1304は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)などのような1つ以上の専用コプロセッサを含み得る。いくつかの例では、処理サブシステム1304の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を使用し得る。
【0240】
いくつかの例において、処理サブシステム1304内の処理ユニットは、システムメモリ1310またはコンピュータ可読記憶媒体1322に格納された命令を実行し得る。さまざまな例において、処理ユニットはさまざまなプログラムまたはコード命令を実行するとともに、同時に実行する複数のプログラムまたはプロセスを維持し得る。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ1310および/または潜在的に1つ以上の記憶装置を含むコンピュータ可読記憶媒体1322に常駐していてもよい。適切なプログラミングを介して、処理サブシステム1304は、上述のさまざまな機能を提供し得る。コンピュータシステム1300が1つ以上の仮想マシンを実行している例において、1つ以上の処理ユニットが各仮想マシンに割り当ててもよい。
【0241】
特定の例において、コンピュータシステム1300によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム1304によって実行される処理の一部をオフロードするために、処理加速ユニット1306を任意に設けることができる。
【0242】
I/Oサブシステム1308は、コンピュータシステム1300に情報を入力するための、および/またはコンピュータシステム1300から、もしくはコンピュータシステム1300を介して、情報を出力するための、デバイスおよび機構を含むことができる。一般に、「入力デバイス」という語の使用は、コンピュータシステム1300に情報を入力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを提供するデバイスなど、モーションセンシングおよび/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
【0243】
ユーザインターフェイス入力デバイスの他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含んでもよいが、それらに限定されない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【0244】
一般に、出力デバイスという語の使用は、コンピュータシステム1300からユーザまたは他のコンピュータに情報を出力するための考えられるすべてのタイプのデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、計画デバイス、タッチスクリーンなどであってもよい。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されない。
【0245】
ストレージサブシステム1318は、コンピュータシステム1300によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム1318は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ可読記憶媒体を提供する。処理サブシステム1304によって実行されると上述の機能を提供するソフトウェア(たとえばプログラム、コードモジュール、命令)が、ストレージサブシステム1318に格納されてもよい。ソフトウェアは、処理サブシステム1304の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム1318はまた、本開示の教示に従って認証を提供してもよい。
【0246】
ストレージサブシステム1318は、揮発性および不揮発性メモリデバイスを含む1つ以上の非一時的メモリデバイスを含み得る。図13に示すように、ストレージサブシステム1318は、システムメモリ1310およびコンピュータ可読記憶媒体1322を含む。システムメモリ1310は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ(RAM)と、固定命令が格納される不揮発性読取り専用メモリ(ROM)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実現例において、起動中などにコンピュータシステム1300内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)は、典型的には、ROMに格納されてもよい。典型的に、RAMは、処理サブシステム1304によって現在操作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ1310は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なるタイプのメモリを含み得る。
【0247】
一例として、限定を伴うことなく、図13に示されるように、システムメモリ1310は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム1312、プログラムデータ1314、およびオペレーティングシステム1316を、ロードしてもよい。一例として、オペレーティングシステム1316は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステム、市販されているさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、および/または、iOS(登録商標)、Windows Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムのようなさまざまなバージョンのモバイルオペレーティングシステムなどを、含み得る。
【0248】
コンピュータ可読記憶媒体1322は、いくつかの例の機能を提供するプログラミングおよびデータ構成を格納することができる。コンピュータ可読記憶媒体1322は、コンピュータシステム1300のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供することができる。処理サブシステム1304によって実行されると上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム1318に格納されてもよい。一例として、コンピュータ可読記憶媒体1322は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ可読記憶媒体1322は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されない。コンピュータ可読記憶媒体1322は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMのような揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含み得る。
【0249】
特定の例において、ストレージサブシステム1318は、コンピュータ可読記憶媒体1322にさらに接続可能なコンピュータ可読記憶媒体リーダ1320も含み得る。リーダ1320は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。
【0250】
特定の例において、コンピュータシステム1300は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム1300は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。特定の例において、コンピュータシステム1300は、仮想マシンの構成および管理を容易にするハイパーバイザなどのプログラムを実行し得る。各仮想マシンには、メモリ、演算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースを割り当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的には、コンピュータシステム1300によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るかまたは異なり得るそれ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム1300によって同時に実行され得る。
【0251】
通信サブシステム1324は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム1324は、他のシステムとコンピュータシステム1300との間のデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム1324は、コンピュータシステム1300が、1つ以上のクライアントデバイスとの間で情報を送受信するために、インターネットを介して1つ以上のクライアントデバイスへの通信チャネルを確立することを可能にし得る。例えば、コンピュータシステム1300が、図1に示されるボットシステム120を実現するために使用される場合、通信サブシステムは、アプリケーション用に選択されたチャットボットシステムと通信するために使用され得る。
【0252】
通信サブシステム1324は、有線および/または無線通信プロトコルの両方をサポートし得る。ある例において、通信サブシステム1324は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.XXファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの例において、通信サブシステム1324は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続(たとえばEthernet(登録商標))を提供し得る。
【0253】
通信サブシステム1324は、さまざまな形式でデータを受信および送信し得る。いくつかの例において、通信サブシステム1324は、他の形式に加えて、構造化データフィードおよび/または非構造化データフィード1326、イベントストリーム1328、イベントアップデート1330などの形式で入力通信を受信してもよい。たとえば、通信サブシステム1324は、ソーシャルメディアネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード1326を受信(または送信)するように構成されてもよい。
【0254】
特定の例において、通信サブシステム1324は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム1328および/またはイベントアップデート1330を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどを挙げることができる。
【0255】
通信サブシステム1324は、コンピュータシステム1300からのデータを他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード1326、イベントストリーム1328、イベントアップデート1330などのような各種異なる形式で、コンピュータシステム1300に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに、伝えられてもよい。
【0256】
コンピュータシステム1300は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのうちの1つであればよい。コンピュータおよびネットワークの性質が常に変化しているため、図13に示されるコンピュータシステム1300の記載は、具体的な例として意図されているに過ぎない。図13に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が可能である。本明細書における開示および教示に基づいて、さまざまな例を実現するための他の態様および/または方法があることが認識されるはずである。
【0257】
特定の例について説明したが、さまざまな変形、変更、代替構成、および均等物が可能である。例は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作させることができる。さらに、例を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行されてもよい。加えて、動作の順序を再指定してもよい。プロセスは図に含まれない追加のステップを有し得る。上記の例の各種特徴および局面は、個別に使用されてもよく、またはともに使用されてもよい。
【0258】
さらに、特定の例をハードウェアとソフトウェアとの特定の組み合わせを用いて説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。特定の例は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現されてもよい。
【0259】
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計することにより、動作を実行するようにプログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、たとえば、非一時的なメモリ媒体に格納されたコードもしくは命令またはそれらの任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどにより、達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。
【0260】
本開示では具体的な詳細を示すことにより例が十分に理解されるようにしている。しかしながら、例はこれらの具体的な詳細がなくとも実施し得るものである。たとえば、周知の回路、プロセス、アルゴリズム、構造、および技術は、例が曖昧にならないようにするために不必要な詳細事項なしで示している。本明細書は例示的な例のみを提供し、他の例の範囲、適用可能性、または構成を限定するよう意図されたものではない。むしろ、例の上記説明は、各種例を実現することを可能にする説明を当業者に提供する。要素の機能および構成の範囲内でさまざまな変更が可能である。
【0261】
したがって、明細書および図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされ得ることは明らかであろう。このように、具体的な例を説明してきたが、これらは限定を意図するものではない。さまざまな変形例および同等例は添付の特許請求の範囲内にある。
【0262】
上記の明細書では、本開示の局面についてその具体的な例を参照して説明しているが、本開示はそれに限定されるものではないということを当業者は認識するであろう。上記の開示のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、例は、明細書のさらに広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境および用途で利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
【0263】
上記の説明では、例示の目的で、方法を特定の順序で記載した。代替の例では、方法は記載された順序とは異なる順序で実行されてもよいことを理解されたい。また、上記の方法は、ハードウェアコンポーネントによって実行されてもよいし、マシン実行可能命令であって、用いられると、そのような命令でプログラムされた汎用もしくは専用のプロセッサまたは論理回路などのマシンに方法を実行させてもよいマシン実行可能命令のシーケンスで具体化されてもよいことも理解されたい。これらのマシン実行可能命令は、CD-ROMもしくは他の種類の光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気もしくは光学カード、フラッシュメモリのような、1つ以上の機械可読媒体、または電子命令を記憶するのに適した他の種類の機械可読媒体に保存できる。代替的に、これらの方法は、ハードウェアとソフトウェアとの組み合わせによって実行されてもよい。
【0264】
構成要素が特定の動作を実行するように構成されるとして記載されている場合、そのような構成は、たとえば、特定の動作を実行するよう電子回路もしくは他のハードウェアを設計すること、特定の動作を実行するようプログラミング可能な電子回路(たとえばマイクロプロセッサもしくは他の好適な電子回路)をプログラミングすること、またはそれらの任意の組み合わせによって達成されてもよい。
【0265】
本願の説明のための例をここに詳細に記載したが、本発明の概念は、他の態様で様々に具現化および採用され得ること、および特許請求の範囲は、先行技術によって制限される場合を除き、そのような変形を含むように解釈されるよう意図されることを理解されたい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
【国際調査報告】