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

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

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

特表2023-551859自然言語処理のための強化されたロジット
<>
  • 特表-自然言語処理のための強化されたロジット 図1
  • 特表-自然言語処理のための強化されたロジット 図2
  • 特表-自然言語処理のための強化されたロジット 図3
  • 特表-自然言語処理のための強化されたロジット 図4
  • 特表-自然言語処理のための強化されたロジット 図5
  • 特表-自然言語処理のための強化されたロジット 図6
  • 特表-自然言語処理のための強化されたロジット 図7
  • 特表-自然言語処理のための強化されたロジット 図8
  • 特表-自然言語処理のための強化されたロジット 図9
  • 特表-自然言語処理のための強化されたロジット 図10
  • 特表-自然言語処理のための強化されたロジット 図11
  • 特表-自然言語処理のための強化されたロジット 図12
  • 特表-自然言語処理のための強化されたロジット 図13
  • 特表-自然言語処理のための強化されたロジット 図14
  • 特表-自然言語処理のための強化されたロジット 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-13
(54)【発明の名称】自然言語処理のための強化されたロジット
(51)【国際特許分類】
   G06F 40/30 20200101AFI20231206BHJP
   G06N 3/04 20230101ALI20231206BHJP
【FI】
G06F40/30
G06N3/04
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023532750
(86)(22)【出願日】2021-11-30
(85)【翻訳文提出日】2023-07-24
(86)【国際出願番号】 US2021061062
(87)【国際公開番号】W WO2022115727
(87)【国際公開日】2022-06-02
(31)【優先権主張番号】63/119,449
(32)【優先日】2020-11-30
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/456,687
(32)【優先日】2021-11-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シュ,イン
(72)【発明者】
【氏名】ザレムーディ,ポーヤ
(72)【発明者】
【氏名】ブー,タン・ティエン
(72)【発明者】
【氏名】ホアン,コン・ズイ・ブー
(72)【発明者】
【氏名】ブリノフ,ブラディスラフ
(72)【発明者】
【氏名】ホング,ユ-ヘング
(72)【発明者】
【氏名】ダルマシリ,ヤクピティヤゲ・ドン・タヌジャ・サモッダイ
(72)【発明者】
【氏名】ビシュノイ,ビシャル
(72)【発明者】
【氏名】ジャラルッディン,エリアス・ルクマン
(72)【発明者】
【氏名】パレク,マニッシュ
(72)【発明者】
【氏名】ドゥオング,タン・ロング
(72)【発明者】
【氏名】ジョンソン,マーク・エドワード
(57)【要約】
自然言語処理においてチャットボットシステムに入力される発話およびメッセージを分類するために強化されたロジット値を使用するための技術。ある方法は、チャットボットシステムが、チャットボットシステムと対話するユーザによって生成された発話を受信し、その発話を一連のネットワーク層を含む機械学習モデルに入力することを含むことができる。一連のネットワーク層の最終ネットワーク層は、ロジット関数を含むことができる。機械学習モデルは、ロジット関数を使用して、解決可能なクラスについての第1の確率を第1のロジット値にマッピングすることができる。機械学習モデルは、解決できないクラスについての第2の確率を強化されたロジット値にマッピングすることができる。本方法はまた、チャットボットシステムが、第1のロジット値および強化されたロジット値に基づいて、発話を解決可能なクラスまたは解決できないクラスとして分類することを含むことができる。
【特許請求の範囲】
【請求項1】
方法であって、
チャットボットシステムが、前記チャットボットシステムと対話するユーザによって生成された発話を受信することを含み、前記発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記方法はさらに、
前記チャットボットシステムが、一連のネットワーク層を含む機械学習モデルに前記発話を入力することを含み、前記一連のネットワーク層の最終ネットワーク層は、解決可能なクラスについての第1の確率を、第1のロジット値を表す第1の実数に変換し、解決できないクラスについての第2の確率を、第2のロジット値を表す第2の実数に変換するロジット関数を含み、前記方法はさらに、
前記機械学習モデルが、前記解決可能なクラスについての前記第1の確率および前記解決できないクラスについての前記第2の確率を求めることと、
前記機械学習モデルが、前記ロジット関数を使用して、前記解決可能なクラスについての前記第1の確率を前記第1のロジット値にマッピングすることとを含み、前記第1の確率をマッピングするための前記ロジット関数は、前記解決可能なクラスについての前記第1の確率に対応するオッズの対数であり、前記オッズの対数は、前記解決可能なクラスに関連付けられる分布の重心によって重み付けされ、前記方法はさらに、
前記機械学習モデルが、前記解決できないクラスについての前記第2の確率を強化されたロジット値にマッピングすることを含み、前記強化されたロジット値は、前記第1の確率をマッピングするために使用される前記ロジット関数から独立して求められる第3の実数であり、前記強化されたロジット値は、(i)トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)前記解決できないクラスについての前記第2の確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、前記第1のオッズの対数は、有界化関数によってある範囲の値に制約され、前記解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)前記解決できないクラスについての前記第2の確率に対応する第2のオッズの対数によって生成され、前記第2のオッズの対数は、前記有界化関数によって前記ある範囲の値に制約され、スケーリング係数によってスケーリングされ、前記解決できないクラスに関連付けられる前記分布の前記重心によって重み付けされる、重み付けされた値、(iv)前記機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)前記機械学習モデルのトレーニング中に調整される学習値を含み、前記方法はさらに、
前記チャットボットシステムが、前記発話を、前記第1のロジット値および前記強化されたロジット値に基づいて、前記解決可能なクラスまたは前記解決できないクラスに分類することを含む、方法。
【請求項2】
前記チャットボットシステムが、前記発話の前記解決可能なクラスまたは前記解決できないクラスとしての前記分類に基づいて、前記ユーザに応答することをさらに含む、請求項1に記載の方法。
【請求項3】
前記解決されたクラスはドメイン内およびスコープ内のスキルまたはインテントであり、前記未解決のクラスはドメイン外もしくはスコープ外のスキルまたはインテントである、請求項1または請求項2に記載の方法。
【請求項4】
前記強化されたロジット値は、前記トレーニングデータセットから生成される前記ロジット値のセットに基づいて求められる前記統計値であり、前記統計値を求めることは、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記統計値を求めることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記統計値を求めることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記統計値を求めることはさらに、
前記統計値を前記強化されたロジット値として設定することを含む、先行する請求項のいずれか1項に記載の方法。
【請求項5】
前記統計値は、前記トレーニング用ロジット値のセットの中央値である、請求項4に記載の方法。
【請求項6】
前記統計値は、前記トレーニング用ロジット値のセットの平均である、請求項4に記載の方法。
【請求項7】
前記強化されたロジット値は前記有界値であり、前記ロジット関数は前記有界化関数によって前記ある範囲の値に制約される、請求項1~3のいずれか1項に記載の方法。
【請求項8】
前記強化されたロジット値は、前記重み付けされた値であり、前記ロジット関数は、前記有界化関数によって前記ある範囲の値に制約され、前記スケーリング係数によってスケーリングされる、請求項1~3のいずれか1項に記載の方法。
【請求項9】
第1の値が前記ロジット関数の前記スケーリング係数に割り当てられ、第2の値が前記解決できないクラスについての前記第2の確率に対応する前記第2のオッズの対数の前記スケーリング係数に割り当てられ、前記第2の値は前記第1の値よりも大きい、請求項8に記載の方法。
【請求項10】
前記強化されたロジット値は前記ハイパーパラメータ最適化値であり、前記ハイパーパラメータ最適化値を求めることは、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記ハイパーパラメータ最適化値を求めることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記ハイパーパラメータ最適化値を求めることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記ハイパーパラメータ最適化値を求めることはさらに、
前記機械学習モデルの1つ以上のハイパーパラメータを調整して、最適化された統計値を生成することと、
前記最適化された統計値を前記強化されたロジット値として設定することとを含む、請求項1~3のいずれか1項に記載の方法。
【請求項11】
システムであって、
1つ以上のデータプロセッサと、
命令を含む非一時的なコンピュータ可読記憶媒体とを備え、前記命令は、前記1つ以上のデータプロセッサ上で実行されると、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
前記チャットボットシステムと対話するユーザによって生成された発話を受信することを含み、前記発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記動作はさらに、
一連のネットワーク層を含む機械学習モデルに前記発話を入力することを含み、前記一連のネットワーク層の最終ネットワーク層は、解決可能なクラスについての第1の確率を、第1のロジット値を表す第1の実数に変換し、解決できないクラスについての第2の確率を、第2のロジット値を表す第2の実数に変換するロジット関数を含み、前記動作はさらに、
前記機械学習モデルが、前記解決可能なクラスについての前記第1の確率および前記解決できないクラスについての前記第2の確率を求めることと、
前記機械学習モデルが、前記ロジット関数を使用して、前記解決可能なクラスについての前記第1の確率を前記第1のロジット値にマッピングすることとを含み、前記第1の確率をマッピングするための前記ロジット関数は、前記解決可能なクラスについての前記第1の確率に対応するオッズの対数であり、前記オッズの対数は、前記解決可能なクラスに関連付けられる分布の重心によって重み付けされ、前記動作はさらに、
前記機械学習モデルが、前記解決できないクラスについての前記第2の確率を強化されたロジット値にマッピングすることを含み、前記強化されたロジット値は、前記第1の確率をマッピングするために使用される前記ロジット関数から独立して求められる第3の実数であり、前記強化されたロジット値は、(i)トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)前記解決できないクラスについての前記第2の確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、前記第1のオッズの対数は、有界化関数によってある範囲の値に制約され、前記解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)前記解決できないクラスについての前記第2の確率に対応する第2のオッズの対数によって生成され、前記第2のオッズの対数は、前記有界化関数によって前記ある範囲の値に制約され、スケーリング係数によってスケーリングされ、前記解決できないクラスに関連付けられる前記分布の前記重心によって重み付けされる、重み付けされた値、(iv)前記機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)前記機械学習モデルのトレーニング中に調整される学習値を含み、前記動作はさらに、
前記発話を、前記第1のロジット値および前記強化されたロジット値に基づいて、前記解決可能なクラスまたは前記解決できないクラスに分類することを含む、システム。
【請求項12】
前記命令はさらに、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
前記発話の前記解決可能なクラスまたは前記解決できないクラスとしての前記分類に基づいて前記ユーザに応答することを含む、請求項11に記載のシステム。
【請求項13】
前記解決されたクラスはドメイン内およびスコープ内のスキルまたはインテントであり、前記未解決のクラスはドメイン外もしくはスコープ外のスキルまたはインテントである、請求項11または請求項12に記載のシステム。
【請求項14】
前記強化されたロジット値は、前記トレーニングデータセットから生成される前記ロジット値のセットに基づいて求められる前記統計値であり、前記統計値を求めることは、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記統計値を求めることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記統計値を求めることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記統計値を求めることはさらに、
前記統計値を前記強化されたロジット値として設定することを含む、請求項11~13のいずれか1項に記載のシステム。
【請求項15】
前記統計値は、前記トレーニング用ロジット値のセットの中央値である、請求項14に記載のシステム。
【請求項16】
前記統計値は、前記トレーニング用ロジット値のセットの平均である、請求項14に記載のシステム。
【請求項17】
前記強化されたロジット値は前記有界値であり、前記ロジット関数は前記有界化関数によって前記ある範囲の値に制約される、請求項11~13のいずれか1項に記載のシステム。
【請求項18】
前記強化されたロジット値は、前記重み付けされた値であり、前記ロジット関数は、前記有界化関数によって前記ある範囲の値に制約され、前記スケーリング係数によってスケーリングされる、請求項11~13のいずれか1項に記載のシステム。
【請求項19】
第1の値が前記ロジット関数の前記スケーリング係数に割り当てられ、第2の値が前記解決できないクラスについての前記第2の確率に対応する前記第2のオッズの対数の前記スケーリング係数に割り当てられ、前記第2の値は前記第1の値よりも大きい、請求項18に記載のシステム。
【請求項20】
前記強化されたロジット値は前記ハイパーパラメータ最適化値であり、前記ハイパーパラメータ最適化値を求めることは、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記ハイパーパラメータ最適化値を求めることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記ハイパーパラメータ最適化値を求めることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記ハイパーパラメータ最適化値を求めることはさらに、
前記機械学習モデルの1つ以上のハイパーパラメータを調整して、最適化された統計値を生成することと、
前記最適化された統計値を前記強化されたロジット値として設定することとを含む、請求項11~13のいずれか1項に記載のシステム。
【請求項21】
1つ以上のデータプロセッサに、動作を実行させるよう構成される命令を含む、非一時的な機械可読記憶媒体において有形に具現化されたコンピュータプログラム製品であって、前記動作は、
前記チャットボットシステムと対話するユーザによって生成された発話を受信することを含み、前記発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記動作はさらに、
一連のネットワーク層を含む機械学習モデルに前記発話を入力することを含み、前記一連のネットワーク層の最終ネットワーク層は、解決可能なクラスについての第1の確率を、第1のロジット値を表す第1の実数に変換し、解決できないクラスについての第2の確率を、第2のロジット値を表す第2の実数に変換するロジット関数を含み、前記動作はさらに、
前記機械学習モデルが、前記解決可能なクラスについての前記第1の確率および前記解決できないクラスについての前記第2の確率を求めることと、
前記機械学習モデルが、前記ロジット関数を使用して、前記解決可能なクラスについての前記第1の確率を前記第1のロジット値にマッピングすることとを含み、前記第1の確率をマッピングするための前記ロジット関数は、前記解決可能なクラスについての前記第1の確率に対応するオッズの対数であり、前記オッズの対数は、前記解決可能なクラスに関連付けられる分布の重心によって重み付けされ、前記動作はさらに、
前記機械学習モデルが、前記解決できないクラスについての前記第2の確率を強化されたロジット値にマッピングすることを含み、前記強化されたロジット値は、前記第1の確率をマッピングするために使用される前記ロジット関数から独立して求められる第3の実数であり、前記強化されたロジット値は、(i)トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)前記解決できないクラスについての前記第2の確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、前記第1のオッズの対数は、有界化関数によってある範囲の値に制約され、前記解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)前記解決できないクラスについての前記第2の確率に対応する第2のオッズの対数によって生成され、前記第2のオッズの対数は、前記有界化関数によって前記ある範囲の値に制約され、スケーリング係数によってスケーリングされ、前記解決できないクラスに関連付けられる前記分布の前記重心によって重み付けされる、重み付けされた値、(iv)前記機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)前記機械学習モデルのトレーニング中に調整される学習値を含み、前記動作はさらに、
前記発話を、前記第1のロジット値および前記強化されたロジット値に基づいて、前記解決可能なクラスまたは前記解決できないクラスに分類することを含む、コンピュータプログラム製品。
【請求項22】
前記命令はさらに、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
前記発話の前記解決可能なクラスまたは前記解決できないクラスとしての前記分類に基づいて前記ユーザに応答することを含む、請求項21に記載のコンピュータプログラム製品。
【請求項23】
前記解決されたクラスはドメイン内およびスコープ内のスキルまたはインテントであり、前記未解決のクラスはドメイン外もしくはスコープ外のスキルまたはインテントである、請求項21または請求項22に記載のコンピュータプログラム製品。
【請求項24】
前記強化されたロジット値は、前記トレーニングデータセットから生成される前記ロジット値のセットに基づいて求められる前記統計値であり、前記統計値を求めることは、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記統計値を求めることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記統計値を求めることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記統計値を求めることはさらに、
前記統計値を前記強化されたロジット値として設定することを含む、請求項21~23のいずれか1項に記載のコンピュータプログラム製品。
【請求項25】
前記統計値は、前記トレーニング用ロジット値のセットの中央値である、請求項24に記載のコンピュータプログラム製品。
【請求項26】
前記統計値は、前記トレーニング用ロジット値のセットの平均である、請求項24に記載のコンピュータプログラム製品。
【請求項27】
前記強化されたロジット値は前記有界値であり、前記ロジット関数は前記有界化関数によって前記ある範囲の値に制約される、請求項21~23のいずれか1項に記載のコンピュータプログラム製品。
【請求項28】
前記強化されたロジット値は、前記重み付けされた値であり、前記ロジット関数は、前記有界化関数によって前記ある範囲の値に制約され、前記スケーリング係数によってスケーリングされる、請求項21~23のいずれか1項に記載のコンピュータプログラム製品。
【請求項29】
第1の値が前記ロジット関数の前記スケーリング係数に割り当てられ、第2の値が前記解決できないクラスについての前記第2の確率に対応する前記第2のオッズの対数の前記スケーリング係数に割り当てられ、前記第2の値は前記第1の値よりも大きい、請求項28に記載のコンピュータプログラム製品。
【請求項30】
前記強化されたロジット値は前記ハイパーパラメータ最適化値であり、前記ハイパーパラメータ最適化値を求めることは、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記ハイパーパラメータ最適化値を求めることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記ハイパーパラメータ最適化値を求めることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記ハイパーパラメータ最適化値を求めることはさらに、
前記機械学習モデルの1つ以上のハイパーパラメータを調整して、最適化された統計値を生成することと、
前記最適化された統計値を前記強化されたロジット値として設定することとを含む、請求項21~23のいずれか1項に記載のコンピュータプログラム製品。
【請求項31】
方法であって、
トレーニングサブシステムが、トレーニングデータセットを受信することを含み、前記トレーニングデータセットは、チャットボットシステムと対話するユーザによって生成された複数の発話を含み、前記複数の発話のうちの少なくとも1つの発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記方法はさらに、
前記トレーニングサブシステムが、一連のネットワーク層を含む機械学習モデルにアクセスすることを含み、前記一連のネットワーク層の最終ネットワーク層は、解決可能なクラスについての第1の確率を、第1のロジット値を表す第1の実数に変換し、解決できないクラスについての第2の確率を、第2のロジット値を表す第2の実数に変換するロジット関数を含み、前記方法はさらに、
前記トレーニングサブシステムが、前記機械学習モデルを前記トレーニングデータセットでトレーニングして、前記機械学習モデルが、
前記解決可能なクラスについての前記第1の確率および前記解決できないクラスについての前記第2の確率を求め、
前記ロジット関数を使用して、前記解決可能なクラスについての前記第1の確率を前記第1のロジット値にマッピングするようにすることを含み、前記第1の確率をマッピングするための前記ロジット関数は、前記解決可能なクラスについての前記第1の確率に対応するオッズの対数であり、前記オッズの対数は、前記解決可能なクラスに関連付けられる分布の重心によって重み付けされ、前記方法はさらに、
前記トレーニングサブシステムが、前記ロジット関数を強化されたロジット値で置き換えて、前記解決できないクラスについての前記第2の確率が前記強化されたロジット値にマッピングされるようにすることを含み、
前記強化されたロジット値は、前記第1の確率をマッピングするために使用される前記ロジット関数から独立して求められる第3の実数であり、
前記強化されたロジット値は、(i)前記トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)前記解決できないクラスについての前記第2の確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、前記第1のオッズの対数は、有界化関数によってある範囲の値に制約され、前記解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)前記解決できないクラスについての前記第2の確率に対応する第2のオッズの対数によって生成され、前記第2のオッズの対数は、前記有界化関数によって前記ある範囲の値に制約され、スケーリング係数によってスケーリングされ、前記解決できないクラスに関連付けられる前記分布の前記重心によって重み付けされる、重み付けされた値、(iv)前記機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)前記機械学習モデルのトレーニング中に調整される学習値を含み、前記方法はさらに、
前記トレーニングサブシステムが、前記トレーニングされた機械学習モデルを前記強化されたロジット値とともに展開することを含む、方法。
【請求項32】
前記方法はさらに、
前記トレーニングデータセットから、拡張されたトレーニングデータセットを生成することを含み、前記拡張されたトレーニングデータセットは、前記複数の発話のうちの特定の発話の1つ以上のコピーを変換することを含み、前記特定の発話は、前記特定の発話を前記解決できないクラスに関連付けられるものとして識別するトレーニングラベルに関連付けられ、前記方法はさらに、
前記拡張されたトレーニングデータセットを使用して前記機械学習モデルをトレーニングすることを含む、請求項31に記載の方法。
【請求項33】
前記特定の発話の1つ以上のコピーを変換することは、(i)前記特定の発話の前記1つ以上のコピーの逆変換、(ii)前記特定の発話の前記1つ以上のコピーの1つ以上のトークンの同義語置換、(iii)前記特定の発話の前記1つ以上のコピーへのトークンのランダムな挿入、(iv)前記特定の発話の前記1つ以上のコピーの2つのトークン間のスワップ、または(v)前記特定の発話の前記1つ以上のコピーの1つ以上のトークンのランダムな削除、のうちの1つ以上を実行することを含む、請求項32に記載の方法。
【請求項34】
前記強化されたロジット値は、前記トレーニングデータセットから生成される前記ロジット値のセットに基づいて求められる前記統計値であり、前記機械学習モデルをトレーニングすることはさらに、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、前記複数の発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記機械学習モデルをトレーニングすることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記機械学習モデルをトレーニングすることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記機械学習モデルをトレーニングすることはさらに、
前記統計値を前記強化されたロジット値として設定することを含む、請求項31~33のいずれか1項に記載の方法。
【請求項35】
前記統計値は、前記トレーニング用ロジット値のセットの中央値である、請求項34に記載の方法。
【請求項36】
前記統計値は、前記トレーニング用ロジット値のセットの平均である、請求項34に記載の方法。
【請求項37】
前記強化されたロジット値は前記有界値であり、前記ロジット関数は前記有界化関数によって前記ある範囲の値に制約される、請求項31~33のいずれか1項に記載の方法。
【請求項38】
前記強化されたロジット値は、前記重み付けされた値であり、前記ロジット関数は、前記有界化関数によって前記ある範囲の値に制約され、前記スケーリング係数によってスケーリングされる、請求項31~33のいずれか1項に記載の方法。
【請求項39】
第1の値が前記ロジット関数の前記スケーリング係数に割り当てられ、第2の値が前記解決できないクラスについての前記第2の確率に対応する前記第2のオッズの対数の前記スケーリング係数に割り当てられ、前記第2の値は前記第1の値よりも大きい、請求項38に記載の方法。
【請求項40】
前記機械学習モデルをトレーニングすることは、前記解決できないクラスに対する前記スケーリング係数を調整することをさらに含む、請求項38に記載の方法。
【請求項41】
前記強化されたロジット値は前記ハイパーパラメータ最適化値であり、前記機械学習モデルをトレーニングすることはさらに、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記機械学習モデルをトレーニングすることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記機械学習モデルをトレーニングすることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記機械学習モデルをトレーニングすることはさらに、
前記機械学習モデルの1つ以上のハイパーパラメータを調整して、最適化された統計値を生成することと、
前記最適化された統計値を前記強化されたロジット値として設定することとを含む、請求項31~33のいずれか1項に記載の方法。
【請求項42】
システムであって、
1つ以上のデータプロセッサと、
命令を含む非一時的なコンピュータ可読記憶媒体とを備え、前記命令は、前記1つ以上のデータプロセッサ上で実行されると、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
トレーニングデータセットを受信することを含み、前記トレーニングデータセットは、チャットボットシステムと対話するユーザによって生成された複数の発話を含み、前記複数の発話のうちの少なくとも1つの発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記動作はさらに、
一連のネットワーク層を含む機械学習モデルにアクセスすることを含み、前記一連のネットワーク層の最終ネットワーク層は、解決可能なクラスについての第1の確率を、第1のロジット値を表す第1の実数に変換し、解決できないクラスについての第2の確率を、第2のロジット値を表す第2の実数に変換するロジット関数を含み、前記動作はさらに、
前記機械学習モデルを前記トレーニングデータセットを用いてトレーニングして、前記機械学習モデルが、
前記解決可能なクラスについての前記第1の確率および前記解決できないクラスについての前記第2の確率を求め、
前記ロジット関数を使用して、前記解決可能なクラスについての前記第1の確率を前記第1のロジット値にマッピングするようにすることを含み、前記第1の確率をマッピングするための前記ロジット関数は、前記解決可能なクラスについての前記第1の確率に対応するオッズの対数であり、前記オッズの対数は、前記解決可能なクラスに関連付けられる分布の重心によって重み付けされ、前記動作はさらに、
前記ロジット関数を強化されたロジット値で置き換えて、前記解決できないクラスについての前記第2の確率が前記強化されたロジット値にマッピングされるようにすることを含み、
前記強化されたロジット値は、前記第1の確率をマッピングするために使用される前記ロジット関数から独立して求められる第3の実数であり、
前記強化されたロジット値は、(i)前記トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)前記解決できないクラスについての前記第2の確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、前記第1のオッズの対数は、有界化関数によってある範囲の値に制約され、前記解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)前記解決できないクラスについての前記第2の確率に対応する第2のオッズの対数によって生成され、前記第2のオッズの対数は、前記有界化関数によって前記ある範囲の値に制約され、スケーリング係数によってスケーリングされ、前記解決できないクラスに関連付けられる前記分布の前記重心によって重み付けされる、重み付けされた値、(iv)前記機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)前記機械学習モデルのトレーニング中に調整される学習値を含み、前記動作はさらに、
前記トレーニングされた機械学習モデルを前記強化されたロジット値とともに展開することを含む、システム。
【請求項43】
前記命令はさらに、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
前記トレーニングデータセットから、拡張されたトレーニングデータセットを生成することを含み、前記拡張されたトレーニングデータセットは、前記複数の発話のうちの特定の発話の1つ以上のコピーを変換することを含み、前記特定の発話は、前記特定の発話を前記解決できないクラスに関連付けられるものとして識別するトレーニングラベルに関連付けられ、前記動作はさらに、
前記拡張されたトレーニングデータセットを使用して前記機械学習モデルをトレーニングすることを含む、請求項42に記載のシステム。
【請求項44】
前記特定の発話の1つ以上のコピーを変換することは、(i)前記特定の発話の前記1つ以上のコピーの逆変換、(ii)前記特定の発話の前記1つ以上のコピーの1つ以上のトークンの同義語置換、(iii)前記特定の発話の前記1つ以上のコピーへのトークンのランダムな挿入、(iv)前記特定の発話の前記1つ以上のコピーの2つのトークン間のスワップ、または(v)前記特定の発話の前記1つ以上のコピーの1つ以上のトークンのランダムな削除、のうちの1つ以上を実行することを含む、請求項43に記載のシステム。
【請求項45】
前記強化されたロジット値は、前記トレーニングデータセットから生成される前記ロジット値のセットに基づいて求められる前記統計値であり、前記機械学習モデルをトレーニングすることはさらに、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、前記複数の発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記機械学習モデルをトレーニングすることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記機械学習モデルをトレーニングすることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記機械学習モデルをトレーニングすることはさらに、
前記統計値を前記強化されたロジット値として設定することを含む、請求項42~44のいずれか1項に記載のシステム。
【請求項46】
前記統計値は、前記トレーニング用ロジット値のセットの中央値である、請求項45に記載のシステム。
【請求項47】
前記統計値は、前記トレーニング用ロジット値のセットの平均である、請求項45に記載のシステム。
【請求項48】
前記強化されたロジット値は前記有界値であり、前記ロジット関数は前記有界化関数によって前記ある範囲の値に制約される、請求項42~44のいずれか1項に記載のシステム。
【請求項49】
前記強化されたロジット値は、前記重み付けされた値であり、前記ロジット関数は、前記有界化関数によって前記ある範囲の値に制約され、前記スケーリング係数によってスケーリングされる、請求項42~44のいずれか1項に記載のシステム。
【請求項50】
第1の値が前記ロジット関数の前記スケーリング係数に割り当てられ、第2の値が前記解決できないクラスについての前記第2の確率に対応する前記第2のオッズの対数の前記スケーリング係数に割り当てられ、前記第2の値は前記第1の値よりも大きい、請求項49に記載のシステム。
【請求項51】
前記機械学習モデルをトレーニングすることは、前記解決できないクラスに対する前記スケーリング係数を調整することをさらに含む、請求項49に記載のシステム。
【請求項52】
前記強化されたロジット値は前記ハイパーパラメータ最適化値であり、前記機械学習モデルをトレーニングすることはさらに、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記機械学習モデルをトレーニングすることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記機械学習モデルをトレーニングすることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記機械学習モデルをトレーニングすることはさらに、
前記機械学習モデルの1つ以上のハイパーパラメータを調整して、最適化された統計値を生成することと、
前記最適化された統計値を前記強化されたロジット値として設定することとを含む、請求項42~44のいずれか1項に記載のシステム。
【請求項53】
1つ以上のデータプロセッサに、動作を実行させるよう構成される命令を含む、非一時的な機械可読記憶媒体において有形に具現化されたコンピュータプログラム製品であって、前記動作は、
トレーニングデータセットを受信することを含み、前記トレーニングデータセットは、チャットボットシステムと対話するユーザによって生成された複数の発話を含み、前記複数の発話のうちの少なくとも1つの発話は、前記ユーザの音声入力から変換されたテキストデータを含み、前記動作はさらに、
一連のネットワーク層を含む機械学習モデルにアクセスすることを含み、前記一連のネットワーク層の最終ネットワーク層は、解決可能なクラスについての第1の確率を、第1のロジット値を表す第1の実数に変換し、解決できないクラスについての第2の確率を、第2のロジット値を表す第2の実数に変換するロジット関数を含み、前記動作はさらに、
前記機械学習モデルを前記トレーニングデータセットを用いてトレーニングして、前記機械学習モデルが、
前記解決可能なクラスについての前記第1の確率および前記解決できないクラスについての前記第2の確率を求め、
前記ロジット関数を使用して、前記解決可能なクラスについての前記第1の確率を前記第1のロジット値にマッピングするようにすることを含み、前記第1の確率をマッピングするための前記ロジット関数は、前記解決可能なクラスについての前記第1の確率に対応するオッズの対数であり、前記オッズの対数は、前記解決可能なクラスに関連付けられる分布の重心によって重み付けされ、前記動作はさらに、
前記ロジット関数を強化されたロジット値で置き換えて、前記解決できないクラスについての前記第2の確率が前記強化されたロジット値にマッピングされるようにすることを含み、
前記強化されたロジット値は、前記第1の確率をマッピングするために使用される前記ロジット関数から独立して求められる第3の実数であり、
前記強化されたロジット値は、(i)前記トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)前記解決できないクラスについての前記第2の確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、前記第1のオッズの対数は、有界化関数によってある範囲の値に制約され、前記解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)前記解決できないクラスについての前記第2の確率に対応する第2のオッズの対数によって生成され、前記第2のオッズの対数は、前記有界化関数によって前記ある範囲の値に制約され、スケーリング係数によってスケーリングされ、前記解決できないクラスに関連付けられる前記分布の前記重心によって重み付けされる、重み付けされた値、(iv)前記機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)前記機械学習モデルのトレーニング中に調整される学習値を含み、前記動作はさらに、
前記トレーニングされた機械学習モデルを前記強化されたロジット値とともに展開することを含む、コンピュータプログラム製品。
【請求項54】
前記命令はさらに、前記1つ以上のデータプロセッサに動作を実行させ、前記動作は、
前記トレーニングデータセットから、拡張されたトレーニングデータセットを生成することを含み、前記拡張されたトレーニングデータセットは、前記複数の発話のうちの特定の発話の1つ以上のコピーを変換することを含み、前記特定の発話は、前記特定の発話を前記解決できないクラスに関連付けられるものとして識別するトレーニングラベルに関連付けられ、前記動作はさらに、
前記拡張されたトレーニングデータセットを使用して前記機械学習モデルをトレーニングすることを含む、請求項53に記載のコンピュータプログラム製品。
【請求項55】
前記特定の発話の1つ以上のコピーを変換することは、(i)前記特定の発話の前記1つ以上のコピーの逆変換、(ii)前記特定の発話の前記1つ以上のコピーの1つ以上のトークンの同義語置換、(iii)前記特定の発話の前記1つ以上のコピーへのトークンのランダムな挿入、(iv)前記特定の発話の前記1つ以上のコピーの2つのトークン間のスワップ、または(v)前記特定の発話の前記1つ以上のコピーの1つ以上のトークンのランダムな削除、のうちの1つ以上を実行することを含む、請求項54に記載のコンピュータプログラム製品。
【請求項56】
前記強化されたロジット値は、前記トレーニングデータセットから生成される前記ロジット値のセットに基づいて求められる前記統計値であり、前記機械学習モデルをトレーニングすることはさらに、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、前記複数の発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記機械学習モデルをトレーニングすることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記機械学習モデルをトレーニングすることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記機械学習モデルをトレーニングすることはさらに、
前記統計値を前記強化されたロジット値として設定することを含む、請求項53~55のいずれか1項に記載のコンピュータプログラム製品。
【請求項57】
前記統計値は、前記トレーニング用ロジット値のセットの中央値である、請求項56に記載のコンピュータプログラム製品。
【請求項58】
前記統計値は、前記トレーニング用ロジット値のセットの平均である、請求項56に記載のコンピュータプログラム製品。
【請求項59】
前記強化されたロジット値は前記有界値であり、前記ロジット関数は前記有界化関数によって前記ある範囲の値に制約される、請求項53~55のいずれか1項に記載のコンピュータプログラム製品。
【請求項60】
前記強化されたロジット値は、前記重み付けされた値であり、前記ロジット関数は、前記有界化関数によって前記ある範囲の値に制約され、前記スケーリング係数によってスケーリングされる、請求項53~55のいずれか1項に記載のコンピュータプログラム製品。
【請求項61】
第1の値が前記ロジット関数の前記スケーリング係数に割り当てられ、第2の値が前記解決できないクラスについての前記第2の確率に対応する前記第2のオッズの対数の前記スケーリング係数に割り当てられ、前記第2の値は前記第1の値よりも大きい、請求項60に記載のコンピュータプログラム製品。
【請求項62】
前記機械学習モデルをトレーニングすることは、前記解決できないクラスに対する前記スケーリング係数を調整することをさらに含む、請求項60に記載のコンピュータプログラム製品。
【請求項63】
前記強化されたロジット値は前記ハイパーパラメータ最適化値であり、前記機械学習モデルをトレーニングすることはさらに、
前記トレーニングデータセットのサブセットにアクセスすることを含み、前記トレーニングデータセットの前記サブセットは、発話のサブセットを含み、前記発話のサブセットの各発話は、前記解決できないクラスに関連付けられ、前記機械学習モデルをトレーニングすることはさらに、
トレーニング用ロジット値のセットを生成することを含み、前記トレーニング用ロジット値のセットの各トレーニング用ロジット値は、前記機械学習モデルを前記発話のサブセットのそれぞれの発話に適用することによって生成され、前記機械学習モデルをトレーニングすることはさらに、
前記統計値を求めることを含み、前記統計値は、前記トレーニング用ロジット値のセットを表し、前記機械学習モデルをトレーニングすることはさらに、
前記機械学習モデルの1つ以上のハイパーパラメータを調整して、最適化された統計値を生成することと、
前記最適化された統計値を前記強化されたロジット値として設定することとを含む、請求項53~55のいずれか1項に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の参照
本出願は、米国仮特許出願63/119,449(2020年11月30日提出)および米国非仮特許出願17/456,687(2021年11月29日提出)の利益を主張する。上記で参照した出願の各々は、あらゆる目的のためにその全体が参照により本明細書に組み込まれる。
【0002】
技術分野
本開示は、概してチャットボットシステムに関し、より詳細には、自然言語処理においてチャットボットシステムに入力される発話およびメッセージを分類するために強化されたロジット値を使用するための技術に関する。
【背景技術】
【0003】
背景
世界中の多くのユーザは、即時反応を得るためにインスタントメッセージングまたはチャットプラットフォーム上にいる。組織は、しばしば、これらのインスタントメッセージングまたはチャットプラットフォームを用いて、顧客(またはエンドユーザ)とライブ会話に携わる。しかしながら、顧客またはエンドユーザとのライブ通信に携わるためにサービス人員を雇用することは、組織にとって非常に費用がかかり得る。チャットボットまたはボットは、特にインターネット上で、エンドユーザとの会話をシミュレートするために開発され始めた。エンドユーザは、エンドユーザが既にインストールし使用しているメッセージングアプリを介してボットと通信することができる。一般に人工知能(AI)によって駆動されるインテリジェントなボットは、ライブ会話において、より知的にかつ文脈に沿って通信することができ、したがって、改善された会話体験のために、ボットとエンドユーザとの間の、より自然な会話を可能にすることができる。ボットが応答の仕方を知っているキーワードまたはコマンドの固定セットをエンドユーザが学習する代わりに、インテリジェントなボットは、自然言語でのエンドユーザ発話に基づいてエンドユーザの意図を理解し、それに応じて応答することができる。
【発明の概要】
【0004】
概要
自然言語処理においてチャットボットシステムに入力される発話およびメッセージを分類するために強化されたロジット値を使用するための技術が提供される。ある方法は、チャットボットシステムが、チャットボットシステムと対話するユーザによって生成された発話を受信し、その発話を一連のネットワーク層を含む機械学習モデルに入力することを含むことができる。発話は、ユーザによって入力された音声から変換されたテキストデータを含むことができる。一連のネットワーク層の最終ネットワーク層は、解決可能なクラスについての第1の確率を、第1のロジット値を表す第1の実数に変換し、解決できないクラスについての第2の確率を、第2のロジット値を表す第2の実数に変換するロジット関数を含むことができる。
【0005】
本方法はまた、機械学習モデルが、解決可能なクラスについての第1の確率および解決できないクラスについての第2の確率を求めることを含むことができる。機械学習モデルは、ロジット関数を使用して、解決可能なクラスについての第1の確率を第1のロジット値にマッピングすることができる。第1の確率をマッピングするためのロジット関数は、解決可能なクラスについての第1の確率に対応するオッズの対数とすることができ、オッズの対数は、解決可能なクラスに関連付けられる分布の重心によって重み付けされる。
【0006】
本方法はまた、機械学習モデルが、解決できないクラスについての第2の確率を強化されたロジット値にマッピングすることを含むことができる。強化されたロジット値は、第1の確率をマッピングするために使用されるロジット関数から独立して求められる第3の実数であり得る。強化されたロジット値は、(i)トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)解決できないクラスについての第2の確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、第1のオッズの対数は、有界化関数(bounding function)によってある範囲の値に制約され、解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)解決できないクラスについての第2の確率に対応する第2のオッズの対数によって生成され、第2のオッズの対数は、有界化関数によって当該ある範囲の値に制約され、スケーリング係数によってスケーリングされ、解決できないクラスに関連付けられる分布の重心によって重み付けされる、重み付けされた値、(iv)機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)機械学習モデルのトレーニング中に調整される学習値を含むことができる。本方法はまた、チャットボットシステムが、第1のロジット値および強化されたロジット値に基づいて、発話を解決可能なクラスまたは解決できないクラスとして分類することを含むことができる。
【0007】
発話およびメッセージを分類するために強化されたロジット値を使用する機械学習モデルをトレーニングするための技術も提供される。ある方法は、トレーニングサブシステムがトレーニングデータセットを受信することを含むことができる。トレーニングデータセットは、チャットボットシステムと対話するユーザによって生成された複数の発話を含むことができる。複数の発話のうちの少なくとも1つの発話は、ユーザの音声入力から変換されたテキストデータを含むことができる。本方法はまた、トレーニングサブシステムが、一連のネットワーク層を含む機械学習モデルにアクセスすることを含むことができる。一連のネットワーク層の最終ネットワーク層は、解決可能なクラスについての第1の確率を、第1のロジット値を表す第1の実数に変換し、解決できないクラスについての第2の確率を、第2のロジット値を表す第2の実数に変換するロジット関数を含む。
【0008】
本方法はまた、トレーニングサブシステムが、機械学習モデルが、(i)解決可能なクラスについての第1の確率および解決できないクラスについての第2の確率を求め、(ii)ロジット関数を使用して、解決可能なクラスについての第1の確率を第1のロジット値にマッピングするように、トレーニングデータセットを用いて機械学習モデルをトレーニングすることを含むこともできる。第1の確率をマッピングするためのロジット関数は、解決可能なクラスについての第1の確率に対応するオッズの対数とすることができ、オッズの対数は、解決可能なクラスに関連付けられる分布の重心によって重み付けされる。
【0009】
本方法はまた、トレーニングサブシステムが、解決できないクラスについての第2の確率が強化されたロジット値にマッピングされるように、ロジット関数を強化されたロジット値で置き換えることを含むことができる。強化されたロジット値は、第1の確率をマッピングするために使用されるロジット関数から独立して求められる第3の実数であり得る。強化されたロジット値は、(i)トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)解決できないクラスについての第2の確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、第1のオッズの対数は、有界化関数によってある範囲の値に制約され、解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)解決できないクラスについての第2の確率に対応する第2のオッズの対数によって生成され、第2のオッズの対数は、有界化関数によって当該ある範囲の値に制約され、スケーリング係数によってスケーリングされ、解決できないクラスに関連付けられる分布の重心によって重み付けされる、重み付けされた値、(iv)機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)機械学習モデルのトレーニング中に調整される学習値を含むこともできる。本方法はまた、トレーニングサブシステムが、強化されたロジット値を用いて、トレーニングされた機械学習モデルを展開することを含むこともできる。
【0010】
様々な実施形態では、1つ以上のデータプロセッサと、1つ以上のデータプロセッサ上で実行されると1つ以上のデータプロセッサにここに開示される1つ以上の方法の一部またはすべてを実行させる命令を含む非一時的コンピュータ可読記憶媒体とを含む、システムが提供される。
【0011】
様々な実施形態では、非一時的な機械可読記憶媒体において有形に具現化され、1つ以上のデータプロセッサにここで開示される1つ以上の方法の一部またはすべてを実行させるように構成される命令を含むコンピュータプログラム製品が提供される。
【0012】
上記および以下で説明する技術は、いくつかの方法で、およびいくつかの状況で実現され得る。いくつかの例示的な実現例および状況が、以下でより詳細に説明されるように、以下の図面を参照して提供される。しかしながら、以下の実現例および状況は、多くのうちの少数にすぎない。
【図面の簡単な説明】
【0013】
図1】例示的な実施形態を組み込んだ分散環境の簡略化されたブロック図である。
図2】ある実施形態による、マスタボットを実現するコンピューティングシステムの簡略化されたブロック図である。
図3】ある実施形態による、スキルボットを実現するコンピューティングシステムの簡略化されたブロック図である。
図4】様々な実施形態によるチャットボットトレーニングおよび展開システムの簡略化されたブロック図である。
図5】いくつかの実施形態による、例示的なニューラルネットワークの概略図を示す。
図6】いくつかの実施形態による、発話が解決できないクラスに対応するかどうかを予測するために強化されたロジット値を表す統計値を求めるための例示的なプロセスを示すフローチャートを示す。
図7】いくつかの実施形態による、発話が解決できないクラスに対応するかどうかを予測するために指定された範囲内で強化されたロジット値を求めるようロジット関数を修正するための例示的なプロセスを示すフローチャートを示す。
図8】いくつかの実施形態による、発話が解決できないクラスに対応するかどうかを予測するために強化されたロジット値を求めるようスケーリング係数をロジット関数に追加するための例示的なプロセスを示すフローチャートを示す。
図9】いくつかの実施形態による、発話が解決できないクラスに対応するかどうかを予測するために強化されたロジット値を求めるようハイパーパラメータチューニングを使用するための例示的なプロセスを示すフローチャートを示す。
図10】いくつかの実施形態による、発話が解決できないクラスに対応するかどうかを予測するために強化されたロジット値として学習値を使用するための例示的なプロセスを示すフローチャートを示す。
図11】いくつかの実施形態による、解決できないクラスのために強化されたロジット値を実現する機械学習モデルをトレーニングするためのプロセスを示すフローチャートである。
図12】いくつかの実施形態による、発話を解決できないクラスとして分類するために強化されたロジット値を使用するためのプロセスを示すフローチャートである。
図13】様々な実施形態を実現するための分散型システムの簡略図である。
図14】様々な実施形態による、実施形態のシステムの1つ以上のコンポーネントによって提供されるサービスがクラウドサービスとして提供され得る、システム環境の1つ以上のコンポーネントの簡略ブロック図である。
図15】様々な実施形態を実現するために用いられ得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0014】
詳細な説明
以下の説明では、説明の目的のために、特定の詳細が、ある実施形態の完全な理解を促すために記載される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実施され得ることは明らかであろう。図および記載は、限定することを意図したものではない。「例示的」という用語は、ここでは、「例、事例、または例示として供される」ことを意味するために用いられる。「例示的」としてここに記載される任意の実施形態または設計は、必ずしも、他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0015】
A.概要
1.インテント
デジタルアシスタントは、ユーザが自然言語会話において様々なタスクを達成するのを助ける人工知能駆動型インターフェイスである。各デジタルアシスタントについて、顧客は、1つ以上のスキルをアセンブルすることができる。スキル(ここでは、チャットボット、ボット、またはスキルボットとしても記載される)は、在庫の追跡、タイムカードの提出、および経費報告の作成など、特定の種類のタスクに焦点を当てる個々のボットである。エンドユーザがデジタルアシスタントに携わると、デジタルアシスタントは、エンドユーザ入力を評価し、適切なチャットボットに会話をルーティングし、適切なチャットから会話をルーティングする。デジタルアシスタントは、FACEBOOK(登録商標)メッセンジャー、SKYPE MOBILE(登録商標)メッセンジャー、またはショートメッセージサービス(SMS)などの様々なチャネルを介してエンドユーザに利用可能にすることができる。チャネルは、様々なメッセージングプラットフォーム上でエンドユーザからデジタルアシスタントおよびその様々なチャットボットへチャットを行き来させる。チャネルはまた、ユーザエージェント漸増、イベント起動型会話、およびテストをサポートしてもよい。
【0016】
インテントにより、チャットボットは、ユーザがチャットボットに何をして欲しいかを理解することができる。インテントは、発話(例えば、口座残高を入手する、購入を行うなど)とも称される、典型的なユーザ要求およびステートメントの順列からなる。ここで用いられる場合、発話またはメッセージは、チャットボットとの会話の間に交換される単語のセット(たとえば、1つ以上の文)を指し得る。発話は、ユーザインターフェイスを介してユーザにより入力される音声入力から変換されるテキストであり得る。インテントは、何らかのユーザアクション(例えば、ピザを注文する)を示す名前を提供し、そのアクションをトリガすることに一般に関連付けられる実生活ユーザステートメントまたは発話のセットをコンパイルすることによって、作成されてもよい。チャットボットの認知は、これらのインテントから導き出されるので、各インテントは、ロバストな(1から二十数個の発話)であるデータセットから作成され、チャットボットがあいまいなユーザ入力を解釈できるように、変動してもよい。豊富な発話のセットは、チャットボットが、「この注文は無視して」または「配達は取りやめて!」のような、同じものを意味するが異なって表現されるメッセージを受信したときに、ユーザが何を望むかを理解することを可能にする。集合的に、インテントおよびそれらに属する発話は、チャット用のトレーニングコーパスを構成する。コーパスを用いてモデルをトレーニングすることによって、顧客は、そのモデルを、本質的に、エンドユーザ入力を単一のインテントに解決するための参照ツールに変換することができる。顧客は、インテントテストおよびインテントトレーニングの循環を通じてチャットの認知の鋭敏さを改善することができる。
【0017】
しかしながら、ユーザ発話に基づいてエンドユーザのインテントを判断することができるチャットボットを構築することは、部分的には、自然言語の微妙さおよび曖昧さ、ならびに入力空間の次元(例えば、可能性のあるユーザ発話)および出力空間のサイズ(インテントの数)のため、困難なタスクである。この困難の例示的な例は、インテントを表現するために、婉曲語法、同義語、または非文法的言語運用を採用するといった、自然言語の特性から生じる。例えば、ある発話は、ピザ、注文、または配達に明示的に言及することなく、ピザを注文するインテントを表す場合がある。例えば、特定の地域の日常語では、「ピザ」は「パイ」と呼ばれる。不正確さまたは変動性といった、自然言語におけるこれらの傾向は、不確実性を生じさせ、インテントの明示的な指示とは対照的に、例えばキーワードの包含を通して、インテントの予測のためのパラメータとして信頼性を導入する。したがって、チャットボットの性能およびチャットボットによるユーザ体験を改善するために、チャットボットをトレーニング、監視、デバッグ、および再トレーニングする必要がある場合がある。従来のシステムでは、口語理解(SLU)および自然言語処理(NLP)におけるデジタルアシスタントまたはチャットボットの機械学習モデルをトレーニングおよび再トレーニングするために、トレーニングシステムが提供される。
【0018】
2.機械学習モデルを用いてインテントを判断する
1つ以上の点で、チャットボットシステムは、出力を確率分布にマッピングするためにロジスティック回帰関数を使用するニューラルネットワークモデルへの入力として発話を提供することができる。分類のために、例えば、確率分布において出力のセットを順序付けることは、発話において呼び出されるインテントの予測を可能にする。正確な予測は、次に、チャットボットがエンドユーザと正確に対話することを可能にする。この意味で、精度は、ニューラルネットワーク分類器の出力を確率分布にマッピングすることに少なくとも部分的に依存する。
【0019】
ニューラルネットワーク機械学習モデルの出力を確率分布にマッピングするために、ロジット値が入力に基づいて求められる。ロジット値は、「ロジット」とも呼ばれ、機械学習モデルのネットワーク層のロジット関数によって出力される値である。ロジット値は、発話が特定のクラスに対応するオッズを表すことができる。ロジット関数は、特定のクラス(例えば、order_pizzaインテントクラス、未解決のクラス)に対するオッズの対数であり、機械学習モデルの出力を、確率分布内に適合する対応するロジット値に変換する。ロジット値は、(-∞,+∞)の間の範囲である。次いで、ロジット値は、入力(たとえば、発話)がクラスのセットのうちの特定のクラスに対応するかどうかの予測される尤度を生成するために、活性化関数(たとえば、softmax関数)への入力として提供され得、ここで、予測される尤度は、クラスのセットの確率分布内にある。予測される尤度は[0,1]間の範囲であり得る。例えば、特定のクラス(例えば、order_pizza)に対応する数値出力は、多項式機械学習モデルの1つ以上の中間層を通して入力発話(例えば、「I want to grab a pie(私はパイを食べたい」)を処理することによって生成される。出力は、特定のクラスのロジット関数によって処理されて、9.4のロジット値を生成し得る。次いで、活性化関数をロジット値に適用して、0と1との間の範囲の確率値(例えば、0.974)を求めることができ、これは、入力発話がorder_pizzaクラスに対応することを示す。分類器がまた識別するようトレーニングされる任意のインテントを呼び出さない発話は、スコープ外またはドメイン外発話に対応することになる。例えば、「how is the weather today?(今日の天気はどのようですか?)」という発話は、発話が特定の食物に対する注文を指定するかどうかを予測するようトレーニングされる識別器にとっては範囲外であると考えられ得る。
【0020】
分類精度は、ロジット関数の1つ以上のパラメータを重み付けすることによってさらに高めることができる。例えば、各インテントクラスは、インテントクラスの重心によって重み付けされてもよいロジット関数に関連付けられてもよい。本明細書で使用されるとおりでは、「重心」という語は、発話を分類するために使用されるクラスタの中心位置の場所を指し、クラスタは、特定のエンドユーザインテントクラスに対応するデータを識別する。いくつかの例では、重心は、発話の対応するデータセット(たとえば、トレーニングデータセット)からのデータを使用して求められる。分布の重心によるロジット関数の重み付けは、特に所与の発話がドメイン内またはスコープ内(例えば、システムが認識するようトレーニングされた発話)である場合に、ロジット関数がその発話の分類をより正確に予測することを可能にする。
【0021】
3.スコープ外発話のインテントを判断する
ニューラルネットワークは、過信頼の問題に悩まされている。過信頼が生じ得るのは、クラスについてトレーニングされたニューラルネットワーク(たとえば、トレーニングされたNLPアルゴリズム)によって生成されている信頼度スコアが実際の信頼度スコアから非相関になり得るからである。この問題は、典型的には、より深いニューラルネットワーク(すなわち、より多数の層を有するニューラルネットワークモデル)において生じ得る。ディープニューラルネットワークモデルは、概して、それらの出力予測においては、より浅いニューラルネットワークモデルよりも正確であるが、実際の入力がニューラルネットワークモデルをトレーニングするために使用されたトレーニングデータによって良好に表されない場合、誤った高確度の分類予測を生成する可能性がある。したがって、ディープニューラルネットワークは、精度が高いため使用が望ましい一方で、ディープニューラルネットワークに関連付けられる過信頼問題は、ニューラルネットワークの性能問題を回避するために対処されなければならない。
【0022】
重心加重ロジット関数の使用を伴う従来の技術は、過信頼問題に効果的に対処しない。概して、ドメイン外発話またはスコープ外発話の場合、重心加重ロジット関数の使用は、発話が未解決の発話のクラスタに適合するかどうかを判定するものとして分類器を扱うことであると言うことができる。しかしながら、ドメイン外またはスコープ外の発話は、それらの異なる自然言語定義および構文に起因して、クラスタ化されるよりもむしろ分散される可能性が高いため、未解決の発話のクラスタは、不正確であり得る。言い換えれば、スコープ外発話のために重心加重ロジット関数を使用することは、非常に分散されたクラスタに基づく重心を適用することを意味するであろう。そのような重心を適用することは、例えば、インテントがチャットボットのドメイン外にある確率を過小表現することによって、発話の分類に不正確さを持ち込む。
【0023】
4.発話を未解決のインテントを有するものとして分類するための強化されたロジット
上記の欠点を克服するために、本技術は、機械学習モデルにおいて強化されたロジットを使用して、スコープ外発話が解決できないクラスに対応することを正確に予測するためのシステムおよび方法を含む。これは、発話分類器の精度を高めることができ、例えば、分類器によって信頼性をもって分類することができないドメイン外またはスコープ外発話をより正確に識別することができる改善された発話分類器を提供することができる。ドメイン外/スコープ外発話を識別するこの増加した能力は、分類器が、分類するようにトレーニングされていない発話を分類しようと試みる頻度を低減させ、分類器の能力外にある発話を分類しようと試みることから生じ得る、予測不可能なまたは正しくない分類結果の数を低減させ、したがって、発話分類全体を改善することができる。本技術は、発話またはメッセージが解決可能なクラス(例えば、スキルボットが実行するように構成されるタスクのタイプ、スキルボットに関連付けられるインテント)を表すか解決できないクラスを表すかを予測するようにトレーニングされる機械学習モデル(たとえば、ニューラルネットワーク)を含み得る。機械学習モデルは、発話が解決可能なインテントのクラスに対応するかどうかを予測する第1のロジット値を生成するためのロジット関数を適用し、発話が解決できないインテントのクラスに対応するかどうかを予測する強化されたロジット値を使用するように、構成され得る。いくつかの例では、強化されたロジット値は、ロジット関数に取って代わるか、またはロジット関数から独立して求められる。
【0024】
いくつかの例では、解決できないクラスに対する強化されたロジット値は、(i)トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)解決できないクラスについての確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、第1のオッズの対数は、有界化関数によってある範囲の値に制約され、解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)解決できないクラスについての確率に対応する第2のオッズの対数によって生成され、第2のオッズの対数は、スケーリング係数によってスケーリングされ、有界化関数によって有界化され、解決できないクラスに関連付けられる分布の重心によって重み付けされる、重み付けされた値、(iv)機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)機械学習モデルのトレーニング中に動的に調整される学習値のうちの1つを含む。
【0025】
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、または対話のための他の音声入力を用いるインターフェイスを有するデバイスもしくはアプリ)を含むことができる。
【0026】
いくつかの例では、ボットシステムは、統一資源識別子(URI)に関連付けられ得る。URIは、文字列を用いてボットシステムを識別することができる。URIは、1つ以上のメッセージングアプリケーションシステムのためのウェブフックとして用いられ得る。URIは、例えば、統一資源位置指定子(URL)または統一資源名(URN)を含むことができる。ボットシステムは、メッセージングアプリケーションシステムからメッセージ(例えば、ハイパーテキスト転送プロトコル(HTTP)ポストコールメッセージ)を受信するように設計されてもよい。HTTPポストコールメッセージは、メッセージングアプリケーションシステムからURIに向けられてもよい。いくつかの実施形態では、メッセージはHTTPポストコールメッセージとは異なり得る。例えば、ボットシステムは、ショートメッセージサービス(SMS)からメッセージを受信し得る。ここにおける議論は、ボットシステムがメッセージとして受信する通信に言及し得るが、メッセージは、HTTPポストコールメッセージ、SMSメッセージ、または2つのシステム間の任意の他のタイプの通信であり得ることを理解されたい。
【0027】
エンドユーザは、人々間の対話のように、会話による対話(会話によるユーザインターフェイス(UI)と呼ばれることもある)を通じてボットシステムと対話することができる。場合によっては、対話は、エンドユーザがボットに「Hello(こんにちは)」と言い、ボットが「Hi(やあ)」と応答し、エンドユーザをどのように支援できるかをエンドユーザに問い合わせることを含んでもよい。場合によっては、対話はまた、例えば、ある口座から別の口座へ送金するなど、銀行ボットとの取引対話;たとえば、バケーションバランスのチェックなど、HRボットとの情報対話;または、例えば、購入した商品を返品するもしくは技術的サポートを求める議論など、小売店ボットとの対話であってもよい。
【0028】
いくつかの実施形態では、ボットシステムは、ボットシステムの管理者または開発者との対話なしにエンドユーザ対話を知的に扱うことができる。例えば、エンドユーザは、所望の目標を達成するために、ボットシステムに1つ以上のメッセージを送信してもよい。メッセージは、テキスト、絵文字、オーディオ、画像、ビデオ、またはメッセージを伝達する他の方法など、あるコンテンツを含み得る。いくつかの実施形態では、ボットシステムは、コンテンツを標準化された形式(例えば、適切なパラメータを有する企業サービスに対するrepresentational state transfer(REST)コール)に変換し、自然言語応答を生成することができる。ボットシステムはまた、追加の入力パラメータをエンドユーザに促すか、または他の追加の情報を要求することもできる。いくつかの実施形態では、ボットシステムはまた、エンドユーザ発話に受動的に応答するのではなく、エンドユーザとの通信を開始してもよい。ここでは、ボットシステムの明示的な呼出しを識別し、呼び出されるボットシステムに対する入力を決定するための様々な技術が説明される。ある実施形態では、明示的な呼出し分析は、発話における呼出し名の検出に基づいて、マスタボットによって実行される。呼出し名の検出に応答して、発話は、呼出し名に関連付けられるスキルボットへの入力のために精緻化されてもよい。
【0029】
ボットとの会話は、複数の状態を含む特定の会話フローに従うことができる。フローは、入力に基づいて次に起こるものを定義することができる。いくつかの実施形態では、ユーザが定義した状態(例えば、エンドユーザのインテント)と、状態において、または状態から状態にとるべきアクションとを含む状態機械を用いて、ボットシステムを実現することができる。会話は、エンドユーザ入力に基づいて異なる経路をとることができ、これは、ボットがフローについて行う決定に影響を及ぼし得る。例えば、各状態において、エンドユーザ入力または発話に基づいて、ボットは、エンドユーザのインテントを判断して、次にとるべき適切なアクションを決定することができる。ここにおいて、および発話の文脈において、「インテント」という語は、発話を与えたユーザのインテントを指す。例えば、ユーザは、ピザを注文するために会話でボットに関わるつもりであり、ユーザのインテントは、「ピザを注文して」という発話によって表現されてもよい。ユーザのインテントは、ユーザがユーザに代わってチャットボットに実行して欲しい特定のタスクに向けられ得る。したがって、発話は、ユーザのインテントを反映する質問、コマンド、要求などとして表現することができる。インテントは、エンドユーザが達成することを望む目標を含むことができる。
【0030】
チャットの構成の文脈において、「インテント」という語は、ここでは、ユーザの発話を、チャットボットが実行できる特定のタスク/アクションまたはタスク/アクションのカテゴリにマッピングするための設定情報を指すために用いられる。発話のインテント(すなわち、ユーザのインテント)とチャットボットのインテントとを区別するために、後者をここでは「ボットインテント」と呼ぶことがある。ボットインテントは、そのインテントに関連付けられる1つ以上発話のセットを含んでもよい。例えば、ピザを注文することに対するインテントは、ピザの注文を行う要望を表す発話の様々な順列を有することができる。これらの関連付けられた発話は、チャットボットのインテント分類器をトレーニングするために用いられ得、インテント分類器が、その後、ユーザからの入力発話がピザ注文インテントと一致するかどうかを判断することを可能にする。ボットインテントは、ユーザとある状態において会話を開始するための1つ以上のダイアログフローに関連付けられ得る。例えば、ピザ注文インテントに関する第1のメッセージは、「どの種類のピザがよろしいですか?」という質問であり得る。関連付けられた発話に加えて、ボットインテントは、さらに、そのインテントに関連する指名されたエンティティを含み得る。例えば、ピザ注文インテントは、ピザを注文するタスクを実行するために用いられる変数またはパラメータ、例えば、トッピング1、トッピング2、ピザの種類、ピザサイズ、ピザ数量などを含み得る。エンティティの値は、典型的には、ユーザとの会話を通じて取得される。
【0031】
ある例では、発話を分析して、発話がスキルボットの呼出し名を含むかどうかを判断する。呼出し名が見つからない場合、発話は非明示的に呼び出しているとみなされ、プロセスはトレーニングされたモデルなどのインテント分類器に進む。呼出し名があると判断された場合、発話は明示的な呼出しであるとみなされ、プロセスは、発話のどの部分が呼出し名に関連付けられているかを判断することに進む。トレーニングされたモデルが呼び出される場合、受信された発話全体が、インテント分類器への入力として提供される。
【0032】
発話を受信するインテント分類器は、マスタボットのインテント分類器(例えば、図2のインテント分類器242)であり得る。インテント分類器は、発話のインテントがシステムインテント(例えば、退出、ヘルプ)または特定のスキルボットにマッチするかどうかを判断するようトレーニングされた、機械学習ベースまたはルールベースの分類器であり得る。ここで説明されるように、マスタボットによって実行されるインテント分析は、特定のスキルボット内のどのインテントが発話にとって最良のマッチであるかを判断することなく当該特定のスキルボットに対してマッチングすることに限定されてもよい。したがって、発話を受信するインテント分類器は、呼び出されるべき特定のスキルボットを識別してもよい。代替として、発話が特定のシステムインテントを表す(例えば、発話は、単語「退出」または「ヘルプ」を含む)場合、その発話を受信するインテント分類器は、この特定のシステムインテントのために構成されるダイアログフローに基づいて、マスタボットとユーザとの間の会話をトリガするよう、その特定のシステムインテントを識別してもよい。
【0033】
呼出し名がある場合、1つ以上の明示的な呼出しルールを適用して、発話のどの部分が呼出し名に関連付けられているかを判断する。この判断は、POSタグ、依存関係情報、および/または発話とともに受信される他の抽出された情報を使用する、発話の文構造の分析に基づくことができる。例えば、呼出し名に関連付けられるある部分は、呼出し名を含む名詞句、または呼出し名に対応する前置詞付きの目的語であり得る。処理に基づいて判断される、呼出し名に関連付けられる任意の部分は、除去される。発話の意味を伝えるために必要とされない発話の他の部分(例えば、前置詞単語)も除去することができる。発話の特定の部分の除去は、呼出し名に関連付けられるスキルボットに対する入力を生成する。除去後に、受信された発話に残る部分がある場合、その残りの部分は、例えば、テキストストリングとして、スキルボットへの入力のための新たな発話を形成する。そうではなく、受信された発話が完全に除去された場合、入力は空のストリングであってもよい。その後、呼出し名に関連付けられるスキルボットが呼び出され、そのスキルボットには生成された入力が提供される。
【0034】
生成された入力を受信すると、呼び出されたスキルボットは、例えば、トレーニングされたスキルボットのインテント分類器を使用してインテント分析を実行して、入力に表されたユーザインテントに一致するボットインテントを識別することによって、その入力を処理する。一致するボットインテントの識別の結果、スキルボットは、一致するボットインテントに関連付けられるダイアログフローに従って、特定のアクションを実行するかまたはユーザとの会話を開始してもよい。例えば、入力が空のストリングである場合、会話は、ダイアログフローに対して定義されるデフォルト状態で開始され得、例えば、歓迎メッセージであり得る。代替的に、入力が空のストリングでない場合、例えば、入力が、エンティティについての値、またはスキルボットが入力の一部として受信したことにより、もはやユーザに求める必要がない何らかの他の情報を含むので、会話は何らかの中間状態で開始され得る。別の例として、スキルボットは、(例えば、スキルボットに対して構成されたすべてのボットインテントの信頼度スコアが特定の閾値を下回るため、)入力を処理できない、と判断してもよい。この状況では、スキルボットは、入力を処理のためにマスタボットに戻して任せてもよく(例えば、マスタボットのインテント分類器を使用するインテント分析)、またはスキルボットは、ユーザに明確化を促してもよい。
【0035】
1.全体的な環境
図1は、ある実施形態によるチャットボットシステムを組み込んだ環境100の簡略ブロック図である。環境100は、デジタルアシスタントビルダプラットフォーム(DABP)102を含み、DABP102のユーザがデジタルアシスタントまたはチャットボットシステムを作成および展開することを可能にする。DABP102は、1つ以上のデジタルアシスタント(またはDA)またはチャットボットシステムを作成するために使用することができる。例えば、図1に示すように、特定の企業を表すユーザ104は、DABP102を使用して、特定の企業のユーザ用のデジタルアシスタント106を作成および展開することができる。例えば、銀行が、DABP102を使用して、銀行の顧客による使用のために1つ以上のデジタルアシスタントを作成することができる。複数の企業が、同じDABP102プラットフォームを使用して、デジタルアシスタントを作成することができる。別の例として、レストラン(例えば、ピザショップ)の所有者は、DABP102を用いて、レストランの顧客が食べ物を注文すること(例えば、ピザを注文すること)を可能にするデジタルアシスタントを作成および展開することができる。
【0036】
本開示の目的のために、「デジタルアシスタント」は、デジタルアシスタントのユーザが自然言語会話を通じて様々なタスクを達成するのに役立つエンティティである。デジタルアシスタントは、ソフトウェア(たとえば、デジタルアシスタントは、1つ以上のプロセッサによって実行可能なプログラム、コード、または命令を用いて実現されるデジタルエンティティである)のみを用いて、ハードウェアを用いて、またはハードウェアとソフトウェアとの組み合わせを用いて、実現されてもよい。デジタルアシスタントは、コンピュータ、携帯電話、腕時計、器具、車両など、様々な物理的システムもしくはデバイスにおいて具現化または実現されてもよい。デジタルアシスタントは、チャットボットシステムとも称されることもある。したがって、本開示の目的のために、デジタルアシスタントおよびチャットボットシステムという文言は交換可能である。
【0037】
DABP102を使用して構築されるデジタルアシスタント106等のデジタルアシスタントは、デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を介して、種々のタスクを行うために使用されることができる。会話の一部として、ユーザは、1つ以上のユーザ入力110をデジタルアシスタント106に提供し、デジタルアシスタント106から応答112を得てもよい。会話は、入力110および応答112のうちの1つ以上を含むことができる。これらの会話を介して、ユーザは、1つ以上のタスクがデジタルアシスタント106によって実行されるよう要求することができ、それに応答して、デジタルアシスタント106は、ユーザ要求タスクを実行し、ユーザに適切な応答で応答するよう構成される。
【0038】
ユーザ入力110は、概して自然言語形式であり、発話と呼ばれる。ユーザ発話110は、ユーザが文、質問、テキスト片、または単一の単語でさえタイプし、それを入力としてデジタルアシスタント106に提供するときなどの、テキスト形式であり得る。いくつかの実施形態では、ユーザ発話110は、ユーザがデジタルアシスタント106に入力として提供される何かを言うかまたは話すときなどの、音声入力または発話形式であり得る。発話は、典型的には、ユーザ108によって話される言語である。たとえば、発話は、英語または何らかの他の言語であってもよい。発話が音声形式である場合、音声入力はその特定の言語のテキスト形式の発話に変換され、次いで、テキスト発話はデジタルアシスタント106によって処理される。様々な音声-テキスト処理技術を用いて、音声または聴覚的入力をテキスト発話に変換してもよく、テキスト発話は、その後、デジタルアシスタント106によって処理される。いくつかの実施形態では、音声からテキストへの変換は、デジタルアシスタント106自体によって行われてもよい。
【0039】
テキスト発話または音声発話であってもよい発話は、断章、文、複数の文、1つ以上の単語、1つ以上の質問、前述のタイプの組合せなどであってもよい。デジタルアシスタント106は、ユーザ入力の意味を理解するために発話に自然言語理解(NLU)技術を適用するよう構成される。発話に対するNLU処理の一部として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成され、これは、発話に対応する1つ以上のインテントおよび1つ以上のエンティティを識別することを伴う。発話の意味を理解すると、デジタルアシスタント106は、理解された意味またはインテントに応答して1つ以上のアクションまたは動作を実行することができる。本開示の目的のために、発話は、デジタルアシスタント106のユーザ108によって直接提供されるテキスト発話であるか、または入力発話のテキスト形式への変換の結果であると仮定する。しかしながら、これは、いかなる態様においても限定的または制限的であることを意図するものではない。
【0040】
例えば、ユーザ108の入力は、「私はピザを注文したい」等の発話を提供することによって、ピザが注文されることを要求してもよい。そのような発話を受信すると、デジタルアシスタント106は、発話の意味を理解し、適切なアクションを取るよう構成される。適切なアクションは、例えば、ユーザが注文したいピザのタイプ、ピザのサイズ、ピザの任意のトッピングなどに関する、ユーザ入力を要求する質問で、ユーザに応答することを含んでもよい。デジタルアシスタント106によって提供される応答はまた、自然言語形式であってもよく、典型的には入力発話と同じ言語であってもよい。これらの応答を生成することの一部として、デジタルアシスタント106は、自然言語生成(NLG)を実行してもよい。ユーザがピザを注文するために、ユーザとデジタルアシスタント106との間の会話を介して、デジタルアシスタントは、ピザを注文するためのすべての必要な情報を提供するようにユーザを誘導してもよく、次いで、会話の終わりに、ピザを注文させてもよい。デジタルアシスタント106は、ピザが注文されたことを示す情報をユーザに出力することによって、会話を終了してもよい。
【0041】
概念レベルでは、デジタルアシスタント106は、ユーザから受信された発話に応答して、種々の処理を実行する。いくつかの実施形態では、この処理は、例えば、入力発話の意味を理解すること(自然言語理解(NLU)と呼ばれることもある)、発話に応答して実行されるべきアクションを決定すること、適切な場合にはアクションが実行されることを引き起こすこと、ユーザ発話に応答してユーザに出力されるべき応答を生成すること、応答をユーザに出力することなどを含む、一連の処理ステップまたは処理ステップのパイプラインを伴う。NLU処理は、受信した入力発話を構文解析して発話の構造および意味を理解することと、発話を精緻化および再構成して、発話について、よりよく理解可能な形式(例えば、論理形式)または構造を展開することとを含むことができる。応答を生成することは、NLG技術を使用することを含んでもよい。
【0042】
デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理は、文解析(例えば、トークン化、並べ換え、文に対する品詞タグの識別、文における固有表現の識別、文構造を表すための依存関係ツリーの生成、文の節への分割、個々の節の分析、照応形の解決、チャンク化の実行など)などの様々なNLP関連処理を含み得る。ある実施形態では、NLU処理またはその一部は、デジタルアシスタント106自体によって実行される。いくつかの他の実施形態では、デジタルアシスタント106は、他のリソースを用いて、NLU処理の一部を実行することができる。例えば、入力発話文の構文および構造は、構文解析、品詞タグ付け、および/または固有表現認識を用いて文を処理することによって識別されてもよい。一実現例では、英語の場合、文構造および構文を解析するために、Stanford Natural Language Processing (NLP) Groupによって提供されるもののような、構文解析、品詞タグ付け、および固有表現認識が用いられる。これらは、Stanford CoreNLPツールキットの一部として提供される。
【0043】
本開示で提供される様々な例は英語の発話を示すが、これは単なる例として意味される。ある実施形態では、デジタルアシスタント106は、英語以外の言語で発話を処理することもできる。デジタルアシスタント106は、異なる言語に対する処理を実行するよう構成されるサブシステム(例えば、NLU機能を実現するコンポーネント)を提供してもよい。これらのサブシステムは、NLUコアサーバからのサービスコールを用いて呼び出され得るプラグ可能ユニットとして実現されてもよい。これは、NLU処理を、異なる順序の処理を可能にすることを含めて、各言語に対して柔軟かつ拡張可能にする。言語パックは、個々の言語に対して提供されてもよく、言語パックは、NLUコアサーバからサービス提供され得るサブシステムのリストを登録することができる。
【0044】
図1に示されるデジタルアシスタント106等のデジタルアシスタントは、限定ではないが、あるアプリケーションを介して、ソーシャルメディアプラットフォームを介して、種々のメッセージングサービスおよびアプリケーションを介して、ならびに他のアプリケーションまたはチャネル等の種々の異なるチャネルを介して、そのユーザ108に利用可能またはアクセス可能にされることができる。単一のデジタルアシスタントは、それのためにいくつかのチャネルを構成することができるので、異なるサービス上で同時に実行され、異なるサービスによって同時にアクセスされることができる。
【0045】
デジタルアシスタントまたはチャットボットシステムは、一般に、1つ以上のスキルを含むか、または1つ以上のスキルに関連付けられる。ある実施形態では、これらのスキルは、ユーザと対話し、在庫の追跡、タイムカードの提出、経費報告の作成、食品の注文、銀行口座の確認、予約の作成、ウィジェットの購入などの特定の種類のタスクを満たすように構成された個々のチャットボット(スキルボットと呼ばれる)である。例えば、図1に示される実施形態では、デジタルアシスタントまたはチャットボットシステム106は、スキル116-1、116-2等を含む。本開示の目的のために、「スキル」という語は、「スキルボット」という語と同義的に用いられる。
【0046】
デジタルアシスタントに関連付けられる各スキルは、ユーザとの会話を通じて、デジタルアシスタントのユーザがタスクを完了するのを助け、会話は、ユーザによって提供されるテキストまたは聴覚的入力と、スキルボットによって提供される応答との組み合わせを含むことができる。これらの応答は、ユーザへのテキストメッセージもしくは聴覚メッセージの形態、および/またはユーザが選択を行うようユーザに提示される単純なユーザインターフェイス要素(たとえば、選択リスト)を用いる形態であってもよい。
【0047】
スキルまたはスキルボットをデジタルアシスタントに関連付けるかまたは追加することができる様々な方法がある。ある例では、スキルボットは企業によって開発され、次いでDABP102を用いてデジタルアシスタントに追加され得る。他の例では、スキルボットは、DABP102を用いて開発および作成され、次いで、DABP102を用いて作成されたデジタルアシスタントに追加され得る。さらに他の例では、DABP102は、広範囲のタスクに向けられた複数のスキルを提供するオンラインデジタルストア(「スキルストア」と呼ばれる)を提供する。スキルストアを通じて提供されるスキルも、様々なクラウドサービスを公開してもよい。DABP102を使用して生成されるデジタルアシスタントにスキルを追加するために、DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択されたスキルがDABP102を使用して作成されるデジタルアシスタントに追加されることを示すことができる。スキルストアからのスキルは、そのまま、または修正された形態で、デジタルアシスタントに追加することができる(例えば、DABP102のユーザは、スキルストアによって提供される特定のスキルボットを選択してクローニングし、選択されたスキルボットをカスタマイズまたは修正し、次いで、修正されたスキルボットを、DABP102を用いて作成されたデジタルアシスタントに追加してもよい)。
【0048】
デジタルアシスタントまたはチャットボットシステムを実現するために、様々な異なるアーキテクチャが使用されてもよい。例えば、ある実施形態では、DABP102を用いて作成および展開されるデジタルアシスタントは、マスタボット/子(もしくはサブ)ボットパラダイムまたはアーキテクチャを用いて実現されてもよい。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つ以上の子ボットと対話するマスタボットとして実現される。例えば、図1に示す実施形態では、デジタルアシスタント106は、マスタボット114と、マスタボット114の子ボットであるスキルボット116-1、116-2などとを含む。ある実施形態では、デジタルアシスタント106自体がマスタボットとして動作すると考えられる。
【0049】
マスタ・子ボットアーキテクチャに従って実現されるデジタルアシスタントは、デジタルアシスタントのユーザが、統合されたユーザインターフェイスを介して、すなわちマスタボットを介して、複数のスキルと対話することを可能にする。ユーザがデジタルアシスタントに関与すると、ユーザ入力はマスタボットによって受信される。次いで、マスタボットは、ユーザ入力発話の意味を判定するための処理を実行する。次いで、マスタボットは、発話においてユーザによって要求されたタスクがマスタボット自体によって処理され得るかどうかを判定し、そうでなければ、マスタボットは、ユーザ要求を処理するために適切なスキルボットを選択し、会話を選択されたスキルボットにルーティングする。これにより、ユーザは共通の単一のインターフェイスを介してデジタルアシスタントと会話することができ、特定のタスクを実行するよう構成されるいくつかのスキルボットを使用する能力を依然として提供することができる。例えば、企業用に開発されたデジタルアシスタントの場合、デジタルアシスタントのマスタボットは、顧客関係管理(CRM)に関連する機能を実行するためのCRMボット、企業資源計画(ERP)に関連する機能を実行するためのERPボット、人的資本管理(HCM)に関連する機能を実行するためのHCMボットなどの特定の機能を有するスキルボットとインターフェイスすることができる。このように、デジタルアシスタントのエンドユーザまたは消費者は、共通のマスタボットインターフェイスを介してデジタルアシスタントにアクセスする方法を知るだけでよく、背後には、複数のスキルボットがユーザ要求を処理するために提供される。
【0050】
ある実施形態では、マスタボット/子ボットインフラストラクチャにおいて、マスタボットは、スキルボットの利用可能なリストを認識するよう構成される。マスタボットは、様々な利用可能なスキルボット、および各スキルボットについて、各スキルボットによって実行され得るタスクを含む各スキルボットの能力を識別するメタデータへのアクセスを有してもよい。ユーザ要求を発話の形態で受信すると、マスタボットは、複数の利用可能なスキルボットから、ユーザ要求に最も良く対応できるかもしくはユーザ要求をもっとも良く処理することができる特定のスキルボットを識別または予測するよう構成される。次いで、マスタボットは、その発話(またはその発話の一部分)を、さらなる処理のために、その特定のスキルボットにルーティングする。従って、制御はマスタボットからスキルボットに流れる。マスタボットは、複数の入力および出力チャネルをサポートすることができる。
【0051】
図1の実施形態は、マスタボット114ならびにスキルボット116-1、116-2、および116-3を備えるデジタルアシスタント106を示すが、これは限定を意図するものではない。デジタルアシスタントは、デジタルアシスタントの機能を提供する様々な他のコンポーネント(例えば、他のシステムおよびサブシステム)を含むことができる。これらのシステムおよびサブシステムは、ソフトウェア(例えば、コンピュータ可読媒体上に記憶され、1つ以上のプロセッサによって実行可能なコード、命令)のみ、ハードウェアのみ、またはソフトウェアとハードウェアとの組み合わせを用いる実現例において実現されてもよい。
【0052】
DABP102は、DABP102のユーザが、デジタルアシスタントに関連付けられる1つ以上のスキルボットを含むデジタルアシスタントを作成することを可能にする、インフラストラクチャならびに種々のサービスおよび特徴を提供する。場合によっては、スキルボットは、既存のスキルボットをクローニングすることによって、例えば、スキルストアによって提供されるスキルボットをクローニングすることによって、作成することができる。前述のように、DABP102は、様々なタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットをクローニングすることができる。必要に応じて、クローニングされたスキルボットに修正またはカスタマイズを行ってもよい。いくつかの他の事例では、DABP102のユーザは、DABP102によって提供されるツールおよびサービスを使用して、スキルボットをゼロから作成した。前述のように、DABP102によって提供されるスキルストアまたはスキルカタログは、様々なタスクを実行するための複数のスキルボットを提供してもよい。
【0053】
ある実施形態では、ある高次レベルにおいて、スキルボットを作成またはカスタマイズすることは、以下のステップを含む:
(1)新たなスキルボットに対する設定を設定する
(2)スキルボットに対して1つ以上のインテントを設定する
(3)1つ以上のインテントに対して1つ以上のエンティティを設定する
(4)スキルボットをトレーニングする
(5)スキルボットのためのダイアログフローを作成する
(6)必要に応じてカスタムコンポーネントをスキルボットに追加する
(7)スキルボットをテストおよび展開する。
以下、各工程について簡単に説明する。
【0054】
(1)新たなスキルボットに対する設定を設定する-様々な設定がスキルボットのために設定されてもよい。例えば、スキルボット設計者は、作成されているスキルボットの1つ以上の呼出し名を指定することができる。これらの呼出し名は、次いで、スキルボットを明示的に呼び出すためにデジタルアシスタントのユーザによって使用されることができる。例えば、ユーザは、ユーザの発話に呼出し名を入力して、対応するスキルボットを明示的に呼び出すことができる。
【0055】
(2)スキルボットに対して1つ以上のインテントおよび関連付けられる例示的な発話を設定する-スキルボット設計者は、作成されているスキルボットに対して1つ以上のインテント(ボットインテントとも呼ばれる)を指定する。次いで、スキルボットは、これらの指定されたインテントに基づいてトレーニングされる。これらのインテントは、スキルボットが入力発話について推論するようにトレーニングされるカテゴリまたはクラスを表す。発話を受信すると、トレーニングされたスキルボットは、発話のインテントを推論し、推論されるインテントは、スキルボットをトレーニングするために使用されたインテントの事前定義されたセットから選択される。次いで、スキルボットは、発話に対して推論されたインテントに基づいて、その発話に応答する適切なアクションを取る。場合によっては、スキルボットのためのインテントは、スキルボットがデジタルアシスタントのユーザに対して実行することができるタスクを表す。各インテントには、インテント識別子またはインテント名が与えられる。例えば、銀行に対してトレーニングされたスキルボットの場合、そのスキルボットに対して指定されたインテントは、「CheckBalance(残高照会)」、「TransferMoney(送金)」、「DepositCheck(小切手を預け入れる)」などを含んでもよい。
【0056】
スキルボットに対して定義される各インテントについて、スキルボット設計者はまた、そのインテントを代表し示す1つ以上の例示的な発話も提供してもよい。これらの例示的な発話は、ユーザがそのインテントのためにスキルボットに入力してもよい発話を表すよう意味される。例えば、残高照会のインテントについては、例示的な発話は、「What's my savings account balance?(私の普通預金口座の残高は?)」、「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」、「How much money do I have in my account(私の口座にはいくらのお金がありますか?)」などを含んでもよい。したがって、典型的なユーザ発話の様々な順列が、インテントのための発話例として指定されてもよい。
【0057】
インテントおよびそれらの関連付けられる例示的発話は、スキルボットをトレーニングするためのトレーニングデータとして使用される。様々な異なるトレーニング技術が使用されてもよい。このトレーニングの結果として、機械学習モデルが生成され、それは、発話を入力として取り込み、機械学習モデルによって発話について推論されたインテントを出力するよう構成される。いくつかの事例では、入力発話は、トレーニングされたモデルを使用して入力発話に対するインテントを予測または推測するよう構成される、インテント分析エンジンに提供される。次いで、スキルボットは、推論されたインテントに基づいて1つ以上のアクションを取ってもよい。
【0058】
(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つ以上のエンティティは、スキルボットに対して設定された特定のインテントのために指定され得る。したがって、エンティティは、コンテキストをインテント自体に追加するために用いられる。エンティティは、インテントをより充分に記述するのに役立ち、スキルボットがユーザ要求を完了できるようにする。
【0059】
ある実施形態では、2つのタイプのエンティティ、すなわち、(a)DABP102によって提供される組込みエンティティ、および(2)スキルボット設計者によって指定され得るカスタムエンティティがある。組込みエンティティは、多種多様なボットとともに用いることができる汎用エンティティである。組込みエンティティの例は、限定はしないが、時間、日付、アドレス、番号、電子メールアドレス、持続時間、循環期間、通貨、電話番号、URLなどに関連するエンティティを含む。カスタムエンティティは、よりカスタマイズされた用途に用いられる。例えば、銀行業務スキルについては、AccountTypeエンティティは、スキルボット設計者によって、当座、普通およびクレジットカードなどのようなキーワードについてユーザ入力をチェックすることによって様々な銀行取引を可能にするよう定義されてもよい。
【0060】
(4)スキルボットをトレーニングする-スキルボットは、ユーザ入力を発話の形態で受信し、受信した入力を解析またはその他の方法で処理し、受信したユーザ入力に関連するインテントを識別または選択するように構成される。上述のように、スキルボットは、このためにトレーニングされなければならない。ある実施形態では、スキルボットは、そのスキルボットに対して設定されたインテント、およびそのインテントに関連付けられる例示的な発話(集合的にトレーニングデータ)に基づいてトレーニングされ、それにより、スキルボットは、ユーザ入力発話を、スキルボットの設定されたインテントの1つに解決することができる。ある実施形態では、スキルボットは、トレーニングデータを用いてトレーニングされ、ユーザが何を言っているか(または場合によっては、何を言おうとしているか)をスキルボットが識別することを可能にする機械学習モデルを使用する。DABP102は、様々な機械学習ベースのトレーニング技術、ルールベースのトレーニング技術、および/またはそれらの組み合わせを含む、スキルボットをトレーニングするためにスキルボット設計者によって用いられ得る様々な異なるトレーニング技術を提供する。ある実施形態では、トレーニングデータの一部分(例えば80%)は、スキルボットモデルをトレーニングするために用いられ、別の部分(例えば残りの20%)は、モデルをテストまたは検証するために用いられる。トレーニングされると、トレーニングされたモデル(トレーニングされたスキルボットと呼ばれることもある)は、次いで、ユーザ発話を処理し、それに応答するよう使用されることができる。ある場合には、ユーザの発話は、単一の回答だけを必要とし、さらなる会話を必要としない質問であり得る。このような状況に対処するために、スキルボットに対してQ&A(質疑応答)インテントを定義してもよい。これは、スキルボットがダイアログ定義を更新する必要なしにユーザ要求に対する返答を出力することを可能にする。Q&Aインテントは、通常のインテントと同様に生成される。Q&Aインテントについてのダイアログフローは、通常のインテントについてのダイアログフローとは異なり得る。
【0061】
(5)スキルボットのためにダイアログフローを作成する-スキルボットに対して指定されるダイアログフローは、受信されたユーザ入力に応答してスキルボットに対する異なるインテントが解決される際にスキルボットがどのように反応するかを記述する。ダイアログフローは、例えば、スキルボットがどのようにユーザ発話に応答するか、スキルボットがどのようにユーザに入力を促すか、スキルボットがどのようにデータを返すかといった、スキルボットがとる動作またはアクションを定義する。ダイアログフローは、スキルボットが辿るフローチャートのようなものである。スキルボット設計者は、マークダウン言語などの言語を用いてダイアログフローを指定する。ある実施形態では、OBotMLと呼ばれるYAMLのバージョンを用いて、スキルボットのためのダイアログフローを指定することができる。スキルボットのためのダイアログフロー定義は、スキルボット設計者に、スキルボットとスキルボットが対応するユーザとの間の対話のコレオグラフィを行わせる、会話自体のモデルとして働く。
【0062】
ある実施形態では、スキルボットのダイアログフロー定義は、3つのセクションを含む:
(a)コンテキストセクション
(b)デフォルト遷移セクション
(c)状態セクション。
【0063】
コンテキストセクション-スキルボット設計者は、コンテキストセクションにおいて、会話フローで用いられる変数を定義することができる。コンテキストセクションで指名され得る他の変数は、限定されないが、エラー処理のための変数、組込みエンティティまたはカスタムエンティティのための変数、スキルボットがユーザ選好を認識および持続することを可能にするユーザ変数などを含む。
【0064】
デフォルト遷移セクション-スキルボットのための遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクションで定義することができる。デフォルト遷移セクションで定義される遷移は、フォールバックとして作用し、状態内に定義される適用可能な遷移がない場合または状態遷移をトリガするために必要な条件を満たせない場合にトリガされる。デフォルト遷移セクションは、スキルボットが予想外のユーザアクションをそつなく処理することを可能にするルーティングを定義するために用いられ得る。
【0065】
状態セクション-ダイアログフローおよびその関連動作は、ダイアログフロー内の論理を管理する一連の一時的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログのその点において必要とされる機能を提供するコンポーネントを指名する。このようにして、コンポーネントの周囲に状態を構築する。状態は、コンポーネント固有の特性を含み、コンポーネントが実行された後にトリガされる他の状態への遷移を定義する。
【0066】
特別なケースのシナリオは、状態セクションを用いて取り扱うことができる。例えば、ユーザが取りかかっている第1のスキルを一時的に出て、デジタルアシスタント内で第2のスキルにおいて何かを行うというオプションを、ユーザに与えたい場合があるかもしれない。例えば、ユーザがショッピングスキルとの会話に関わっている(例えば、ユーザは、購入のために何らかの選択を行った)場合、ユーザは、銀行業務スキルにジャンプし(例えば、ユーザは、その購入に十分な金額を有することを確かめたい場合がある)、その後、ユーザの注文を完了するためにショッピングスキルに戻ることを望む場合がある。これに対処するために、第1のスキルにおけるアクションは、同じデジタルアシスタントにおいて第2の異なるスキルとの対話を開始し、次いで元のフローに戻るように構成されることができる。
【0067】
(6)カスタムコンポーネントをスキルボットに追加する-上述のように、スキルボットのためにダイアログフローにおいて指定される状態は、その状態に対応する必要な機能を提供するコンポーネントを指名する。コンポーネントは、スキルボットが機能を実行することを可能にする。ある実施形態では、DABP102は、広範囲の機能を実行するための事前設定されたコンポーネントのセットを提供する。スキルボット設計者は、これらの事前設定されたコンポーネントのうちの1つ以上を選択し、それらをスキルボットのためのダイアログフロー内の状態と関連付けることができる。スキルボット設計者はまた、DABP102によって提供されるツールを用いてカスタムまたは新たなコンポーネントを作成し、カスタムコンポーネントをスキルボットのためのダイアログフロー内の1つ以上の状態と関連付けることができる。
【0068】
(7)スキルボットをテストおよび展開する-DABP102は、スキルボット設計者が開発中のスキルボットをテストすることを可能にするいくつかの特徴を提供する。次いで、スキルボットは、デジタルアシスタントにおいて展開され、それに含めることができる。
【0069】
上記の説明は、スキルボットをどのように作成するかについて説明しているが、同様の技術を用いて、デジタルアシスタント(またはマスタボット)を作成することもできる。マスタボットまたはデジタルアシスタントレベルでは、デジタルアシスタントのために組込みシステムインテントを設定することができる。これらの組込みシステムインテントは、デジタルアシスタント自体(すなわち、マスタボット)が、デジタルアシスタントに関連付けられるスキルボットを呼び出すことなく取り扱うことができる一般的なタスクを識別するために用いられる。マスタボットに対して定義されるシステムインテントの例は、以下を含む:(1)退出:ユーザがデジタルアシスタントにおいて現在の会話またはコンテキストを終了したい旨を知らせる場合に当てはまる;(2)ヘルプ:ユーザがヘルプまたは方向付けを求める場合に当てはまる;(3)未解決のインテント(UnresolvedIntent):退出インテントおよびヘルプインテントとうまく一致しないユーザ入力に当てはまる。デジタルアシスタントはまた、デジタルアシスタントに関連付けられる1つ以上のスキルボットに関する情報を記憶する。この情報は、マスタボットが、発話を処理するために、特定のスキルボットを選択することを可能にする。
【0070】
マスタボットまたはデジタルアシスタントレベルでは、ユーザがデジタルアシスタントに句または発話を入力すると、デジタルアシスタントは、発話および関連する会話をどのようにルーティングするかを判断する処理を行うように構成される。デジタルアシスタントは、ルールベース、AIベース、またはそれらの組み合わせとすることができるルーティングモデルを用いて、これを判断する。デジタルアシスタントは、ルーティングモデルを用いて、ユーザ入力発話に対応する会話が、処理のために特定のスキルにルーティングされるべきか、組込みシステムインテントに従ってデジタルアシスタントまたはマスタボット自体によって処理されるべきか、または現在の会話フローにおいて異なる状態として処理されるべきかを判断する。
【0071】
ある実施形態では、この処理の一部として、デジタルアシスタントは、ユーザ入力発話が、スキルボットを、その呼出し名を用いて明示的に識別するかどうかを判断する。呼出し名がユーザ入力に存在する場合、それは、呼出し名に対応するスキルボットの明示的な呼出しとして扱われる。そのようなシナリオでは、デジタルアシスタントは、ユーザ入力を、さらなる処理のために、明示的に呼び出されたスキルボットにルーティングすることができる。特定の、または明示的な呼出しがない場合、ある実施形態では、デジタルアシスタントは、受信されたユーザ入力発話を評価し、デジタルアシスタントに関連付けられるシステムインテントおよびスキルボットについて信頼度スコアを計算する。スキルボットまたはシステムインテントについて計算されるスコアは、ユーザ入力が、スキルボットが実行するように構成されるタスクを表すかまたはシステムインテントを表す可能性を表す。関連付けられる計算された信頼度スコアが閾値(例えば、Confidence Threshold(信頼度閾値)ルーティングパラメータ)を超えるシステムインテントまたはスキルボットは、さらなる評価の候補として選択される。次いで、デジタルアシスタントは、識別された候補から、ユーザ入力発話のさらなる処理のために、特定のシステムインテントまたはスキルボットを選択する。ある実施形態では、1つ以上のスキルボットが候補として識別された後、それらの候補スキルに関連付けられるインテントが(各スキルに対するインテントモデルに従って)評価され、信頼度スコアが各インテントについて判断される。一般に、閾値(例えば70%)を超える信頼度スコアを有するインテントは、候補インテントとして扱われる。特定のスキルボットが選択された場合、ユーザ発話は、さらなる処理のために、そのスキルボットにルーティングされる。システムインテントが選択された場合、選択されたシステムインテントに従って、マスタボット自体によって、1つ以上のアクションが実行される。
【0072】
2.マスタボットシステムの構成要素
図2は、ある実施形態による、マスタボット(MB)システム200の簡略化されたブロック図である。MBシステム200は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアとの組み合わせで実現することができる。MBシステム200は、前処理サブシステム210と、複数インテントサブシステム(MIS)220と、明示的呼出サブシステム(EIS)230と、スキルボット呼出部240と、データストア250とを含む。図2に示すMBシステム200は、マスタボットにおける構成要素の構成の単なる例である。当業者は、多くの可能な変形、代替、および修正を認識するであろう。例えば、いくつかの実現例では、MBシステム200は、図2に示されるものより多いかもしくは少ないシステムもしくは構成要素を有してもよく、2つ以上のサブシステムを組み合わせてもよく、または異なる構成もしくは配置のサブシステムを有してもよい。
【0073】
前処理サブシステム210は、ユーザから発話「A」202を受信し、言語検出部212および言語パーサ214を通して発話を処理する。上述したように、発話は、音声またはテキストを含む様々な方法で提供され得る。発話202は、断章、完全な文、複数の文などであり得る。発話202は、句読点を含むことができる。例えば、発話202が音声として提供される場合、前処理サブシステム210は、結果として生じるテキストに句読点、例えば、カンマ、セミコロン、ピリオド等を挿入する、音声テキスト変換器(図示せず)を使用して、音声をテキストに変換してもよい。
【0074】
言語検出部212は、発話202のテキストに基づいて、発話202の言語を検出する。各言語は独自の文法および意味を有するので、発話202が処理される態様はその言語に依存する。言語の違いは、発話の構文および構造を解析する際に考慮される。
【0075】
言語パーサ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に入力として提供される。
【0076】
上述したように、発話202は、複数の文を含み得る。複数のインテントおよび明示的な呼出しを検出する目的で、発話202は、たとえそれが複数の文を含む場合であっても、単一の単位として扱われることができる。しかしながら、ある実施形態では、前処理は、例えば、前処理サブシステム210によって、複数インテント分析および明示的呼出し分析のために、複数の文の中で単一の文を識別するよう、実行されることができる。概して、MIS220およびEIS230によって生成される結果は、発話202が個々の文のレベルで処理されるか、または複数の文を含む単一の単位として処理されるかにかかわらず、実質的に同じである。
【0077】
MIS220は、発話202が複数のインテントを表すかどうかを判断する。MIS220は、発話202において複数のインテントの存在を検出することができるが、MIS220によって実行される処理は、発話202のインテントがボットのために構成された任意のインテントと一致するかどうかを判断することを伴わない。代わりに、発話202のインテントがボットインテントと一致するかどうかを判断するための処理は、(例えば、図3の実施形態に示すように、)MBシステム200のインテント分類器242によって、またはスキルボットのインテント分類器によって実行され得る。MIS220によって実行される処理は、発話202を処理することができるボット(例えば、特定のスキルボットまたはマスタボット自体)が存在する、と仮定する。したがって、MIS220によって実行される処理は、どのようなボットがチャットボットシステム内にあるかについての知識(例えば、マスタボットに登録されたスキルボットのアイデンティティ)または特定のボットに対してどのようなインテントが設定されているかについての知識を必要としない。
【0078】
発話202が複数のインテントを含む、と判断するために、MIS220は、データストア250内のルール252のセットから1つ以上のルールを適用する。発話202に適用されるルールは、発話202の言語に依存し、複数のインテントの存在を示す文パターンを含んでもよい。例えば、ある文パターンは、文の2つの部分(例えば等位項)を接続する接続詞を含んでもよく、両方の部分は別個のインテントに対応する。発話202が文パターンに一致する場合、発話202は複数のインテントを表す、と推測することができる。複数のインテントを有する発話は、必ずしも異なるインテント(例えば、異なるボットに向けられるインテント、または同じボット内の異なるインテント)を有するとは限らないことに留意されたい。代わりに、発話は、同じインテントの別々のインスタンス、例えば、「支払い口座Xを使用してピザを注文し、次いで支払い口座Yを使用してピザを注文する」、を有し得る。
【0079】
発話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に送られ得る。
【0080】
EIS230は、受信した発話(例えば、発話206または発話208)がスキルボットの呼出し名を含むかどうかを判断する。ある実施形態では、チャットボットシステム内の各スキルボットは、そのスキルボットをチャットボットシステム内の他のスキルボットから区別する固有の呼出し名を割り当てられる。呼出し名のリストは、データストア250内にスキルボット情報254の一部として維持することができる。発話が呼出し名に一致する単語を含むとき、発話は明示的な呼出しであると見なされる。ボットが明示的に呼び出されない場合、EIS230によって受信された発話は、非明示的に呼び出す発話234と見なされ、マスタボットのインテント分類器(例えば、インテント分類器242)に入力されて、発話を処理するためにどのボットを使用するかが判断される。いくつかの例では、インテント分類器242は、マスタボットが非明示的に呼び出す発話を処理すべきであると判断する。他の例では、インテント分類器242は、処理のために発話をルーティングするためのスキルボットを決定する。
【0081】
EIS230によって提供される明示的な呼出し機能は、いくつかの利点を有する。それは、マスタボットが実行しなければならない処理の量を低減することができる。例えば、明示的な呼出しがある場合、マスタボットは、(例えば、インテント分類器242を使用して)いかなるインテント分類分析も行わなくてもよく、またはスキルボットを選択するために、低減されたインテント分類分析を行わなければならなくてもよい。したがって、明示的な呼出し分析は、インテント分類分析に頼ることなく、特定のスキルボットの選択を可能にしてもよい。
【0082】
また、複数のスキルボット間で機能に重複がある状況もあり得る。これは、例えば、2つのスキルボットによって取り扱われるインテントが重なり合うかまたは互いに非常に近い場合に起こり得る。そのような状況では、マスタボットが、インテント分類分析のみに基づいて、複数のスキルボットのうちのどれを選択するかを識別することは、困難であり得る。このようなシナリオでは、明示的な呼出しは、使用されるべき特定のスキルボットの曖昧さを解消する。
【0083】
発話が明示的な呼出しであると判断することに加えて、EIS230は、発話の任意の部分が明示的に呼び出されるスキルボットへの入力として使用されるべきかどうかを判断することを担う。特に、EIS230は、発話の一部が呼出しに関連付けられていないかどうかを判断することができる。EIS230は、発話の分析および/または抽出された情報205の分析を通して、この判断を行うことができる。EIS230は、EIS230によって受信された発話全体を送信する代わりに、呼出しに関連付けられていない発話の部分を呼び出されたスキルボットに送信することができる。いくつかの例では、呼び出されたスキルボットへの入力は、単に、呼出しに関連付けられる発話の任意の部分を除去することによって、形成される。例えば、「Pizza Botを使用してピザを注文したい」は、「ピザを注文したい」に短縮することができ、なぜならば、「Pizza Botを使用して」は、ピザボットの呼出しに関係するが、ピザボットによって実行されるいかなる処理にも関係しないからである。いくつかの例では、EIS230は、たとえば完全な文を形成するために、呼び出されたボットに送られるべき部分を再フォーマットしてもよい。したがって、EIS230は、明示的な呼出しがあることだけでなく、明示的な呼出しがあるときに何をスキルボットに送るべきかも判断する。いくつかの例においては、呼び出されるボットに入力するテキストがない場合がある。例えば、発話が「Pizza Bot」であった場合、EIS230は、ピザボットが呼び出されているが、ピザボットによって処理されるテキストはないと判断し得る。そのようなシナリオでは、EIS230は、送信すべきものがないことをスキルボット呼出部240に示すことができる。
【0084】
スキルボット呼出部240は、様々な態様でスキルボットを呼び出す。例えば、スキルボット呼出部240は、特定のスキルボットが明示的な呼出しの結果として選択されたという指示235の受信に応答してボットを呼び出すことができる。指示235は、明示的に呼び出されたスキルボットに対する入力とともにEIS230によって送信され得る。このシナリオでは、スキルボット呼出部240は、明示的に呼び出されたスキルボットに会話の制御を引き継ぐ。明示的に呼び出されたスキルボットは、入力を独立した発話として扱うことによって、EIS230からの入力に対する適切な応答を判断する。たとえば、応答は、特定のアクションを実行すること、または特定の状態で新たな会話を開始することであり得、新たな会話の初期状態は、EIS230から送信された入力に依存する。
【0085】
スキルボット呼出部240がスキルボットを呼び出すことができる別の態様は、インテント分類器242を使用する暗黙的な呼出しによるものである。インテント分類器242は、機械学習および/またはルールベースのトレーニング技術を使用してトレーニングされて、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断することができる。インテント分類器242は、スキルボットごとに1つのクラスである、異なるクラスでトレーニングされる。例えば、新たなスキルボットがマスタボットに登録されるたびに、その新たなスキルボットに関連付けられる例示的な発話のリストを使用して、インテント分類器242をトレーニングして、ある特定の発話が、その新たなスキルボットが実行できるあるタスクを表す尤度を判断することができる。このトレーニングの結果として生成されるパラメータ(例えば、機械学習モデルのパラメータに対する値のセット)は、スキルボット情報254の一部として記憶することができる。
【0086】
ある実施形態では、インテント分類器242は、ここでさらに詳細に説明されるように、機械学習モデルを使用して実現される。機械学習モデルのトレーニングは、機械学習モデルの出力として、どのボットが任意の特定のトレーニング発話を処理するための正しいボットであるかについての推論を生成するために、様々なスキルボットに関連付けられる例示的な発話から、発話の少なくともサブセットを入力することを含んでもよい。各トレーニング発話について、そのトレーニング発話のために使用すべき正しいボットの指示が、グラウンドトゥルース情報として提供され得る。機械学習モデルの挙動は、次いで、生成された推論とグラウンドトルース情報との間の差異を最小限にするように(例えば、逆伝搬を通して)適合させることができる。
【0087】
ある実施形態では、インテント分類器242は、マスタボットに登録された各スキルボットについて、そのスキルボットがある発話(例えば、EIS230から受信した非明示的に呼び出す発話234)を処理できる尤度を示す信頼度スコアを判定する。インテント分類器242はまた、構成された各システムレベルインテント(例えば、ヘルプ、退出)について信頼度スコアを判定してもよい。ある特定の信頼度スコアが1つ以上の条件を満たす場合、スキルボット呼出部240は、その特定の信頼度スコアに関連付けられるボットを呼び出すことになる。例えば、ある閾値信頼度スコア値が満たされる必要があってもよい。したがって、インテント分類器242の出力245は、あるシステムインテントの識別またはある特定のスキルボットの識別のいずれかである。いくつかの実施形態では、閾値信頼度スコア値を満たすことに加えて、信頼度スコアは、次の高い信頼度スコアを特定の勝利マージン分だけ超えなければならない。そのような条件を課すことは、複数のスキルボットの信頼度スコアが各々閾値信頼度スコア値を超える場合に特定のスキルボットへのルーティングを可能にする。
【0088】
信頼度スコアの評価に基づいてボットを識別した後、スキルボット呼出部240は、識別されたボットに処理を引き渡す。システムインテントの場合、識別されたボットはマスタボットである。そうでない場合、識別されたボットはスキルボットである。さらに、スキルボット呼出部240は、識別されたボットに対する入力247として何を提供するかを判断することになる。上述したように、明示的な呼出しの場合、入力247は、呼出に関連付けられていない発話の一部に基づくことができ、または入力247は、無(例えば、空のストリング)であることができる。暗黙的な呼出の場合、入力247は発話全体であり得る。
【0089】
データストア250は、マスタボットシステム200の種々のサブシステムによって使用されるデータを記憶する、1つ以上のコンピューティングデバイスを備える。上記で説明したように、データストア250は、ルール252およびスキルボット情報254を含む。ルール252は、例えば、MIS220によって、発話がいつ複数のインテントを表すか、および複数のインテントを表す発話をどのように分割するか、を判断するためのルールを含む。ルール252はさらに、EIS230によって、スキルボットを明示的に呼び出す発話のどの部分をスキルボットに送信すべきかを判断するためのルールを含む。スキルボット情報254は、チャットボットシステム内のスキルボットの呼出し名、例えば、ある特定のマスタボットに登録されたすべてのスキルボットの呼出し名のリストを含む。スキルボット情報254はまた、チャットボットシステム内の各スキルボットについて信頼度スコアを判定するためにインテント分類器242によって使用される情報、例えば、機械学習モデルのパラメータを含むことができる。
【0090】
3.スキルボットシステムの構成要素
図3は、ある実施形態に係るスキルボットシステム300の簡略ブロック図である。スキルボットシステム300は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアとの組み合わせで実現され得る、コンピューティングシステムである。図1に示される実施形態等のある実施形態では、スキルボットシステム300は、デジタルアシスタント内で1つ以上のスキルボットを実現するために使用されることができる。
【0091】
スキルボットシステム300は、MIS310と、インテント分類器320と、会話マネージャ330とを含む。MIS310は、図2のMIS220に類似しており、(1)発話が複数のインテントを表すかどうか、およびそうである場合、(2)発話を複数のインテントの各インテントについてどのように別個の発話に分割するか、をデータストア350内のルール352を使用して判断するよう動作可能であることを含む、同様の機能を提供する。ある実施形態では、複数のインテントを検出し、発話を分割するために、MIS310によって適用されるルールは、MIS220によって適用されるルールと同じである。MIS310は、発話302および抽出された情報304を受信する。抽出された情報304は、図1の抽出された情報205に類似しており、言語パーサ214またはスキルボットシステム300にローカルな言語パーサを使用して生成することができる。
【0092】
インテント分類器320は、図2の実施形態に関連して上で論じられたインテント分類器242と同様の態様で、ここにおいてさらに詳細に説明されるように、トレーニングされ得る。例えば、ある実施形態では、インテント分類器320は、機械学習モデルを使用して実現される。インテント分類器320の機械学習モデルは、トレーニング発話として特定のスキルボットに関連付けられる例示的な発話の少なくともサブセットを使用して、当該特定のスキルボットについてトレーニングされる。各トレーニング発話に対するグラウンドトゥルースは、そのトレーニング発話に関連付けられる特定のボットインテントであろう。
【0093】
発話302は、ユーザから直接受信され得るか、またはマスタボットを介して供給され得る。発話302が、例えば、図2に示される実施形態におけるMIS220およびEIS230を通した処理の結果として、マスタボットを通して供給されるとき、MIS310は、MIS220によって既に行われている処理の反復を回避するようにバイパスされることができる。しかしながら、発話302が、例えば、スキルボットへのルーティング後に生じる会話中に、ユーザから直接受信される場合、MIS310は、発話302を処理して、発話302が複数のインテントを表すかどうかを判断することができる。発話302が複数のインテントを表す場合、MIS310は、1つ以上のルールを適用して、発話302を各インテントごとに別個の発話、例えば、発話「D」306および発話「E」308に分割する。発話302が複数のインテントを表さない場合、MIS310は、発話302を、分割することなく、インテント分類のために、インテント分類器320に転送する。
【0094】
インテント分類器320は、受信された発話(例えば、発話306または308)をスキルボットシステム300に関連付けられるインテントと照合するよう構成される。上記で説明したように、スキルボットは、1つ以上のインテントとともに構成されることができ、各インテントは、そのインテントに関連付けられ、分類器をトレーニングするために使用される、少なくとも1つの例示的な発話を含む。図2の実施形態では、マスタボットシステム200のインテント分類器242は、個々のスキルボットの信頼度スコアおよびシステムインテントの信頼度スコアを判定するようトレーニングされる。同様に、インテント分類器320は、スキルボットシステム300に関連付けられる各インテントの信頼度スコアを判定するようトレーニングされ得る。インテント分類器242によって実行される分類はボットレベルであるが、インテント分類器320によって実行される分類はインテントレベルであり、したがってより細かい粒度である。インテント分類器320は、インテント情報354へのアクセスを有する。インテント情報354は、スキルボットシステム300に関連付けられる各インテントごとに、そのインテントの意味を表わして示し、典型的にはそのインテントによって実行可能なタスクに関連付けられる発話のリストを含む。インテント情報354は、さらに、この発話のリストでのトレーニングの結果として生成されるパラメータを含むことができる。
【0095】
会話マネージャ330は、インテント分類器320の出力として、インテント分類器320に入力された発話に最もよくマッチするものとして、インテント分類器320によって識別された特定のインテントの指示322を受信する。いくつかの例では、インテント分類器320は、何らかのマッチを判断することができない。例えば、インテント分類器320によって計算される信頼度スコアは、発話がシステムインテントまたは異なるスキルボットのインテントに向けられる場合、閾値信頼度スコア値を下回るかもしれない。これが発生すると、スキルボットシステム300は、発話を、処理のため、例えば、異なるスキルボットにルーティングするために、マスタボットに任せてもよい。しかしながら、インテント分類器320がスキルボット内においてインテントの識別に成功した場合、会話マネージャ330はユーザとの会話を開始する。
【0096】
会話マネージャ330によって開始される会話は、インテント分類器320によって識別されたインテントに固有の会話である。たとえば、会話マネージャ330は、識別されたインテントのために、あるダイアログフローを実行するよう構成される状態機械を使用して実現されてもよい。状態機械は、(例えば、インテントがいかなる追加の入力もなしに呼び出されるときに対する)デフォルト開始状態、および1つ以上の追加の状態を含むことができ、各状態は、スキルボットによって実行されるべきアクション(たとえば、購入取引を実行する)および/またはユーザに提示されるべきダイアログ(たとえば、質問、応答)がそれに関連付けられている。したがって、会話マネージャ330は、インテントを識別する指示322を受信すると、アクション/ダイアログ335を決定することができ、会話中に受信された後続の発話に応答して、追加のアクションまたはダイアログを決定することができる。
【0097】
データストア350は、スキルボットシステム300の様々なサブシステムによって使用されるデータを記憶する1つ以上のコンピューティングデバイスを備える。図3に示すように、データストア350は、ルール352およびインテント情報354を含む。ある実施形態では、データストア350は、マスタボットまたはデジタルアシスタントのデータストア、例えば、図2のデータストア250に統合されることができる。
【0098】
4.トレーニングされたインテント分類器を使用して発話を分類するためのスキーム
図4は、テキストデータ405に基づいて分類器(たとえば、図2および図3に関して説明したインテント分類器242または320)をトレーニングし利用するよう構成されるチャットボットシステム400の局面を示すブロック図である。図4に示すように、この例におけるチャットボットシステム400によって実行されるテキスト分類は、様々な段階、即ち、機械学習モデルトレーニング段階410と、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断するためのスキルボット呼出段階415と、発話を1つ以上のインテントとして分類するためのインテント予測段階420とを含む。機械学習モデルトレーニング段階410は、他の段階によって使用される1つ以上の機械学習モデル425a~425n(「n」は任意の自然数を表す)(ここでは個々に機械学習モデル425と呼ばれてもよく、集合的に機械学習モデル425と呼ばれてもよい)を構築し、トレーニングする。例えば、機械学習モデル425は、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断するためのモデルと、第1のタイプのスキルボットについて発話からインテントを予測するための別のモデルと、第2のタイプのスキルボットについて発話からインテントを予測するための別のモデルとを含むことができる。さらに他のタイプの機械学習モデルが、本開示による他の例で実現されてもよい。
【0099】
機械学習モデル425は、畳み込みニューラルネットワーク(「CNN」)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、または回帰型ニューラルネットワーク、例えば長短期記憶(「LSTM」)モデルもしくはゲート付き回帰型ユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の他の変形物(たとえば、単一インテント分類のためのマルチレベルnバイナリDNN分類器もしくはマルチクラスDNN分類器)などの機械学習(「ML」)モデルであり得る。機械学習モデル425はまた、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組合せ、たとえば、CNN-HMMまたはMCNN(マルチスケール畳み込みニューラルネットワーク)など、自然言語処理のためにトレーニングされた任意の他の適切なMLモデルであり得る。チャットボットシステム400は、特定のスキルボットが実行するよう構成されるタスクの尤度を判断し、第1のタイプのスキルボットについて発話からインテントを予測し、第2のタイプのスキルボットについて発話からインテントを予測するために、同じタイプの機械学習モデルまたは異なるタイプの機械学習モデルを採用してもよい。さらに他のタイプの機械学習モデルが、本開示による他の例で実現されてもよい。
【0100】
様々な機械学習モデル425をトレーニングするために、トレーニング段階410は、3つの主要な構成要素、即ち、データセット準備430、特徴エンジニアリング435、およびモデルトレーニング440から構成される。データセット準備430は、データアセット445をロードし、システムが機械学習モデル425をトレーニングおよびテストすることができるように、データアセット445をトレーニングおよび検証セット445a~nに分割し、基本的な前処理を実行するプロセスを含む。データアセット445は、様々なスキルボットに関連付けられる例示的な発話からの発話の少なくともサブセットを含んでもよい。上述したように、発話は、音声またはテキストを含む様々な方法で提供され得る。発話は、断章、完全な文、複数の文などであり得る。例えば、発話が音声として提供される場合、データ準備430は、結果として生じるテキストに句読点、例えば、カンマ、セミコロン、ピリオド等を挿入する、音声テキスト変換器(図示せず)を使用して、音声をテキストに変換してもよい。いくつかの例では、例示的な発話は、クライアントまたは顧客によって提供される。他の例では、例示的な発話は、(例えば、チャットボットが学習するスキルに特定のライブラリからの発話を識別する)以前の発話のライブラリから自動的に生成される。機械学習モデル425のためのデータアセット445は、入力テキストもしくは音声(またはテキストもしくは音声フレームの入力特徴)と、値の行列またはテーブルとして入力テキストもしくは音声(または入力特徴)に対応するラベル450とを含むことができる。例えば、トレーニング発話ごとに、そのトレーニング発話に使用すべき正しいボットの指示が、ラベル450のためのグラウンドトルース情報として提供されてもよい。機械学習モデル425の挙動は、次いで、生成された推論とグラウンドトルース情報との間の差を最小にするように(例えば、逆伝搬を通して)適合させることができる。代替的に、機械学習モデル425は、トレーニング発話として特定のスキルボットに関連付けられる例示的な発話の少なくともサブセットを使用して、当該特定のスキルボットについてトレーニングされてもよい。各トレーニング発話に対するラベル450のためのグラウンドトゥルースは、そのトレーニング発話に関連付けられる特定のボットインテントであろう。
【0101】
様々な実施形態では、特徴エンジニアリング435は、データアセット445を特徴ベクトルに変換することを含み、および/または新たな特徴を作成することはデータアセット445を使用して作成されることになる。特徴ベクトルは、特徴としてのカウントベクトル、単語レベル、nグラムレベルもしくは文字レベルなどの特徴としての単語頻度・逆文書頻度(TF-IDF)ベクトル、特徴としての単語埋め込み、特徴としてのテキスト/NLP、特徴としてのトピックモデル、またはそれらの組合せを含んでもよい。カウントベクトルは、各行が発話を表し、各列が発話からの単語を表し、各セルが発話内の特定の単語の頻度カウントを表す、データアセット445の行列表記である。TF-IDFスコアは、発話における単語の相対的重要度を表す。単語埋め込みは、密なベクトル表現を用いて単語および発話を表す形式である。ベクトル空間内の単語の位置は、テキストから学習され、その単語が使用されるときにその単語を取り囲む単語に基づく。テキスト/NLPベースの特徴は、発話内の単語数、発話内の文字数、平均単語密度、句読点数、大文字数、見出し語数、品詞タグ(たとえば、名詞および動詞)の頻度分布、またはそれらの任意の組合せを含んでもよい。トピックモデリングは、発話の集まりから、当該集まりにおいて最良の情報を含む単語のグループ(トピックと呼ばれる)を識別する技術である。
【0102】
様々な実施形態では、モデルトレーニング440は、特徴エンジニアリング435において作成された特徴ベクトルおよび/または新たな特徴を使用して分類器をトレーニングすることを含む。いくつかの例では、トレーニングプロセスは、機械学習モデル425についてコスト関数を最小化または最大化(たとえば、損失関数または誤差関数を最小化)する、機械学習モデル425のためのパラメータのセットを見つけるための反復動作を含む。各反復は、機械学習モデル425のためのパラメータのセットを使用するコスト関数の値が、前の反復において別のパラメータのセットを使用するコスト関数の値よりも小さく、または大きくなるように、機械学習モデル425のためのパラメータのセットを見つけることを伴い得る。コスト関数は、機械学習モデル425を使用して予測される出力とデータアセット445に含まれるラベル450との間の差を測定するように構築することができる。パラメータのセットが識別されると、機械学習モデル425はトレーニングされ、設計通りに予測に利用することができる。
【0103】
様々な実施形態では、トレーニング段階410は、ロジット判断455をさらに含む。ロジット判断455は、発話が解決可能なクラスに関連付けられている確率に対してロジット関数を適用するように構成される。発話が解決できないクラスに関連付けられる確率を求めるために、ロジット判断455は、ロジット関数の代わりに強化されたロジット値を使用することができる。強化されたロジット値は、発話が未解決のインテントを有することに対応するという分類を含む、発話の分類を判断するために、(例えば、活性化関数によって)処理することができる。ロジット判断455による強化されたロジット値の使用は、特に発話がスコープ外であるかまたはドメイン外であるかを予測するよう、モデルおよびチャットボットの性能を増大させることができる。ロジット判断455は、トレーニング段階のサブプロセスとして図4に示されているが、いくつかの実施形態では、ロジット判断455は、解決できないクラスに対応する強化されたロジット値が、インテント分類器のトレーニング中に動的に調整され得る学習値であるときのように、モデルトレーニング440の一部を形成してもよい。追加的および/または代替的に、強化されたロジット値は、インテント分類器のハイパーパラメータ最適化によってチューニングすることができる。ロジット判断455の実現の詳細は、本明細書において以下でさらに説明される。
【0104】
データアセット445、ラベル450、特徴ベクトルおよび/または新たな特徴に加えて、他の技術および情報も、機械学習モデル425のトレーニングプロセスを改良するために採用されることができる。たとえば、特徴ベクトルおよび/または新たな特徴は、分類器またはモデルの精度を改善するのに役立つよう、互いに組み合わされてもよい。加えて、または代替として、ハイパーパラメータが、調整または最適化されてもよく、例えば、ツリー長、リーフ、ネットワークパラメータ等のいくつかのパラメータが、最良適合モデルを得るように微調整されることができる。しかしながら、ここに記載のトレーニング機構は、主に機械学習モデル425のトレーニングに焦点を当てる。これらのトレーニング機構は、他のデータアセットからトレーニングされた既存の機械学習モデル425を微調整するためにも利用され得る。例えば、場合によっては、機械学習モデル425は、別のスキルボットに特有の発話を使用して事前にトレーニングされているかもしれない。そのような場合、機械学習モデル425は、ここで論じられるように、データアセット445を使用して再トレーニングされることができる。
【0105】
機械学習モデルトレーニング段階410は、タスク機械学習モデル460およびインテント機械学習モデル465を含むトレーニングされた機械学習モデル425を出力する。タスク機械学習モデル460は、スキルボット呼出段階415において、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断するために使用されてもよく(470)、インテント機械学習モデル465は、インテント予測段階420において、発話を1つ以上のインテントとして分類するために、使用されてもよい(475)。いくつかの例では、スキルボット呼出段階415およびインテント予測段階420は、いくつかの例では、別個のモデルを用いて、独立して進行してもよい。例えば、トレーニングされたインテント機械学習モデル465は、最初にスキルボット呼出段階415においてスキルボットを識別することなく、インテント予測段階420においてスキルボットについてインテントを予測するために使用されてもよい。同様に、タスク機械学習モデル460は、インテント予測段階420において発話のインテントを識別することなく、スキルボット呼出段階415において、発話に対して使用されるべきタスクまたはスキルボットを予測するために、使用されてもよい。
【0106】
代替として、スキルボット呼出段階415およびインテント予測段階420は、一方の段階が他方の段階の出力を入力として用いるか、または一方の段階が他方の段階の出力に基づいて特定のスキルボットについて特定の態様で呼び出される状態で、連続的に行われてもよい。例えば、所与のテキストデータ405について、スキルボット呼出部は、スキルボット呼出段階415およびタスク機械学習モデル460を使用して暗黙の呼出しを通じてスキルボットを呼び出すことができる。タスク機械学習モデル460は、機械学習および/またはルールベースのトレーニング技術を使用してトレーニングされて、ある発話が、ある特定のスキルボット470が実行するよう構成されるあるタスクを表す尤度を判断することができる。次いで、識別または呼び出されたスキルボットおよび所与のテキストデータ405について、インテント予測段階420およびインテント機械学習モデル465を使用して、受信された発話(例えば、所与のデータアセット445内の発話)を、スキルボットに関連付けられるインテント475にマッチさせることができる。ここで説明するように、スキルボットは、1つ以上のインテントを用いて構成することができ、各インテントは、そのインテントに関連付けられ、分類器をトレーニングするために使用される、少なくとも1つの例示的な発話を含む。いくつかの実施形態では、マスタボットシステムで使用されるスキルボット呼出段階415およびタスク機械学習モデル460は、個々のスキルボットについての信頼度スコアおよびシステムインテントについての信頼度スコアを判定するようトレーニングされる。同様に、インテント予測段階420およびインテント機械学習モデル465は、スキルボットシステムに関連付けられる各インテントについて信頼度スコアを判定するようトレーニングされ得る。スキルボット呼出段階415およびタスク機械学習モデル460によって実行される分類はボットレベルであるが、インテント予測段階420およびインテント機械学習モデル465によって実行される分類はインテントレベルであり、したがってより細かい粒度である。
【0107】
C.ロジット関数
図5は、いくつかの実施形態による、例示的なニューラルネットワーク500の概略図を示す。ニューラルネットワーク500は、トレーニングシステムによってトレーニングされ、チャットボットシステムによって実現される機械学習モデルとすることができ、機械学習モデルは、発話が特定のインテントクラスに対応するかどうかを予測するようにトレーニングされる。いくつかの例では、ニューラルネットワーク500は、入力層502と、隠れ層504と、出力層506とを含む。いくつかの例では、ニューラルネットワーク500は、隠れ層504がニューラルネットワークの最終隠れ層に対応する、複数の隠れ層を含む。
【0108】
入力層502は、入力データまたは入力データの表現(例えば、発話を表す値のn次元配列)を受信し、1つ以上の学習されたパラメータを入力データに適用して、出力のセット(たとえば、数値のセット)を生成することができる。出力のセットは、隠れ層504によって処理することができる。
【0109】
隠れ層504は、出力のセットを、異なるクラスからの入力データポイントがより良好に分離される異なる特徴空間に変換する、1つ以上の学習されたパラメータを含むことができる。
【0110】
出力層506は、隠れ層からの出力をロジット値にマッピングする分類層を含むことができ、各値は1つの特定のクラス(例えば、解決可能なクラス、解決不可能なクラス)に対応する。いくつかの例では、出力層506は、ロジット値を合計で1である確率値のセットに制約するための活性化関数を含む。したがって、各クラスについて分類層(ロジット関数)によって生成されたロジット値は、次いで、発話について分類を予測するために出力層(本明細書では「活性化層」とも呼ばれる)の活性化関数によって処理され得る。
【0111】
出力値のセットから単一のインテントを予測することの一部として、機械学習モデルは、ニューラルネットワーク500のネットワーク層においてロジット関数(「ロジスティック回帰関数」の略)を採用してもよい。出力層506は、中間出力(例えば、発話が特定のクラスに対応するかどうかを予測する確率値)をロジット値に変換するためのロジット関数を含み得る。場合によっては、ロジット関数は、特定のクラスについて、0と1との間の確率値に対応する入力を受け取り、負の無限大と正の無限大との間の非有界範囲内でロジット値を出力する、オッズの対数である。ロジット関数は、中間出力のセットの各中間出力を正規化するために使用され得、その結果、結果として生じるロジット値のセットは、予測される出力クラスにわたって対称的な単峰性の確率分布に表現され得る。数学的に言えば、ロジット関数は、
【0112】
【数1】
【0113】
と定義され、ここで、pは、特定のクラスに対応する入力の確率である。確率pは、(0,1)の間の範囲内で設定することができる。出力ロジットは、(-∞,+∞)の間の範囲のロジット値に対応することができる。このようにして、機械学習モデルは、次いで起こる活性化関数が分類器の他のあまり可能性のない出力から最も可能性のある出力(たとえば、インテント)を予測することができるように、ロジット関数を採用し得る。
【0114】
機械学習モデル(例えば、図3のインテント分類器320)のトレーニングの一部として、モデルは、各クラスについて重心を学習してもよく、重心はロジット関数の一部である。特に、重心を、ロジット関数を重み付けるために使用して、ロジット関数を、例えば、発話から可能性のあるインテントを分離するために分類器出力をフィルタリングすることの一部として使用されるようにすることができる。数学的用語では、ロジット関数を関係付ける方程式は、logiti = f(x)*Wiであってもよく、式中、xはモデルへの入力であり、f(x)は変換のセット(例えば、ハイウェイネットワーク関数)であり、Wiは、インテント「i」に対するモデル出力の重み付け係数として働く、当該インテントに対する重心である。したがって、インテント分類器が認識するようにトレーニングされた、識別されたインテントのセットについて、重心は、たとえば、重心を、隣接するクラスタ間の距離を測定するための位置として使用することによって、発話を、他のインテントよりも、ある特定のインテントに属するものとして分類する役割を果たす。
【0115】
次いで、予測される出力クラスの各々について生成されたロジット値は、ロジット値によって表されるオッズをすべての予測される出力クラスにわたる確率分布にマッピングするために、活性化関数によって処理され得る。活性化関数の一例として、softmax関数を使用して、ネットワークの出力(例えば、order_pizzaクラスに対応するロジット値)をすべての予測される出力クラス(たとえば、order_pizza、未解決のインテント)にわたる確率分布に正規化してもよい。
【0116】
softmaxを適用する前、ロジット値は負であるかもしれず、または1より大きいかもしれず、そして、合計が1ではないかもしれない。softmaxを適用すると、各出力は区間(0,1)にあることになり、出力は合計で1になることになる。さらに、より大きい入力ロジット値は、より大きい確率に対応することになる。関数用語では、softmax関数は、以下によって表され、
【0117】
【数2】
【0118】
i= 1:Kであり、zはK個の実数の集合(z1 : zK)である。いくつかの場合では、softmax関数は、最大入力値の位置の周りにより集中した確率分布を生成するベースファクタbによって重み付けされ得る。そのような場合、softmax関数は
【0119】
【数3】
【0120】
であり、式中、βは実数である。インテント分類の文脈では、ziはf(x)*wiに設定されてもよい。
【0121】
発話のセットについて、解決されたインテントは、インテント分類器がトレーニングされ得る識別されたインテントのいずれかに適合し得る。未解決のインテントは、定義により、分類器がインテントのカテゴリのいずれにも確信を持って入れることができない発話を記述してもよい。例示的な例として、ピザ注文を扱うようにトレーニングされたスキルボットは、発話を3つのインテント: 「order_pizza(ピザを注文)」、 「cancel_pizza(ピザをキャンセル)」および 「unresolvedIntent(未解決のインテント)」のうちの1つに分類するようにトレーニングされてもよい。新たなピザを注文すること、または既存の注文を修正することに対して意図される発話は、例えば、「order_pizza」に分類されてもよい。対照的に、既存の注文をキャンセルすることに対して意図される発話は、「cancel_pizza」に分類されてもよい。最後に、他の何かを意図する発話は、「unresolvedIntent」の下に分類されてもよい。例えば、「明日天気はどのようか」は、ピザ注文とは無関係であり、「unresolvedIntent」に分類されるべきである。したがって、この例では、「unresolvedIntent」は、「order_pizza」および「cancel_pizza」に対して否定的な意味で定義される。後者に適合しない発話は前者に適合する。
【0122】
したがって、未解決のインテントは、識別されたインテントのセットに適合しない発話をカバーするように定義され得る。このようにして、解決できないクラスについては、分類器出力は、クラスタ化されるのではなく分散されてもよい。本明細書で説明される例はインテント予測に焦点を当てているが、他の分類タスクも同様に扱われ得ることを理解されたい。例えば、チャットボットシステムは、スキルボット呼出しなどの他のレベルでの「未解決の」発話に対処するよう分類器を含んでもよい。
【0123】
D.強化されたロジットを使用して、発話を未解決のインテントを有するものとして分類するための技術
重心の概念をロジット関数における重み付け係数として適用することは、いくつかの例において有効であり得る。しかし、「未解決のインテント」クラスの場合、重心を使用する有効性は大きく低下する。「order_pizza」などの定義されたインテントについて、発話は、重心の周りでクラスタ化し得る。「unresolved_intent(未解決のインテント)」が分類のセット外のすべての発話に対して負の分類として定義される場合、そのような発話は、クラスタ化の相対的な欠如を示し得る。したがって、重心を学習することは、不正確な重み付け係数を通してロジスティック回帰に誤差を導入し得る。
【0124】
例として、上述のピザスキルボットの場合、注文するインテントまたはキャンセルするインテントを有する発話は、それぞれの重心の周りでクラスタ化し得るが、天候から金融、特定の人々を尋ねるまでの範囲にわたる発話は、「unresolved_intent」に入り得る。同様に、問合せを特定のスキルボットに向けるために、分類器は、発話が特定のスキルボットを呼び出すか、またはシステムが分類するようにトレーニングされたスキルボットのいずれをも発話が呼び出さない確率を出力してもよい。これらの場合の各々において、解決できないクラスについての重心は、大部分は、部分的に、学習されたインテント、スキル、ドメインまたはスコープにマッピングしない任意の発話を含むとしての「未解決の」分類の定義から生じる母集団特性を代表しない場合がある。
【0125】
この問題および他の問題を克服するために、様々な実施形態は、発話の未解決のインテントとしての分類を改善するために、未解決のインテントのために強化されたロジット値を使用するための技術を対象とする。例えば、機械学習モデル(例えば、図3のインテント分類器320)は、未解決のインテントクラスに対して、強化されたロジット値を実現することができる。例えば、重心を重み付け係数としてロジット値を計算する代わりに、トレーニング可能なスケーラパラメータを含むよう修正されたロジット関数を使用することによって、解決できないクラスに対する強化されたロジット値が求められてもよい。追加的または代替的に、解決できないクラスに対する強化されたロジット値は、機械学習モデルのハイパーパラメータチューニングを介して最適化することができる。いくつかの例では、トレーニングデータが解決可能なクラスを示すのに不充分である場合、出力は、インテント分類器によって、解決できないクラスとして分類される。実際には、インテント分類器は、発話が解決できないクラスを呼び出すかどうかを判定するのではなく、発話が解決可能なクラスを呼び出すかまたは呼び出さないかどうかを判定し得る。
【0126】
強化されたロジット値は、発話の分類(例えば、インテント、スコープ、スキルなど)が着手され得るときはいつでも、図1図2、および図3に関して説明されるように、チャットボットシステムに統合され得る自動プロセスを使用して求めることができる。有利なことに、モデルおよびチャットボットは、強化されたロジット値を使用して、スコープ外発話を分類する際に、より良好に機能し、なぜならば、少なくとも部分的には、強化されたロジット値は、モデル出力において真のクラスタ化を反映しないことがある解決できないクラスの重心に依拠しないからである。さらに、拡張が自動的に適用されるので、顧客またはクライアントは、チャットボットシステムからの誤って指示された問合せを経験することが、より少ない。
【0127】
以下でさらに説明するように、発話を解決できないクラスに分類するための強化されたロジット値は、(i)トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)解決できないクラスについての確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、第1のオッズの対数は、有界化関数によってある範囲の値に制約され、解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)解決できないクラスについての確率に対応する第2のオッズの対数によって生成され、第2のオッズの対数は、スケーリング係数によってスケーリングされ、有界化関数によって有界化され、解決できないクラスに関連付けられる分布の重心によって重み付けされる、重み付けされた値、(iv)機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)機械学習モデルのトレーニング中に動的に調整される学習値、のうちの1つに基づき得る。追加または代替として、ルールベースのアプローチが、強化されたロジット値を求めることの一部として実現され得る。ルールベースのアプローチは、解決できないクラスについて、強化されたロジット値のセットから、ある強化されたロジット値を識別する論理演算子を含んでもよい。例えば、強化されたロジット値は、ルールのセットを発話に適用することによって生成されるクエリ値に基づいて、データベースまたはルックアップテーブルから取り出すことができる。
【0128】
1.統計値
いくつかの実施形態では、強化されたロジット値は、発話がスコープ外クラスまたはドメイン外クラスに対応するかどうかを判断するときにロジット関数に取って代わる統計値である。ロジット値は、ある範囲の値から選択される値を含むことができる。関数式logiti=f(x)*Wiを参照すると、logitiは、解決できないクラスについて、関数f(x)*Wiを、所定の数「A」(すなわち、logiti = A)で置き換えることによって、設定することができる。そのような構成は、固定値
【0129】
【数4】
【0130】
に依存する確率関数を提供する。いくつかの例では、統計値は、0.3、0.5、0.7、0.9、1.0、または任意のより高い数として設定される。統計値は、対応する確率値が、発話が未解決(例えば、未解決のスキルまたは未解決のインテント)として分類されることを示すように、決定される。
【0131】
いくつかの実施形態では、統計値は、発話のトレーニングセットにおけるドメイン外またはスコープ外の発話が解決できないクラスにマッピングする確率に基づく。適切な統計値を求めることは、図4のトレーニング段階410の一部であり得、その数は、トレーニング段階410において適用されるトレーニングデータセット(例えば、データアセット445)に部分的に依存し得る。
【0132】
図6は、いくつかの実施形態による、発話が解決できないクラスに対応するかどうかを予測するために強化されたロジット値を表す統計値を求めるための例示的なプロセス600を示すフローチャートを示す。図6に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図6に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図6は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。いくつかの実施形態では、それらのステップはなんらかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。図1図4に示す実施形態などのいくつかの実施形態では、図6に示す処理をトレーニングサブシステムによって実行して、解決できないクラスに対応する確率値を1つ以上の機械学習モデル(例えば、インテント分類器242または320)の強化されたロジット値にマッピングしてもよい。トレーニングサブシステムは、データ処理システム(例えば、図4に関して説明したチャットボットシステム400)の一部、または機械学習モデルをトレーニングおよび展開するよう構成される別のシステムの構成要素であることができる。
【0133】
605において、トレーニングサブシステムはトレーニングデータセットを受信する。トレーニングデータセットは、発話またはメッセージのセットを含むことができる。セットの各発話は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話の予測されるインテントクラスを識別する。トレーニングデータセットはまた、対応するスキルまたはチャットボットが実行するよう構成される特定のタスクからスコープ外である発話またはメッセージを含んでもよい。例えば、スキルボットがピザレストランのために食品注文を処理するように構成される場合、スコープ外発話は、天候について問い合わせるメッセージであり得る。いくつかの例では、トレーニングデータセットのスコープ外発話またはメッセージの各々は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話またはメッセージを解決できないクラスとして識別する。
【0134】
610において、トレーニングサブシステムは、トレーニングデータセットを使用して機械学習モデルをトレーニングして、発話もしくはメッセージが、スキルボットが実行するよう構成されるタスクを表すかどうかを予測するよう、または発話もしくはメッセージを、スキルボットに関連付けられるインテントにマッチさせるようにする。機械学習モデルの1つ以上のパラメータは、機械学習モデルによって生成された予測される出力と対応する発話のトレーニングラベルによって示される期待される出力との間の損失を最小限に抑えるように学習され得る。機械学習モデルのトレーニングは、損失が最小誤差閾値に達するまで実行することができる。
【0135】
615において、トレーニングサブシステムは、トレーニング用ロジット値のセットを識別する。セットの各トレーニング用ロジット値は、トレーニングデータセットのスコープ外発話に対応する。各トレーニング用ロジット値は、それぞれのスコープ外発話を機械学習モデルに入力することに基づいて生成され得る。トレーニング用ロジット値を取得するために、1つ以上のヘルパー関数(たとえば、get_layer関数)を利用して、機械学習モデルの1つ以上の層から生成された出力を取り込むことができる。
【0136】
620において、トレーニングサブシステムは、トレーニング用ロジット値のセットを表す統計値を求める。例えば、統計値は、トレーニング用ロジット値のセットの中央値であり得る。中央値は、トレーニング用ロジット値のセットの統計的分布が歪んだ分布に対応するという判断に応答して使用され得る。いくつかの例では、トレーニング用ロジット値のセットについて平均値および中央値が求められる。平均値と中央値との間の差が統計的に有意である場合、中央値は、トレーニング用ロジット値のセットを表す統計値として選択される。
【0137】
625において、トレーニングサブシステムは、発話が解決できないクラスに対応するかどうかを予測するための強化されたロジット値として統計値を設定する。強化されたロジット値は、発話が解決できないクラスに対応することを予測するために使用されたであろう機械学習モデルの既存のロジット関数に取って代わることができる。いくつかの例では、既存のロジット関数は、解決可能なクラス(たとえば、order_pizza、cancel_pizza)のうちの1つに対応する発話の予測のために使用され続ける。
【0138】
630において、トレーニングサブシステムは、トレーニングされた機械学習モデルをチャットボットシステムに(例えば、スキルボットの一部として)展開し、トレーニングされた機械学習モデルは、発話が解決できないクラスに対応するかどうかを予測するための強化されたロジット値として設定された統計値を含む。その後、プロセス600は終了する。
【0139】
統計値を使用し、解決できないクラスから重心の影響を除去することによって、機械学習モデル性能は、発話が解決可能なクラスを呼び出すかまたは解決できないクラスを呼び出すかを正確に予測することに関して、有意に改善され得る。例示的な実施例では、上述のピザスキルは、以下の3つのインテント:"order_pizza","cancel_pizza","unresolvedIntent"を含む。「明日の天気はどのようであるか」という発話は、3つのインテントについて、重心重み付け係数wiに基づいて計算されたロジット値(例えば、logiti= F(x)*wi)を、(0.3,0.01,0.01)として有する。この場合、ロジットベクトルの3つの値は、重心加重関係を使用して求められ、softmax関数を使用して確率(0.4,0.3,0.3)に変換される。この例では、「order_pizza」は、40%の信頼度スコアを有する最も確からしい結果である。しかしながら、気象に関する問い合わせは、ピザを注文するインテントを表さないことは明らかであるべきである。この例における分類は、部分的に、0.01に等しい、解決できないクラスの比較的低いロジット値に起因して、不適切である(正しい分類は、ドメイン外unresolvedIntentであろう)。
【0140】
この例から続けると、強化されたロジット値は、0.4に等しい統計値であり得る。統計値は、解決可能なクラスについての重心加重ロジット値を維持しながら適用することができる。したがって、ロジット値は、(0.3,0.01,0.4)として再定義することができる。softmax関数を再び適用すると、ロジット値は(0.35,0.26,0.39)として確率に変換される。この場合、softmax関数の結果は、39%信頼度スコアを有する「unresolvedIntent」という正確な分類を反映する。
【0141】
2.有界値
解決できないクラスに対する強化されたロジット値を求めることは、標準的なロジット関数が非有界であることによって複雑になり得る。上述のように、ロジット関数は、負の無限大と正の無限大との間の範囲のロジット値を出力する。したがって、非有界範囲は、強化されたロジット値を求めることに複雑さをもたらし得る。例えば、負の無限大および正の無限大に及ぶ範囲のロジット値は、ロジット値が非常に広い範囲の値にわたって分散される結果となる場合があり、これは、強化されたロジット値を最適化することにおける困難をもたらし得る。
【0142】
したがって、強化されたロジット値は、修正されたロジット関数によって指定される範囲内の有界値であり得る。修正されたロジット関数は、ロジット値を、下限および上限を含む範囲に制約するように修正され得る。いくつかの例では、修正されたロジット関数は、有界関数(bounded function)を含む。有界関数は、正弦関数または余弦関数など、負の1と1との間の範囲内で出力を生成する三角関数を含むことができる。例えば、ロジット関数は、logiti = cosine(f(x)*Wi)として定義することができ、最小値は-1であり、最大値は1である。次いで、強化されたロジット値は、解決できないクラスについて-1と1との間の有界範囲から選択されることができる。例から続けると、order_pizzaクラスおよびcancel_pizzaクラスに対するロジット関数は、logiti = cosine(f(x)*Wi)を使用することができ、0.4という有界値が、unresolvedIntentクラスのために選択され得る。
【0143】
図7は、いくつかの実施形態による、発話が解決できないクラスに対応するかどうかを予測するために指定された範囲内で強化されたロジット値を求めるようロジット関数を修正するための例示的なプロセス700を示すフローチャートを示す。図7に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図7に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図7は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。いくつかの実施形態では、ステップは、トレーニングサブシステムによって実行されて、解決できないクラスに対応する確率値を、1つ以上の機械学習モデル(例えば、インテント分類器242または320)の強化されたロジット値にマッピングする。トレーニングサブシステムは、データ処理システム(例えば、図4に関して説明したチャットボットシステム400)の一部、または機械学習モデルをトレーニングおよび展開するよう構成される別のシステムの構成要素であることができる。
【0144】
705において、トレーニングサブシステムは、機械学習モデルを初期化する。機械学習モデルは、畳み込みニューラルネットワーク(「CNN」)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、または再帰型ニューラルネットワーク、例えば長短期記憶(「LSTM」)モデルもしくはゲート付き再帰型ユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の他の変形物(たとえば、単一インテント分類のためのマルチレベルnバイナリDNN分類器もしくはマルチクラスDNN分類器であり得る。機械学習モデル425はまた、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組合せ、たとえば、CNN-HMMまたはMCNN(マルチスケール畳み込みニューラルネットワーク)など、自然言語処理のためにトレーニングされた任意の他の適切なMLモデルであり得る。
【0145】
機械学習モデルの初期化は、層の数、各層のタイプ(例えば、全結合型、畳み込みニューラルネットワーク)、および各層の活性化関数のタイプ(たとえば、シグモイド、ReLU、softmax)を定義することを含むことができる。
【0146】
710において、トレーニングサブシステムは、機械学習モデルの最終層からロジット関数を取り出す。例えば、トレーニングシステムは、全結合型ニューラルネットワーク内の層のセットから最終層を選択することができる。最終層のロジット関数は、次いで、修正のためにアクセスされ得る。
【0147】
715において、トレーニングサブシステムは、有界関数を追加することによってロジット関数を修正する。有界関数は、正弦関数または余弦関数など、負の1と1の範囲内で出力を生成する三角関数を含むことができる。いくつかの例では、有界関数は、以下の式:
【0148】
【数5】
【0149】
のうちの1つから選択され、式中、f(x)はロジット関数である。追加または代替として、ロジット関数は、重心Wiを含むことができ、iはそれぞれの予測されるクラスに対応する。
【0150】
720において、トレーニングサブシステムは、修正されたロジット関数によって指定される範囲に基づいて強化されたロジット値を生成するよう機械学習モデルをトレーニングする。したがって、トレーニングサブシステムは、発話が未解決のクラス(例えば、未解決のスキルまたは未解決のインテント)に対応するかどうかを予測する統計値をトレーニングデータセットから識別することによって、強化されたロジット値を生成するよう機械学習モデルをトレーニングすることができる。
【0151】
725において、トレーニングサブシステムは、トレーニングされた機械学習モデルをチャットボットシステムに(例えば、スキルボットの一部として)展開し、トレーニングされた機械学習モデルは、修正されたロジット関数を含む。その後、プロセス700は終了する。
【0152】
3.重み付けされた値
スコープ外発話を予測するための強化されたロジット値は、スケーリング係数によって重み付けされる、修正されたロジット関数によって生成される重み付けされた値であり得る。いくつかの例では、クラス「i」について関数で表されるスケーリング係数(本明細書では「スケーラ」とも呼ばれる)は、logiti = scaler * cosine(f(x)*Wi)である。解決できないクラス(たとえば、unresolvedIntent)のために使用されるスケーリング係数の値(たとえば2)は、解決可能なクラス(たとえば、order_pizza、cancel_pizza)のために使用されるスケーリング係数の値(たとえば1)とは異なることができる。スケーリング係数をロジット関数に含めることは、予測されるインテントの確率と他のインテントの確率との間のギャップを拡大することができ、したがって、解決できないクラスの予測されるインテントが、解決可能なクラスの他のインテントからよりよく区別されることを可能にする。
【0153】
図8は、いくつかの実施形態による、発話が解決できないクラスに対応するかどうかを予測するために強化されたロジット値を求めるようスケーリング係数をロジット関数に追加するための例示的なプロセスを示すフローチャート800を示す。図8に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図8に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図8は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。いくつかの実施形態では、ステップは、トレーニングサブシステムによって実行されて、解決できないクラスに対応する確率値を、1つ以上の機械学習モデル(例えば、インテント分類器242または320)の強化されたロジット値にマッピングする。トレーニングサブシステムは、データ処理システム(例えば、図4に関して説明したチャットボットシステム400)の一部、または機械学習モデルをトレーニングおよび展開するよう構成される別のシステムの構成要素であることができる。
【0154】
805において、トレーニングサブシステムは、機械学習モデルを初期化する。機械学習モデルは、畳み込みニューラルネットワーク(「CNN」)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、または再帰型ニューラルネットワーク、例えば長短期記憶(「LSTM」)モデルもしくはゲート付き再帰型ユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の他の変形物(たとえば、単一インテント分類のためのマルチレベルnバイナリDNN分類器もしくはマルチクラスDNN分類器であり得る。機械学習モデル425はまた、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組合せ、たとえば、CNN-HMMまたはMCNN(マルチスケール畳み込みニューラルネットワーク)など、自然言語処理のためにトレーニングされた任意の他の適切なMLモデルであり得る。
【0155】
機械学習モデルの初期化は、層の数、各層のタイプ(例えば、全結合型、畳み込みニューラルネットワーク)、および各層の活性化関数のタイプ(たとえば、シグモイド、ReLU、softmax)を定義することを含むことができる。
【0156】
810において、トレーニングサブシステムは、機械学習モデルの最終層からロジット関数を取り出す。例えば、トレーニングシステムは、全結合型ニューラルネットワーク内の層のセットから最終層を選択することができる。最終層のロジット関数は、次いで、修正のためにアクセスされ得る。
【0157】
815において、トレーニングサブシステムは、スケーリング係数を追加することによってロジット関数を修正する。いくつかの例では、スケーリング係数の、異なる初期値が、対応する発話の予測されるクラスに基づいて割り当てられる。たとえば、解決できないクラス(たとえば、unresolvedIntent)のために使用されるスケーリング係数の値(たとえば2)は、解決可能なクラス(たとえば、order_pizza、cancel_pizza)のために使用されるスケーリング係数の値(たとえば1)とは異なることができる。発話が解決できないクラスに対応するかどうかを示す確率を生成するロジット関数の第1のスケーリング係数には、発話が解決可能なクラスのうちの1つに対応するかどうかを示す確率を生成する別のロジット関数の第2のスケーリング係数よりも大きい値が割り当てられる。追加または代替として、ロジット関数は、スケーリング係数が追加されるロジット関数に有界関数(たとえば、余弦関数)を追加することによって、さらに修正され得る。
【0158】
820において、トレーニングサブシステムは、解決できないクラスに割り当てられたスケーリング係数に基づいて強化されたロジット値を生成するよう機械学習モデルをトレーニングする。いくつかの例では、解決できないクラスのスケーリング係数は、機械学習モデルの学習されたパラメータである。したがって、トレーニングサブシステムは、機械学習モデルをトレーニングして、解決できないクラスに対応するスケーリング係数を調整することができる。加えて、または代替として、スケーリング係数は、機械学習モデルのトレーニングおよび展開を通じて静的なままであり得る、ハードコード化された数であり得る。
【0159】
825において、トレーニングサブシステムは、トレーニングされた機械学習モデルをチャットボットシステムに(例えば、スキルボットの一部として)展開し、ここで、トレーニングされた機械学習モデルは、修正されたロジット関数を含む。その後、プロセス800は終了する。
【0160】
4.ハイパーパラメータチューニング
発話が解決できないクラスに対応するかどうかを予測するための強化されたロジット値は、機械学習モデルのハイパーパラメータチューニングに基づいて決定されるハイパーパラメータ最適化値であり得る。いくつかの実施形態では、ハイパーパラメータチューニングは、ロジット判断455の一部として、強化されたロジット値のメタトレーニングを可能にする。機械学習モデルのチューニング可能なハイパーパラメータは、学習率、エポックの数、運動量、正則化定数、機械学習モデルの層の数、および機械学習モデルにおける重みの数を含むことができる。ハイパーパラメータチューニングは、インテント分類器が解決できないクラスに対する強化されたロジット値を求めることを可能にする上記のハイパーパラメータの最適な組合せを決定するプロセスを含むことができる。
【0161】
図9は、いくつかの実施形態による、発話が解決できないクラスに対応するかどうかを予測するために強化されたロジット値を求めるようハイパーパラメータチューニングを使用するための例示的なプロセスを示すフローチャート900を示す。図9に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図9に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図9は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。いくつかの実施形態では、それらのステップはなんらかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。図1図4に示す実施形態などのいくつかの実施形態では、図9に示す処理をトレーニングサブシステムによって実行して、解決できないクラスに対応する確率値を1つ以上の機械学習モデル(例えば、インテント分類器242または320)の強化されたロジット値にマッピングしてもよい。トレーニングサブシステムは、データ処理システム(例えば、図4に関して説明したチャットボットシステム400)のインテント分類器、または機械学習モデルをトレーニングおよび展開するよう構成される別のシステムの構成要素であり得る。
【0162】
905において、トレーニングサブシステムはトレーニングデータセットを受信する。トレーニングデータセットは、発話またはメッセージのセットを含むことができる。セットの各発話は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話の予測されるインテントクラスを識別する。トレーニングデータセットはまた、対応するスキルまたはチャットボットが実行するよう構成される特定のタスクからスコープ外である発話またはメッセージを含んでもよい。例えば、スキルボットがピザレストランのために食品注文を処理するように構成される場合、スコープ外発話は、天候について問い合わせるメッセージであり得る。いくつかの例では、トレーニングデータセットのスコープ外発話またはメッセージの各々は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話またはメッセージを解決できないクラスとして識別する。
【0163】
910において、トレーニングサブシステムは、トレーニングデータセットを使用して機械学習モデルをトレーニングして、発話もしくはメッセージが、スキルボットが実行するよう構成されるタスクを表すかどうかを予測するよう、または発話もしくはメッセージを、スキルボットに関連付けられるインテントにマッチさせるようにする。機械学習モデルの1つ以上のパラメータは、機械学習モデルによって生成された予測される出力と対応する発話のトレーニングラベルによって示される期待される出力との間の損失を最小限に抑えるように学習され得る。機械学習モデルのトレーニングは、損失が最小誤差閾値に達するまで実行することができる。
【0164】
915において、トレーニングサブシステムは、トレーニング用ロジット値のセットを識別する。セットの各トレーニング用ロジット値は、トレーニングデータセットのスコープ外発話に対応する。各トレーニング用ロジット値は、それぞれのスコープ外発話を機械学習モデルに入力することに基づいて生成され得る。トレーニング用ロジット値を取得するために、1つ以上のヘルパー関数(たとえば、get_layer関数)を利用して、機械学習モデルの1つ以上の層から生成された出力を取り込むことができる。
【0165】
920において、トレーニングサブシステムは、トレーニング用ロジット値のセットを表す統計値を求める。例えば、統計値は、トレーニング用ロジット値のセットの中央値であり得る。中央値は、トレーニング用ロジット値のセットの統計的分布が歪んだ分布に対応するという判断に応答して使用され得る。いくつかの例では、トレーニング用ロジット値のセットについて平均値および中央値が求められる。平均値と中央値との間の差が統計的に有意である場合、中央値は、トレーニング用ロジット値のセットを表す統計値として選択される。
【0166】
925において、トレーニングサブシステムは、機械学習モデルの1つ以上のハイパーパラメータを調整して統計値を最適化する。機械学習モデルのトレーニングは、調整されたハイパーパラメータで反復することができ、ここで、解決できないクラスを予測するために最良の性能を提供したハイパーパラメータの組み合わせを選択することができる。いくつかの実施形態では、最良の性能は、トレーニングデータセットのスコープ外発話について、機械学習モデルによって生成された予測される出力と対応するスコープ外発話のトレーニングラベルによって示される期待される出力との間の最小損失値を生成する、機械学習モデルのモデル構成に対応する。
【0167】
統計値を最適化するために、様々なハイパーパラメータ最適化技術を使用することができる。いくつかの例では、ハイパーパラメータチューニングのためにランダム検索技術が使用される。ランダム検索技術は、ハイパーパラメータについて可能な値のグリッドを生成することを含むことができる。検索の各反復は、このグリッドからハイパーパラメータのランダムな組み合わせを選択することができ、ここで、各反復の性能を記録することができる。加えて、または代替として、グリッド検索技術を、ハイパーパラメータチューニングのために使用することができる。グリッド検索技術は、ハイパーパラメータについて可能な値のグリッドを生成することを含むことができる。検索の各反復は、ハイパーパラメータの組み合わせを特定の順序で選択することができる。各反復の性能を記録することができる。最良の性能を提供したハイパーパラメータの組み合わせを選択することができる。
【0168】
ハイパーパラメータチューニングのための他の技術を考慮することができる。これらの技術は、ベイズ最適化アルゴリズム、ツリーベースのパーゼン推定器(TPE)、ハイパーバンド、母集団ベースのトレーニング(PBT)、ならびにベイズ最適化およびハイパーバンド(BOHB)を含むが、それらに限定されない。
【0169】
930において、トレーニングサブシステムは、最適化された統計値を、解決できないクラスに対する強化されたロジット値として設定する。強化されたロジット値は、発話が解決できないクラスに対応することを予測するために使用されたであろう機械学習モデルの既存のロジット関数に取って代わることができる。いくつかの例では、既存のロジット関数は、解決可能なクラス(たとえば、order_pizza, cancel_pizza)のうちの1つに対応する発話の予測のために使用され続ける。935において、トレーニングサブシステムは、トレーニングされた機械学習モデルをチャットボットシステムに(例えば、スキルボットの一部として)展開し、トレーニングされた機械学習モデルは、発話またはメッセージが解決できないクラスに対応するかどうかを予測する最適化された統計値を含む。その後、プロセス900は終了する。
【0170】
5.学習値
発話が解決できないクラスに対応するかどうかを予測するための強化されたロジット値は、機械学習モデルのトレーニング中に動的に調整され得る学習値であり得る。モデルパラメータは、機械学習モデルのトレーニング段階中に学習することができる。実際には、追加のトレーニングデータ(例えば、スコープ外発話)がトレーニングに使用されるので、強化されたロジット値を最適化することができる。
【0171】
学習値を生成および調整するために、様々な技術が実行され得る。図10は、いくつかの実施形態による、発話が解決できないクラスに対応するかどうかを予測するために強化されたロジット値として学習値を使用するための例示的なプロセスを示すフローチャート1000を示す。図10に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図10に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図10は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。いくつかの実施形態では、ステップは、トレーニングサブシステムによって実行されて、解決できないクラスに対応する確率値を、1つ以上の機械学習モデル(例えば、インテント分類器242または320)の強化されたロジット値にマッピングする。トレーニングサブシステムは、データ処理システム(例えば、図4に関して説明したチャットボットシステム400)の一部、または機械学習モデルをトレーニングおよび展開するよう構成される別のシステムの構成要素であることができる。
【0172】
1005において、トレーニングサブシステムは、トレーニングデータセットを受信する。トレーニングデータセットは、発話またはメッセージのセットを含むことができる。セットの各発話は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話の予測されるインテントクラスを識別する。トレーニングデータセットはまた、対応するスキルまたはチャットボットが実行するよう構成される特定のタスクからスコープ外である発話またはメッセージを含んでもよい。例えば、スキルボットがピザレストランのために食品注文を処理するように構成される場合、スコープ外発話は、天候について問い合わせるメッセージであり得る。いくつかの例では、トレーニングデータセットのスコープ外発話またはメッセージの各々は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話またはメッセージを解決できないクラスとして識別する。
【0173】
1010において、トレーニングサブシステムは、トレーニングデータセットのバッチ均衡化を実行して、スコープ外発話の拡張されたコピーを含む拡張されたトレーニングデータセットを生成する。このステップは、トレーニングデータセットにおいて利用可能なスコープ外発話の量に基づいて任意選択であり得る。例えば、トレーニングサブシステムは、解決できないクラス(例えば、スコープ外発話)に対応するトレーニングデータの複製または拡張されたコピーを生成することができる。データ拡張技術は、トレーニングデータセットにおける発話の逆変換、発話の1つ以上のトークンの同義語置換、トークンの発話へのランダム挿入、発話の2つのトークン間のスワップ、および発話の1つ以上のトークンのランダム削除を含むことができる。
【0174】
1015において、トレーニングサブシステムは、機械学習モデルを初期化する。機械学習モデルは、畳み込みニューラルネットワーク(「CNN」)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、または再帰型ニューラルネットワーク、例えば長短期記憶(「LSTM」)モデルもしくはゲート付き再帰型ユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の他の変形物(たとえば、単一インテント分類のためのマルチレベルnバイナリDNN分類器もしくはマルチクラスDNN分類器であり得る。機械学習モデル425はまた、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組合せ、たとえば、CNN-HMMまたはMCNN(マルチスケール畳み込みニューラルネットワーク)など、自然言語処理のためにトレーニングされた任意の他の適切なMLモデルであり得る。
【0175】
機械学習モデルの初期化は、層の数、各層のタイプ(例えば、全結合型、畳み込みニューラルネットワーク)、および各層の活性化関数のタイプ(たとえば、シグモイド、ReLU、softmax)を定義することを含むことができる。
【0176】
1020において、トレーニングサブシステムは、トレーニングデータセットまたは拡張されたトレーニングデータセットを使用して機械学習モデルをトレーニングして、発話もしくはメッセージが、スキルボットが実行するよう構成されるタスクを表すかどうかを予測するよう、または発話もしくはメッセージを、スキルボットに関連付けられるインテントにマッチさせるようにする。機械学習モデルの1つ以上のパラメータは、機械学習モデルによって生成された予測される出力と対応する発話のトレーニングラベルによって示される期待される出力との間の損失を最小限に抑えるように学習され得る。機械学習モデルのトレーニングは、損失が最小誤差閾値に達するまで実行することができる。特に、機械学習モデルは、所与の発話が解決できないインテントに対応するかどうかの確率を生成することができるように、拡張されたトレーニングデータセットを使用してトレーニングされることができる。
【0177】
いくつかの例では、トレーニングデータセットまたは拡張されたトレーニングデータセットによる機械学習モデルの過剰適合を低減するために、トレーニングサブシステムは、正則化を使用して1つ以上のパラメータ重みを調整することができる。例えば、モデルパラメータの正則化は、機械学習モデルの小さい割合の重みが各トレーニング反復において除去される、ガウス/L2正則化を含むことができる。そのようなアプローチは、強化されたロジット値の精度を損失値の比較的低い増加で改善し、それによって、過剰適合問題を低減し得る。
【0178】
場合によっては、トレーニングされた機械学習モデルの性能は、交差検証によって評価される。例えば、k倍交差検証技術を使用して、トレーニングされた機械学習モデルを評価することができ、k倍交差検証技術は、(i)拡張されたトレーニングデータセット内でトレーニングデータ(例えば、発話)をシャッフルすること;(ii)トレーニングデータセットをk個のサブセットに分割すること;(iii)(k-1)個のサブセットの各々を用いて、それぞれの機械学習モデルをトレーニングすること;(iv)提供されたkサブセットを使用して、トレーニングされた機械学習モデルを評価すること;ならびに(v)異なる提供されたkサブセットを使用してステップ(iii)および(iv)を繰り返すことを含む。
【0179】
1025において、トレーニングサブシステムは、トレーニングされた機械学習モデルをチャットボットシステムに(例えば、スキルボットの一部として)展開して、発話またはメッセージが解決できないクラスに対応するかどうかを予測する強化されたロジット値を生成する。機械学習モデルは、拡張されたトレーニングデータセットを用いてトレーニングされたので、強化されたロジット値は、スコープ外発話を解決できないクラスに関連付けられるものとして予測する確率値を正確に求めるよう使用され得る。その後、プロセス1000は終了する。
【0180】
6.強化されたロジット値を求める例
上述のように、解決できないクラスに対する強化されたロジット値は、限定はされないが、データサイズまたはインテント番号を含む係数に基づく機械学習技術を使用して動的に調整することができる。たとえば、あるスケーラは、クラス(たとえば、order_pizza、unresolvedIntent)ごとに変更され得、スケーラ値における誤った最適度を制限するために重み減衰が追加される。別の例では、ロジットは、所定の境界内で動的に変更されてもよい。未解決のインテントクラスについて、ロジット値は、機械学習モデルトレーニングの一部として学習されることができるが、ある範囲(例えば、0.0=>0.2)に制約され得る。
【0181】
解決できないインテントのクラスに対してロジット値を使用する機械学習モデルの例示的な例では、解決できないクラスに対する固定ロジット値が適用され、トレーニングされたモデルが2つの標準的なドメイン外テストセットに対してテストされる。以下の表1に示すこれらのデータは、重心加重アプローチを使用せずにロジット値を適用した場合のドメイン外分類の改善を示す。例えば、所定のロジット値を適用することにより、ドメイン外発話を識別する際に、トレーニングされた分類器の精度が9%も改善され(行5および行1のisMatch値を比較)、エポックにわたる再現度は8%も改善された(行5および行1のe2e_ood_recall値を比較)。
【0182】
【表1】
【0183】
加えて、実験結果は、以下の表2に示されるように、ドメイン内発話の正確な分類に関して性能の相応のまたは同時の減少を反映しなかった。例えば、ドメイン内テストは、他のインテント分類の重心によって重み付けされる余弦有界softmax関数とは対照的に、0.5の所定のロジット値を適用することに対応して、行3と行5との間で精度の有意な減少を示さなかった。
【0184】
【表2】
【0185】
E.スコープ外発話分類のために強化されたロジット値を実現する機械学習モデルをトレーニングするためのプロセス
図11は、いくつかの実施形態による、解決できないクラスに対して強化されたロジット値を実現する機械学習モデルをトレーニングするためのプロセス1100を示すフローチャートである。図11に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図11に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図11は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。いくつかの実施形態では、それらのステップはなんらかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。図1図4に示す実施形態などのいくつかの実施形態では、図11に示す処理を、トレーニングサブシステムによって実行して、解決できないクラスに対応する確率値を、1つ以上の機械学習モデル(例えば、インテント分類器242もしくは320または機械学習モデル425)の強化されたロジット値にマッピングしてもよい。トレーニングサブシステムは、データ処理システム(例えば、図4に関して説明したチャットボットシステム400)の一部、または機械学習モデルをトレーニングおよび展開するよう構成される別のシステムの構成要素であることができる。
【0186】
1105において、トレーニングサブシステムは、トレーニングデータセットを受信する。トレーニングデータセットは、発話またはメッセージのセットを含むことができる。セットの各発話は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話の予測されるインテントクラスを識別する。場合によっては、発話は、音声入力(例えば、音声発話)から変換されたテキストデータを含み、音声入力は、その特定の言語におけるテキスト形式の発話に変換され得、次いで、そのテキスト発話が処理され得る。トレーニングデータセットはまた、対応するスキルまたはチャットボットが実行するよう構成される特定のタスクからスコープ外である発話またはメッセージを含んでもよい。例えば、スキルボットがピザレストランのために食品注文を処理するように構成される場合、スコープ外発話は、天候について問い合わせるメッセージであり得る。いくつかの例では、トレーニングデータセットのスコープ外発話またはメッセージの各々は、トレーニングラベルに関連付けられ、トレーニングラベルは、発話またはメッセージを解決できないクラスとして識別する。
【0187】
1110において、トレーニングサブシステムは、機械学習モデルを初期化する。機械学習モデルは、一連のネットワーク層を含むことができ、一連の層の最終ネットワーク層は、解決可能なクラスについての第1の確率を、第1のロジット値を表す第1の実数に変換し、解決できないクラスについての第2の確率を、第2のロジット値を表す第2の実数に変換するロジット関数を含む。したがって、ロジット関数は、それぞれのクラスの確率値を確率分布(例えば、ロジット正規分布)内で適合する実数に変換するオッズの対数であり得る。いくつかの例では、ロジット関数は、それぞれのクラスに関連付けられる分布の重心によって重み付けされる。
【0188】
機械学習モデルは、畳み込みニューラルネットワーク(「CNN」)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、または再帰型ニューラルネットワーク、例えば長短期記憶(「LSTM」)モデルもしくはゲート付き再帰型ユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の他の変形物(たとえば、単一インテント分類のためのマルチレベルnバイナリDNN分類器もしくはマルチクラスDNN分類器であり得る。機械学習モデル425はまた、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組合せ、たとえば、CNN-HMMまたはMCNN(マルチスケール畳み込みニューラルネットワーク)など、自然言語処理のためにトレーニングされた任意の他の適切なMLモデルであり得る。
【0189】
機械学習モデルの初期化は、層の数、各層のタイプ(例えば、全結合型、畳み込みニューラルネットワーク)、および各層の活性化関数のタイプ(たとえば、シグモイド、ReLU、softmax)を定義することを含むことができる。
【0190】
1115において、トレーニングサブシステムは、トレーニングデータセットを使用して機械学習モデルをトレーニングして、発話もしくはメッセージが、スキルボットが実行するよう構成されるタスクを表すかどうかを予測するよう、または発話もしくはメッセージを、スキルボットに関連付けられるインテントにマッチさせるようにする。いくつかの例では、機械学習モデルは、解決可能なクラスについての第1の確率および解決できないクラスについての第2の確率を求めるようトレーニングされる。解決可能なクラスについての第1の確率は、機械学習モデルの最終ネットワーク層の第1の出力チャネルによって生成され得る。解決できないクラスについての第2の確率は、機械学習モデルの最終ネットワーク層の第2の出力チャネルによって生成され得る。いくつかの例では、機械学習モデルは、2つ以上の解決可能なクラス(たとえば、order_pizza、cancel_pizza)の各々についての確率を求める。
【0191】
機械学習モデルの1つ以上のパラメータは、機械学習モデルによって生成された予測される出力と対応する発話のトレーニングラベルによって示される期待される出力との間の損失を最小限に抑えるように学習され得る。機械学習モデルのトレーニングは、損失が最小誤差閾値に達するまで実行することができる。特に、機械学習モデルは、所与の発話が解決できないインテントに対応するかどうかの確率を生成することができるように、拡張されたトレーニングデータセットを使用してトレーニングされることができる。
【0192】
1120において、トレーニングサブシステムは、解決できないクラスに関連付けられるロジット関数を強化されたロジット値で置き換える。解決可能なクラスについては、ロジット関数を引き続き使用することができる。したがって、トレーニングされた機械学習モデルは、ロジット関数を解決可能なクラスの確率に適用して、対応するロジット値を生成することができる。
【0193】
解決できないクラスについては、ロジット関数は強化されたロジット値で置き換えられる。いくつかの例では、強化されたロジット値は、解決可能なクラスに使用されるロジット関数から独立して求められる異なる実数である。強化されたロジット値は、(i)トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)解決できないクラスについての確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、第1のオッズの対数は、有界化関数によってある範囲の値に制約され、解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)解決できないクラスについての確率に対応する第2のオッズの対数によって生成され、第2のオッズの対数は、有界化関数によって当該ある範囲の値に制約され、スケーリング係数によってスケーリングされ、解決できないクラスに関連付けられる分布の重心によって重み付けされる、重み付けされた値、(iv)機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)機械学習モデルのトレーニング中に調整される学習値、のうちの1つを含むことができる。
【0194】
1125において、強化されたロジット値を有するトレーニングされた機械学習モデルをチャットボットシステム内に(例えば、スキルボットの一部として)展開して、発話もしくはメッセージが、スキルボットが実行するように構成されるタスクを表すかどうかを予測するか、もしくは発話もしくはメッセージを、スキルボットに関連付けられるインテントにマッチさせるか、または発話もしくはメッセージが解決できないクラスに対応するかどうかを予測するようにしてもよい。その後、プロセス1100は終了する。
【0195】
F.強化されたロジット値を使用してスコープ外発話を分類するためのプロセス
図12は、いくつかの実施形態による、発話を解決できないクラスとして分類するために強化されたロジット値を使用するためのプロセス1200を示すフローチャートである。図12に示される処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組み合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶されてもよい。図12に提示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図12は、特定のシーケンスまたは順序で生じる様々な処理ステップを示すが、これは限定することを意図するものではない。いくつかの実施形態では、それらのステップはなんらかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。図1図4に示す実施形態などのいくつかの実施形態では、図12に示す処理は、発話が解決できないクラスに対応するかどうかを予測するために機械学習モデルおよび強化されたロジット値を実現することができるチャットボットまたはスキルボットシステムによって実行され得る。この特定の例示的なプロセスでは、チャットボットシステムは分類を実行する。
【0196】
1205において、チャットボットシステムは、チャットボットシステムと対話するユーザによって生成された発話を受信する。発話は、チャットボットとの会話中に交換される単語のセット(たとえば、1つ以上の文)を指し得る。場合によっては、発話は、音声入力(例えば、音声発話)から変換されたテキストデータを含み、音声入力は、その特定の言語におけるテキスト形式の発話に変換され得、次いで、そのテキスト発話が処理され得る。
【0197】
1210において、チャットボットシステムは、発話を機械学習モデルに入力する。機械学習モデルは、一連のネットワーク層を含むことができ、一連の層の最終ネットワーク層は、解決可能なクラスについての第1の確率を、第1のロジット値を表す第1の実数に変換し、解決できないクラスについての第2の確率を、第2のロジット値を表す第2の実数に変換するロジット関数を含む。
【0198】
機械学習モデルは、発話が解決できないクラスに対応するかどうかを予測するために、動作1215,1220,および1225を実行することができる。1215において、機械学習モデルは、解決可能なクラスについての第1の確率および解決できないクラスについての第2の確率を求める。解決可能なクラスについての第1の確率は、機械学習モデルの最終ネットワーク層の第1の出力チャネルによって生成され得る。解決できないクラスについての第2の確率は、機械学習モデルの最終ネットワーク層の第2の出力チャネルによって生成され得る。いくつかの例では、機械学習モデルは、2つ以上の解決可能なクラス(たとえば、order_pizza、cancel_pizza)の各々についての確率を求める。
【0199】
1220において、機械学習モデルは、ロジット関数を使用して、解決可能なクラスについての第1の確率を第1のロジット値にマッピングする。ロジット関数は、解決可能なクラスについての第1の確率に対応するオッズの対数であり得る。第1のオッズの対数は、解決可能なクラスに関連付けられる分布の重心によって重み付けされることができる。
【0200】
1225において、機械学習モデルは、解決できないクラスについての第2の確率を第2のロジット値にマッピングし、第2のロジット値は、解決可能なクラスに使用されるロジット関数から独立して求められる。いくつかの例では、第2のロジット値は、(i)トレーニングデータセットから生成されるロジット値のセットに基づいて求められる統計値、(ii)解決できないクラスについての確率に対応する第1のオッズの対数によって定義されるある範囲の値から選択され、第1のオッズの対数は、有界化関数によってある範囲の値に制約され、解決できないクラスに関連付けられる分布の重心によって重み付けされる、有界値、(iii)解決できないクラスについての確率に対応する第2のオッズの対数によって生成され、第2のオッズの対数は、有界化関数によって当該ある範囲の値に制約され、スケーリング係数によってスケーリングされ、解決できないクラスに関連付けられる分布の重心によって重み付けされる、重み付けされた値、(iv)機械学習モデルのハイパーパラメータチューニングに基づいて生成されるハイパーパラメータ最適化値、または(v)機械学習モデルのトレーニング中に調整される学習値を含む。第1のロジット値および第2のロジット値は、分類のためにチャットボットシステムに戻される。
【0201】
1230において、チャットボットシステムは、第1のロジット値および第2のロジット値に基づいて、発話を解決可能なクラスまたは解決できないクラスとして分類する。いくつかの例では、機械学習モデルの活性化関数(たとえば、softmax関数)を、(i)第1のロジット値に適用して、発話が多項分布内で解決可能なクラスに対応する確率を求め、(ii)第2のロジット値に適用して、発話が多項分布内で解決できないクラスに対応する確率を求める。求められた確率に基づいて、チャットボットシステムは発話を分類することができる。その後、プロセス1200は終了する。
【0202】
G.例示的なシステム
図13は、分散型システム1300の簡略図を示す。図示される例において、分散型システム1300は、1つ以上の通信ネットワーク1310を介してサーバ1312に結合された1つ以上のクライアントコンピューティングデバイス1302、1304、1306、および1308を含む。クライアントコンピューティングデバイス1302、1304、1306、および1308は、1つ以上のアプリケーションを実行するように構成され得る。
【0203】
さまざまな例において、サーバ1312は、本開示に記載される1つ以上の実施形態を可能にする1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。ある例では、サーバ1312はまた、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの例では、これらのサービスは、クライアントコンピューティングデバイス1302、1304、1306および/または1308のユーザに対して、サービスとしてのソフトウェア(Software as a Service:SaaS)モデル下のように、ウェブベースのサービスまたはクラウドサービスとして提供され得る。クライアントコンピューティングデバイス1302、1304、1306および/または1308を操作するユーザは、1つ以上のクライアントアプリケーションを利用してサーバ1312とやり取りすることで、これらのコンポーネントによって提供されるサービスを利用し得る。
【0204】
図13に示される構成では、サーバ1312は、サーバ1312によって実行される機能を実現する1つ以上のコンポーネント1318、1320および1322を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはそれらの組合わせによって実行され得るソフトウェアコンポーネントを含み得る。分散型システム1300とは異なり得る多種多様なシステム構成が可能であることが認識されるはずである。したがって、図13に示される例は、例のシステムを実現するための分散型システムの一例であり、限定するよう意図されたものではない。
【0205】
ユーザは、クライアントコンピューティングデバイス1302、1304、1306および/または1308を用いて、1つ以上のアプリケーション、モデルまたはチャットボットを実行し、それは、1つ以上のイベントまたはモデルを生成してもよく、それは次いで本開示の教示に従って実現または処理されてもよい。クライアントデバイスは、当該クライアントデバイスのユーザが当該クライアントデバイスと対話することを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介してユーザに情報を出力してもよい。図13は4つのクライアントコンピューティングデバイスだけを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0206】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどの、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、さまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえば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)アプリケーション)のような多種多様なアプリケーションを実行可能であってもよく、各種通信プロトコルを使用してもよい。
【0207】
ネットワーク1310は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当該技術の当業者には周知のいずれかの種類のネットワークであればよく、上記プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない。単に一例として、ネットワーク1310は、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば電気電子学会(IEEE)1002.11プロトコルスイートのいずれかの下で動作する無線ネットワーク、Bluetooth(登録商標)および/または任意の他の無線プロトコル)、および/またはこれらおよび/または他のネットワークの任意の組み合わせを含み得る。
【0208】
サーバ1312は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組み合わせで構成されてもよい。サーバ1312は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。これはたとえば、サーバに対して仮想記憶装置を維持するように仮想化できる論理記憶装置の1つ以上のフレキシブルプールなどである。様々な例において、サーバ1312を、上記開示に記載の機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合させてもよい。
【0209】
サーバ1312内のコンピューティングシステムは、上記オペレーティングシステムのうちのいずれかを含む1つ以上のオペレーティングシステム、および、市販されているサーバオペレーティングシステムを実行し得る。また、サーバ1312は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらに他のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものを含むが、それらに限定されない。
【0210】
いくつかの実現例において、サーバ1312は、クライアントコンピューティングデバイス1302、1304、1306および1308のユーザから受信したデータフィードおよび/またはイベントアップデートを解析および整理統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどに関連するリアルタイムのイベントを含んでもよい、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムのアップデートを含み得るが、それらに限定されない。サーバ1312は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス1302、1304、1306および1308の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションも含み得る。
【0211】
分散型システム1300はまた、1つ以上のデータリポジトリ1314、1316を含み得る。特定の例において、これらのデータリポジトリを用いてデータおよびその他の情報を格納することができる。たとえば、データリポジトリ1314、1316のうちの1つ以上を用いて、様々な実施形態による様々な機能を実行するときにチャットボット性能またはサーバ1312によって使用されるチャットボットによる使用のための生成されたモデルに関連する情報のような情報を格納することができる。データリポジトリ1314、1316は、さまざまな場所に存在し得る。たとえば、サーバ1312が使用するデータリポジトリは、サーバ1312のローカル位置にあってもよく、またはサーバ1312から遠隔の位置にあってもよく、ネットワークベースの接続または専用接続を介してサーバ1312と通信する。データリポジトリ1314、1316は、異なる種類であってもよい。特定の例において、サーバ1312が使用するデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および他の製造業者が提供するデータベースのようなリレーショナルデータベースであってもよい。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするように適合させてもよい。
【0212】
特定の例では、データリポジトリ1314、1316のうちの1つ以上は、アプリケーションデータを格納するためにアプリケーションによって用いられてもよい。アプリケーションが使用するデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリのようなさまざまな種類のものであってもよい。
【0213】
特定の例において、本開示に記載される機能は、クラウド環境を介してサービスとして提供され得る。図14は、特定の例に係る、各種サービスをクラウドサービスとして提供し得るクラウドベースのシステム環境の簡略化されたブロック図である。図14に示される例において、クラウドインフラストラクチャシステム1402は、ユーザが1つ以上のクライアントコンピューティングデバイス1404、1406および1408を用いて要求し得る1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム1402は、サーバ1312に関して先に述べたものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。クラウドインフラストラクチャシステム1402内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および/または組み合わせとして編成され得る。
【0214】
ネットワーク1410は、クライアント1404、1406、および1408と、クラウドインフラストラクチャシステム1402との間におけるデータの通信および交換を容易にし得る。ネットワーク1410は、1つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク1410は、通信を容易にするために、有線および/または無線プロトコルを含む、1つ以上の通信プロトコルをサポートし得る。
【0215】
図14に示される例は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの例において、クラウドインフラストラクチャシステム1402が、図14に示されるものよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、または、異なる構成または配置のコンポーネントを有していてもよいことが、理解されるはずである。たとえば、図14は3つのクライアントコンピューティングデバイスを示しているが、代替例においては、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0216】
クラウドサービスという用語は一般に、サービスプロバイダのシステム(たとえばクラウドインフラストラクチャシステム1402)により、インターネット等の通信ネットワークを介してオンデマンドでユーザにとって利用可能にされるサービスを指すのに使用される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストし得るとともに、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介してオンデマンドでアプリケーションをオーダーして使用し得る。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。たとえば、ミドルウェアサービス、データベースサービス、Java(登録商標)クラウドサービスなどのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)から提供される。
【0217】
特定の例において、クラウドインフラストラクチャシステム1402は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデルなどのさまざまなモデルを使用して、1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム1402は、各種クラウドサービスのプロビジョンを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースのスイートを含み得る。
【0218】
SaaSモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。たとえば、SaaSモデルを用いることにより、クラウドインフラストラクチャシステム1402がホストするオンデマンドアプリケーションに顧客がアクセスできるようにし得る。Oracle Corporation(登録商標)が提供するSaaSサービスの例は、人的資源/資本管理のための各種サービス、カスタマー・リレーションシップ・マネジメント(CRM)、エンタープライズ・リソース・プランニング(ERP)、サプライチェーン・マネジメント(SCM)、エンタープライズ・パフォーマンス・マネジメント(EPM)、解析サービス、ソーシャルアプリケーションなどを含むがこれらに限定されない。
【0219】
IaaSモデルは一般に、インフラストラクチャリソース(たとえばサーバ、ストレージ、ハードウェアおよびネットワーキングリソース)を、クラウドサービスとして顧客に提供することにより、柔軟な計算およびストレージ機能を提供するために使用される。各種IaaSサービスがOracle Corporation(登録商標)から提供される。
【0220】
PaaSモデルは一般に、顧客が、環境リソースを調達、構築、または管理しなくても、アプリケーションおよびサービスを開発、実行、および管理することを可能にするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例は、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、各種アプリケーション開発ソリューションサービスなどを含むがこれらに限定されない。
【0221】
クラウドサービスは一般に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。たとえば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム1402が提供する1つ以上のサービスをオーダーしてもよい。次いで、クラウドインフラストラクチャシステム1402は、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。例えば、ユーザは、発話を用いて、クラウドインフラストラクチャシステムに、上記のように特定のアクション(例えばインテント)をとらせ、および/または本明細書で説明するようにチャットボットシステムのためのサービスを提供させるように要求することができる。クラウドインフラストラクチャシステム1402を、1つのクラウドサービスまたは複数のクラウドサービスであっても提供するように構成してもよい。
【0222】
クラウドインフラストラクチャシステム1402は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム1402は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。このカスタマーは個人または企業であってもよい。ある他の例では、プライベートクラウドモデル下において、クラウドインフラストラクチャシステム1402がある組織内で(たとえば企業組織内で)機能してもよく、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部などの企業のさまざまな部署であってもよく、企業内の個人であってもよい。ある他の例では、コミュニティクラウドモデル下において、クラウドインフラストラクチャシステム1402および提供されるサービスは、関連コミュニティ内のさまざまな組織で共有されてもよい。上記モデルの混成モデルなどのその他各種モデルが用いられてもよい。
【0223】
クライアントコンピューティングデバイス1404、1406、および1408は、異なるタイプであってもよく(たとえば図13に示されるクライアントコンピューティングデバイス1302、1304、1306および1308)、1つ以上のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム1402が提供するサービスを要求することなど、クラウドインフラストラクチャシステム1402とのやり取りを行い得る。例えば、ユーザは、本開示に記載されているように、クライアントデバイスを使用してチャットボットから情報またはアクションを要求することができる。
【0224】
いくつかの例において、クラウドインフラストラクチャシステム1402が、サービスを提供するために実行する処理は、モデルトレーニングおよび展開を含み得る。この解析は、データセットを使用し、解析し、処理することにより、1つ以上のモデルをトレーニングおよび展開することを含み得る。この解析は、1つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行してもよい。たとえば、チャットボットシステムのために1つ以上のモデルを生成およびトレーニングするために、ビッグデータ解析がクラウドインフラストラクチャシステム1402によって実行されてもよい。この解析に使用されるデータは、構造化データ(たとえばデータベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含み得る。
【0225】
図14の例に示されるように、クラウドインフラストラクチャシステム1402は、クラウドインフラストラクチャシステム1402が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース1430を含み得る。インフラストラクチャリソース1430は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。特定の例では、アプリケーションから要求されたストレージを処理するために利用可能なストレージ仮想マシンは、クラウドインフラストラクチャシステム1402の一部である場合がある。他の例では、ストレージ仮想マシンは、異なるシステムの一部である場合がある。
【0226】
特定の例において、異なる顧客に対しクラウドインフラストラクチャシステム1402が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースのセットまたはリソースモジュール(「ポッド」とも処される)にまとめてもよい。各リソースモジュールまたはポッドは、1種類以上のリソースを予め一体化し最適化した組み合わせを含み得る。特定の例において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングしてもよい。たとえば、第1のポッドセットをデータベースサービスのためにプロビジョニングしてもよく、第1のポッドセット内のポッドと異なるリソースの組み合わせを含み得る第2のポッドセットをJavaサービスなどのためにプロビジョニングしてもよい。いくつかのサービスについて、これらのサービスをプロビジョニングするために割り当てられたリソースをサービス間で共有してもよい。
【0227】
クラウドインフラストラクチャシステム1402自体が、クラウドインフラストラクチャシステム1402の異なるコンポーネントによって共有されるとともにクラウドインフラストラクチャシステム1402によるサービスのプロビジョニングを容易にするサービス1432を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性、バックアップリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【0228】
クラウドインフラストラクチャシステム1402は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組み合わせで実現され得る。図14に示されるように、サブシステムは、クラウドインフラストラクチャシステム1402のユーザまたは顧客がクラウドインフラストラクチャシステム1402とやり取りすることを可能にするユーザインターフェイスサブシステム1412を含み得る。ユーザインターフェイスサブシステム1412は、ウェブインターフェイス1414、クラウドインフラストラクチャシステム1402が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス1416、およびその他のインターフェイス1418などの、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用いて、クラウドインフラストラクチャシステム1402がインターフェイス1414、1416、および1418のうちの1つ以上を用いて提供する1つ以上のサービスを要求(サービス要求1434)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム1402が提供するクラウドサービスをブラウズし、クラウドインフラストラクチャシステム1402が提供するとともに顧客が申し込むことを所望する1つ以上のサービスについてサブスクリプションオーダーを行い得る。このサービス要求は、顧客と、顧客が申しむことを所望する1つ以上のサービスを識別する情報を含んでいてもよい。たとえば、顧客は、クラウドインフラストラクチャシステム1402によって提供されるサービスの申し込み注文を出すことができる。注文の一部として、顧客は、サービスが提供されるチャットボットシステムを識別する情報と、任意選択でチャットボットシステムの1つ以上の資格情報を提供することができる。
【0229】
図14に示される例のような特定の例において、クラウドインフラストラクチャシステム1402は、新しいオーダーを処理するように構成されたオーダー管理サブシステム(order management subsystem:OMS)1420を含み得る。この処理の一部として、OMS1420は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。
【0230】
適切に妥当性確認がなされると、OMS1420は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(OPS)1424を呼び出し得る。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。たとえば、あるワークフローに従うと、OPS1424を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
【0231】
特定の例では、セットアップ段階処理は、上記のように、クラウドインフラストラクチャシステム1402によって、プロビジョニングプロセスの一部として実行され得る。クラウドインフラシステム1402は、アプリケーションIDを生成し、クラウドインフラシステム1402自体によって提供されるストレージ仮想マシンの中から、またはクラウドインフラシステム1402以外の他のシステムによって提供されるストレージ仮想マシンから、アプリケーション用のストレージ仮想マシンを選択することができる。
【0232】
クラウドインフラストラクチャシステム1402は、要求されたサービスがいつ使用できるようになるかを示すために、応答または通知1444を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(たとえばリンク)を顧客に送信してもよい。特定の例では、サービスを要求する顧客に対して、応答は、クラウドインフラストラクチャシステム1402によって生成されたチャットボットシステムID、およびチャットボットシステムIDに対応するチャットボットシステムのためにクラウドインフラストラクチャシステム1402によって選択されたチャットボットシステムを識別する情報を含み得る。
【0233】
クラウドインフラストラクチャシステム1402はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム1402は、顧客から受けた1つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を果たす。また、クラウドインフラストラクチャシステム1402は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金はたとえば月ごとに行ってもよい。
【0234】
クラウドインフラストラクチャシステム1402は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム1402は、場合によっては著作権情報を含む、これらの顧客についての情報を格納してもよい。特定の例において、クラウドインフラストラクチャシステム1402は、顧客の情報を管理するとともに管理される情報を分離することで、ある顧客に関する情報が別の顧客に関する情報からアクセスされないようにするように構成された、アイデンティティ管理サブシステム(IMS)1428を含む。IMS1428は、情報アクセス管理などのアイデンティティサービス、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスなどの、各種セキュリティ関連サービスを提供するように構成されてもよい。
【0235】
図15は、コンピュータシステム1500の例を示す。いくつかの例では、コンピュータシステム1500は、分散環境内の任意のデジタルアシスタントまたはチャットボットシステムのいずれか、ならびに上記の様々なサーバおよびコンピュータシステムを実現するために用いられ得る。図15に示されるように、コンピュータシステム1500は、バスサブシステム1502を介して他のいくつかのサブシステムと通信する処理サブシステム1504を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット1506、I/Oサブシステム1508、ストレージサブシステム1518、および通信サブシステム1524を含み得る。ストレージサブシステム1518は、記憶媒体1522およびシステムメモリ1510を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0236】
バスサブシステム1502は、コンピュータシステム1500のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム1502は単一のバスとして概略的に示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム1502は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスなどを含み得る。
【0237】
処理サブシステム1504は、コンピュータシステム1500の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム1500の処理リソースを、1つ以上の処理ユニット1532、1534などに組織することができる。処理ユニットは、1つ以上のプロセッサ、同一のまたは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの例において、処理サブシステム1504は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)などのような1つ以上の専用コプロセッサを含み得る。いくつかの例では、処理サブシステム1504の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を使用し得る。
【0238】
いくつかの例において、処理サブシステム1504内の処理ユニットは、システムメモリ1510またはコンピュータ可読記憶媒体1522に格納された命令を実行し得る。さまざまな例において、処理ユニットはさまざまなプログラムまたはコード命令を実行するとともに、同時に実行する複数のプログラムまたはプロセスを維持し得る。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ1510および/または潜在的に1つ以上の記憶装置を含むコンピュータ可読記憶媒体1522に常駐していてもよい。適切なプログラミングを介して、処理サブシステム1504は、上述のさまざまな機能を提供し得る。コンピュータシステム1500が1つ以上の仮想マシンを実行している例において、1つ以上の処理ユニットが各仮想マシンに割り当ててもよい。
【0239】
特定の例において、コンピュータシステム1500によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム1504によって実行される処理の一部をオフロードするために、処理加速ユニット1506を任意に設けることができる。
【0240】
I/Oサブシステム1508は、コンピュータシステム1500に情報を入力するための、および/またはコンピュータシステム1500から、もしくはコンピュータシステム1500を介して、情報を出力するための、デバイスおよび機構を含むことができる。一般に、「入力デバイス」という語の使用は、コンピュータシステム1500に情報を入力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを提供するデバイスなど、モーションセンシングおよび/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
【0241】
ユーザインターフェイス入力デバイスの他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含んでもよいが、それらに限定されない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【0242】
一般に、出力デバイスという語の使用は、コンピュータシステム1500からユーザまたは他のコンピュータに情報を出力するための考えられるすべてのタイプのデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、計画デバイス、タッチスクリーンなどであってもよい。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されない。
【0243】
ストレージサブシステム1518は、コンピュータシステム1500によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム1518は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ可読記憶媒体を提供する。処理サブシステム1504によって実行されると上述の機能を提供するソフトウェア(たとえばプログラム、コードモジュール、命令)が、ストレージサブシステム1518に格納されてもよい。ソフトウェアは、処理サブシステム1504の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム1518はまた、本開示の教示に従って認証を提供してもよい。
【0244】
ストレージサブシステム1518は、揮発性および不揮発性メモリデバイスを含む1つ以上の非一時的メモリデバイスを含み得る。図15に示すように、ストレージサブシステム1518は、システムメモリ1510およびコンピュータ可読記憶媒体1522を含む。システムメモリ1510は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ(RAM)と、固定命令が格納される不揮発性読取り専用メモリ(ROM)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実現例において、起動中などにコンピュータシステム1500内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)は、典型的には、ROMに格納されてもよい。典型的に、RAMは、処理サブシステム1504によって現在操作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ1510は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なるタイプのメモリを含み得る。
【0245】
一例として、限定を伴うことなく、図15に示されるように、システムメモリ1510は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム1512、プログラムデータ1514、およびオペレーティングシステム1516を、ロードしてもよい。一例として、オペレーティングシステム1516は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステム、市販されているさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、および/または、iOS(登録商標)、Windows Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムのようなさまざまなバージョンのモバイルオペレーティングシステムなどを、含み得る。
【0246】
コンピュータ可読記憶媒体1522は、いくつかの例の機能を提供するプログラミングおよびデータ構成を格納することができる。コンピュータ可読記憶媒体1522は、コンピュータシステム1500のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供することができる。処理サブシステム1504によって実行されると上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム1518に格納されてもよい。一例として、コンピュータ可読記憶媒体1522は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ可読記憶媒体1522は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されない。コンピュータ可読記憶媒体1522は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMのような揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含み得る。
【0247】
特定の例において、ストレージサブシステム1518は、コンピュータ可読記憶媒体1522にさらに接続可能なコンピュータ可読記憶媒体リーダ1520も含み得る。リーダ1520は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。
【0248】
特定の例において、コンピュータシステム1500は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム1500は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。特定の例において、コンピュータシステム1500は、仮想マシンの構成および管理を容易にするハイパーバイザなどのプログラムを実行し得る。各仮想マシンには、メモリ、演算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースを割り当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的には、コンピュータシステム1500によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るかまたは異なり得るそれ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム1500によって同時に実行され得る。
【0249】
通信サブシステム1524は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム1524は、他のシステムとコンピュータシステム1500との間のデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム1524は、コンピュータシステム1500が、1つ以上のクライアントデバイスとの間で情報を送受信するために、インターネットを介して1つ以上のクライアントデバイスへの通信チャネルを確立することを可能にし得る。例えば、コンピュータシステム1500が、図1に示されるボットシステム120を実現するために使用される場合、通信サブシステムは、アプリケーション用に選択されたチャットボットシステムと通信するために使用され得る。
【0250】
通信サブシステム1524は、有線および/または無線通信プロトコルの両方をサポートし得る。ある例において、通信サブシステム1524は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.XXファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの例において、通信サブシステム1524は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続(たとえばEthernet(登録商標))を提供し得る。
【0251】
通信サブシステム1524は、さまざまな形式でデータを受信および送信し得る。いくつかの例において、通信サブシステム1524は、他の形式に加えて、構造化データフィードおよび/または非構造化データフィード1526、イベントストリーム1528、イベントアップデート1530などの形式で入力通信を受信してもよい。たとえば、通信サブシステム1524は、ソーシャルメディアネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード1526を受信(または送信)するように構成されてもよい。
【0252】
特定の例において、通信サブシステム1524は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム1528および/またはイベントアップデート1530を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどを挙げることができる。
【0253】
通信サブシステム1524は、コンピュータシステム1500からのデータを他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード1526、イベントストリーム1528、イベントアップデート1530などのような各種異なる形式で、コンピュータシステム1500に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに、伝えられてもよい。
【0254】
コンピュータシステム1500は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのうちの1つであればよい。コンピュータおよびネットワークの性質が常に変化しているため、図15に示されるコンピュータシステム1500の記載は、具体的な例として意図されているに過ぎない。図15に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が可能である。本明細書における開示および教示に基づいて、さまざまな例を実現するための他の態様および/または方法があることが認識されるはずである。
【0255】
特定の例について説明したが、さまざまな変形、変更、代替構成、および均等物が可能である。例は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作させることができる。さらに、例を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行されてもよい。加えて、動作の順序を再指定してもよい。プロセスは図に含まれない追加のステップを有し得る。上記の例の各種特徴および局面は、個別に使用されてもよく、またはともに使用されてもよい。
【0256】
さらに、特定の例をハードウェアとソフトウェアとの特定の組み合わせを用いて説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。特定の例は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現されてもよい。
【0257】
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計することにより、動作を実行するようにプログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、たとえば、非一時的なメモリ媒体に格納されたコードもしくは命令またはそれらの任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどにより、達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。
【0258】
本開示では具体的な詳細を示すことにより例が十分に理解されるようにしている。しかしながら、例はこれらの具体的な詳細がなくとも実施し得るものである。たとえば、周知の回路、プロセス、アルゴリズム、構造、および技術は、例が曖昧にならないようにするために不必要な詳細事項なしで示している。本明細書は例示的な例のみを提供し、他の例の範囲、適用可能性、または構成を限定するよう意図されたものではない。むしろ、例の上記説明は、各種例を実現することを可能にする説明を当業者に提供する。要素の機能および構成の範囲内でさまざまな変更が可能である。
【0259】
したがって、明細書および図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされ得ることは明らかであろう。このように、具体的な例を説明してきたが、これらは限定を意図するものではない。さまざまな変形例および同等例は添付の特許請求の範囲内にある。
【0260】
上記の明細書では、本開示の局面についてその具体的な例を参照して説明しているが、本開示はそれに限定されるものではないということを当業者は認識するであろう。上記の開示のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、例は、明細書のさらに広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境および用途で利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
【0261】
上記の説明では、例示の目的で、方法を特定の順序で記載した。代替の例では、方法は記載された順序とは異なる順序で実行されてもよいことを理解されたい。また、上記の方法は、ハードウェアコンポーネントによって実行されてもよいし、マシン実行可能命令であって、用いられると、そのような命令でプログラムされた汎用もしくは専用のプロセッサまたは論理回路などのマシンに方法を実行させてもよいマシン実行可能命令のシーケンスで具体化されてもよいことも理解されたい。これらのマシン実行可能命令は、CD-ROMもしくは他の種類の光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気もしくは光学カード、フラッシュメモリのような、1つ以上の機械可読媒体、または電子命令を記憶するのに適した他の種類の機械可読媒体に保存できる。代替的に、これらの方法は、ハードウェアとソフトウェアとの組み合わせによって実行されてもよい。
【0262】
構成要素が特定の動作を実行するように構成されるとして記載されている場合、そのような構成は、たとえば、特定の動作を実行するよう電子回路もしくは他のハードウェアを設計すること、特定の動作を実行するようプログラミング可能な電子回路(たとえばマイクロプロセッサもしくは他の好適な電子回路)をプログラミングすること、またはそれらの任意の組み合わせによって達成されてもよい。
【0263】
本願の説明のための例をここに詳細に記載したが、本発明の概念は、他の態様で様々に具現化および採用され得ること、および特許請求の範囲は、先行技術によって制限される場合を除き、そのような変形を含むように解釈されるよう意図されることを理解されたい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
【国際調査報告】