(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-14
(54)【発明の名称】チャットボットシステムにおける無関係な発話の検出
(51)【国際特許分類】
G06F 16/90 20190101AFI20221107BHJP
G06F 16/906 20190101ALI20221107BHJP
【FI】
G06F16/90 100
G06F16/906
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022516179
(86)(22)【出願日】2020-09-11
(85)【翻訳文提出日】2022-05-09
(86)【国際出願番号】 US2020050429
(87)【国際公開番号】W WO2021050891
(87)【国際公開日】2021-03-18
(32)【優先日】2019-09-12
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-09-10
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】パン,クリスタル・シィ
(72)【発明者】
【氏名】シンガラジュ,ゴータム
(72)【発明者】
【氏名】ビシュノイ,ビシャル
(72)【発明者】
【氏名】ガッデ,シュリニバーサ・ファニ・クマール
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA01
5B175FA03
(57)【要約】
入力発話がマスタボットに関連付けられたスキルボットのセットと無関係であるかどうかを判断するための技術を説明する。いくつかの実施形態では、本明細書に記載のシステムは、トレーニングシステムおよびマスタボットを含む。トレーニングシステムは、マスタボットの分類器をトレーニングする。トレーニングは、スキルボットに関連付けられたトレーニング発話にアクセスすることと、トレーニング発話からトレーニング特徴ベクトルを生成することとを含む。トレーニングはさらに、トレーニング特徴ベクトルの複数のセット表現を生成することを含み、各セット表現はトレーニング特徴ベクトルのサブセットに対応しており、トレーニングはさらに、当該複数のセット表現で分類器を構成することを含む。マスタボットは、入力発話にアクセスするとともに、入力特徴ベクトルを生成する。マスタボットは、分類器を用いて、入力特徴ベクトルを複数のセット表現と比較することで、入力特徴が範囲外にありこのためスキルボットによって対処不可能であるかどうかを判断する。
【特許請求の範囲】
【請求項1】
システムであって、
分類器モデルをトレーニングするように構成されたトレーニングシステムを含み、前記分類器モデルをトレーニングすることは、
スキルボットに関連付けられたトレーニング発話にアクセスすることを含み、前記トレーニング発話は、前記スキルボットの各スキルボットに関連付けられたそれぞれのトレーニング発話を含み、前記スキルボットの各スキルボットはユーザとの対話を提供するように構成されており、前記分類器モデルをトレーニングすることはさらに、
前記トレーニング発話からトレーニング特徴ベクトルを生成することを含み、前記トレーニング特徴ベクトルは、前記スキルボットの各スキルボットに関連付けられたそれぞれのトレーニング特徴ベクトルを含み、前記分類器モデルをトレーニングすることはさらに、
前記トレーニング特徴ベクトルの複数のセット表現を生成することを含み、前記複数のセット表現の各セット表現は前記トレーニング特徴ベクトルのサブセットに対応しており、前記分類器モデルをトレーニングすることはさらに、
入力特徴ベクトルを前記トレーニング特徴ベクトルの前記複数のセット表現と比較するように前記分類器モデルを構成することを含み、前記システムはさらに、
マスタボットを含み、前記マスタボットは、
ユーザ入力としての入力発話にアクセスする動作と、
前記入力発話から入力特徴ベクトルを生成する動作と、
前記分類器モデルを用いて、前記入力特徴ベクトルを前記トレーニング特徴ベクトルの前記複数のセット表現と比較する動作と、
前記入力特徴ベクトルが前記複数のセット表現の範囲外であることに基づいて、前記スキルボットによって前記ユーザ入力に対処することができないという指示を出力する動作とを含む動作を実行するように構成される、システム。
【請求項2】
前記トレーニング特徴ベクトルの前記複数のセット表現を生成することは、前記トレーニング特徴ベクトルが割当てられるクラスタを生成することを含み、
前記入力特徴ベクトルを前記複数のセット表現と比較することは、前記入力特徴ベクトルが前記クラスタの境界の範囲内に収まらないと判断することを含む、請求項1に記載のシステム。
【請求項3】
前記クラスタを生成することは、
特徴空間における初期クラスタについてのそれぞれの重心位置を決定することと、
前記初期クラスタのうち、前記トレーニング特徴ベクトルが最も近接する重心位置を有する初期クラスタに、各々のトレーニング特徴ベクトルを割当てることとを含み、前記クラスタを生成することはさらに、
前記初期クラスタの境界を決定することを含み、前記初期クラスタの各初期クラスタは、対応する割当てられたトレーニング特徴ベクトルを含み、前記クラスタを生成することはさらに、
停止条件が満たされていないと判断することに応答して、前記初期クラスタを更新することを含み、前記初期クラスタを更新することは、
クラスタの増加カウントが前記初期クラスタのうちの或る初期カウントよりも大きくなるように、前記クラスタの増加カウントを決定することと、
前記特徴空間における前記クラスタについてのそれぞれの重心位置を決定することと、
前記クラスタのうち、前記トレーニング特徴ベクトルが最も近接するそれぞれの重心位置を有するクラスタに、各トレーニング特徴ベクトルを割当てることと、
前記クラスタの前記境界を決定することとを含み、前記クラスタの各クラスタは対応する割当てられたトレーニング特徴ベクトルを含む、請求項2に記載のシステム。
【請求項4】
前記マスタボットの前記動作はさらに、
第2のユーザ入力としての第2の入力発話にアクセスする動作と、
前記第2の入力発話から第2の入力特徴ベクトルを生成する動作と、
前記第2の入力特徴ベクトルが前記クラスタのうちの或るクラスタの境界の範囲内にあると判断する動作と、
前記第2の入力特徴ベクトルが前記或るクラスタの前記境界の範囲内にあることに基づいて、処理のために、前記第2の入力発話を前記或るクラスタに関連付けられたスキルボットに転送する動作とを含む、請求項2に記載のシステム。
【請求項5】
前記スキルボットをさらに含み、前記スキルボットは、前記ユーザ入力に応答してアクションを実行するように前記入力発話を処理するように構成される、請求項4に記載のシステム。
【請求項6】
前記トレーニング特徴ベクトルの前記複数のセット表現を生成することは、
前記トレーニング発話を会話カテゴリに分割することと、
前記会話カテゴリに対応する合成特徴ベクトルを生成することとを含み、前記合成特徴ベクトルを生成することは、前記会話カテゴリの各会話カテゴリごとに、前記会話カテゴリにおける前記トレーニング発話のそれぞれのトレーニング特徴ベクトルの集合としてそれぞれの合成特徴ベクトルを生成することを含む、請求項1に記載のシステム。
【請求項7】
前記会話カテゴリの各会話カテゴリごとに、前記会話カテゴリにおける前記トレーニング発話の前記それぞれのトレーニング特徴ベクトルの集合として前記合成特徴ベクトルを生成することは、前記会話カテゴリにおける前記トレーニング発話の前記それぞれのトレーニング特徴ベクトルを平均化することを含む、請求項6に記載のシステム。
【請求項8】
前記会話カテゴリは、各会話カテゴリがそれぞれのスキルボットインテントに対応するとともに前記それぞれのスキルボットインテントを表わすトレーニング発話を含むように、前記スキルボットが構成されるインテントに基づいて定義される、請求項6に記載のシステム。
【請求項9】
前記会話カテゴリの各会話カテゴリは、前記スキルボットのそれぞれのスキルボットに対応するとともに、前記それぞれのスキルボットを表わすトレーニング発話を含む、請求項6に記載のシステム。
【請求項10】
前記入力特徴ベクトルを前記トレーニング特徴ベクトルの前記複数のセット表現と比較する動作は、前記入力特徴ベクトルが前記合成特徴ベクトルのいずれとも十分に類似していないと判断する動作を含む、請求項6に記載のシステム。
【請求項11】
前記マスタボットの前記動作はさらに、
第2のユーザ入力としての第2の入力発話にアクセスする動作と、
前記第2の入力発話から第2の入力特徴ベクトルを生成する動作と、
前記第2の入力特徴ベクトルが前記合成特徴ベクトルのうちの或る合成特徴ベクトルに十分に類似していると判断する動作と、
前記第2の入力特徴ベクトルが前記合成特徴ベクトルに十分に類似していることに基づいて、処理のために、前記第2の入力発話を前記合成特徴ベクトルに関連付けられたスキルボットに転送する動作とを含む、請求項1から10のいずれか1項に記載のシステム。
【請求項12】
前記スキルボットをさらに含み、前記スキルボットは、前記ユーザ入力に応答してアクションを実行するように前記入力発話を処理するように構成される、請求項11に記載のシステム。
【請求項13】
方法であって、
コンピュータシステムによって、スキルボットに関連付けられたトレーニング発話にアクセスするステップを含み、前記トレーニング発話は、前記スキルボットの各スキルボットごとにトレーニング発話のそれぞれのサブセットを含み、前記スキルボットの各スキルボットは、ユーザとの対話を提供するように構成され、前記方法はさらに、
前記トレーニング発話からトレーニング特徴ベクトルを生成するステップを含み、前記トレーニング特徴ベクトルは、前記トレーニング発話の各トレーニング発話ごとにそれぞれのトレーニング特徴ベクトルを含み、前記方法はさらに、
特徴空間におけるクラスタについての重心位置を決定するステップと、
前記クラスタのうち、前記クラスタの中から前記トレーニング特徴ベクトルが最も近接するそれぞれの重心位置を有するそれぞれのクラスタに、前記トレーニング特徴ベクトルの各トレーニング特徴ベクトルを割当てるステップと、
停止条件が満たされるまで前記クラスタを繰返し修正するステップとを含み、前記クラスタを修正するステップは、
前記クラスタのカウントを更新されたカウントにまで増加するステップと、
前記更新されたカウントに等しい量で前記クラスタについての新しい重心位置を決定するステップと、
前記新しい重心位置への近接性に基づいて、前記トレーニング特徴ベクトルを前記クラスタに再割当てするステップとを含み、前記方法はさらに、
前記クラスタの境界を決定するステップを含み、前記境界は前記クラスタの各クラスタごとにそれぞれの境界を含み、
入力発話にアクセスするステップと、
前記入力発話を入力特徴ベクトルに変換するステップと、
前記入力特徴ベクトルを前記クラスタの前記境界と比較することによって、前記入力特徴ベクトルが前記クラスタの前記境界の範囲外にあると判断するステップと、
前記入力特徴ベクトルが前記特徴空間内の前記クラスタの範囲外にあることに基づいて、前記スキルボットによって前記入力発話に対処することができないという指示を出力するステップとを含む、方法。
【請求項14】
第2のユーザ入力としての第2の入力発話にアクセスするステップと、
前記第2の入力発話から第2の入力特徴ベクトルを生成するステップと、
前記第2の入力特徴ベクトルが前記クラスタのうち1つ以上のクラスタの範囲内にあると判断するステップと、
前記第2の入力特徴ベクトルが前記1つ以上のクラスタの範囲内にあることに基づいて、処理のために、前記第2の入力発話を前記1つ以上のクラスタに関連付けられたスキルボットに転送するステップとをさらに含む、請求項13に記載の方法。
【請求項15】
前記1つ以上のクラスタは、前記スキルボットのそれぞれのトレーニング発話と、第2のスキルボットのそれぞれのトレーニング発話とを含み、前記方法はさらに、
前記スキルボットおよび前記第2のスキルボットについて計算されたそれぞれの信頼度スコアに基づいて、前記入力発話を処理するために前記スキルボットと前記第2のスキルボットとの間から前記スキルボットを選択するステップを含む、請求項14に記載の方法。
【請求項16】
前記1つ以上のクラスタは、前記スキルボットのそれぞれのトレーニング発話と、第2のスキルボットのそれぞれのトレーニング発話とを含み、前記方法はさらに、
前記スキルボットの前記それぞれのトレーニング発話および前記第2のスキルボットの前記それぞれのトレーニング発話にk最近傍技術を適用することに基づいて、前記入力発話を処理するために、前記スキルボットと前記第2のスキルボットとの間から前記スキルボットを選択するステップを含む、請求項14に記載の方法。
【請求項17】
方法であって、
コンピュータシステムによって、スキルボットに関連付けられたトレーニング発話にアクセスするステップを含み、前記トレーニング発話は、前記スキルボットの各スキルボットごとにトレーニング発話のそれぞれのサブセットを含み、前記スキルボットの各スキルボットは、ユーザとの対話を提供するように構成されており、前記方法はさらに、
前記トレーニング発話からトレーニング特徴ベクトルを生成するステップを含み、前記トレーニング特徴ベクトルは、前記トレーニング発話の各トレーニング発話ごとにそれぞれのトレーニング特徴ベクトルを含み、前記方法はさらに、
前記トレーニング発話を会話カテゴリに分割するステップと、
前記会話カテゴリに対応する合成特徴ベクトルを生成するステップとを含み、前記合成特徴ベクトルを生成するステップは、前記会話カテゴリの各会話カテゴリごとに、前記会話カテゴリ内の前記トレーニング発話のそれぞれのトレーニング特徴ベクトルの集合としてそれぞれの合成特徴ベクトルを生成するステップを含み、前記方法はさらに、
入力発話にアクセスするステップと、
前記入力発話を入力特徴ベクトルに変換するステップと、
前記入力特徴ベクトルを前記合成特徴ベクトルと比較することによって、前記入力特徴ベクトルが前記合成特徴ベクトルと十分に類似していないと判断するステップと、
前記入力特徴ベクトルが前記合成特徴ベクトルと十分に類似していないことに基づいて、前記スキルボットによって前記入力発話に対処することができないという指示を出力するステップとを含む、方法。
【請求項18】
第2の入力発話にアクセスするステップと、
前記第2の入力発話を第2の入力特徴ベクトルに変換するステップと、
前記第2の入力特徴ベクトルを前記合成特徴ベクトルと比較することによって、前記第2の入力特徴ベクトルが前記合成特徴ベクトルのうち或る合成特徴ベクトルと十分に類似していると判断するステップと、
前記第2の入力特徴ベクトルが前記合成特徴ベクトルと十分に類似していることに基づいて、処理のために、前記第2の入力発話を前記合成特徴ベクトルに関連付けられたスキルボットに転送するステップとをさらに含む、請求項17に記載の方法。
【請求項19】
前記会話カテゴリは、各会話カテゴリが、それぞれの1つ以上のスキルボットインテントに対応するとともに、前記それぞれの1つ以上のスキルボットインテントを表わすトレーニング発話を含むように、前記スキルボットが対処するように構成されるインテントに基づいて定義され、
前記合成特徴ベクトルは、前記スキルボットが対処するように構成されるスキルボットインテントに対応する、請求項18に記載の方法。
【請求項20】
前記第2の入力特徴ベクトルを前記合成特徴ベクトルと比較することによって、前記第2の入力特徴ベクトルが前記合成特徴ベクトルと十分に類似していると判断するステップは、
前記第2の入力特徴ベクトルが、前記スキルボットの1つ以上の追加のスキルボットインテントに対応する1つ以上の追加の合成特徴ベクトルに十分に類似していると判断するステップと、
k最近傍分析を実行するステップとを含み、前記k最近傍分析を実行するステップは、
予め定義された量で近傍の合成特徴ベクトルを識別するステップを含み、前記近傍の合成特徴ベクトルは前記入力特徴ベクトルに最も近接しており、前記k最近傍分析を実行するステップはさらに、
前記近傍の合成特徴ベクトルの大部分が、前記スキルボットが対処するように構成されるスキルボットインテントに対応すると判断するステップと、
前記スキルボットが対処するように構成されるスキルボットインテントに対応する前記近傍の合成特徴ベクトルの前記大部分に基づいて前記スキルボットを選択するステップとを含む、請求項19に記載の方法。
【請求項21】
請求項13から20のいずれか1項に記載の方法を実行するように構成されたコンピュータ。
【請求項22】
方法であって、
ユーザ入力としての入力発話にアクセスするステップと、
前記入力発話から入力特徴ベクトルを生成するステップと、
分類器モデルを用いて、前記入力特徴ベクトルを前記トレーニング特徴ベクトルの複数のセット表現と比較するステップと、
前記入力特徴ベクトルが前記複数のセット表現の範囲外にあることに基づいて、スキルボットによって前記ユーザ入力に対処することができないという指示を出力するステップとを含み、前記スキルボットの各スキルボットがユーザとの対話を提供するように構成される、方法。
【請求項23】
前記分類器モデルをトレーニングするステップをさらに含み、前記分類器モデルをトレーニングするステップは、
前記スキルボットに関連付けられたトレーニング発話にアクセスするステップを含み、前記トレーニング発話は、前記スキルボットの各スキルボットに関連付けられたそれぞれのトレーニング発話を含み、前記分類器モデルをトレーニングするステップはさらに、
前記トレーニング発話からトレーニング特徴ベクトルを生成するステップを含み、前記トレーニング特徴ベクトルは、前記スキルボットの各スキルボットに関連付けられたそれぞれのトレーニング特徴ベクトルを含み、前記分類器モデルをトレーニングするステップはさらに、
前記トレーニング特徴ベクトルの前記複数のセット表現を生成するステップを含み、前記複数のセット表現の各セット表現は、前記トレーニング特徴ベクトルのサブセットに対応しており、前記分類器モデルをトレーニングするステップはさらに、
入力特徴ベクトルを前記トレーニング特徴ベクトルの前記複数のセット表現と比較するように前記分類器モデルを構成するステップを含む、請求項22に記載の方法。
【請求項24】
前記トレーニング特徴ベクトルの前記複数のセット表現を生成するステップは、前記トレーニング特徴ベクトルが割当てられるクラスタを生成するステップを含み、
前記入力特徴ベクトルを前記複数のセット表現と比較するステップは、前記入力特徴ベクトルが前記クラスタの境界の範囲内に収まらないと判断するステップを含む、請求項23に記載の方法。
【請求項25】
前記クラスタを生成するステップは、
特徴空間における初期クラスタについてのそれぞれの重心位置を決定するステップと、
前記初期クラスタのうち、前記トレーニング特徴ベクトルが最も近接するそれぞれの重心位置を有する初期クラスタに各トレーニング特徴ベクトルを割当てるステップと、
前記初期クラスタの境界を決定するステップとを含み、前記初期クラスタの各初期クラスタは、対応する割当てられたトレーニング特徴ベクトルを含み、前記クラスタを生成するステップはさらに、
停止条件がまだ満たされていないとの判断に応答して、前記初期クラスタを更新するステップを含み、前記初期クラスタを更新するステップは、
クラスタの増加カウントが前記初期クラスタのうちの或る初期カウントよりも大きくなるように、前記クラスタの増加カウントを決定するステップと、
前記特徴空間における前記クラスタについてのそれぞれの重心位置を決定するステップと、
前記クラスタのうち、前記トレーニング特徴ベクトルが最も近接するそれぞれの重心位置を有するクラスタに、各トレーニング特徴ベクトルを割当てるステップと、
前記クラスタの前記境界を決定するステップとを含み、前記クラスタの各クラスタは対応する割当てられたトレーニング特徴ベクトルを含む、請求項24に記載の方法。
【請求項26】
第2のユーザ入力としての第2の入力発話にアクセスするステップと、
前記第2の入力発話から第2の入力特徴ベクトルを生成するステップと、
前記第2の入力特徴ベクトルが前記クラスタのうちの或るクラスタの境界の範囲内にあると判断するステップと、
前記第2の入力特徴ベクトルが前記或るクラスタの前記境界の範囲内にあることに基づいて、処理のために、前記第2の入力発話を前記或るクラスタに関連付けられたスキルボットに転送するステップとをさらに含む、請求項25に記載の方法。
【請求項27】
前記ユーザ入力に応答してアクションを実行するために前記入力発話を処理するように前記スキルボットを構成するステップをさらに含む、請求項26に記載の方法。
【請求項28】
前記トレーニング特徴ベクトルの前記複数のセット表現を生成するステップは、
前記トレーニング発話を会話カテゴリに分割するステップと、
前記会話カテゴリに対応する合成特徴ベクトルを生成するステップとを含み、前記合成特徴ベクトルを生成するステップは、前記会話カテゴリの各会話カテゴリごとに、前記会話カテゴリにおける前記トレーニング発話のそれぞれのトレーニング特徴ベクトルの集合としてそれぞれの合成特徴ベクトルを生成するステップを含む、請求項23に記載の方法。
【請求項29】
前記会話カテゴリの各会話カテゴリごとに、前記会話カテゴリにおける前記トレーニング発話の前記それぞれのトレーニング特徴ベクトルの集合として合成特徴ベクトルを生成するステップは、前記会話カテゴリにおける前記トレーニング発話の前記それぞれのトレーニング特徴ベクトルを平均化するステップを含む、請求項28に記載の方法。
【請求項30】
前記会話カテゴリは、各会話カテゴリがそれぞれのスキルボットインテントに対応するとともに前記それぞれのスキルボットインテントを表わすトレーニング発話を含むように、前記スキルボットが構成されるインテントに基づいて定義される、請求項28に記載の方法。
【請求項31】
前記会話カテゴリの各会話カテゴリは、前記スキルボットのそれぞれのスキルボットに対応するとともに、前記それぞれのスキルボットを表わすトレーニング発話を含む、請求項28に記載の方法。
【請求項32】
前記入力特徴ベクトルを前記トレーニング特徴ベクトルの前記複数のセット表現と比較するステップは、前記入力特徴ベクトルが前記合成特徴ベクトルのいずれとも十分に類似していないと判断するステップを含む、請求項28に記載の方法。
【請求項33】
前記マスタボットの前記動作はさらに、
第2のユーザ入力としての第2の入力発話にアクセスするステップと、
前記第2の入力発話から第2の入力特徴ベクトルを生成するステップと、
前記第2の入力特徴ベクトルが前記合成特徴ベクトルのうちの或る合成特徴ベクトルに十分に類似していると判断するステップと、
前記第2の入力特徴ベクトルが前記合成特徴ベクトルに十分に類似していることに基づいて、処理のために、前記第2の入力発話を前記合成特徴ベクトルに関連付けられたスキルボットに転送するステップとをさらに含む、請求項28に記載の方法。
【請求項34】
前記ユーザ入力に応答してアクションを実行するために前記入力発話を処理するように前記スキルボットを構成するステップをさらに含む、請求項33に記載の方法。
【請求項35】
請求項22から34のいずれか1項に記載の方法を実行するための手段を備える対話システム。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願の相互参照
本願は、米国特許法第119条(e)に準拠して、2019年9月12日出願の「チャットボットシステムにおける無関係な発話の検出(Detecting Unrelated Utterances in a Chatbot System)」と題された米国仮出願第62/899,700号の利益および優先権を主張するものであって、その内容があらゆる目的のために引用により本明細書に援用されている。
【0002】
背景
チャットボットは、人のユーザとの会話のためのインターフェイスを提供する人工知能ベースのソフトウェアアプリケーションまたはデバイスである。チャットボットは、会話中に提供されるユーザ入力に応答してさまざまなタスクを実行するようにプログラムすることができる。ユーザ入力は、たとえば、音声入力およびテキスト入力を含むさまざまな形式で供給することができる。このため、自然言語理解、音声テキスト化、および他の言語処理技術は、チャットボットによって実行される処理の一部として採用され得る。いくつかのコンピューティング環境では、ユーザと対話するために複数のチャットボットが利用可能であり、各チャットボットはそれぞれ異なるセットのタスクに対処する。
【発明の概要】
【0003】
概要
本明細書に記載の技術は、ユーザからの入力発話が、マスタボットにとって利用可能な1つ以上のスキルボットのセット内のチャットボットとも称されるいずれのスキルボットにも関係しないことを判断するためのものである。いくつかの実施形態では、マスタボットは、入力発話を評価し得るとともに、当該入力発話がスキルボットと無関係であると判断し得るか、または入力発話を適切なスキルボットへとルーティングし得る。
【課題を解決するための手段】
【0004】
いくつかの実施形態では、本明細書に記載のシステムは、トレーニングシステムおよびマスタボットを含む。トレーニングシステムは、分類器モデルをトレーニングするように構成される。分類器モデルをトレーニングすることは、スキルボットに関連付けられたトレーニング発話にアクセスすることを含み、当該トレーニング発話は、スキルボットの各スキルボットに関連付けられたそれぞれのトレーニング発話を含む。各スキルボットは、ユーザとの対話を提供するように構成される。トレーニングすることはさらに、トレーニング発話からトレーニング特徴ベクトルを生成することを含む。トレーニング特徴ベクトルは、各スキルボットに関連付けられたそれぞれのトレーニング特徴ベクトルを含む。トレーニングすることはさらに、トレーニング特徴ベクトルの複数のセット表現を生成することを含む。複数のセット表現の各セット表現は、トレーニング特徴ベクトルのサブセットに対応する。トレーニングすることはさらに、入力特徴ベクトルを複数のセット表現と比較するように分類器モデルを構成することを含む。マスタボットは、ユーザ入力としての入力発話にアクセスするとともに入力発話から入力特徴ベクトルを生成するように構成される。マスタボットはさらに、分類器モデルを用いて入力特徴ベクトルをトレーニング特徴ベクトルの複数のセット表現と比較するとともに、入力特徴ベクトルが複数のセット表現の範囲外にあることに基づいて、スキルボットによってユーザ入力に対処することができないという指示を出力するように構成される。
【0005】
付加的または代替的な実施形態においては、本明細書に記載の方法は、コンピュータシステムによって、スキルボットに関連付けられたトレーニング発話にアクセスするステップを含み、当該トレーニング発話は、当該スキルボットの各スキルボットごとにトレーニング発話のそれぞれのサブセットを含む。各スキルボットは、ユーザとの対話を提供するように構成される。当該方法はさらに、当該トレーニング発話からトレーニング特徴ベクトルを生成するステップを含み、当該トレーニング特徴ベクトルは、各トレーニング発話ごとにそれぞれのトレーニング特徴ベクトルを含む。当該方法はさらに、特徴空間におけるクラスタについての重心位置を決定するステップと、当該クラスタの中から当該トレーニング特徴ベクトルが最も近接するそれぞれの重心位置を有するそれぞれのクラスタに各トレーニング特徴ベクトルを割当てるステップとを含む。当該方法はさらに、停止条件が満たされるまで当該クラスタを繰返し修正するステップを含む。当該クラスタを修正するステップは、当該クラスタのカウントを更新されたカウントにまで増加するステップと、当該更新されたカウントに等しい量で当該クラスタについての新しい重心位置を決定するステップと、当該新しい重心位置への近接性に基づいて、当該トレーニング特徴ベクトルを当該クラスタに再割当てするステップとを含む。当該方法はさらに、当該クラスタの境界を決定するステップを含み、当該境界は当該クラスタの各クラスタごとにそれぞれの境界を含む。当該方法はさらに、入力発話にアクセスするステップと、当該入力発話を入力特徴ベクトルに変換するステップと、当該入力特徴ベクトルを当該クラスタの当該境界と比較することによって、当該入力特徴ベクトルが当該クラスタの当該境界の範囲外にあると判断するステップとを含む。加えて、当該方法は、当該入力特徴ベクトルが当該特徴空間内の当該クラスタの範囲外にあることに基づいて、当該スキルボットによって当該入力発話に対処することができないという指示を出力するステップを含む。
【0006】
さらに付加的または代替的な実施形態においては、本明細書に記載の方法は、コンピュータシステムによって、スキルボットに関連付けられたトレーニング発話にアクセスするステップを含む。当該トレーニング発話は、当該スキルボットの各スキルボットごとにトレーニング発話のそれぞれのサブセットを含む。各スキルボットは、ユーザとの対話を提供するように構成される。当該方法はさらに、当該トレーニング発話からトレーニング特徴ベクトルを生成するステップを含み、当該トレーニング特徴ベクトルは、当該トレーニング発話の各トレーニング発話ごとにそれぞれのトレーニング特徴ベクトルを含み、当該方法はさらに、当該トレーニング発話を会話カテゴリに分割するステップを含む。当該方法はさらに、当該会話カテゴリに対応する合成特徴ベクトルを生成するステップを含む。当該合成特徴ベクトルを生成するステップは、当該会話カテゴリの各会話カテゴリごとに、当該会話カテゴリ内の当該トレーニング発話のそれぞれのトレーニング特徴ベクトルの集合としてそれぞれの合成特徴ベクトルを生成するステップを含む。当該方法はさらに、入力発話にアクセスするステップと、当該入力発話を入力特徴ベクトルに変換するステップと、当該入力特徴ベクトルを当該合成特徴ベクトルと比較することによって、当該入力特徴ベクトルが当該合成特徴ベクトルに十分に類似していないと判断するステップとを含む。加えて、当該方法は、当該入力特徴ベクトルが当該合成特徴ベクトルと十分に類似していないことに基づいて、当該スキルボットによって当該入力発話に対処することができないという指示を出力するステップを含む。
【0007】
さらに付加的または代替的な実施形態においては、本明細書に記載のシステムはマスタボットを含む。当該マスタボットは、ユーザ入力としての入力発話にアクセスする動作と、入力発話から入力特徴ベクトルを生成する動作と、分類器モデルを用いて、入力特徴ベクトルをトレーニング特徴ベクトルの複数のセット表現と比較する動作と、入力特徴ベクトルが複数のセット表現の範囲外にあることに基づいて、スキルボットによってユーザ入力に対処することができないという指示を出力する動作とを含む動作を実行するように構成される。スキルボットの各スキルボットは、ユーザとの対話を提供するように構成される。
【0008】
さらに付加的または代替的な実施形態においては、本明細書に記載の方法は、入力発話にアクセスするステップを含む。当該方法はさらに、当該入力発話を入力特徴ベクトルに変換するステップを含む。当該方法はさらに、当該入力特徴ベクトルを特徴空間内のクラスタの境界と比較することによって、当該入力特徴ベクトルが当該クラスタの当該境界の範囲外にあると判断するステップを含む。当該方法はさらに、当該入力特徴ベクトルが当該特徴空間内の当該クラスタの範囲外にあることに基づいて、当該スキルボットによって当該入力発話に対処することができないという指示を出力するステップを含む。当該スキルボットの各スキルボットは、ユーザとの対話を提供するように構成される。
【0009】
さらに付加的または代替的な実施形態においては、本明細書に記載の方法は、入力発話にアクセスするステップを含む。当該方法はさらに、当該入力発話を入力特徴ベクトルに変換するステップを含む。当該方法はさらに、当該入力特徴ベクトルを合成特徴ベクトルと比較することによって、当該入力特徴ベクトルが当該合成特徴ベクトルに十分に類似していないと判断するステップを含む。当該合成特徴ベクトルは会話カテゴリに対応する。当該方法はさらに、当該入力特徴ベクトルが当該合成特徴ベクトルに十分に類似していないことに基づいて、スキルボットによって当該入力発話に対処することができないという指示を出力するステップを含む。当該スキルボットの各スキルボットは、ユーザとの対話を提供するように構成される。
【0010】
さらに付加的または代替的な実施形態においては、本明細書に記載の方法は、ユーザ入力としての入力発話にアクセスするステップを含む。当該方法はさらに、当該入力発話から入力特徴ベクトルを生成するステップを含む。当該方法はさらに、分類器モデルを用いて、当該入力特徴ベクトルを当該トレーニング特徴ベクトルの複数のセット表現と比較するステップを含む。当該方法はさらに、当該入力特徴ベクトルが当該複数のセット表現の範囲外にあることに基づいて、スキルボットによって当該ユーザ入力に対処することができないという指示を出力するステップを含む。当該スキルボットの各スキルボットは、ユーザとの対話を提供するように構成される。
【0011】
さらに付加的または代替的な実施形態においては、本明細書に記載の方法は、分類器モデルをトレーニングするために用いられる。当該方法は、スキルボットに関連付けられたトレーニング発話にアクセスするステップを含み、当該トレーニング発話は、当該スキルボットの各スキルボットに関連付けられたそれぞれのトレーニング発話を含む。当該スキルボットの各スキルボットは、ユーザとの対話を提供するように構成される。当該方法はさらに、当該トレーニング発話からトレーニング特徴ベクトルを生成するステップを含み、当該トレーニング特徴ベクトルは、当該スキルボットの各スキルボットに関連付けられたそれぞれのトレーニング特徴ベクトルを含む。当該方法はさらに、当該トレーニング特徴ベクトルの複数のセット表現を生成するステップを含む。当該複数のセット表現の各セット表現は、当該トレーニング特徴ベクトルのサブセットに対応する。当該方法はさらに、入力特徴ベクトルを当該トレーニング特徴ベクトルの当該複数のセット表現と比較するように当該分類器モデルを構成するステップを含む。
【0012】
さらに付加的または代替的な実施形態においては、本明細書に記載の方法は、スキルボットによって入力発話に対処することができるかどうかを判断するために用いることができるクラスタを生成するために用いられる。当該方法は、コンピュータシステムによって、スキルボットに関連付けられたトレーニング発話にアクセスするステップを含み、当該トレーニング発話は、当該スキルボットの各スキルボットごとにトレーニング発話のそれぞれのサブセットを含む。当該スキルボットの各スキルボットは、ユーザとの対話を提供するように構成される。当該方法はさらに、当該トレーニング発話からトレーニング特徴ベクトルを生成するステップを含み、当該トレーニング特徴ベクトルは、当該トレーニング発話の各トレーニング発話ごとにそれぞれのトレーニング特徴ベクトルを含む。当該方法はさらに、特徴空間内のクラスタについての重心位置を決定するステップ含む。当該方法はさらに、当該クラスタのうち、当該クラスタの中から当該トレーニング特徴ベクトルが最も近接するそれぞれの重心位置を有するそれぞれのクラスタに、当該トレーニング特徴ベクトルの各トレーニング特徴ベクトルを割当てるステップと、停止条件が満たされるまで当該クラスタを繰返し修正するステップとを含む。当該クラスタを修正するステップは、当該クラスタのカウントを更新されたカウントにまで増加するステップと、更新されたカウントに等しい量で当該クラスタについての新しい重心位置を決定するステップと、当該新しい重心位置への近接性に基づいて、当該トレーニング特徴ベクトルを当該クラスタに再割当てするステップとを含む。当該方法はさらに、当該クラスタの境界を決定するステップを含み、当該境界は、当該クラスタの各クラスタごとにそれぞれの境界を含む。
【0013】
さらに付加的または代替的な実施形態においては、本明細書に記載の方法は、スキルボットによって入力発話に対処することができるかどうかを判断するために用いることができる合成特徴ベクトルを生成するために用いられる。当該方法はさらに、コンピュータシステムによって、スキルボットに関連付けられたトレーニング発話にアクセスするステップを含み、当該トレーニング発話は、当該スキルボットの各スキルボットごとにトレーニング発話のそれぞれのサブセットを含む。当該スキルボットの各スキルボットは、ユーザとの対話を提供するように構成される。当該方法はさらに、当該トレーニング発話からトレーニング特徴ベクトルを生成するステップを含み、当該トレーニング特徴ベクトルは、当該トレーニング発話の各トレーニング発話ごとにそれぞれのトレーニング特徴ベクトルを含む。当該方法はさらに、当該トレーニング発話を会話カテゴリに分割するステップを含む。当該方法はさらに、当該会話カテゴリに対応する合成特徴ベクトルを生成するステップを含む。当該合成特徴ベクトルを生成するステップは、当該会話カテゴリの各会話カテゴリごとに、当該会話カテゴリ内の当該トレーニング発話のそれぞれのトレーニング特徴ベクトルの集合としてそれぞれの合成特徴ベクトルを生成するステップを含む。
【0014】
さらに付加的または代替的な実施形態では、本明細書に記載のシステムは、上述の方法のいずれかを実行するための手段を含む。
【0015】
上述したことは、他の特徴および実施形態とともに、以下の明細書、添付の特許請求の範囲、および添付の図面を参照すると、より明らかになるだろう。
【図面の簡単な説明】
【0016】
【
図1】本明細書に記載のいくつかの実施形態に従った、チャットボットとも称されるさまざまなスキルボットと通信するマスタボットを含む環境を示すブロック図である。
【
図2】本明細書に記載のいくつかの実施形態に従った、入力発話をスキルボットに向けるとともに、適用可能な場合、特定の入力発話が利用可能なスキルボットと無関係であると判断するためにマスタボットを構成および使用する方法を示すフロー図である。
【
図3】本明細書に記載の特定の実施形態に従った、入力発話が利用可能なスキルボットと無関係であるかどうかを判断するように構成されたマスタボットを示すブロック図である。
【
図4】本明細書に記載の特定の実施形態に従った、スキルボットを示す図である。
【
図5】本明細書に記載のいくつかの実施形態に従った、入力発話が利用可能なスキルボットと無関係であるかどうかを判断するためにマスタボットの分類器モデルを初期化する方法を示すフロー図である。
【
図6】本明細書に記載のいくつかの実施形態に従った、分類器モデルをトレーニングするために用いられるトレーニング発話からのトレーニング特徴ベクトルの生成を示す図である。
【
図7】本明細書に記載のいくつかの実施形態に従った、マスタボットの分類器モデルを用いて、入力発話がマスタボットに関連付けられたいずれの利用可能なスキルボットとも無関係であるかどうかを判断する方法の一例を示すフロー図である。
【
図8】本明細書に記載のいくつかの実施形態に従った、マスタボットの分類器モデルを用いて、入力発話がマスタボットに関連付けられたいずれの利用可能なスキルボットとも無関係であるかどうかを判断する方法の別の例を示すフロー図である。
【
図9】本明細書に記載のいくつかの実施形態に従った、例示的な発話の特徴ベクトルを表わす点を含む特徴空間の一例を示す図である。
【
図10】本明細書に記載のいくつかの実施形態に従った、例示的な発話の特徴ベクトルのインテントクラス間にクラス境界を有する
図9の特徴空間の一例を示す図である。
【
図11】本明細書に記載のいくつかの実施形態に従った、共通のインテントに関連付けられた特徴ベクトルをそれぞれのクラスタに分離するクラス境界を有する
図9の特徴空間の一例を示す図である。
【
図12】本明細書に記載のいくつかの実施形態に従った、共通のインテントに関連付けられた特徴ベクトルをそれぞれのクラスタに分離する、重複するクラス境界を有する
図9の特徴空間の一例を示す図である。
【
図13】本明細書に記載のいくつかの実施形態に従った、特徴ベクトルをクラスタに分離するクラス境界を有する
図9の特徴空間の別の例を示す図である。
【
図14】本明細書に記載のいくつかの実現例に従った、クラスタを利用して、入力発話が利用可能なスキルボットと無関係であるかどうかを判断するために、マスタボットの分類器モデルを初期化する方法を示すフロー図である。
【
図15】本明細書に記載のいくつかの実施形態に従った、
図14の方法の特定の局面の実行例を示す図である。
【
図16】本明細書に記載のいくつかの実施形態に従った、マスタボットの分類器モデルを用いて、入力発話がマスタボットに関連付けられたいずれの利用可能なスキルボットとも無関係であるかどうかを判断する方法を示すフロー図である。
【
図17】本明細書に記載のいくつかの実施形態に従った、入力特徴ベクトルがすべてのクラスタ境界の範囲外にある場合に当該方法を実行する一例を示す図である。
【
図18】本明細書に記載のいくつかの実施形態に従った、合成特徴ベクトルを利用して、入力発話が利用可能なスキルボットと無関係であるかどうかを判断するために、マスタボットの分類器モデルを初期化する方法を示すフロー図である。
【
図19】本明細書に記載のいくつかの実施形態に従った、インテントベースの会話カテゴリを用いた合成特徴ベクトルの生成を示す図である。
【
図20】本明細書に記載のいくつかの実施形態に従った、ボットベースの会話カテゴリを用いた合成特徴ベクトルの生成を示す図である。
【
図21】本明細書に記載のいくつかの実施形態に従った、マスタボットの分類器モデルを用いて、入力発話がマスタボットに関連付けられたいずれの利用可能なスキルボットとも無関係であるかどうかを判断する方法を示すフロー図である。
【
図22】本明細書に記載のいくつかの実施形態に従った、入力発話に対処するためにスキルボットを選択する方法の一例を示すフロー図である。
【
図23】本明細書に記載のいくつかの実施形態に従った、入力発話に対処するためにスキルボットを選択する方法の別の例を示す図である。
【
図24】本明細書に記載のいくつかの実施形態を実現するための分散システムを示す図である。
【
図25】本明細書に記載のいくつかの実施形態に従った、さまざまなチャットボット関連のサービスがクラウドサービスとして提供され得るクラウドベースのシステム環境を示す図である。
【
図26】本明細書に記載のいくつかの実施形態を実現するために用いられ得るコンピュータシステムの一例を示す図である。
【発明を実施するための形態】
【0017】
詳細な説明
以下の記載では、説明を目的として、特定の実施形態を完全に理解できるようにするために具体的な詳細が述べられる。しかしながら、さまざまな実施形態がこれらの具体的な詳細なしでも実施され得ることは明らかであるだろう。図および説明は限定的であることを意図するものではない。「例示的」という語は、本明細書では、「例、事例、または例示としての役割を果たす」ことを意味するために用いられる。本明細書で「例示的」と説明される実施形態または設計はいずれも、必ずしも他の実施形態または設計よりも好ましいかまたは有利であると解釈されるべきではない。
【0018】
本明細書では、方法、システム、1つ以上のプロセッサによって実行可能なプログラム、コードまたは命令を格納する非一時的なコンピュータ可読記憶媒体などを含むさまざまな実施形態について説明する。
【0019】
上述したように、特定の環境は、本明細書ではスキルボットとも称される複数のチャットボットを含んでおり、このため、各チャットボットは、タスクまたはスキルのそれぞれのセットに対処するように特化されている。その場合、或るユーザからのユーザ入力をそのユーザ入力に対処するのに最も適したチャットボットに自動的に向けることと、さらに、ユーザ入力がチャットボットと無関係でありこのため利用可能なチャットボットのいずれによっても対処することができなくなる時を迅速に識別することと、が有利となるだろう。本明細書に記載のいくつかの実施形態は、マスタボットなどのコンピューティングシステムが、ユーザ入力に対する予備的処理を実行して、ユーザ入力がチャットボットと無関係である(すなわち、チャットボットによって対処することができない)かどうかを判断することを可能にする。その結果、チャットボットが無関係なユーザ入力を処理しようと試みることによってコンピューティングリソースが浪費されることがなくなる。したがって、本明細書に記載の特定の実施形態は、チャットボットのコンピューティングリソースを節約し、無関係なユーザ入力を早期に検出することで、或る環境内のチャットボットがそのようなユーザ入力を処理することを防ぐ。さらに、特定の実施形態は、そのようなユーザ入力に対処することができない1つ以上のチャットボットにそのようなユーザ入力をマスタボットが送信するのを防ぐことによって、ネットワークリソースを節約する。
【0020】
複数のチャットボットを含む或る環境では、マスタボットは、どのチャットボットが入力発話を処理すべきかを判断する分類器を含み得る。たとえば、分類器は、確率のセットを出力するニューラルネットワークまたは他の何らかのMLモデルとして実現され得る。各々の確率は、チャットボットに関連付けられるとともに、チャットボットが入力発話に対処することができる信頼度レベルを示す。このタイプのマスタボットは、信頼度レベルが最も高いチャットボットを選択するとともに、そのチャットボットに入力発話を転送する。しかしながら、マスタボットは、無関係な入力発話に関して、誤って高い信頼度スコアを提供する可能性もある。なぜなら、チャットボットが入力発話に対処するように構成されているかどうかに関して全く考慮することなく、利用可能なチャットボット間で信頼度が実質的に分割されるからである。これは、チャットボットが対処するように定められていない入力発話を当該チャットボットが処理するという結果をもたらす可能性がある。チャットボットは、最終的に、入力発話またはユーザに対する明確化を求める要求に対処することができないという指示を提供する可能性もある。しかしながら、これは、チャットボットが入力発話を処理するためにリソースを消費した後に起こり得る。
【0021】
代替的には、開発者は、いずれの利用可能なチャットボットによっても対処することができない発話をマスタボットが認識するのを助けるために、マスタボットをトレーニングすることもある。たとえば、マスタボットは、無関係な発話を認識するようマスタボットを教育するために、関係する発話(すなわち、チャットボットによって対処することができる)と、無関係な発話(すなわち、チャットボットによって対処することができない)とを含むラベル付けされたトレーニングデータでトレーニングされ得る。しかしながら、マスタボットがすべての無関係な発話を認識することを可能にするためにトレーニングデータの範囲が充分である可能性は低い。トレーニング中に用いられる無関係な発話のいずれにも類似していない入力発話が、最終的に、処理のためにチャットボットに転送されることになり得る。結果として、マスタボットをトレーニングするための計算リソースが増加することとなり、当該マスタボットは、依然として、広範囲にわたる無関係な発話を認識することに失敗するだろう。
【0022】
本明細書に記載される特定の実施形態は、上述の技術の欠点に対処するとともに、そのような技術の代わりに、またはそのような技術と併せて使用され得る。特定の実施形態では、ユーザ入力として提供される入力発話(すなわち、テキスト形式である可能性のある自然言語フレーズ)が、利用可能なスキルボットのセット内のいずれのスキルボットにも関係しているかどうかに関して、本明細書中で分類器モデルと称されるトレーニング済み機械学習(machine-learning:ML)モデルを用いて、判断が下される。この判断は、たとえば、分類器モデルを利用するマスタボットによって実行することができる。マスタボットは、入力発話から入力特徴ベクトルを生成する。一例では、マスタボットの分類器モデルは、特徴ベクトルをトレーニングデータの特徴ベクトルであるトレーニング特徴ベクトルのクラスタのセットと比較して、入力特徴ベクトルがクラスタのいずれかの範囲内に収まるかどうかを判断する。入力特徴ベクトルが全てのクラスタの範囲外にある場合、マスタボットは、入力発話がスキルボットと無関係であると判断する。別の例では、マスタボットの分類器モデルは、入力特徴ベクトルを合成特徴ベクトルのセットと比較する。各々の合成特徴ベクトルは、それぞれのカテゴリに属する1つ以上のトレーニング特徴ベクトルを表わしている。入力特徴ベクトルが合成特徴ベクトルのいずれとも十分に類似していない場合、マスタボットは、当該入力発話がスキルボットと無関係であると判定する。入力発話がいずれのボットとも無関係であると判断された場合、入力発話は「非クラス(none class)」と見なされる可能性があり、対処用のいずれのボットにもルーティングされない。代わりに、入力発話の処理が終了する可能性があるか、または、ユーザが意図したものを明確にするようマスタボットがユーザを促す可能性がある。
【0023】
このように改善されたルーティングは、最終的にシステムによって有効に対処されない恐れのあるクエリへの対処に計算リソースが振り向けられることを防ぎ得る。これにより、システムの全体的な応答性が改善され得る。加えて、適切にトレーニングされた専門のチャットボットまたはチャットボットのセットによってより容易に対処されるようにクエリを言い換えるかまたは明確化するようにユーザが指導され得るので、ユーザ経験が改善され得る。このため、処理およびネットワークリソースが節約されることに加えて、ユーザクエリに対処するための平均時間が、ボットネットワークを介するこのような改善されたルーティングによって短縮され得る。
【0024】
入力発話が少なくとも1つのボットに関係していると判断された場合、入力発話はインテント分類がなされてもよい。インテント分類では、そのインテントに関連付けられた会話フローを開始させるために、入力発話に最も密に合致するインテントが判断される。たとえば、スキルボットの各インテントは、ユーザとの会話に関するさまざまな会話状態を定義する状態機械に関連付けられてもよい。インテント分類は、個々のボットレベルで実行することができる。たとえば、マスタボットに登録された各スキルボットは、その特定のボットに関連付けられた所定の発話に関してトレーニングされる独自の分類器(たとえば、MLベースの分類器)を有してもよい。入力発話は、ボットのインテントのうちどれが発話に最もよく合致しているかを判断するために、入力発話に最も密に関係するボットのインテント分類器に入力され得る。
【0025】
これにより、結果として、ユーザ経験が改善され得る。なぜなら、ユーザのクエリが、非専門的な一般的ボットよりもより適切に当該ユーザのクエリに対処するように備えられ得るかまたは非専門的な一般的ボットよりも迅速に当該ユーザのクエリに対処し得る、選択されたスキルボットまたは選択されたスキルボットのセットに迅速にルーティングされ得るからである。改善されたルーティングにより、付加的または代替的には、結果として、用いられる計算リソースがより少なくなり得る。なぜなら、選択されたスキルボットまたはスキルボットの選択されたセットがユーザクエリへの対処時に消費する処理リソースが、非専門的な一般的ボットの場合よりも少なくなり得るからである。
【0026】
例示的なチャットボットシステムの概要
図1は、本明細書に記載のいくつかの実施形態に従った、チャットボットとも称されるさまざまなスキルボット116と通信するマスタボット114を含む環境のブロック図である。この環境は、開発者がデジタルアシスタント(digital assistant:DA)106またはチャットボットシステムをプログラムおよび展開することを可能にするデジタルアシスタントビルダープラットフォーム(digital assistant builder platform:DABP)102を含む。DA106は、1つ以上のスキルボット116を含むかまたは1つ以上のスキルボット116にアクセスするマスタボット114を含むかまたは当該マスタボット114にアクセスする。各スキルボット116は、ユーザに1つ以上のスキルまたはタスクを提供するように構成される。いくつかの実施形態では、マスタボット114およびスキルボット116は、DA106自体の上で実行される。しかしながら、代替的には、マスタボット114のみがDA106上で実行されて、他の場所で(たとえば、別のコンピューティングデバイス上で)実行されるスキルボット116と通信する。
【0027】
いくつかの実施形態では、DABP102を用いて、1つ以上のDA106をプログラムすることができる。たとえば、
図1に示すように、開発者は、DABP102を用いて、ユーザがアクセスするためのデジタルアシスタント106を作成および展開することができる。たとえば、DABP102は、銀行の顧客が使用するための1つ以上のデジタルアシスタントを作成するために銀行によって用いられ得る。デジタルアシスタント106を作成するために、同じDABP102プラットフォームが複数の企業によって用いられ得る。別の例として、レストラン(たとえば、ピザ屋)の所有者は、DABP102を用いて、レストランの顧客が食品を注文すること(たとえば、ピザを注文すること)を可能にするデジタルアシスタントを作成および展開することもある。付加的にまたは代替的には、たとえば、DABP102は、1つ以上のスキルボット116が既存のデジタルアシスタント106のマスタボット114にアクセス可能になるように1つ以上のスキルボット116を展開するために、開発者によって用いられ得る。
【0028】
付加的または代替的には、いくつかの実施形態では、以下でさらに説明するように、DABP102は、デジタルアシスタントのマスタボット114をトレーニングすることで、入力発話が利用可能なスキルボット116のうちのいずれとも無関係になる時にマスタボット114が認識することを可能にするように構成される。
【0029】
本開示の目的のために、「デジタルアシスタント」は、デジタルアシスタントのユーザが自然言語の会話を通じてさまざまなタスクを達成するのを助けるエンティティである。デジタルアシスタントは、ソフトウェアのみを用いて(たとえば、デジタルアシスタントは、1つ以上のプロセッサによって実行可能なプログラム、コード、または命令を用いて実現されるデジタルエンティティである)、ハードウェアを用いて、またはハードウェアとソフトウェアとの組合わせを用いて、実現され得る。デジタルアシスタントは、コンピュータ、携帯電話、腕時計、電化製品、車両などの汎用または専用のハードウェアを含み得るさまざまな物理的なシステムまたはデバイスにおいて具現化または実現することができる。デジタルアシスタントはチャットボットシステムと称されることもある。したがって、本開示の目的のために、デジタルアシスタントおよびチャットボットシステムという語は同義であり得る。
【0030】
いくつかの実施形態では、デジタルアシスタント106は、当該デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を通じてさまざまなタスクを実行するために用いることができる。会話の一部として、ユーザは、ユーザ入力110に対して応答112を提供し得るとともに、任意には、(たとえば、ユーザ入力がタスクを実行するための命令を含む場合)ユーザ入力110に関係する1つ以上のタスクを実行し得るデジタルアシスタント106にユーザ入力110を提供し得る。会話または対話は、1つ以上のユーザ入力110および応答112を含み得る。会話を通じて、ユーザは、デジタルアシスタント106によって実行されるべき1つ以上のタスクを要求することができ、デジタルアシスタント106は、それに応じて、ユーザが要求したタスクを実行するとともにユーザに対して適切な応答で返答するように構成される。
【0031】
ユーザ入力110は、発話と称される自然言語形式であり得る。発話は、ユーザが文、質問、テキスト断片、またはさらには単一の単語などの句をタイプして当該テキストをデジタルアシスタント106に入力として提供するなどの場合、テキスト形式であり得る。いくつかの実施形態では、ユーザ発話は、ユーザがデジタルアシスタント106への入力として提供される何かを発話するなどの場合、音声入力または発話形式であり得る。デジタルアシスタント106は、このような発話を取込むためのマイクロフォンを含み得るかまたは当該マイクロフォンにアクセスし得る。発話は、典型的には、ユーザによって話される言語である。発話が音声入力の形式である場合、当該音声入力は同じ言語のテキスト発話に変換されてもよく、デジタルアシスタント106はテキスト発話をユーザ入力として処理してもよい。音声入力をテキスト発話に変換するために、さまざまな音声-テキスト処理技術が用いられ得る。いくつかの実施形態では、音声-テキスト変換はデジタルアシスタント106自体によって実行されるが、さまざまな実現例が本開示の範囲内にある。本開示の目的のために、入力発話(すなわち、ユーザ入力として提供される発話)は、デジタルアシスタント106のユーザ108によって直接提供されたテキスト発話であるか、または、入力音声発話をテキスト形式に変換した結果であると想定される。しかしながら、これは、いかなる態様にも限定または制限することを意図するものではない。
【0032】
発話は、断片、文、複数の文、1つ以上の単語、1つ以上の質問、または、上述のタイプの組合せなどであり得る。いくつかの実施形態では、対応するマスタボット114およびスキルボット116を含むデジタルアシスタント106は、自然言語理解(natural language understanding:NLU)技術を発話に適用して、ユーザ入力の意味を理解するように構成される。発話のためのNLU処理の一環として、デジタルアシスタント106は、発話の意味を理解するための処理を実行してもよく、これは、1つ以上のインテントと、その発話に対応する1つ以上のエンティティとを識別することを伴う。発話の意味を理解すると、そのマスタボット114およびスキルボット116を含むデジタルアシスタント106は、理解された意味またはインテントに応じて1つ以上のアクションまたは動作を実行し得る。
【0033】
たとえば、ユーザ入力は、「ピザを注文したい」などの入力発話を提供することによって、ピザの注文を要求してもよい。このような発話を受信すると、デジタルアシスタント106は、この発話の意味を判断して適切なアクションを取る。適切なアクションは、たとえば、ユーザが注文したいピザのタイプ、ピザのサイズ、またはピザの任意のトッピングなどに関するユーザ入力を要求する質問を用いてユーザに応答することを含み得る。デジタルアシスタント106によって提供される応答112はまた、自然言語形式であってもよく、典型的には入力発話と同じ言語であってもよい。これらの応答112を生成する一環として、デジタルアシスタント106は、自然言語生成(natural language generation:NLG)を実行してもよい。ユーザがピザを注文するために、ユーザとデジタルアシスタント106との間の会話を通じて、デジタルアシスタントは、ピザを注文するのに必要な全ての情報を提供するようにユーザを案内してもよく、さらに、会話の終了時に、ピザを注文させてもよい。デジタルアシスタント106は、ピザが注文されたことを示す情報をユーザに出力することによって、会話を終了させてもよい。
【0034】
概念レベルでは、デジタルアシスタント106は、そのマスタボット114および関連するスキルボット116と共に、ユーザから受信した発話に応答してさまざまな処理を実行する。いくつかの実施形態では、この処理は、たとえば、(NLUを用いて)入力発話の意味を理解すること、発話に応答して実行されるべきアクションを決定すること、適切な時にアクションを実行させること、発話に応答してユーザに出力すべき応答を生成すること、および、応答をユーザに出力することを含む、一連または一続きの処理ステップを含む。NLU処理は、発話の構造および意味を理解するために受信した入力発話を構文解析することと、より容易に構文解析および理解される形式(たとえば、論理形式)を展開するために発話を精緻化および改良することとを含み得る。応答を生成することはNLG技術を使用することを含み得る。したがって、デジタルアシスタント106によって実行される自然言語処理は、NLU処理とNLG処理との組合わせを含み得る。
【0035】
デジタルアシスタント106によって実行されるNLU処理は、文解析(たとえば、トークン化、見出語別の分類、品詞タグの識別、名前付きエンティティの識別、文構造を表わすための従属ツリーの生成、文の節への発話の分割、個々の節の分析、前方照応の分解、チャンキングの実行など)などのさまざまなNLU処理を含み得る。特定の実施形態では、NLU処理またはその一部は、デジタルアシスタント106自体によって実行される。付加的にまたは代替的には、デジタルアシスタント106は、NLU処理のいくつかの部分を実行するために他のリソースを用いてもよい。たとえば、入力発話の構文および構造は、パーサ、品詞のタグ付けツール、または、デジタルアシスタント106とは別個の名前きエンティティ認識器を用いて入力発話を処理することによって識別され得る。
【0036】
この開示において提供されるさまざまな例は英語での発話を示しているが、これは一例としてのみ意図されるものである。特定の実施形態では、デジタルアシスタント106は、付加的または代替的には、英語以外の言語での発話に対処することができる。デジタルアシスタント106は、さまざまな言語のための処理を実行するように構成されたサブシステム(たとえば、NLU機能を実現する構成要素)を提供し得る。これらのサブシステムは、デジタルアシスタント106上で実行され得るNLUコアサーバからのサービスコールを用いて呼出すことができるプラグ可能なユニットとして実現されてもよい。これにより、さまざまな順序での処理を可能にすることを含め、NLU処理を各言語ごとに融通性があり拡張可能なものにする。言語パックは個々の言語のために提供されてもよい。言語パックはNLUコアサーバから提供され得るサブシステムのリストを登録することができる。
【0037】
いくつかの実施形態では、デジタルアシスタント106は、さまざまな異なるチャネルを介して、たとえば、特定のアプリケーションを介して、ソーシャルメディアプラットフォームを介して、さまざまなメッセージングサービスおよびアプリケーション(たとえば、インスタントメッセージングアプリケーション)を介して、または他のアプリケーションもしくはチャネルを介して、そのユーザ108にとって利用可能またはアクセス可能となり得る。単一のデジタルアシスタントは、それが実行され得るとともに異なるサービスによって同時にアクセスされ得るように構成されるいくつかのチャネルを有し得る。付加的または代替的には、デジタルアシスタント106は、ユーザにとってローカルなデバイス上で実現されてもよく、このため、ユーザまたは他の近くのユーザによってい用いられるパーソナルデジタルアシスタントであってもよい。
【0038】
デジタルアシスタント106は1つ以上のスキルに関連付けられてもよい。特定の実施形態では、これらのスキルは、スキルボット116と称される個々のチャットボットを通じて実現され、その各々は、在庫を追跡すること、タイムカードを提出すること、費用レポートを作成すること、食品を注文すること、銀行口座をチェックすること、予約を行なうこと、ウィジェットを購入すること、または他のタスクなどの特定のタイプのタスクを履行するためにユーザと対話するように構成されている。たとえば、
図1に示される実施形態の場合、デジタルアシスタント106は、各々が特定のスキルまたはスキルのセットを実現する3つのスキルボット116を含むか、または当該3つのスキルボット116にアクセスする。しかしながら、さまざまな量のスキルボット116がデジタルアシスタント106によってサポートされ得る。各スキルボット116は、ハードウェア、ソフトウェア、または両方の組合わせとして実現されてもよい。
【0039】
デジタルアシスタント106に関連付けられ、これによりスキルボット116として実現される各スキルは、デジタルアシスタント106のユーザとの会話を通じて、当該ユーザがタスクを完了するのを支援するように構成される。会話は、ユーザによって提供されるテキストまたは音声のユーザ入力110と、デジタルアシスタント106を介してスキルボット116によって提供される応答112との組合わせを含み得る。これらの応答112は、ユーザへのテキストメッセージまたは音声メッセージの形式であってもよく、または、ユーザに提示されて当該ユーザが選択を行なうための単純なユーザインターフェイス要素(たとえば、選択リスト)を用いて提供されてもよい。
【0040】
スキルボット116をデジタルアシスタントに関連付けるかまたは追加することができるさまざまな方法がある。いくつかの事例では、スキルボット116は、企業によって開発され得るとともに、さらに、たとえば、スキルボット116をデジタルアシスタント106に登録するためにDABP102によって提供されるユーザインターフェイスを介して、DABP102を用いてデジタルアシスタント106に追加され得る。他の事例では、スキルボット116は、DABP102を用いて開発および作成され得るとともに、さらに、DABP102を用いてデジタルアシスタント106に追加され得る。さらに他の事例では、DABP102は、広範囲のタスクに向けられた複数のスキルを提供するオンラインデジタルストア(「スキルストア」と称される)を提供する。スキルストアを介して提供されるスキルはまた、さまざまなクラウドサービスを公開し得る。DABP102を用いてデジタルアシスタント106にスキルを追加するために、開発者は、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択されたスキルがデジタルアシスタント106に追加されるべきであることを示すことができる。スキルストアからのスキルは、そのまま、または変更した形態で、デジタルアシスタントに追加することができる。スキルを追加するためにスキルボット116の形態でデジタルアシスタント106に追加されるDABP102は、スキルボット116と通信するようにデジタルアシスタント106のマスタボット114を構成し得る。加えて、DABP102は、入力発話がデジタルアシスタント106のスキルボット116のいずれかと無関係であるかどうかを判断するために、スキルボット116が、マスタボット114によって用いられるデータに対処し、これにより当該データを更新することができる発話をマスタボット114が認識することを可能にするスキルボットデータでマスタボット114を構成し得る。このようにマスタボット114を構成するための動作を以下でより詳細に説明する。
【0041】
デジタルアシスタント106で使用可能なスキルボット116と、これによるスキルとは大きく異なり得る。たとえば、企業のために開発されたデジタルアシスタント106の場合、デジタルアシスタントのマスタボット114は、特定の機能を有するスキルボット116、たとえば、顧客関係管理(customer relationship management:CRM)に関係する機能を実行するためのCRMボット、企業資源計画(enterprise resource planning:ERP)に関係する機能を実行するためのERPボット、人的資本管理(human capital management:HCM)に関係する機能を実行するためのHCMボットなどとインターフェイスを取り得る。他のさまざまなスキルも、デジタルアシスタントにとって利用可能であり得るとともに、デジタルアシスタント106の意図された用途に左右され得る。
【0042】
デジタルアシスタント106を実現するために、さまざまなアーキテクチャが用いられ得る。特定の実施形態では、デジタルアシスタント106は、マスタ・子のパラダイムまたはアーキテクチャを用いて実現されてもよい。このパラダイムに従うと、デジタルアシスタント106は、マスタボット114を含むことによって、またはマスタボット114にアクセスすることによってマスタボット114として機能し、スキルボット116である1つ以上の子ボットと対話する。スキルボット116は、デジタルアシスタント106上で直接実行されてもされなくてもよい。
図1に示す例では、デジタルアシスタント106は、マスタボット114および3つのスキルボット116を含む(すなわち、アクセスして用いる)。しかしながら、過剰な量のスキルボット116を用いることもでき、その量は、スキルがデジタルアシスタント106に追加されるかまたはそこから除去されるのに応じて時間とともに変化し得る。
【0043】
マスタ・子のアーキテクチャに従って実現されるデジタルアシスタント106は、デジタルアシスタント106のユーザが複数のスキルボット116と対話することを可能にし、これにより、統合ユーザインターフェイスを通じて、すなわちマスタボット114を介して、別個に実現され得る複数のスキルを利用することを可能にする。いくつかの実施形態では、ユーザがデジタルアシスタント106に関与すると、ユーザ入力がマスタボット114によって受信される。次いで、マスタボット114は、ユーザ入力として作用する入力発話の意味を判断するために予備処理を実行する。この場合、入力発話は、たとえば、ユーザ入力自体またはユーザ入力のテキストバージョンであり得る。マスタボット114は、入力発話が、当該入力発話にとって利用可能なスキルボット116と無関係であるかどうかを判断する。これは、たとえば、入力発話がスキルボット116のスキル以外のスキルを必要とする場合に該当し得る。入力発話がスキルボット116と無関係である場合、マスタボット114は、入力発話がスキルボット116と無関係であるという指示をユーザに返し得る。たとえば、デジタルアシスタント106は、明確化することをユーザに要求することができるか、または、入力発話が理解されていないことを報告することができる。しかしながら、マスタボット114が適切なスキルボット116を識別する場合、マスタボット114は、入力発話と、これにより進行中の会話とをそのスキルボット116にルーティングしてもよい。これにより、ユーザが、共通のインターフェイスを介して複数のスキルボット116を有するデジタルアシスタント106と対話することが可能になる。
【0044】
図1の実施形態はマスタボット114およびスキルボット116を含むデジタルアシスタント106を示しているが、これは限定を意図するものではない。いくつかの実施形態では、デジタルアシスタント106は、デジタルアシスタント106の機能を提供する他のシステムまたはサブシステムなどの他のさまざまな構成要素を含み得る。これらのシステムおよびサブシステムは、ソフトウェアでのみ(たとえば、コンピュータ可読媒体上に記憶されて、1つ以上のプロセッサによって実行可能なコードとして)、ハードウェアで、または、ソフトウェアとハードウェアとの組合せを用いる実現例において、実現され得る。
【0045】
特定の実施形態では、マスタボット114は、利用可能なスキルボット116を認識するように構成される。たとえば、マスタボット114は、さまざまな利用可能なスキルボット116と、各スキルボット116ごとに当該スキルボット116によって実行され得るタスクを含むスキルボット116の能力とを識別するメタデータにアクセスし得る。入力発話の形態でユーザ要求を受信すると、マスタボット114は、複数の利用可能なスキルボット116から、ユーザ要求に対して最もよく機能するかもしくはユーザ要求に最もよく対処することができる特定のスキルボット116を識別もしくは予測するように、または、代替例においては、入力発話がスキルボット116のいずれとも無関係であると判断するように、構成される。スキルボット116が入力発話に対処できると判断された場合、マスタボット114は、さらに対処するために、入力発話または当該入力発話の少なくとも一部分をそのスキルボット116にルーティングしてもよい。したがって、制御がマスタボット114からスキルボット116へと続く。
【0046】
いくつかの実施形態では、DABP102は、DABP102の開発者ユーザが1つ以上のスキルボット116を含むデジタルアシスタント106を作成することを可能にするインフラストラクチャならびにさまざまなサービスおよび特徴を提供する。いくつかの事例では、スキルボット116は、既存のスキルボット116をクローニングすることによって、たとえば、スキルストアにおいて提供されるスキルボット116をクローニングすることによって、作成することができる。上述のように、DABP102は、さまざまなタスクを実行するための複数のスキルボット116を提供するスキルストアを提供することができる。DABP102のユーザは、スキルストアからスキルボット116をクローニングすることができ、必要に応じて、クローニングされたスキルボット116に修正またはカスタマイズが施されてもよい。他のいくつかの事例では、DABP102の開発者ユーザは、DABP102によって提供されるツールおよびサービスを用いることなどによって、ゼロの状態からスキルボット116を作成する。
【0047】
特定の実施形態では、高レベルでスキルボット116を作成またはカスタマイズすることは以下の動作を伴う。
【0048】
(1)新たなスキルボットについての設定を構成する。
(2)スキルボットについての1つ以上のインテントを構成する。
【0049】
(3)1つ以上のインテントについての1つ以上のエンティティを構成する。
(4)スキルボットをトレーニングする。
【0050】
(5)スキルボットのための対話フローを作成する。
(6)必要に応じてカスタムコンポーネントをスキルボットに追加する。
【0051】
(7)スキルボットをテストおよび展開する。
以下、上述の動作の各々について簡単に説明する。
【0052】
(1)新しいスキルボット116についての設定を構成する。さまざまな設定がスキルボット116に関して構成され得る。たとえば、スキルボット開発者は、作成されているスキルボット116についての1つ以上の呼び出し名を指定することができる。スキルボット116についての識別子として機能するこれらの呼び出し名は、さらに、スキルボット116を明確に呼び出すためにデジタルアシスタント106のユーザによって用いられ得る。たとえば、ユーザは、対応するスキルボット116を明確に呼び出すために、ユーザの入力発話に呼び出し名を含めることができる。
【0053】
(2)スキルボット116についての1つ以上のインテントおよび関連する例示的な発話を構成する。スキルボット116の設計者は、作成されているスキルボット116に関して、チャットボットインテントとも称される1つ以上のインテントを指定する。次いで、スキルボット116は、これらの指定されたインテントに基づいてトレーニングされる。これらのインテントは、入力発話について推測するためにスキルボット116がトレーニングされるカテゴリまたはクラスを表わしている。発話を受信すると、トレーニングされたスキルボット116は、発話についてのインテントを推測する(すなわち、判断する)。この場合、推測されたインテントは、スキルボット116をトレーニングするために用いられる予め定義されたインテントのセットから選択される。次いで、スキルボット116は、発話に関して推測されたインテントに基づいて、その発話に応じた適切なアクションを取る。場合によっては、スキルボット116についてのインテントは、スキルボット116がデジタルアシスタントのユーザのために実行することができるタスクを表わしている。各インテントには、インテント識別子またはインテント名が与えられる。たとえば、銀行についてトレーニングされたスキルボット116の場合、スキルボット116について指定されたインテントは、「CheckBalance」、「TransferMoney」、「DepositCheck」などを含み得る。
【0054】
スキルボット116について定義された各インテントごとに、スキルボット116の設計者はまた、インテントを表わすとともに例示する1つ以上の例示的な発話を提供し得る。これらの例示的な発話は、ユーザがそのインテントについてのスキルボット116に入力し得る発話を表わすよう意図されている。たとえば、CheckBalanceインテントの場合、例示的な発話は、「私の普通預金口座の残高はどうなっているでしょうか?(What's my savings account balance?)」、「私の当座預金口座にはいくら入っているでしょうか?(How much is in my checking account?)」、「私の口座にいくら残っているでしょうか?(How much money do I have in my account?)」などを含み得る。したがって、典型的なユーザ発話のさまざまな並べ替えがインテントについての発話例として指定され得る。
【0055】
インテントおよびそれらの関連する例示的な発話は、トレーニング発話とも称されるものであり、スキルボット116をトレーニングするためのトレーニングデータとして用いられる。さまざまな異なるトレーニング技術が用いられてもよい。このトレーニングの結果、発話を入力として受取って当該発話について推測されたインテントを出力するように構成された予測モデルが生成される。いくつかの事例では、ユーザ入力として提供される入力発話は、トレーニングされたモデルを用いて入力発話に関するインテントを予測または推測するように構成されるインテント分析エンジン(たとえば、スキルボット116によって実行されるルールベースまたはMLベースの分類器)に入力される。次いで、スキルボット116は、推測されたインテントに基づいて1つ以上のアクションを取り得る。
【0056】
(3)スキルボット116の1つ以上のインテントについてのエンティティを構成する。いくつかの事例では、スキルボット116が入力発話に適切に応答することを可能にするために追加のコンテキストが必要となる可能性がある。たとえば、複数の入力発話がスキルボット116において同じインテントになる状況があり得る。たとえば、「私の普通預金口座の残高はどうなっているでしょうか?」、「私の当座預金口座にはいくら入っているでしょうか?」という発話はともに同じCheckBalanceインテントとなるが、これらの発話は異なるものを求める異なる要求である。そのような要求を明確にするために、1つ以上のエンティティをインテントに追加することができる。「当座預金」および「貯金」と称される値を定義するAccount_Typeと呼ばれるエンティティは、銀行業務スキルボット116の例を用いて、スキルボット116がユーザ要求を解析して適切に応答することを可能にし得る。上述の例では、複数の発話が同じインテントになるが、これら2つの発話の場合には、Account_Typeエンティティに関連付けられた値は異なっている。これは、2つの発話が同じインテントになるにもかかわらず、場合によってはスキルボット116がこれら2つの発話に対して異なるアクションを実行することを可能にする。スキルボット116のために構成された特定のインテントのために1つ以上のエンティティが指定され得る。したがって、エンティティは、インテント自体にコンテキストを追加するために用いられる。エンティティは、インテントをより十分に記述すること、およびスキルボット116がユーザ要求を履行するのを可能にすること、に役立つ。
【0057】
特定の実施形態では、(a)DABP102によって提供され得る埋込み型エンティティ、および、(2)開発者によって指定可能なカスタムエンティティという2つのタイプのエンティティがある。埋込み型エンティティは、多種多様なスキルボット116とともに用いることができる汎用エンティティである。埋込み型エンティティの例は、時間、日付、住所、番号、電子メールアドレス、持続時間、循環期間、通貨、電話番号、統一資源位置指定子(uniform resource locator:URL)などに関連するエンティティを含む。カスタムエンティティは、よりカスタマイズされた用途に用いられる。例えば、銀行業務スキルの場合、Account_Typeエンティティは、当座預金、普通預金およびクレジットカードなどのキーワードについてユーザ入力をチェックすることによってさまざまな銀行取引をサポートするように、開発者によって定義され得る。
【0058】
(4)スキルボット116をトレーニングする。スキルボット116は、発話の形態でユーザ入力を受信し、受信されたユーザ入力を解析または処理し、受信されたユーザ入力に関連するインテントを識別または選択するように構成される。いくつかの実施形態では、上述のように、このためにスキルボット116をトレーニングしなければならない。特定の実施形態では、スキルボット116は、スキルボット116のために構成されたインテントとインテントに関連付けられた例示的な発話(すなわち、トレーニング発話)とに基づいてトレーニングされ、これにより、スキルボット116は入力発話をその構成されたインテントのうちの1つに分解することができる。特定の実施形態では、スキルボットは、トレーニングデータを用いてトレーニングされた予測モデルを用いて、ユーザが何を言っているか(または場合によっては、何を言おうとしているか)をスキルボットが識別することを可能にする。DABP102は、さまざまなMLベースのトレーニング技術、ルールベースのトレーニング技術、またはこれらの組合せを含め、開発者がスキルボット116をトレーニングするのに用いることができるさまざまな異なるトレーニング技術を提供し得る。特定の実施形態では、トレーニングデータの一部(たとえば、80%)は、スキルボットモデルをトレーニングするために用いられ、別の部分(たとえば、残りの20%)は、モデルをテストまたは検証するために用いられる。トレーニングされると、トレーニング済みスキルボット116とも称されるトレーニング済みモデルは、入力発話に対処するとともに入力発話に応答するために用いることができる。特定の場合、入力発話は、単一の回答のみを必要とするがさらに別の会話を必要としない質問であり得る。このような状況に対処するために、スキルボット116に関して質問および回答(question-and-answer:Q&A)インテントが定義されてもよい。いくつかの実施形態では、Q&Aインテントは、他のインテントと同様の局面で作成されるが、Q&Aインテントについての対話フローは通常のインテントについてのものとは異なり得る。たとえば、Q&Aインテントのための対話フローは、他のインテントの場合とは異なり、ユーザからの追加情報(たとえば、特定のエンティティについての値)を求めるために促すことを必要としない可能性もある。
【0059】
(5)スキルボット116のための対話フローを作成する。スキルボット116に関して指定された対話フローは、受信されたユーザ入力110に応答してスキルボット116に関するさまざまなインテントが分解される場合にスキルボット116がどのように反応するかを記述する。対話フローは、スキルボット116がどのようにユーザ発話に応答するか、スキルボット116がどのようにユーザに入力を促すか、および、スキルボット116がどのようにデータを返すかなど、スキルボット116が取るであろう動作またはアクションを定義する。対話フローは、スキルボット116が辿るフローチャートに類似している。スキルボット116の設計者は、マークダウン言語などの言語を用いて対話フローを指定する。特定の実施形態では、OBotMLと呼ばれるYAMLのバージョンを用いて、スキルボット116のための対話フローを指定し得る。スキルボット116についての対話フロー定義は、スキルボット116の設計者に、スキルボット116と当該スキルボット116が対応するユーザとの間の対話のコレオグラフィを行なわせる、会話自体についてのモデルとして機能する。
【0060】
特定の実施形態では、スキルボット116についての対話フロー定義は、以下で説明する3つのセクションを含む。
【0061】
(a)コンテキストセクション
(b)デフォルト遷移セクション
(c)状態セクション
コンテキストセクション:スキルボット116の開発者は、コンテキストセクションにおいて、会話フローで用いられる変数を定義することができる。コンテキストセクションで指名され得る他の変数は、たとえば、エラー処理のための変数、組込みエンティティまたはカスタムエンティティのための変数、スキルボット116がユーザの好みを認識して維持することを可能にするユーザ変数など、を含む。
【0062】
デフォルト遷移セクション:スキルボット116についての遷移は、対話フロー状態セクションまたはデフォルト遷移セクションで定義することができる。デフォルト遷移セクションで定義される遷移はフォールバックとして作用するものであって、或る状態内に定義される適用可能な遷移がない場合、または状態遷移をトリガするために必要な条件を満たせない場合に、トリガされる。デフォルト遷移セクションは、スキルボット116が予想外のユーザアクションに上手く対処することを可能にするルーティングを定義するために用いることができる。
【0063】
状態セクション:対話フローおよびその関連動作は、対話フロー内の論理を管理する一連の一時的な状態として定義される。対話フロー定義内の各状態ノードは、対話においてその時点に必要とされる機能を提供するコンポーネントを指名する。このようにして、コンポーネントの周囲に状態を構築する。状態は、コンポーネント固有の特性を含み、コンポーネントが実行された後にトリガされる他の状態への遷移を定義する。
【0064】
特別なケースのシナリオは、状態セクションを用いて対処され得る。たとえば、ユーザが関与している第1のスキルを一時的に残しておいて、デジタルアシスタント106内で第2のスキルで何かを行なうというオプションを、ユーザに与えることが所望される場合があるかもしれない。たとえば、ユーザがショッピングスキルとの会話に関与している(たとえば、ユーザが購入のために何らかの選択を行なった)場合、ユーザは、銀行業務スキルにジャンプし(たとえば、ユーザが購入に十分な金額を有することを確かめることを望み)、その後、ユーザの注文を完了するためにショッピングスキルに戻ることを望む場合がある。これに対処するために、第1のスキルの対話フロー定義内の状態セクションは、同じデジタルアシスタントにおいて第2の別のスキルとの対話を開始し、次いで元の対話フローに戻るように構成され得る。
【0065】
(6)カスタムコンポーネントをスキルボット116に追加する:上述のように、スキルボット116についての対話フローで指定される状態は、当該状態に対応して必要とされる機能を提供するコンポーネントを指名する。コンポーネントは、スキルボット116が機能を実行することを可能にする。特定の実施形態では、DABP102は、広範囲の機能を実行するための事前構成されたコンポーネントのセットを提供する。開発者は、これらの事前構成されたコンポーネントのうちの1つ以上を選択し、それらをスキルボット116についての対話フロー内の状態に関連付けることができる。開発者はまた、DABP102によって提供されるツールを用いてカスタムのコンポーネントまたは新しいコンポーネントを作成するとともに、カスタムのコンポーネントをスキルボット116についての対話フロー内の1つ以上の状態に関連付けることができる。
【0066】
(7)スキルボット116をテストおよび展開する:DABP102は、開発者が開発中のスキルボット116をテストすることを可能にするいくつかの特徴を提供し得る。さらに、スキルボット116を展開し、デジタルアシスタント106に含めることができる。
【0067】
上述で、スキルボット116を作成する方法を説明しているが、同様の技術を用いてデジタルアシスタント106またはマスタボット114を作成してもよい。マスタボットレベルまたはデジタルアシスタントレベルでは、デジタルアシスタント106のために組込みシステムインテントが構成され得る。いくつかの実施形態では、これらの組込みシステムインテントを用いて、スキルボット116を呼び出すことなくマスタボット114が対処できる一般的なタスクを識別する。マスタボット114に関して定義されるシステムインテントの例は以下を含む。(1)Exit(出口):ユーザがデジタルアシスタントにおける現在の会話またはコンテキストの終了を所望している旨を知らせる場合に該当する。(2)Help(ヘルプ):ユーザが支援または方向性を求める場合に該当する;(3)UnresolvedIntent(未解決のインテント):ExitインテントおよびHelpインテントとうまく合致しないユーザ入力に該当する。マスタボット114は、デジタルアシスタント106に関連付けられた1つ以上のスキルボット116に関する情報を記憶し得る。この情報は、マスタボット114が発話に対処するための特定のスキルボット116を選択することを可能にするか、または代替的には、発話がデジタルアシスタント106のいずれのスキルボット116とも無関係であると判断することを可能にする。
【0068】
ユーザがデジタルアシスタント106に句または発話を入力すると、マスタボット114は、発話および関連する会話をどのようにルーティングするかを決定する処理を実行するように構成される。マスタボット114は、ルールベースであり得るか、MLベースであり得るかまたはそれらの組合わせであり得る、ルーティングモデルを用いてこれを決定する。マスタボット114はルーティングモデルを用いて、発話に対応する会話が、対処のために特定のスキルボット116にルーティングされるべきか、デジタルアシスタント106またはマスタボット114自体によって、組込みシステムインテントごとに対処されるべきか、現在の会話フローでの異なる状態として対処されるべきか、または、デジタルアシスタント106に関連付けられたスキルボット116のいずれとも無関係であるか、を判断する。
【0069】
特定の実施形態では、この処理の一環として、マスタボット114は、入力発話がその呼び出し名を用いてスキルボット116を明確に識別するかどうかを判断する。呼び出し名が入力発話に存在する場合、当該呼び出し名は、呼び出し名に対応するスキルボット116の明確な呼び出しとして扱われる。そのようなシナリオでは、マスタボット114は、さらに別の対処のために、明確に呼び出されたスキルボット116に入力発話をルーティングしてもよい。特定の呼び出しまたは明確な呼び出しがない場合、特定の実施形態では、マスタボット114は、入力発話を評価するとともに、デジタルアシスタント106に関連付けられたシステムインテントおよびスキルボット116に関する信頼度スコアを(たとえば、ロジスティック回帰モデルを用いて)計算する。スキルボット116またはシステムインテントについて計算されたスコアは、入力発話が、スキルボット116が実行するように構成されるタスクを表わすかまたはシステムインテントを表わす可能性がどの程度であるかを表わしている。関連する計算済み信頼度スコアが閾値を超えている任意のシステムインテントまたはスキルボット116が、さらに別の評価のための候補として選択されてもよい。次いで、マスタボット114は、入力発話にさらに対処するために、識別された候補から特定のシステムインテントまたはスキルボット116を選択する。特定の実施形態では、1つ以上のスキルボット116が候補として識別された後、それらの候補スキルボット116に関連付けられたインテントが、各スキルボット116ごとに、トレーニングされたモデルを用いることなどによって評価され、さらに、各インテントごとに信頼度スコアが決定される。概して、閾値(たとえば、70%)を超える信頼度スコアを有する任意のインテントが候補インテントとして扱われる。特定のスキルボット116が選択される場合、入力発話は、さらに別の処理のためにそのスキルボット116にルーティングされる。システムインテントが選択されると、選択されたシステムインテントに従ってマスタボット114自体によって1つ以上のアクションが実行される。
【0070】
本明細書に記載するマスタボット114のいくつかの実施形態は、適用可能な場合、入力発話を適切なスキルボット116に向けるだけでなく、入力発話が利用可能なスキルボット116と無関係になったときに無関係な入力発話が無関係であることを示す何らかの表示を促すかを判断するようにも構成される。
図2は、本明細書に記載されるいくつかの実施形態に従った、入力発話をスキルボット116に向けるとともに、適用可能な場合、特定の入力発話が利用可能なスキルボット116と無関係であると判断するように、マスタボットを構成および使用する方法200を示すフロー図である。
図2の方法200は、以下で詳細に説明されるさまざまな具体的な事例についての全体的概要である。
【0071】
図2に示す方法200および本明細書で説明する他の方法は、1つ以上の処理ユニット(たとえば、プロセッサまたはプロセッサコア)によって実行されるソフトウェアで(たとえば、コード、命令、またはプログラムとして)、ハードウェアで、またはそれらの組合せで、実現され得る。ソフトウェアは、メモリデバイスなどの非一時的記憶媒体に記憶され得る。この方法200は、例示的かつ非限定的であるよう意図されたものである。
図2は、特定の並びまたは順序で起こるさまざまな動作を示すが、これは限定することを意図するものではない。特定の実施形態では、たとえば、これらの動作が異なる順序で実行されてもよく、または、方法200の1つ以上の動作が並行して実行されてもよい。特定の実施形態では、方法200は、トレーニングシステムおよびマスタボット114によって実行されてもよい。
【0072】
図2に示すように、方法200のブロック205において、マスタボット114の分類器モデルが初期化される。いくつかの実施形態では、分類器モデルは、入力発話がいずれの利用可能なスキルボット116とも無関係であるかどうかを判断するように構成される。加えて、いくつかの実施形態では、分類器モデルはまた、入力発話がスキルボット116に関連すると見なされる場合、入力発話を処理のために好適なスキルボット116にルーティングするように構成されてもよい。
【0073】
いくつかの実施形態では、分類器モデルの初期化は、無関係の入力発話を如何に認識するかを分類器モデルに教育することを含み得る。この目的のために、DABP102の一部であり得るトレーニングシステムは、各スキルボット116ごとにトレーニング発話(すなわち、例示的な発話)へのアクセスを有し得る。トレーニングシステムは、マスタボット114にとって利用可能であるかまたは利用可能になるであろうさまざまなスキルボット116の各トレーニング発話を記述および表現するそれぞれのトレーニング特徴ベクトルを生成し得る。各トレーニング特徴ベクトルは、対応するトレーニング発話の特徴ベクトルである。次いで、トレーニングシステムは、トレーニング特徴ベクトルからさまざまなセット表現を生成し得る。各セット表現は、トレーニング特徴ベクトルの集合を表現するものであり得る。たとえば、このような集合は、以下で詳細に説明するように、クラスタまたは合成特徴ベクトルであってもよい。分類器モデルを初期化するために、トレーニングシステムは、入力ベクトルをトレーニング特徴ベクトルの集合を表わすさまざまなセット表現と比較するように分類器モデルを構成してもよい。
【0074】
ブロック210において、マスタボット114は、入力発話の形式でユーザ入力110を受信する。たとえば、ユーザは、入力発話をユーザ入力110としてタイプしたかもしれず、またはユーザは、デジタルアシスタント106が入力発話に変換したユーザ入力110を話したかもしれない。入力発話は、デジタルアシスタント106によって、したがってマスタボット114によって対処されるべきユーザ要求を含み得る。
【0075】
ブロック215において、マスタボット114は、分類器モデルを利用して、マスタボット114に関連付けられたいずれのスキルボット116によっても入力発話に対処することができるかどうかを判断する。いくつかの実施形態では、マスタボット114の分類器モデルは、入力発話を記述および表現する入力特徴ベクトルを生成する。分類器モデルは、入力特徴ベクトルをトレーニング特徴ベクトルのセット表現と比較し得るとともに、この比較に基づいて、分類器モデルは、入力発話がマスタボット114にとって利用可能ないずれのスキルボット116(すなわち、セット表現においてトレーニング発話が表現されているスキルボット116)とも無関係であるかどうかを判断する。
【0076】
デジタルアシスタントまたはスキルボットレベルでの分類の例
図3は、本明細書で説明する特定の実施形態に従った、マスタボット(master bot:MB)システムとも称されるマスタボット114を示すブロック図である。マスタボット114は、ソフトウェアでのみ、ハードウェアでのみ、またはハードウェアとソフトウェアとの組合わせで、実現することができる。いくつかの実施形態では、マスタボット114は、前処理サブシステム310と、ルーティングサブシステム320とを含む。
図3に示すマスタボット114は、マスタボット114内の構成要素の配置の単なる一例に過ぎない。当業者であれば、多くの実現可能な変形例、代替例および修正例を認識するだろう。たとえば、いくつかの実現例では、マスタボット114は、
図3に示されるものよりも多いかもしくは少ないシステムもしくは構成要素を有してもよく、2つ以上のサブシステムを組合わせてもよく、または、サブシステムの異なる構成または配列を有してもよい。
【0077】
いくつかの実施形態では、言語処理サブシステム310は、ユーザによって提供されるユーザ入力110を処理するように構成される。このような処理は、たとえば、ユーザ入力が音声形式またはテキストではない他の何らかの形式である場合に、自動音声認識または他の何らかのツールを用いてユーザ入力110をテキスト入力発話303に変換することを含み得る。
【0078】
いくつかの実施形態では、ルーティングサブシステム320は、(a)入力発話303がいずれの利用可能なスキルボット116とも無関係であるかどうか、および、(b)入力発話303が少なくとも1つのスキルボット116に関係する場合、入力発話303に対処するのにどのスキルボット116が最も適しているか、を判断するように構成される。特に、ルーティングサブシステム320の分類器モデル324は、ルールベースもしくはMLベース、またはそれらの組合わせであってもよく、入力発話303が、いずれの利用可能なスキルボット116とも無関係であるか、特定のスキルボット116を表わしているか、または、特定のスキルボット116のために構成された特定のインテントを表わしているかを判断するように構成されてもよい。たとえば、上述のように、スキルボット116は1つ以上のチャットボットインテントで構成されてもよい。各チャットボットインテントは、それ自体の対話フローを有し得るとともに、スキルボット116が実行できる1つ以上のタスクに関連付けられてもよい。入力発話303が特定のスキルボット116を表わしているかまたは特定のスキルボット116が構成されたインテントを表わしていると判断されると、ルーティングサブシステム320は、特定のスキルボット116を呼び出して、入力発話303を特定のスキルボット116についての入力335として伝達することができる。しかしながら、入力発話303がいずれの利用可能なスキルボット116とも無関係であると見なされる場合、入力発話303は、利用可能なスキルボットによって対処することができない発話のクラスである、非クラス316に属するものと見なされる。その場合、デジタルアシスタント106は、入力発話303に対処できないことをユーザに示してもよい。
【0079】
いくつかの実施形態では、分類器モデル324は、ルールベースのモデルもしくはMLベースのモデル、またはその両方を用いて実現され得る。たとえば、いくつかの実施形態では、分類器モデル324は、例示的な発話を含むトレーニングデータ354上でトレーニングされたルールベースのモデルを含み得る。このため、ルールベースのモデルを用いて、入力発話がいずれの利用可能なスキルボット116(すなわち、デジタルアシスタント106に関連付けられたいずれかのスキルボット116)とも無関係であるかどうかが判断される。付加的または代替的には、いくつかの実施形態では、分類器モデル324は、トレーニングデータ354に対してトレーニングされたニューラルネットワークを含み得る。トレーニングデータ354は、各スキルボット116ごとに、例示的な発話の対応するセット(たとえば、スキルボット116が構成される各インテントごとに2つ以上の例示的な発話)を含み得る。たとえば、
図3の例では、利用可能なスキルボット116は、第1のスキルボット116aと、第2のスキルボット116bと、第3のスキルボット116cとを含み、トレーニングデータ354は、第1のスキルボット116aに対応する第1のスキルボットデータ358aと、第1のスキルボット116bに対応する第2のスキルボットデータ358bと、第1のスキルボット116cに対応する第3のスキルボットデータ358cとを含め、このような各スキルボット116ごとにそれぞれのスキルボットデータを含む。スキルボット116についてのスキルボットデータは、特にそのスキルボット116によって対処され得る発話を表わすトレーニング発話(すなわち、例示的な発話)を含み得る。したがって、トレーニングデータ354は、さまざまなスキルボット116の各々についてのトレーニング発話を含む。トレーニングシステム350は、DABP102に組込まれてもよいが必ずしも組込まれる必要はなく、トレーニングデータ354を用いて、マスタボット114の分類器モデル324をトレーニングして、これらのタスクを実行してもよい。
【0080】
いくつかの実施形態では、トレーニングシステム350は、トレーニングデータ354を用いて分類器モデル324をトレーニングして、入力発話がいずれの利用可能なスキルボット116とも無関係であるかどうかを判断する。概して、トレーニングシステム350は、トレーニングデータ354内のトレーニング発話を記述および表現するためにトレーニング特徴ベクトルを生成し得る。以下で詳細に説明するように、トレーニングシステム350はセット表現を生成し得る。各セット表現はトレーニング特徴ベクトルの集合を表現するものである。トレーニング後および動作中に、分類器モデル324は、入力発話303をセット表現と比較して、入力発話303がいずれの利用可能なスキルボット116とも無関係であるかどうかを判断してもよい。
【0081】
いくつかの実施形態では、分類器モデル324は1つ以上のサブモデルを含み、各サブモデルは、入力発話303を分類することに関係するさまざまなタスクを実行するように構成される。上述に加えて、または上述の代わりに、たとえば、分類器モデル324は、入力発話303が少なくとも1つの利用可能なスキルボット116に関係する(すなわち、無関係ではない)と見なされる場合、どのスキルボット116が入力発話に最も適しているかを判断するように構成されたMLモデルまたは他のタイプのモデルを含み得る。いくつかの実施形態では、分類器モデル324は、最も適切なスキルボット116を決定し得る一方で、入力発話が少なくとも1つのスキルボット116に関係していると判断し得る。この場合、最も適したスキルボット116を識別するためのさらに別の判断を行なう必要はない。しかしながら、代替的には、分類器モデル324は、各スキルボット116ごとに、スキルボット116が入力発話303を処理するのに最も適している(すなわち、入力発話に最も適している)可能性を示す関連する信頼度スコアを(たとえば、ロジスティック回帰モデルを用いて)決定し得る。この目的のために、分類器モデル324に含まれるニューラルネットワークは、入力発話303が各スキルボット116を表わしているかまたはスキルボット116のために構成されたインテントのうちの1つを表わしている尤度を決定するために、トレーニングシステムによってトレーニングされ得る。たとえば、ニューラルネットワークは、各スキルボット116に関連付けられたそれぞれの信頼度スコアを決定して出力し得る。この場合、スキルボットについての信頼度スコアは、スキルボット116が入力発話303に対処することができる尤度、または入力発話に対処するための最良の利用可能なスキルボット116である尤度を示す。信頼度スコアを考慮して、ルーティングサブシステム320は、最も高い信頼度スコアに関連付けられたスキルボット116を選択し得るとともに、処理のために入力発話303をそのスキルボット116にルーティングし得る。
【0082】
図4は、本明細書に記載の特定の実施形態に従った、スキルボットシステムとも称されるスキルボット116を示す図である。
図4に示すスキルボット116のインスタンスは、
図1のスキルボット116として用いることができ、ソフトウェアでのみ、ハードウェアでのみ、またはハードウェアとソフトウェアの組合わせで、実現することができる。
図4に示すように、スキルボット116は、入力発話303のインテントを決定するボット分類器モデル424と、インテントに基づいて応答435を生成する会話マネージャ430とを含み得る。
【0083】
ボット分類器モデル424は、ルールベースのモデルもしくはMLベースのモデル、またはその両方を用いて実現することができ、マスタボット114によってスキルボット116にルーティングされた入力発話303を入力として受け取ることができる。ボット分類器モデル424は、スキルボット116上のデータストア450内のルール452およびインテントデータ454にアクセスし得るか、または、スキルボット116にアクセス可能であり得る。たとえば、インテントデータ454は、各インテントごとに例示的な発話または他のデータを含んでもよく、ルール452は、入力発話303についてのインテントを決定するためにインテントデータをどのように用いるかを記述してもよい。ボット分類器モデル424は、これらのルールを入力発話303およびインテントデータ454に適用して、入力発話303のインテントを決定し得る。
【0084】
より具体的には、いくつかの実施形態では、ボット分類器モデル424は、
図3の分類器モデル324が入力発話303に対処するためにスキルボット116を決定するのと同様の方法で動作し得る。たとえば、ボット分類器モデル424は、(たとえば、ロジスティック回帰モデルを用いて)それぞれの信頼度レベルを決定し得るとともに、分類器モデル324がスキルボット116に信頼度レベルを割当て得るのと同様の方法で、スキルボット116が構成される各チャットボットインテントに当該それぞれの信頼度レベルを割当て得る。このため、信頼度レベルは、それぞれのチャットボットインテントが入力発話303に適用可能である可能性が最も高い尤度を示す。次いで、ボット分類器モデル424は、最も高い信頼度レベルが割当てられているインテントを選択し得る。付加的または代替的な実施形態では、ボット分類器モデル424は、入力発話303を記述する入力特徴ベクトルを、(a)それぞれのインテントに関するトレーニング特徴ベクトルを表わすために1つの合成特徴ベクトルを含む合成特徴ベクトル、または、(b)トレーニング特徴ベクトルのクラスタ、のいずれかまたは両方と比較することによって、入力発話303に関するインテントを決定する。この場合、各クラスタはインテントまたは複数のインテントを表わしている。このような特徴ベクトルの使用について、以下でより詳細に説明する。
【0085】
発話202が最も良く表わすインテントが識別されると、ボット分類器モデル424は、インテント指示422(すなわち、識別されたインテントの指示)を会話マネージャ430に伝達し得る。
図4の実施形態では、会話マネージャ430は、スキルボット116に対してローカルなものとして示されている。しかしながら、会話マネージャ430は、マスタボット114と、または複数のスキルボット116にわたって、共有され得る。したがって、いくつかの実施形態では、会話マネージャ430はデジタルアシスタントまたはマスタボット114に対してローカルである。
【0086】
インテント指示422の受信に応答して、会話マネージャ430は、発話202に対する適切な応答435を決定し得る。たとえば、応答435は、スキルボット116のシステム400のために構成された対話フロー定義455において指定されるアクションまたはメッセージであり得るとともに、応答435は、
図1の実施形態におけるDA応答112として用いられ得る。たとえば、データストア450は、各インテントごとにそれぞれの対話フロー定義を含むさまざまな対話フロー定義を含み得るとともに、会話マネージャ430は、その対話フロー定義455に対応するインテントの識別に基づいて対話フロー定義455にアクセスし得る。会話マネージャ430は、対話フロー定義455に基づいて、対話フロー定義455に従って、或る対話フロー状態を、遷移すべき次の状態であるとして決定し得る。会話マネージャ430は、入力発話303のさらに別の処理に基づいて応答435を決定し得る。たとえば、入力発話303が「預金の残高をチェックする(Check balance in savings)」である場合、会話マネージャ430は、ユーザの預金口座に関係する対話がユーザに提示される対話フロー状態に遷移し得る。会話マネージャ430は、識別されたインテントがスキルボット116のために構成された「CheckBalance」インテントであることを示すインテント指示422に基づいて、さらに、「Account_Type」エンティティに関して「saving」の値が抽出されたことの認識に基づいて、この状態に遷移し得る。
【0087】
発話を記述するための特徴ベクトルの使用
上述のように、分類器モデル324は、入力発話がいずれの利用可能なスキルボット116とも無関係であるかまたは関係しているかを判断するときに特徴ベクトルを使用し得る。本開示の目的のために、特徴ベクトルは、発話の特徴を記述するとともにこれにより発話自体を記述するベクトルまたは座標のセットである。発話を記述する特徴ベクトルは、本明細書で説明されるように、特定の状況における発話を表わすために用いられ得る。
【0088】
特徴ベクトルの概念は、単語埋め込みの概念に基づいている。概して、単語埋め込みは、単語が対応しているベクトルにマッピングされる言語モデリングのタイプである。特定の単語埋め込みは、ベクトル空間の類似する領域に意味論的に類似する単語をマッピングし得る。このため、類似する単語同士はベクトル空間内で互いに近接し、類似していない単語同士は遠く離れることとなる。単語埋め込みの単純な例では、「ワン・ホット(one hot)」符号化を用いる。この場合、辞書内の各単語は、辞書のサイズに等しい次元の量を有するベクトルにマッピングされ、このため、当該ベクトルは、単語自体に対応する次元において1の値を有し、他のすべての次元においてゼロの値を有することとなる。たとえば、「Go intelligent bot service artificial intelligence, Oracle」という文の最初の2つの単語は、以下の「ワン・ホット」符号化を用いて表現され得る。
【0089】
【0090】
特徴ベクトルは、単語、文、またはさまざまなタイプの句を表わすために用いることができる。単語埋め込みの上述の単純な例を考慮すると、対応する特徴ベクトルは、発話などの一連の単語を、その一連の単語の単語埋め込みの集合である特徴ベクトルにマッピングし得る。その集合は、たとえば、合計、平均または加重平均であり得る。
【0091】
互いに異なる発話の場合、そのような発話は大きく異なる意味論的意味を有する単語を含んでいるため、それぞれの特徴ベクトルも異なり得る。しかしながら、意味論的に類似しており、このため、発話間で同じであるかまたは発話間で意味論的に類似する単語を含む発話は、類似する特徴ベクトル(すなわち、ベクトル空間内で互いに近接して位置する特徴ベクトル)を有し得る。各特徴ベクトルは、特徴空間とも称されるベクトル空間内の単一の点に対応しており、その点は、特徴空間の原点に特徴ベクトルを加えたものである。いくつかの実施形態では、意味論的に互いに類似する発話についての点同士は互いに近接して位置している。本開示の全体を通じて、特徴ベクトルおよびその対応する点は、これら2つが同じ情報に関して異なる視覚的な見た目を提供するので、互換的に参照される。
【0092】
マスタボットの分類器モデルを初期化するための例示的な方法
いくつかの実施形態では、マスタボット114の分類器モデル324は、入力発話がいずれの利用可能なスキルボット116とも無関係であるかまたは関係があるかを判断するための基準としてトレーニング発話の特徴ベクトルを利用する。
図5は、本明細書で説明するいくつかの実施形態に従った、このタスクを実行するためにマスタボット114の分類器モデル324を初期化する方法500を示す図である。たとえば、この方法500または同様の方法は、入力発話303をルーティングするためにマスタボット114を構成および使用するための方法200のブロック205において実行され得る。
図5は概略的な方法500であり、それについてのより詳細な例が
図14および
図18を参照して図示および説明される。
【0093】
図5に示す方法500ならびに本明細書で説明する他の方法は、1つ以上の処理ユニット(たとえば、プロセッサまたはプロセッサコア)によって実行されるソフトウェアで(たとえば、コード、命令、またはプログラムとして)、ハードウェアで、またはそれらの組合せで、実現され得る。ソフトウェアは、メモリデバイスなどの非一時的記憶媒体に記憶され得る。この方法500は、例示的かつ非限定的であるよう意図されている。
図5は、特定の並びまたは順序で起こるさまざまな動作を示すが、これは限定することを意図するものではない。特定の実施形態では、たとえば、これらの動作が異なる順序で実行されてもよく、または、方法500の1つ以上の動作が並行して実行されてもよい。特定の実施形態では、方法500は、DABP102の一部であり得るトレーニングシステム350によって実行されてもよい。
【0094】
ブロック505において、トレーニングシステム350は、マスタボット114に関連付けられたさまざまなスキルボット116のためのトレーニング発話(例示的な発話とも称される)にアクセスする。たとえば、トレーニング発話は、トレーニングシステム350がアクセス可能なトレーニングデータ354にスキルボットデータとして記憶されてもよい。いくつかの実施形態では、マスタボット114にとって利用可能な各スキルボット116は、トレーニング発話のサブセットと関連付けられてもよく、このようなトレーニング発話の各サブセットは、スキルボット116が構成される各インテントごとにトレーニング発話を含んでもよい。このため、トレーニング発話のセット一式は、あらゆるスキルボット116のあらゆるインテントが表わされるように、各スキルボット116の各インテントごとにトレーニング発話を含み得る。
【0095】
ブロック510において、トレーニングシステム350は、ブロック505でアクセスされたトレーニング発話からトレーニング特徴ベクトルを生成する。上述のように、トレーニング発話は、各スキルボット116に関連付けられたサブセットを含んでもよく、さらに、各スキルボット116の各インテントごとにトレーニング発話を含んでもよい。したがって、いくつかの実施形態では、トレーニング特徴ベクトルは、各スキルボット116ごとにそれぞれのサブセットを含んでもよく、さらに、各スキルボットの各インテントごとにそれぞれの特徴ベクトルを含んでもよい。
【0096】
図6は、本明細書で説明するいくつかの実施形態に従った、トレーニング発話615からのトレーニング特徴ベクトル620の生成を示す。具体的には、
図6は、トレーニングデータ354内のスキルボットデータ358のトレーニング発話615に関係しており、スキルボットデータ358は特定のスキルボット116に関連付けられている。スキルボット116は、インテントAおよびインテントBを含む複数のインテントの入力発話303に対処するように構成されており、このため、トレーニング発話615は、インテントAを表わすトレーニング発話615と、インテントBを表わすトレーニング発話615とを含む。
【0097】
上述したように、トレーニングシステム350は、それぞれのトレーニング発話615を記述および表現するためにトレーニング特徴ベクトル620を生成し得る。トレーニング発話615などの一連の単語をトレーニング特徴ベクトル620などの特徴ベクトルに変換するためのさまざまな技術が公知であり、そのような技術のうちの1つ以上が用いられてもよい。たとえば、トレーニングシステム350は、ワン・ホット符号化または他の何らかの符号化を用いて、各トレーニング発話615を対応するトレーニング特徴ベクトル620として符号化し得るが、必ずしも符号化する必要はない。
【0098】
また、上述したように、特徴ベクトルは点として表わすことができる。いくつかの実施形態では、各トレーニング特徴ベクトル620は、特徴空間630内の点640として表わすことができる。この場合、特徴空間は、トレーニング特徴ベクトル620内の特徴の数(すなわち、次元の数)に等しい数の次元を有する。
図6の例では、同じインテント、具体的にはインテントA、を表わす2つのトレーニング特徴ベクトル620は、これら2つのトレーニング特徴ベクトル620が意味論的に類似しているので、互いに近い点640としてプロットされている。しかしながら、特定のインテントに関するすべてのトレーニング特徴ベクトル620またはすべての特徴ベクトルが互いに近い点として表わされる必要はない。
【0099】
図5に戻って、ブロック515において、トレーニングシステム350は、ブロック510において生成されたトレーニング特徴ベクトル620の複数のセット表現を生成する。各セット表現はトレーニング特徴ベクトル620のセットを表わしている。以下で詳細に説明するように、セット表現は、たとえば、トレーニング特徴ベクトル620のクラスタであり得るか、または、複数のトレーニング特徴ベクトル620の集合である合成特徴ベクトルであり得る。本質的に、セット表現は、共にグループ化された複数のトレーニング特徴ベクトル620を表わす態様であり得る。対応するセット表現で表わされるトレーニング特徴ベクトルの各セットは、共通のインテント、共通のインテントのグループ、共通のスキルボット116、または特徴空間630の共通の領域を共有し得るか、または、代替的には、単一のセット表現で表わされるトレーニング特徴ベクトルは、トレーニングデータ354に基づく以外にいかなる共通性も有する必要はない。
【0100】
ブロック520において、トレーニングシステム350は、ユーザ入力110として提供される入力発話303をさまざまなセット表現と比較するように分類器モデル324を構成し得る。たとえば、セット表現は、マスタボット114の分類器モデル324にとってアクセス可能な記憶装置に記憶され得る。分類器モデル324は、入力発話がさまざまなセット表現に合致するかまたは合致しないかをどのように判断するかについてのルールでプログラムされ得る。合致の定義は、以下でより詳細に説明されるように、使用されている特定のセット表現に依存し得る。
【0101】
図7は、本明細書で説明されるいくつかの実施形態に従った、マスタボット114の分類器モデル324を用いて、ユーザ入力110として提供される入力発話303がマスタボット114と関連付けられるいずれの利用可能なスキルボット116とも無関係であるかどうかを判断する方法700を示す図である。この方法700または同様の方法は、分類器モデル324の初期化後に、さらに、受信された各入力発話303ごとに実行され得る。たとえば、この方法700または同様の方法は、入力発話303をルーティングするためにマスタボット114を構成および使用するための方法200のブロック215において実行され得る。
図7は概略的な方法700であり、それについてのより詳細な例が
図16および
図21を参照して図示および説明される。
【0102】
図7に示す方法700および本明細書で説明する他の方法は、1つ以上の処理ユニット(たとえば、プロセッサまたはプロセッサコア)によって実行されるソフトウェアで(たとえば、コード、命令、またはプログラムとして)、ハードウェアで、またはそれらの組合せで、実現され得る。ソフトウェアは、メモリデバイスなどの非一時的記憶媒体に記憶され得る。この方法700は、例示的かつ非限定的であるよう意図されている。
図7は、特定の並びまたは順序で起こるさまざまな動作を示すが、これは限定することを意図するものではない。特定の実施形態では、たとえば、これらの動作が異なる順序で実行されてもよく、または、方法700の1つ以上の動作が並行して実行されてもよい。特定の実施形態では、方法700はマスタボット114によって実行されてもよい。
【0103】
方法700のブロック705において、マスタボット114は、ユーザ入力110として提供された入力発話303にアクセスする。たとえば、いくつかの実施形態では、ユーザは、音声入力の形式でユーザ入力110を提供し得るとともに、デジタルアシスタント106は、マスタボット114によって使用するために、そのユーザ入力110をテキスト入力発話303に変換し得る。
【0104】
ブロック710において、マスタボット114は、ブロック705においてアクセスされた入力発話303から入力特徴ベクトルを生成し得る。入力特徴ベクトルは入力発話303を記述および表現し得る。入力発話などの一連の単語を特徴ベクトルに変換するためのさまざまな技術が公知であり、そのような技術のうちの1つ以上が用いられてもよい。たとえば、トレーニングシステム350は、ワン・ホット符号化または他の何らかの符号化を用いて、入力発話を対応する入力特徴ベクトルとして符号化し得るが、必ずしも符号化する必要はない。しかしながら、マスタボット114の一実施形態は、分類器モデル324をトレーニングする際にトレーニング発話からトレーニング特徴ベクトル620を生成するために用いられたのと同じ技術を用いる。
【0105】
判定ブロック715において、マスタボット114は、分類器モデル324に、ブロック710において生成された入力特徴ベクトルを、分類器モデル324を初期化するための方法500のブロック515において決定されたセット表現と比較させてもよく、こうして、マスタボット114は、入力特徴ベクトルがマスタボット114にとって利用可能ないずれのスキルボット116とも合致するかどうかを判断し得る。比較および合致のための特定の技術はセット表現の性質に依存する可能性がある。たとえば、以下で説明するように、セット表現がトレーニング特徴ベクトル620のクラスタである場合、分類器モデル324は、入力特徴ベクトル(すなわち、入力特徴ベクトルを表わす点)をクラスタと比較することで、入力特徴ベクトルがクラスタのいずれかの範囲内にあり、このため、少なくとも1つのスキルボット116に合致するかどうかを判断し得るか、または、セット表現がトレーニング特徴ベクトルの合成ベクトルである場合、分類器モデル324は、入力特徴ベクトルを合成特徴ベクトルと比較することで、入力特徴ベクトルがそのようないずれの合成特徴ベクトルにも十分に類似しており、このため、少なくとも1つのスキルボット116と合致するかどうかを判断し得る。さまざまな実現例が実現可能であり、本開示の範囲内にある。
【0106】
判定ブロック715において、入力特徴ベクトルが少なくとも1つのスキルボット116と合致すると見なされる場合、ブロック720において、マスタボット114は、入力特徴ベクトルが合致すると見みなされているスキルボット116に入力発話をルーティングし得る。しかしながら、判断ブロック715において、入力特徴ベクトルがいずれのスキルボット116とも合致しないと見なされる場合、ブロック725において、マスタボット114は、発話がいずれのスキルボット116によっても処理することができないことを示し得る。この指示はデジタルアシスタントに渡されてもよく、当該デジタルアシスタントは、ユーザ入力110がデジタルアシスタントによって処理または対処できないことを示す出力をユーザに提供してもよい。
【0107】
図8は、本明細書で説明するいくつかの実施形態に従った、マスタボット114の分類器モデル324を用いて、ユーザ入力110として提供される入力発話303がマスタボット114に関連付けられたいずれの利用可能なスキルボット116とも無関係であるかどうかを判断する方法800の別の例を示す図である。この方法800または同様の方法は、分類器モデル324の初期化後に、さらに、受信された各入力発話303ごとに実行され得る。たとえば、この方法800または同様の方法は、入力発話303をルーティングするためにマスタボット114を構成および使用するための方法200のブロック215において実行され得る。
図7の方法700と同様に、
図8の方法800は概略的な方法800であり、それについていくつかの方法ブロックのより詳細な例が
図16および
図21を参照して図示および説明される。しかしながら、
図7の方法700とは対照的に、この方法800は、判定ブロック810およびブロック815における予備的なフィルタリング動作を例示しており、これは、トレーニング発話615に類似する特定の入力発話303が非クラス316に属するものと分類されないことを確実にするために用いることができる。言い換えれば、この方法800はフィルタを含んでおり、当該フィルタは、トレーニング発話615に十分に類似していると見なされるいずれの入力発話303も非クラスの検討事項からフィルタリングし、これにより、そのような入力発話303がスキルボット116にルーティングされることを確実にする。
【0108】
図8に示す方法800および本明細書で説明する他の方法は、1つ以上の処理ユニット(たとえば、プロセッサまたはプロセッサコア)によって実行されるソフトウェアで(たとえば、コード、命令、またはプログラムとして)、ハードウェアで、またはそれらの組合せで、実現され得る。ソフトウェアは、メモリデバイスなどの非一時的記憶媒体に記憶され得る。この方法800は、例示的かつ非限定的であるよう意図されている。
図8は、特定の並びまたは順序で起こるさまざまな動作を示すが、これは限定することを意図するものではない。特定の実施形態では、たとえば、これらの動作が異なる順序で実行されてもよく、または、方法800の1つ以上の動作が並行して実行されてもよい。特定の実施形態では、方法800はマスタボット114によって実行されてもよい。
【0109】
方法800のブロック805において、マスタボット114は、ユーザ入力110として提供された入力発話303にアクセスする。たとえば、いくつかの実施形態では、ユーザは、音声入力の形式でユーザ入力110を提供し得るとともに、デジタルアシスタント106は、マスタボット114によって使用するために、そのユーザ入力110をテキスト入力発話303に変換し得る。
【0110】
判定ブロック810において、マスタボット114は、分類器モデル324に、ブロック805においてアクセスされた入力発話303のうちすべての単語、または単語のうち所定のパーセンテージの単語がトレーニング発話615内に見つかるかどうかを判断させ得る。たとえば、いくつかの実施形態では、分類器モデル324は、トレーニング発話615の単語に基づいてブルーム(Bloom)フィルタを利用し、このブルームフィルタを入力発話303に適用する。
【0111】
入力発話303が、判定ブロック810でトレーニング発話615において見出される単語のみを含む場合、マスタボット114は、入力発話が少なくとも1つのスキルボット116に関係しており、このため、非クラス316には属していないと判断し得る。その場合、ブロック815において、マスタボット114は、入力発話303を、当該入力発話303に最も密に合致するスキルボット116にルーティングしてもよい。たとえば、上述のように、分類器モデル324は、入力発話についての各スキルボット116に(たとえば、ロジスティック回帰モデルを用いて)信頼度スコアを割当てるように構成されてもよい。マスタボット114は、最も高い信頼度スコアを有するスキルボット116を選択してもよく、入力発話303をそのスキルボット116にルーティングしてもよい。
【0112】
しかしながら、判定ブロック810において、入力発話303がトレーニング発話615内に無い任意の単語を含むかまたは閾値よりも大きいパーセンテージの単語を含む場合、方法800はブロック820に進む。ブロック820において、マスタボット114は、ブロック805においてアクセスされた入力発話303から入力特徴ベクトルを生成し得る。入力特徴ベクトルは入力発話303を記述および表現し得る。入力発話等の一連の単語を特徴ベクトルに変換するためのさまざまな技術が公知であり、そのような技術のうちの1つ以上が用いられてもよい。たとえば、トレーニングシステム350は、ワン・ホット符号化または他の何らかの符号化を用いて、各トレーニング発話615を対応するトレーニング特徴ベクトル620として符号化し得るが、必ずしも符号化する必要はない。しかしながら、マスタボット114の一実施形態は、トレーニング発話からトレーニング特徴ベクトル620を生成するために用いられたのと同じ技術を用いる。
【0113】
判定ブロック825において、マスタボット114は、分類器モデル324に、ブロック820において生成された入力特徴ベクトルを、分類器モデル324を初期化するための方法500のブロック515において決定されたセット表現と比較させてもよく、これにより、マスタボット114は、入力特徴ベクトルがマスタボット114にとって利用可能ないずれのスキルボット116とも合致するかどうかを判断し得る。比較および合致のための特定の技術はセット表現の性質に依存し得る。たとえば、以下で説明するように、セット表現がトレーニング特徴ベクトル620のクラスタである場合、分類器モデル324は、入力特徴ベクトル(すなわち、入力特徴ベクトルを表わす点)をクラスタと比較することで、入力特徴ベクトルがクラスタのいずれかの範囲内にあり、このため、少なくとも1つのスキルボット116と合致するかどうかを判断し得るか、または、セット表現がトレーニング特徴ベクトルの合成ベクトルである場合、分類器モデル324は、入力特徴ベクトルを合成特徴ベクトルと比較することで、入力特徴ベクトルがこのようないずれの合成特徴ベクトルにも十分に類似しており、このため、少なくとも1つのスキルボット116と合致するかどうかを判断し得る。さまざまな実現例が実現可能であり、本開示の範囲内にある。
【0114】
判定ブロック825において、入力特徴ベクトルが少なくとも1つのスキルボット116と合致すると見なされる場合、ブロック830において、マスタボット114は、入力特徴ベクトルが合致すると見なされるスキルボット116に入力発話をルーティングしてもよい。しかしながら、判定ブロック825において、入力特徴ベクトルがいずれのスキルボット116とも合致しないと見なされる場合、ブロック835において、マスタボット114は、発話がいずれのスキルボット116によっても処理できないことを示し得る。この指示は、デジタルアシスタントに渡されてもよく、当該デジタルアシスタントは、ユーザ入力110がデジタルアシスタントによって処理または対処できないことを示す出力をユーザに提供してもよい。
【0115】
分類器モデルによって使用可能なクラスタの種類の例
上述のとおり、分類器モデル324によって使用可能であるセット表現の例示的なタイプはトレーニング特徴ベクトル620のクラスタである。概して、利用可能なスキルボット116によって対処することができ、このため、利用可能なスキルボット116に関係している入力発話は、それらのスキルボット116に関するトレーニング発話615に対していくらかの意味論的な類似度を有すると仮定することができる。したがって、利用可能なスキルボット116に関係する入力発話303は、特徴空間630内の1つ以上のトレーニング発話615に近接する入力特徴ベクトルとして表わすことができる可能性が高い。
【0116】
意味論的に類似する発話の特徴ベクトルの近接性を考慮すると、共通のインテントを有する点にプロットされた特徴ベクトルを区切るように、またはさまざまなインテントを有する特徴ベクトルを分離するように、或る境界を定義することができる。2次元空間では、当該境界は線または円であり得、このため、線などの一方側にある点は第1のインテントクラスに属し(すなわち、第1のインテントを有する発話に対応し)、線の他方側にある点は第2のインテントクラスに属する。3次元では、境界は平面または球体として表わすことができる。より概略的には、さまざまな次元では、境界は超平面、超球、または超体積であり得る。境界はさまざまな形状を有することができ、完全に球形または対称である必要はない。
【0117】
図9は、本明細書で説明するいくつかの実施形態に従った、例示的な発話の特徴ベクトルを表わす点を含む特徴空間630の一例を示す。この例では、例示的な発話のいくつかは残高クラスに属しており、口座残高情報を求める要求に関係する第1のインテントを表わしており、例示的な発話の残りは取引クラスに属しており、取引に関する情報を求める要求に関係する第2のインテントを表わしている。
図9では、残高クラス内の例示的な発話はbでラベル付けされ、取引クラス内の例示的な発話はtでラベル付けされている。これらのインテントクラスは、たとえば、金融関連のスキルボット116に関して定義され得る。
【0118】
たとえば、以下の表の発話例は、第1の列の残高クラスおよび第2の列の取引クラスに属し得る。
【0119】
【0120】
図10は、本明細書で説明するいくつかの実施形態に従った、例示的な発話の特徴ベクトルのインテントクラス間にクラス境界1010を有する
図9の特徴空間630の例を示す。具体的には、
図10に示すように、残高クラス内の点(すなわち、例示的な発話の特徴ベクトル)を取引クラス内の点から分離するために、クラス境界1010として線が引かれてもよい。このクラス境界1010は2つのインテントクラス間の分割の大まかな近似である。インテントクラス間においてより正確な境界1010を作成する場合、各クラスタが単一の対応するインテントクラス内の特徴ベクトルのみを含む(すなわち、そのインテントクラスに関連付けられたインテントを有する)ように、特徴ベクトルのクラスタを定義する円または他の幾何学的体積を設けることが必要となり得る。
【0121】
図11は、本明細書で説明するいくつかの実施形態に従った、共通のインテントに関連付けられた特徴ベクトルをそれぞれのクラスタに分離する、具体的には隔離する、クラス境界1010を有する
図9の特徴空間630の例を示す。この例では、いくつかの実施形態と同様に、或るインテントクラスのすべての特徴ベクトルが単一のクラスタ内にあるわけではなく、2つ以上のインテントクラスからの特徴ベクトルを含むクラスタはない。具体的には、図示される例では、第1のクラス境界1010によって定義される第1のクラスタ1110aは、残高クラス内の特徴ベクトルのみを含み、第2のクラス境界1010によって定義される第2のクラスタ1110bは、取引クラス内の特徴ベクトルのみを含む。以下で詳細に説明するように、本明細書で説明するいくつかの実施形態は、クラス境界1010を形成して、
図11に示すようなクラスタを作成することができる。
【0122】
図12は、本明細書で説明するいくつかの実施形態に従った、共通のインテントに関連付けられた特徴ベクトルをそれぞれのクラスタに分離する、具体的には隔離する、クラス境界1010を有する
図9の特徴空間630の別の例を示す。この例では、いくつかの実施形態と同様に、インテントクラスのすべての特徴ベクトルが単一のクラスタ内にあるわけではなく、2つ以上のインテントクラスからの特徴ベクトルを含むクラスタはない。具体的には、図示される例では、第1のクラス境界1010によって定義される第1のクラスタ1110cは残高クラス内の特徴ベクトルのみを含み、第2のクラス境界1010によって定義される第2のクラスタ1110dは取引クラス内の特徴ベクトルのみを含む。しかしながら、
図11の例とは対照的に、クラス境界1010と、このためクラスタとは重複している。本明細書に記載のいくつかの実施形態は、
図12に示すように重複するクラスタをサポートする。以下で詳細に説明するように、本明細書で説明するいくつかの実施形態は、クラス境界1010を形成して、
図12に示すようなクラスタを作成することができる。
【0123】
図13は、本明細書で説明するいくつかの実施形態に従った、特徴ベクトルをクラスタに分離するクラス境界1010を有する
図9の特徴空間630の別の例を示す。この例では、いくつかの実施形態と同様に、或るインテントクラスのすべての特徴ベクトルが単一のクラスタ内にあるわけではなく、さらに、或るクラスタは、インテントが異なっている特徴ベクトルを含めることによってさまざまなインテントを表わし得る。具体的には、図示される例では、第1のクラス境界1010によって定義される第1のクラスタ1110eは残高クラス内の特徴ベクトルのみを含み、第2のクラス境界1010によって定義される第2のクラスタ1110fは、残高クラス内のいくつかの特徴ベクトル(すなわち、残高関連インテントを有する)と、取引クラス内のいくつかの特徴ベクトル(すなわち、取引関連インテントを有する)とを含む。本明細書に記載のいくつかの実施形態は、
図13に示すように、さまざまなインテントを有するクラスタをサポートする。以下で詳細に説明するように、本明細書で説明するいくつかの実施形態は、クラス境界1010を形成して、
図13に示すようなクラスタを作成することができる。
【0124】
無関係の入力発話を識別するためのクラスタリング
図14は、本明細書で説明するいくつかの実施形態に従った、マスタボット114の分類器モデル324を初期化して、トレーニング特徴ベクトルのクラスタを利用することで、入力発話が利用可能なスキルボット116と無関係であるかまたは関係しているかを判断するための方法1400を示す図である。この方法1400または同様の方法は、入力発話303をスキルボット116に向けるためにマスタボット114を構成および使用する上述の方法200のブロック205で用いることができ、さらに、
図14の方法1400は
図5の方法500のより具体的な変形例である。この方法のいくつかの実施形態では、以下で説明するように、分類器モデル324を構成するk平均クラスタリングが実行される。k平均クラスタリングは、k最近傍などの他のクラスタリング技術と比較して、クラスタのより正確な形成を可能にし得るが、k平均クラスタリングの代わりに、またはk平均クラスタリングに加えて、さまざまなクラスタリング技術が用いられてもよい。
【0125】
図14に示す方法1400および本明細書で説明する他の方法は、1つ以上の処理ユニット(たとえば、プロセッサまたはプロセッサコア)によって実行されるソフトウェアで(たとえば、コード、命令、またはプログラムとして)、ハードウェアで、またはそれらの組合せで、実現され得る。ソフトウェアは、メモリデバイスなどの非一時的記憶媒体に記憶され得る。この方法1400は、例示的かつ非限定的であるよう意図されている。
図14は、特定の並びまたは順序で起こるさまざまな動作を示すが、これは限定することを意図するものではない。特定の実施形態では、たとえば、これらの動作が異なる順序で実行されてもよく、または、方法1400の1つ以上の動作が並行して実行されてもよい。特定の実施形態では、方法1400は、DABP102の一部であり得るトレーニングシステム350によって実行されてもよい。
【0126】
方法1400のブロック1405において、トレーニングシステム350は、マスタボット114に関連付けられたさまざまなスキルボット116についての、例示的な発話とも称されるトレーニング発話615にアクセスする。たとえば、トレーニング発話615は、トレーニングシステム350がアクセス可能なトレーニングデータ354にスキルボットデータとして記憶されてもよい。いくつかの実施形態では、マスタボット114にとって利用可能な各スキルボット116はトレーニング発話615のサブセットに関連付けられてもよく、トレーニング発話615のそのような各サブセットは、スキルボット116が構成される各インテントごとにトレーニング発話615を含んでもよい。このため、トレーニング発話615のセット一式は、あらゆるスキルボット116のあらゆるインテントが表わされるように、各スキルボット116の各インテントごとにトレーニング発話615を含み得る。
【0127】
図15は、本明細書で説明するいくつかの実施形態に従った、
図14の方法1400の局面の実行の一例を示す。
図15に示されるように、トレーニングシステム350はトレーニングデータ354にアクセスし得る。トレーニングデータ354は、トレーニング中の分類器モデル324が属するマスタボット114にとって利用可能なスキルボット116に関係するスキルボットデータを含み得る。この例では、トレーニングシステム350によってアクセスされるトレーニングデータ354は、第1のスキルボットデータ358d、第2のスキルボットデータ358e、および第3のスキルボットデータ358fからのトレーニング発話615を含み得るものであって、その各々は、マスタボット114にとって利用可能なそれぞれのスキルボット116を表わすトレーニング発話615を含み得る。さらに、スキルボットデータの所与のセットについては、
図15の第1のスキルボットデータ358dに関して示されるように、各トレーニング発話615は、関連付けられたスキルボット116が評価および対処するように構成されているインテントに関連付けられ得る。
【0128】
図14のブロック1410において、トレーニングシステム350は、ブロック1405でアクセスされたトレーニング発話615からトレーニング特徴ベクトル620を生成する。上述のように、トレーニング発話615は、各スキルボット116に関連付けられたサブセットを含んでもよく、さらに、各スキルボット116の各インテントごとにトレーニング発話615を含んでもよい。したがって、いくつかの実施形態では、トレーニング特徴ベクトル620は、各スキルボット116ごとにそれぞれのサブセットを含んでもよく、さらに、各スキルボットの各インテントごとにそれぞれの特徴ベクトルを含んでもよい。上述のように、トレーニングシステム350は、トレーニング特徴ベクトル620を生成して、それぞれのトレーニング発話615を記述および表現し得る。トレーニング発話615などの一連の単語をトレーニング特徴ベクトル620などの特徴ベクトルに変換するためのさまざまな技術が公知であり、そのような技術のうちの1つ以上が用いられ得る。たとえば、トレーニングシステム350は、ワン・ホット符号化または他の何らかの符号化を用いて、各トレーニング発話615を対応するトレーニング特徴ベクトル620として符号化し得るが、必ずしも符号化する必要はない。
【0129】
図15に示されるように、たとえば、さまざまなスキルボットデータ358からの各トレーニング発話615は、それぞれのトレーニング特徴ベクトル620に変換され得る。したがって、いくつかの実施形態では、結果として得られるトレーニング特徴ベクトル620は、トレーニング発話615が提供されたすべてのスキルボット116、およびトレーニング発話615が提供されたすべてのインテントを表わし得る。
【0130】
図14のブロック1415において、トレーニングシステム350は、生成されるべきクラスタの量であるカウントを設定(すなわち、初期化)し得る。いくつかの実施形態では、たとえば、カウントは最初に量nに設定されてもよく、ここで、nは、マスタボット114にとって利用可能なさまざまなスキルボット116にわたるインテントの総数である。しかしながら、カウントの初期値として、他のさまざまな量を用いることができる。
【0131】
いくつかの実施形態では、トレーニングシステム350は、トレーニング特徴ベクトル620のクラスタのセットを反復的に決定するステップを1回、2回、またはそれ以上の回数だけ実行する。この方法1400は、クラスタを決定するステップを2回を利用するが、いくつかの実施形態では、1回またはそれ以上の回数が用いられてもよい。ブロック1420において、トレーニングシステム350は、第1回目のクラスタを決定するステップを開始する。第1回目は反復ループを利用する。この反復ループでは、トレーニングシステム350がトレーニング特徴ベクトル620のクラスタを生成し、次いで、そのようなクラスタが十分であるかを判断する。以下で説明するように、クラスタが十分であると見なされる場合、トレーニングシステム350は第1回目の反復を終了し得る。
【0132】
いくつかの実施形態では、ブロック1425は、クラスタを決定するための第1回目の反復ループの開始部分である。具体的には、ブロック1425において、トレーニングシステム3509は、この反復において生成されるべきさまざまなクラスタの各々についての重心位置(すなわち、各重心ごとの位置)を決定し得る。重心位置の数量は、ブロック1415で決定されたカウントに等しい。いくつかの実施形態では、このループの第1回目の反復において、トレーニングシステム350は、トレーニング発話615が収まる特徴空間630内の、カウントに等しい数量を有する、ランダムに選択された重心位置のセットを選択し得る。より具体的には、たとえば、トレーニングシステム350は、トレーニング特徴ベクトル620に対応する点に関して、最小境界ボックスなどの境界ボックスを決定し得る。次いで、トレーニングシステム350は、その境界ボックス内の重心位置のセットをランダムに選択し得る。この場合、選択された位置の数はクラスタに関して決定されたカウントに等しい。第1回目以外の反復中、カウントは前回の反復から増加しており、このため、いくつかの実施形態では、新たに追加される重心の重心位置のみがランダムに決定される。前回の反復で引き継がれている重心は、それらの位置を保持し得る。対応するクラスタについてのそれぞれの重心は各重心位置ごとに位置決めされ得る。
【0133】
ブロック1430において、トレーニングシステム350は、各トレーニング特徴ベクトル620を、ブロック1425において位置が決定されたさまざまな重心のうちそれぞれの最も近い重心に割当てることによって、クラスタを決定し得る。たとえば、各トレーニング特徴ベクトル620ごとに、トレーニングシステム350は、各重心位置までの距離を計算し得るとともに、そのトレーニング特徴ベクトル620を、このような最小距離を有する重心に割当て得る。共通の重心に割当てられたトレーニング特徴ベクトル620のセットは、その重心に関連付けられたクラスタを一緒に形成し得る。したがって、カウントの値である重心の数量に等しいクラスタの数量が存在し得る。
【0134】
図15の例では、特徴空間630の一部分のみが示されており、その部分内では第1の重心1510aおよび第2の重心1510bが見えている。トレーニングシステム350は、図示される3つのトレーニング特徴ベクトル620のうち、2つが第1の重心1510aに最も近く、1つが第2の重心1510bに最も近いと判断した。この例では、第1の重心1510aに最も近い2つのトレーニング特徴ベクトル620が第1のクラスタ1110gを構成し、第2の重心1510bに最も近い1つのトレーニング特徴ベクトル620が第2のクラスタ1110hを構成している。
【0135】
図14のブロック1435において、ブロック1430において決定されたクラスタに関して、トレーニングシステム350は各クラスタの重心の位置を再計算する。たとえば、いくつかの実施形態では、各クラスタの重心は、その重心に割当てられるとともにこのためそのクラスタに割当てられたトレーニング特徴ベクトル620の平均(たとえば、算術平均)となるように計算される。
【0136】
判定ブロック1440において、トレーニングシステム350は、停止条件が満たされるかどうかを判断し得る。いくつかの実施形態では、トレーニングシステム350は、クラスタリングの有意な改善が起こる可能性がなくなるような収束が生じるまで、この方法1400または同様の方法を利用して、重心の数量を繰返し増加させ(すなわち、カウントを増加させ)、トレーニング特徴ベクトル620をそれらの最も近い関連重心に割当て得る。いくつかの実施形態では、停止条件は十分な収束のレベルを定義する。
【0137】
いくつかの実施形態では、停止条件は、以下の条件の一方または両方が真である場合に満たされ得る。すなわち、(1)平均クラスタコストは第1の閾値を満たす。たとえば、平均クラスタコストが1.5未満または他の何らかの所定の値未満であるなどである。または、(2)外れ値比は第2の閾値を満たす。たとえば、当該外れ値比が0.25以下となるかまたは他の何らかの所定の値以下になるなどである。特定のクラスタについてのクラスタコストは、(a)ブロック1435で再計算されたクラスタの重心と、その重心に割当てられた各トレーニング特徴ベクトル620との間の二乗距離の合計を、その重心に割当てられたトレーニング特徴ベクトル620の量で割ったもの(b)として定義されてもよい。したがって、平均クラスタコストは、さまざまな重心のさまざまなクラスタコストの平均であり得る。外れ値比は、クラスタ間の外れ値の総数をクラスタの数(すなわち、カウント)で割ったものとして定義されてもよい。外れ値を定義するためのさまざまな技術があり、そのような技術のうちの1つ以上がトレーニングシステム350によって用いられ得る。いくつかの実施形態では、停止条件は、(1)平均クラスタコストが第1の閾値(たとえば、1.5未満)を満たし、(2)外れ値比が第2の閾値(たとえば、0.25以下)を満たす場合、およびそのような場合にのみ満たされる。
【0138】
概して、平均クラスタコストは、kの値(すなわち、カウント)が増加するにつれて減少する傾向があるのに対して、外れ値比は、kが増加するにつれて増加する傾向がある。いくつかの実施形態では、両方の要因を考慮する上述の停止条件が適用される場合、クラスタカウントおよび外れ値比の両方に関してそれぞれの閾値を満たす最大k値は、分類器モデル324についての最終k値となる。
【0139】
判定ブロック1440で停止条件が満たされない場合、方法1400はブロック1445に進み得る。ブロック1445において、トレーニングシステムは、次の回のクラスタリングのためのカウントを増加させる。いくつかの実施形態では、カウントは、特定回数以下のループの反復後に停止条件が満たされる可能性を高める量に該当する分だけ、漸増的に増加させてもよい。たとえば、いくつかの実施形態では、カウントは、
【0140】
【0141】
に等しいステップサイズの値だけ増加させることができる。ここで、nは、利用可能なすべてのスキルボット116にわたるインテントの総数であり、uは、利用可能なすべてのスキルボット116にわたるトレーニング発話615の総数である。このステップサイズは、停止条件が最終的に満たされることを確実にするだろう。具体的には、このステップサイズの場合、nに等しいカウントから開始して、第20回目の反復は発話の量であるu以上であるカウントを有するだろう。カウントがu以上である場合、各発話はそれ自体のクラスタを有する可能性があるか、またはそうでない場合、平均クラスタコストが1.5未満になり、外れ値比が0.25以下になる可能性が依然としてあり、これは例示的な停止条件を満たしている。より概略的には、ステップサイズは、不合理な量の時間にわたるループによって上記反復がコンピューティングリソースを浪費しないことを確実にするように選択され得る。ブロック1445においてカウントが更新された後、方法1400はブロック1425に戻り、別のループ反復を実行する。
【0142】
しかしながら、判定ブロック1440において停止条件が満たされる場合、方法1400は現在の反復ループを終了し、ブロック1450に進んでもよい。ブロック1450において、トレーニングシステム350は第2回目のクラスタリングを開始する。この場合、クラスタは、第1回目に行なわれた作業に基づいてさらに定義されてもよい。
【0143】
いくつかの実施形態では、ブロック1455は、クラスタを決定するために第2回目の反復ループの開始部分である。具体的には、ブロック1455において、トレーニングシステム3509は、この反復において生成されるべきさまざまなクラスタについてのそれぞれの重心位置(すなわち、各重心ごとのそれぞれの位置)を決定し得る。重心位置の数量はカウントの現在の値に等しい。いくつかの実施形態では、このループの第1回目の反復において、トレーニングシステム350は、第1回目の終了前にブロック1435で再計算されたとおりの重心位置を用いる。第1回目以外の反復では、カウントは前の反復から増加している。その場合、前回の反復からの重心はそれらの重心位置を保持し得るとともに、いくつかの実施形態では、カウントが増加することによって新たに追加される重心の重心位置はランダムに決定され得る。対応するクラスタについてのそれぞれの重心は、各重心位置ごとに位置決めされ得る。
【0144】
ブロック1460において、トレーニングシステム350は、各トレーニング特徴ベクトル620を、ブロック1455において位置が決定されたさまざまな重心のうちそれぞれの最も近い重心に割当てることによって、クラスタを決定し得る。たとえば、各トレーニング特徴ベクトル620ごとに、トレーニングシステム350は、各重心位置までの距離を計算し得るとともに、そのトレーニング特徴ベクトル620を、そのような最小距離を有する重心に割当て得る。共通の重心に割当てられたトレーニング特徴ベクトル620のセットは、その重心に関連付けられたクラスタを一緒に形成し得る。このため、カウントの値である重心の数量に等しいクラスタの数量が存在し得る。
【0145】
ブロック1465において、ブロック1460で決定されたクラスタに関して、トレーニングシステム350は、各クラスタの重心の位置を再計算する。たとえば、いくつかの実施形態では、各クラスタの重心は、その重心に割当てられるとともにこのためそのクラスタに割当てられたトレーニング特徴ベクトル620の平均(たとえば、算術平均)となるように計算される。
【0146】
判定ブロック1470において、トレーニングシステム350は、停止条件が満たされるかどうかを判断し得る。いくつかの実施形態では、トレーニングシステム350は、クラスタリングの有意な改善が起こる可能性がなくなるような収束が生じるまで、この方法1400または同様の方法を利用して、重心の数量を繰返し増加させ(すなわち、カウントを増加させ)、トレーニング特徴ベクトル620をそれらの最も近い関連重心に割当て得る。いくつかの実施形態では、停止条件は十分な収束のレベルを定義する。
【0147】
いくつかの実施形態では、停止条件は、以下の条件の一方または両方が真である場合に満たされ得る。すなわち、(1)平均クラスタコストは第1の閾値を満たす。たとえば、平均クラスタコストが1.5未満または他の何らかの所定の値未満であるなどである。または、(2)外れ値比は第2の閾値を満たす。たとえば、当該外れ値比が0.25以下となるかまたは他の何らかの所定の値以下になるなどである。特定のクラスタについてのクラスタコストは、(a)ブロック1465で再計算されたクラスタの重心と、その重心に割当てられた各トレーニング特徴ベクトル620との間の二乗距離の合計を、その重心に割当てられたトレーニング特徴ベクトル620の量で割ったもの(b)として定義されてもよい。したがって、平均クラスタコストは、さまざまな重心のさまざまなクラスタコストの平均であり得る。外れ値比は、クラスタ間の外れ値の総数をクラスタの数(すなわち、カウント)で割ったものとして定義されてもよい。外れ値を定義するためのさまざまな技術があり、そのような技術のうちの1つ以上がトレーニングシステム350によって用いられ得る。いくつかの実施形態では、停止条件は、(1)平均クラスタコストが第1の閾値(たとえば、1.5未満)を満たし、(2)外れ値比が第2の閾値(たとえば、0.25以下)を満たす場合、およびそのような場合にのみ満たされる。
【0148】
判定ブロック1470で停止条件が満たされない場合、方法1400はブロック1475に進み得る。ブロック1475において、トレーニングシステムは、次の回のクラスタリングのためのカウントを増加させる。いくつかの実施形態では、カウントは、ループの特定回数以下のループの反復後に停止条件が満たされる可能性を高める量に該当する分だけ、漸増的に増加させてもよい。たとえば、いくつかの実施形態では、カウントは、
【0149】
【0150】
に等しいステップサイズの値だけ増加させることができる。このステップサイズにより、停止条件が最終的に満たされることが確実となる。具体的には、このステップサイズの場合、停止条件は、第5回目の反復の終了までに満たされる可能性が高い。より概略的には、ステップサイズは、不合理な量の時間にわたるループによって上記反復がコンピューティングリソースを浪費しないことを確実にするように選択され得る。ブロック1475においてカウントが更新された後、方法1400はブロック1455に戻り、別のループ反復を実行する。
【0151】
しかしながら、判定ブロック1470において停止条件が満たされる場合、方法1400は、現在の反復ループを終了し、ブロック1480に進んでもよい。ブロック1480において、トレーニングシステム350は、上記において決定された各クラスタごとにそれぞれの境界1010を決定する。いくつかの実施形態では、クラスタのための境界1010は、クラスタの重心を中心とするとともに、クラスタに割当てられた全てのトレーニング特徴ベクトル620を含むように定義される。いくつかの実施形態では、たとえば、クラスタの境界1010は、重心に中心を有する超球(たとえば、円または球)である。いくつかの実施形態では、境界1010の半径は、マージン値(すなわち、パディング量)に対して、(1)重心から最も遠いクラスタで、中心からトレーニング特徴ベクトル620までの最大距離のうち大きい方を加えるか、または、(2)クラスタ内のトレーニング特徴ベクトル620から重心までのそれぞれの距離の平均を加え、さらに、このような距離の標準偏差の3倍を加えた値であり得る。すなわち、半径は、radius = margin + max(max(distances), mean(distances) + 3σ(distances))に設定され得る。この場合、距離は、クラスタのトレーニング特徴ベクトルからクラスタの重心までのそれぞれの距離の集合であり、max(distances)はその集合の最大値であり、mean(distances)はその集合の平均であり、σ(distances)はその集合の標準偏差である。さらに、マージン値(margin)は、誤差のマージンであってもよく、ゼロ以上の値を有し得る。
【0152】
いくつかの実施形態では、マージンは、関連する入力発話303がすべてのクラスタの範囲外にあり、このため、非クラス316のメンバとしてラベル付けされる可能性を小さくするように、それ以外の場合よりも広い有効範囲を包含する境界1010を定義するために用いられ得る。言い換えれば、マージンは境界1010を埋め得る。たとえば、マージンは
【0153】
【0154】
の値を有してもよい。ここで、uは用いられているトレーニング発話615の総数である。マージンは以下の状況を考慮に入れることができる。具体的には、潜在的にトレーニング発話の量が低すぎる(たとえば、20~30)ので、トレーニング特徴ベクトル620が特徴空間630の有意な部分をカバーせず、このため、クラスタが小さすぎるせいで関連する入力発話303を捕捉できなくなるような状況である。
【0155】
図15の例に戻って、トレーニングシステム350は、トレーニング特徴ベクトル620の割当てに基づいて決定された各クラスタごとにそれぞれの境界を決定する。具体的には、この例では、第1の境界1010aは、2つのトレーニング特徴ベクトル620を含む第1のクラスタ1110gについて決定され、第2の境界1010bは、1つのトレーニング特徴ベクトル620を含む第2のクラスタ1110hについて決定される。トレーニング特徴ベクトルの量は、この例のように少なくてもよいし、クラスタ当たりのトレーニング特徴ベクトル620の数などのように大量であってもよい。この単純化した例が非限定的なものであり、例示のみを目的として提供されていることが理解されるだろう。
【0156】
図14に示されるように、ブロック1485において、トレーニングシステム350は、ブロック1480において決定された、クラスタ境界とも称される境界1010を利用するようにマスタボット114の分類器モデル324を構成し得る。たとえば、トレーニングシステム350は、分類器モデルがアクセス可能な記憶装置に(たとえば、デジタルアシスタント106上に)クラスタ境界の指示を格納してもよい。分類器モデル324は、入力発話を、トレーニング特徴ベクトル620のセット表現として機能するこのようなクラスタ境界1010と比較するように構成され得る。
【0157】
上述の方法1400にさまざまな変更を加えることができ、これら変更は本開示の範囲内である。たとえば、トレーニングシステム350のいくつかの例は、クラスタの改良を1回分だけ実行する。その場合、ブロック1445からブロック1475までの動作は、判定ブロック1440において停止条件が満たされるときに方法1400がブロック1480に進むようにスキップされ得る。トレーニングシステム350の他のいくつかの例は、2回を超える回数のクラスタの改良を実行する。その場合、ブロック1445からブロック1475までの動作は、第2の回目の実行後に回数が追加されるたびに繰返され得る。これらおよび他の実現例は本開示の範囲内である。
【0158】
いくつかの実施形態では、上述の方法1400において決定されるk値(すなわち、カウントの値と、これにより、クラスタの数と)は、トレーニング発話615の総数と、特徴空間630全体にわたるトレーニング特徴ベクトル620の分布とに依存する。したがって、k値は、利用可能なスキルボット116と、それらのスキルボット116のインテントを表わすために利用可能なトレーニング発話615とに応じて、マスタボット114ごとに変化し得る。最適なk値は、各クラスタに関係する入力発話303が当該クラスタの境界1010の範囲内に収まる一方で無関係な発話が境界1010の範囲から外れるほど十分に各クラスタが大きくなるようなバランスの取れた値である。クラスタが大きすぎる場合、虚偽の合致が起こるリスクが増加する。クラスタが小さすぎる(たとえば、単一のトレーニング発話615からなる)場合、分類器モデル324が過剰適合され得るので、そのようなクラスタの有用性が制限されてしまう。
【0159】
方法1400の上記の例においては、トレーニング特徴ベクトル620は、インテントに基づいて分割またはグループ化されておらず、このため、或るクラスタは、さまざまなスキルボット116または1つ以上のスキルボット116のさまざまなインテントを表わすトレーニング特徴ベクトル620を含む可能性がある。付加的または代替的には、トレーニングシステム350の一実施形態は、各クラスタが、単一のスキルボット116、単一のインテント、または単一のサブボットを表わすトレーニング特徴ベクトル620のみを含むことを確実にし得る。この場合、サブボットは、単一のスキルボット116を表わすトレーニング発話のサブセットに関連付けられている。このようにクラスタを制限するのにさまざまな技術が用いられ得る。たとえば、トレーニング発話はインテント、サブボット、またはスキルボット116に基づいてグループに分離されてもよく、上記方法1400のそれぞれの事例は各グループごとに実行されてもよい。このようにして、対応するグループ(たとえば、特定のスキルボット116を表わすトレーニング発話615)のための方法1400の1つのインスタンス中に決定されたクラスタは、その対応するグループからのトレーニング特徴ベクトル620のみを含み得る。これは、単一のインテント、サブボット、またはスキルボット116のトレーニング発話に限定され得る。他のさまざまな実現例が可能であり、本開示の範囲内にある。
【0160】
図16は、本明細書で説明されるいくつかの実施形態に従った、マスタボット114の分類器モデル324を用いて、ユーザ入力110として提供される入力発話303が、マスタボット114と関連付けられるいずれの利用可能なスキルボット116とも無関係であるかどうかを判断する方法1600を示す図である。この方法1600または同様の方法は、入力発話303をスキルボット116に向けるようにマスタボット114を構成および使用する上述の方法200のブロック215で用いることができる。
図16の方法1600は、
図7の方法700のより具体的な変形例であり、
図7の方法700と同様に、
図16の方法1600は、
図8の方法800に関して説明した予備的なフィルタリング動作とともに用いられ得る。より具体的には、以下で説明するように、マスタボット114の分類器モデル324は、トレーニング特徴ベクトル620のクラスタを利用して、入力発話303が非クラス316に属する(すなわち、利用可能なスキルボット116とは無関係である)かどうかを判断し得る。
【0161】
図16に示す方法1600および本明細書で説明する他の方法は、1つ以上の処理ユニット(たとえば、プロセッサまたはプロセッサコア)によって実行されるソフトウェアで(たとえば、コード、命令、またはプログラムとして)、ハードウェアで、またはそれらの組合せで、実現され得る。ソフトウェアは、メモリデバイスなどの非一時的記憶媒体に記憶され得る。この方法1600は、例示的かつ非限定的であるよう意図されている。
図16は、特定の並びまたは順序で起こるさまざまな動作を示すが、これは限定することを意図するものではない。特定の実施形態では、たとえば、これらの動作が異なる順序で実行されてもよく、または、方法1600の1つ以上の動作が並行して実行されてもよい。特定の実施形態では、方法1600は、利用可能なスキルボット116のセットに関連付けられたマスタボット114によって実行されてもよい。
【0162】
方法1600のブロック1605において、マスタボット114は、ユーザ入力110として提供された入力発話303にアクセスする。たとえば、いくつかの実施形態では、ユーザは、音声入力の形式でユーザ入力110を提供し得るとともに、デジタルアシスタント106は、マスタボット114によって使用するために、そのユーザ入力110をテキスト入力発話303に変換し得る。
【0163】
ブロック1610において、マスタボット114は、ブロック1605においてアクセスされた入力発話303から入力特徴ベクトルを生成し得る。より具体的には、いくつかの実施形態では、マスタボット114は、マスタボット114の分類器モデル324に、入力発話303から入力特徴ベクトルを生成させる。入力特徴ベクトルは、入力発話303を記述および表現し得る。入力発話等の一連の単語を特徴ベクトルに変換するためのさまざまな技術が公知であり、そのような技術のうちの1つ以上が用いられてもよい。たとえば、トレーニングシステム350は、ワン・ホット符号化または他の何らかの符号化を用いて、入力発話303を対応する入力特徴ベクトルとして符号化し得るが、必ずしも符号化する必要はない。しかしながら、マスタボット114の一実施形態は、分類器モデル324をトレーニングする際にトレーニング発話615からトレーニング特徴ベクトル620を生成するために用いられたのと同じ技術を用いる。
【0164】
判定ブロック1615において、マスタボット114は、ブロック1610で生成された入力特徴ベクトルをクラスタと比較する。より具体的には、いくつかの実施形態では、マスタボット114は、分類器モデル324に、ブロック1610で生成された入力特徴ベクトルを、トレーニング中に決定されたクラスタ、具体的にはクラスタの境界、と比較させる。上述のように、各クラスタは、トレーニング特徴ベクトル620のセットを含み得るとともに、そのクラスタのトレーニング特徴ベクトル620に基づく境界1010を含み得る。たとえば、境界1010は、クラスタに割当てられた全てのトレーニング特徴ベクトル620と、場合によっては、それらのトレーニング特徴ベクトル620の外側のいくつかの追加の空間とを含む。具体的には、いくつかの実施形態では、分類器モデル324は、入力特徴ベクトル(すなわち、入力特徴ベクトルに対応する点)がトレーニング特徴ベクトル620のいずれのクラスタのいずれの境界1010内にもあるかどうかを判断する。点が境界内にあるかどうかを判断するためのさまざまな技術が当技術分野に存在しており、1つ以上のそのような技術を用いて、入力特徴ベクトルがクラスタの境界1010のいずれかの範囲内にあるかどうかを判断し得る。
【0165】
判定ブロック1620では、分類器モデル324は、入力特徴ベクトルをクラスタ境界と比較することに基づいて判定を行なう。入力特徴ベクトルがいずれのクラスタ境界内にもなく、このため、すべてのクラスタ境界1010の範囲外にある場合、方法1600はブロック1625に進む。
【0166】
図17は、本明細書で説明するいくつかの実施形態に従った、入力特徴ベクトル1710がすべてのクラスタ境界の範囲外にある場合にこの方法1600を実行する例を示す。いくつかの実施形態では、マスタボット114は、入力発話303を分類器モデル324に提供し、これにより、分類器モデル324に、入力発話303を入力特徴ベクトル1710に変換させるとともに、入力特徴ベクトルをクラスタ境界1010と比較させる。
図17の例では、特徴空間630に5つのクラスタ1110が示されている。しかしながら、より多いかまたはより少ない数のクラスタ1110が用いられてもよい。この例では、入力特徴ベクトル1710はすべてのクラスタ境界1010の範囲外にあり、したがって、分類器モデル324は、入力発話303が非クラス316に属するという指示をマスタボット114に出力する。
【0167】
図16に戻って、ブロック1625において、マスタボット114は、入力特徴ベクトルがすべてのクラスタ境界1010の範囲外にあることを分類器モデル324が示すことに基づいて、入力発話303を処理することができない(すなわち、さらに処理することができない)ことを示す。たとえば、デジタルアシスタント106は、明確化を要求するように、またはユーザ入力110がデジタルアシスタントのスキルに関連していないことを報告するように、ユーザに応答してもよい。
【0168】
しかしながら、入力特徴ベクトルが1つ以上のクラスタ境界1010の範囲内にある場合、方法1600はブロック1630までスキップする。ブロック1630において、マスタボット114は、利用可能なスキルボットの中からスキルボット116の1つを選択することによって、入力発話303に対処する(すなわち、入力発話303をさらに処理し、入力発話303に対する応答435を決定する)ためのスキルボット116を決定する。スキルボット116の決定は、さまざまな方法で実行することができ、用いられる技術は、入力特徴ベクトルが収まる1つ以上のクラスタ境界1010の構成に依存し得る。
【0169】
入力発話303のためのスキルボット116を選択するために、マスタボット114は、入力特徴ベクトル1710とクラスタを共有するトレーニング特徴ベクトル620によって表わされるさまざまなトレーニング発話(すなわち、入力特徴ベクトル1710が収まっている境界1010内のクラスタ1110のメンバであるトレーニング特徴ベクトル)を考慮に入れてもよい。たとえば、トレーニング特徴ベクトル620が重複する2つ以上のクラスタ1110内に収まる場合、それらの2つ以上のクラスタ1110のいずれかにおいて対応するトレーニング特徴ベクトル1710を有するトレーニング発話615が考慮され得る。同様に、トレーニング特徴ベクトル620が単一のクラスタ1110内のみに収まる場合、そのクラスタ1110内の対応するトレーニング特徴ベクトル620を有するトレーニング発話615が考慮される。考慮されているすべてのトレーニング発話615が単一のスキルボット116を表わしている場合、場合によっては、たとえば、入力特徴ベクトル1710が、単一のスキルボット116のみに関連付けられたトレーニング特徴ベクトル620を含むクラスタ1110内に収まる場合、マスタボット114は、そのスキルボット116を選択して入力発話303に対処してもよい。
【0170】
いくつかの実施形態では、分類器モデル324は、入力発話に対処するための特定のスキルボット116の特定のインテントを識別することが可能であり得る。たとえば、トレーニング特徴ベクトル620が収まる1つ以上のクラスタ1110が、単一のスキルボット116の単一のインテントを表わすトレーニング発話615のトレーニング特徴ベクトル620のみを含む場合、分類器モデル324は、その特定のインテントが入力発話303に適用可能であることを識別し得る。分類器モデル324が特定のスキルボット116の特定のインテントを識別することができる場合、マスタボット114は、入力発話303をそのスキルボット116にルーティングし得るとともに、そのインテントをスキルボット116に示し得る。その結果、スキルボット116は、インテントを推測するために入力発話303のそれ自体の分類の実行を省く可能性があるが、むしろ、マスタボット114によって示されるインテントを推測することもある。
【0171】
しかしながら、考慮されているトレーニング発話615が複数のスキルボット116を表わす場合、場合によっては、たとえば、入力特徴ベクトル1710が複数のスキルボット116を表わすトレーニング特徴ベクトル620で構成されるクラスタ1110内に収まる場合、または、入力特徴ベクトル1710が複数の重複クラスタ1110内に収まる場合、マスタボット114は、入力発話303をさらに分類してスキルボット116を選択することを必要とする可能性がある。さまざまな技術を用いて入力発話303をさらに分類してもよい。いくつかの実施形態では、分類器モデル324は、機械学習モードを実現して、入力特徴ベクトル1710が収まる1つ以上のクラスタ1110内に関連付けられたトレーニング特徴ベクトル620を有する各スキルボット116ごとに、入力発話303に関する信頼度スコアを(たとえば、ロジスティック回帰モデルを用いて)計算する。たとえば、機械学習モデルは、合成特徴ベクトルを用いてトレーニングされてもよい。次いで、マスタボット114は、入力発話303に対処するために最も高い信頼度スコアを有するスキルボット116を選択してもよい。関連するスキルボット116を識別するための信頼度スコアの従来の用途とは対照的に、いくつかの実施形態では、入力発話303がスキルボット116に関係していることが既に判断されている。したがって、入力発話303を無関係のスキルボット116にルーティングするリスクが軽減または排除される。
【0172】
付加的または代替的な実施形態では、分類器モデル324は、k最近傍技術を利用して、入力特徴ベクトル1710と1つ以上のクラスタ1110を共有している関連するトレーニング特徴ベクトル620が属する2つ以上のスキルボット116の中から或るスキルボット116を選択し得る。たとえば、分類器モデル324は、kの値を選択し得るとともに、入力特徴ベクトル1710の1つ以上のクラスタ1110内に収まるトレーニング特徴ベクトル620の中から、入力特徴ベクトル1710に対するk最近傍トレーニング特徴ベクトル620を識別し得る。分類器モデル324は、k最近傍トレーニング特徴ベクトル620のそのセットの中で最多数の関連するトレーニング特徴ベクトル620を有するスキルボット116を識別し得る。マスタボット114は、入力発話に対処するためにそのスキルボット116を選択し得る。スキルボット116を選択するための他のさまざまな実現例が実現可能であり、本開示の範囲内にある。
【0173】
ブロック1635において、マスタボット114は、ブロック1630において選択されたスキルボットに入力発話303を転送し得る。次いで、スキルボット116は、入力発話303を処理してユーザ入力110に応答し得る。
【0174】
無関係な入力発話を識別するための合成ベクトルの使用
上述したように、概して、本明細書で説明するいくつかの実施形態は、トレーニング特徴ベクトル620のセット表現を利用して、入力発話303が利用可能なスキルボット116のセットに関係しているかどうかを判断する。また、上述したように、セット表現はクラスタ1110であり得る。しかしながら、付加的または代替的には、セット表現は、本明細書では合成特徴ベクトルと称される、より高レベルの特徴ベクトルであり得る。
【0175】
図18は、本明細書で説明するいくつかの実施形態に従った、合成特徴ベクトルを利用して、入力発話303が利用可能なスキルボット116と無関係であるかまたは関係しているかを判断するためにマスタボット114の分類器モデル324を初期化する方法1800を示す図である。この方法1800または同様の方法は、入力発話303をスキルボット116に向けるためにマスタボット114を構成および使用する上述の方法200のブロック205で用いることができ、さらに、
図18の方法1800は
図5の方法500のより具体的な変形例である。
【0176】
図18に示す方法1800および本明細書で説明する他の方法は、1つ以上の処理ユニット(たとえば、プロセッサまたはプロセッサコア)によって実行されるソフトウェアで(たとえば、コード、命令、またはプログラムとして)、ハードウェアで、またはそれらの組合せで、実現され得る。ソフトウェアは、メモリデバイスなどの非一時的記憶媒体に記憶され得る。この方法1800は例示的かつ非限定的であるよう意図されている。
図18は、特定の並びまたは順序で起こるさまざまな動作を示すが、これは限定することを意図するものではない。特定の実施形態では、たとえば、これらの動作が異なる順序で実行されてもよく、または、方法1800の1つ以上の動作が並行して実行されてもよい。特定の実施形態では、方法1800は、DABP102の一部であり得るトレーニングシステム350によって実行されてもよい。
【0177】
方法1800のブロック1805において,トレーニングシステム350は、マスタボット114に関連付けられたさまざまなスキルボット116についてのトレーニング発話615(例示的発話とも称される)にアクセスする。たとえば、トレーニング発話615は、トレーニングシステム350がアクセス可能なトレーニングデータ354にスキルボットデータとして記憶されてもよい。いくつかの実施形態では、マスタボット114にとって利用可能な各スキルボット116は、トレーニング発話615のサブセットと関連付けられてもよく、トレーニング発話615のそのような各サブセットは、スキルボット116が構成される各インテントごとにトレーニング発話615を含んでもよい。このため、トレーニング発話615のセット一式は、あらゆるスキルボット116のあらゆるインテントが表わされるように、各スキルボット116の各インテントごとにトレーニング発話615を含み得る。
【0178】
ブロック1810において、トレーニングシステム350は、ブロック1805でアクセスされたトレーニング発話615からトレーニング特徴ベクトル620を生成する。上述したように、トレーニング発話615は、各スキルボット116に関連付けられたサブセットを含み得るとともに、さらに、各スキルボット116の各インテントごとにトレーニング発話615を含み得る。したがって、いくつかの実施形態では、トレーニング特徴ベクトル620は、各スキルボット116ごとにそれぞれのサブセットを含み得るとともに、さらに、各スキルボットの各インテントごとにそれぞれの特徴ベクトルを含み得る。上述したように、トレーニングシステム350は、それぞれのトレーニング発話615を記述および表現するためにトレーニング特徴ベクトル620を生成し得る。トレーニング発話615などの一連の単語をトレーニング特徴ベクトル620などの特徴ベクトルに変換するためのさまざまな技術が公知であり、そのような技術のうちの1つ以上が用いられ得る。たとえば、トレーニングシステム350は、ワン・ホット符号化または他の何らかの符号化を用いて、各トレーニング発話615を対応するトレーニング特徴ベクトル620として符号化し得るが、必ずしも符号化する必要はない。
【0179】
ブロック1815において、トレーニングシステム350は、トレーニング特徴ベクトル620と、したがって対応するトレーニング発話615とを会話カテゴリに分割する。会話カテゴリは、たとえば、インテント、サブボット、またはスキルボット116に基づいて定義することができる。いくつかの実施形態では、会話カテゴリがインテントに基づいている場合、各会話カテゴリは、スキルボット116が構成される単一の対応するインテントを表わすトレーニング特徴ベクトル620を含む。その場合、会話カテゴリの数は、マスタボット114が利用可能なさまざまなスキルボット116にわたるインテントの数に等しい可能性がある。いくつかの実施形態では、会話カテゴリがスキルボット116に基づいている場合、各会話カテゴリは、単一の対応するスキルボット116を表わすトレーニング特徴ベクトル620を含む。その場合、会話カテゴリの数は、マスタボット114が利用可能なスキルボット116の数に等しい可能性がある。いくつかの実施形態では、会話カテゴリがサブボットに基づいている場合、各会話カテゴリは、単一の対応するスキルボット116を表わすトレーニング特徴ベクトル620のサブセットを含む。その場合、会話カテゴリの数は、マスタボット114が利用可能なスキルボット116の数以上であってもよい。
【0180】
ブロック1820において、トレーニングシステム350は、トレーニング特徴ベクトル620から合成特徴ベクトルを生成し、これにより、会話カテゴリ内のそれぞれのトレーニング特徴ベクトル620が、その会話カテゴリを表わすとともにその会話カテゴリに対応する合成特徴ベクトルに集約されるようにする。言い換えれば、ブロック1815においてトレーニング特徴ベクトル620が割当てられた各会話カテゴリごとに、トレーニングシステム350は、それぞれのトレーニング特徴ベクトル620を会話カテゴリのための合成特徴ベクトルに組合わせ得る。集約のためにさまざまな技術を用いることができる。たとえば、合成特徴ベクトルは、それぞれのカテゴリにおけるトレーニング特徴ベクトル620の平均(たとえば、算術平均)であり得る。会話カテゴリに基づいて、合成特徴ベクトルは、会話カテゴリがインテント、サブボット、またはスキルボット116に基づいて定義されるかどうかに応じて、インテントベクトル、およびサブボットベクトル、またはボットベクトルとなり得る。
【0181】
トレーニング特徴ベクトル620の算術平均として合成特徴ベクトルが生成され得るが、他のタイプの線形結合を含む他の数学関数を付加的または代替的に用いて、合成特徴ベクトルを生成してもよい。たとえば、いくつかの実施形態では、合成特徴ベクトルは、会話カテゴリ内のトレーニング特徴ベクトル620の加重平均であり得る。重み付けは、対応するトレーニング発話615における特定のキーワードの優先度などのさまざまな要因に基づき得るものであり、このため、特定のキーワードを有するトレーニング発話615に、より大きな重みが与えられることとなる。サブボットベクトルまたはボットベクトルを生成する場合、トレーニング特徴ベクトル620は、特定のインテントに対応するトレーニング特徴ベクトル620に他のトレーニング特徴ベクトル620よりも大きい重みが与えられるように、加重平均として集約され得る。たとえば、代表的なトレーニング発話615の数がより多いインテントに対応するトレーニング特徴ベクトル620は、代表的なトレーニング発話615の数がより少ないインテントに対応するトレーニング特徴ベクトル620と比較される集合状態では、より大きい重みが与えられ得る。さまざまな実現例が可能であり、本開示の範囲内にある。
【0182】
図19および
図20は合成特徴ベクトルの概念を示す。具体的には、
図19は、本明細書で説明されるいくつかの実施形態に従った、インテントベースの会話カテゴリを用いた合成特徴ベクトルの生成を示す。結果として、
図19に示される合成特徴ベクトルは、インテントレベルであり、したがって、インテントベクトルである。
図19の例では、少なくとも2つのスキルボット116がマスタボット114にとって利用可能である。第1のスキルボット116は、第1のインテントであるインテントAを表わすトレーニング発話615と、第2のインテントであるインテントBを表わす他のトレーニング発話615とを含む第1のスキルボットデータ358gに関連付けられている。このため、第1のスキルボット116は、インテントAまたはインテントBに関連付けられた入力発話に対処するように構成される。第2のスキルボット116は、第3のインテントであるインテントCを表わすトレーニング発話615を含む第2のスキルボットデータ358hに関連付けられてる。このため、第2のスキルボット116は、インテントCに関連付けられた入力発話に対処するように構成される。
【0183】
図19の例では、トレーニングシステム350は、スキルボット116に関するすべてのトレーニング発話615をそれぞれの特徴ベクトル620に変換する。トレーニングシステム350は、トレーニング特徴ベクトルをインテントベースの会話カテゴリにグループ化する。したがって、インテントAについてのトレーニング発話615に対応するトレーニング特徴ベクトル620が第1の会話カテゴリを形成し、インテントBについてのトレーニング発話615に対応するトレーニング特徴ベクトル620が第2の会話カテゴリを形成し、インテントCについてのトレーニング発話615に対応するトレーニング特徴ベクトル620が第3の会話カテゴリを形成する。この例では、上述のとおり、所与のインテントベースの会話カテゴリのトレーニング特徴ベクトル620は、会話カテゴリについての、したがって関連するインテントについての、合成特徴ベクトルに集約(たとえば、平均化)される。具体的には、トレーニングシステム350は、インテントAについてのトレーニング発話615に対応するトレーニング特徴ベクトル620を第1の合成特徴ベクトル1910aに集約し、トレーニングシステム350は、インテントBについてのトレーニング発話615に対応するトレーニング特徴ベクトル620を第2の合成特徴ベクトル1910bに集約し、トレーニングシステム350は、インテントCについてのトレーニング発話615に対応するトレーニング特徴ベクトル620を第3の合成特徴ベクトル1910cに集約する。したがって、この例では、各合成特徴ベクトルは、スキルボット116のそれぞれのインテントを表わしている。
【0184】
図20は、本明細書で説明するいくつかの実施形態に従った、ボットベースの会話カテゴリとも称されるスキルボットベースの会話カテゴリを用いた合成特徴ベクトルの生成を示す。結果として、
図20に示される合成特徴ベクトルは、スキルボットレベルであり、したがって、ボットベクトルとなる。
図20の例では、少なくとも2つのスキルボット116がマスタボット114にとって利用可能である。第1のスキルボット116は、第1のインテントであるインテントAを表わすトレーニング発話615と、第2のインテントであるインテントBを表わす他のトレーニング発話615とを含む第1のスキルボットデータ358gに関連付けられている。このため、第1のスキルボット116は、インテントAまたはインテントBに関連付けられた入力発話に対処するように構成される。第2のスキルボット116は、第3のインテントであるインテントCを表わすトレーニング発話615を含む第2のスキルボットデータ358hに関連付けられている。このため、第2のスキルボット116は、インテントCに関連付けられた入力発話に対処するように構成される。
【0185】
図20の例では、トレーニングシステム350は、スキルボット116に関するすべてのトレーニング発話615をそれぞれの特徴ベクトル620に変換する。トレーニングシステム350は、トレーニング特徴ベクトルをスキルボットベースの会話カテゴリにグループ化する。したがって、インテントAについてのトレーニング発話615に対応するトレーニング特徴ベクトル620は、インテントBについてのトレーニング発話615に対応するトレーニング特徴ベクトル620とともに、第1の会話カテゴリを形成し、インテントCについてのトレーニング発話615に対応するトレーニング特徴ベクトル620は第2の会話カテゴリを形成する。この例では、上述のように、所与のスキルボットベースの会話カテゴリのトレーニング特徴ベクトル620は、会話カテゴリのための、したがって関連するスキルボット116のための、合成特徴ベクトルに集約(たとえば、平均化)される。具体的には、トレーニングシステム350は、インテントAについてのトレーニング発話615に対応するトレーニング特徴ベクトル620とインテントBについてのトレーニング発話615に対応するトレーニング特徴ベクトル620とを第1の合成特徴ベクトル1910dに集約し、トレーニングシステム350は、インテントCについてのトレーニング発話615に対応するトレーニング特徴ベクトル620を第2の合成特徴ベクトル1910eに集約する。したがって、この例では、各合成特徴ベクトルはそれぞれのスキルボット116を表わしている。
【0186】
いくつかの実施形態では、トレーニングシステム350は1つのタイプの合成特徴ベクトルのみを生成することに限定されない。たとえば、トレーニングシステム350は、インテントベクトル、サブボットベクトル、およびスキルボットベクトルを生成し得るか、または、トレーニングシステム350は、これらもしくは他のタイプの合成特徴ベクトルの他の何らかの組合せを生成し得る。
【0187】
図18に戻って、ブロック1825において、トレーニングシステム350は、ブロック1820において決定された合成特徴ベクトルを利用するようにマスタボット114の分類器モデル324を構成し得る。たとえば、トレーニングシステム350は、分類器モデル324によってアクセス可能な(たとえば、デジタルアシスタント106上の)記憶装置に合成特徴ベクトルの指示を記憶することができる。分類器モデル324は、入力発話を、トレーニング特徴ベクトル620のセット表現として機能するこのような合成特徴ベクトルと比較するように構成され得る。
【0188】
図21は、本明細書で説明されるいくつかの実施形態に従った、マスタボット114の分類器モデル324を用いて、ユーザ入力110として提供される入力発話303が、マスタボット114と関連付けられたいずれの利用可能なスキルボット116とも無関係であるかどうかを判断する方法2100を示す図である。この方法2100または同様の方法は、入力発話303をスキルボット116に向けるようにマスタボット114を構成および使用する上述の方法200のブロック215で用いることができる。
図21の方法2100は
図7の方法700のより具体的な変形例であり、
図7の方法700と同様に、
図21の方法2100は、
図8の方法800に関して説明した予備的なフィルタリング動作とともに用いられ得る。より具体的には、以下で説明するように、マスタボット114の分類器モデル324は、合成特徴ベクトルを利用して、入力発話303が非クラス316に属する(すなわち、利用可能なスキルボット116とは無関係である)かどうかを判断し得る。
【0189】
図21に示す方法2100および本明細書で説明する他の方法は、1つ以上の処理ユニット(たとえば、プロセッサまたはプロセッサコア)によって実行されるソフトウェアで(たとえば、コード、命令、またはプログラムとして)、ハードウェアで、またはそれらの組合せで、実現され得る。ソフトウェアはメモリデバイスなどの非一時的記憶媒体に記憶され得る。この方法2100は例示的かつ非限定的であるよう意図されている。
図21は、特定の並びまたは順序で起こるさまざまな動作を示すが、これは限定することを意図するものではない。特定の実施形態では、たとえば、これらの動作が異なる順序で実行されてもよく、または、方法2100の1つ以上の動作が並行して実行されてもよい。特定の実施形態では、方法200は、利用可能なスキルボット116のセットに関連付けられたマスタボット114によって実行されてもよい。
【0190】
方法2100のブロック2105において、マスタボット114は、ユーザ入力110として提供された入力発話303にアクセスする。たとえば、いくつかの実施形態では、ユーザは、音声入力の形式でユーザ入力110を提供してもよく、デジタルアシスタント106は、マスタボット114による使用のために、そのユーザ入力110をテキスト入力発話303に変換してもよい。
【0191】
ブロック2110において、マスタボット114は、ブロック2105においてアクセスされた入力発話303から入力特徴ベクトル1710を生成し得る。より具体的には、いくつかの実施形態では、マスタボット114は、マスタボット114の分類器モデル324に、入力発話303から入力特徴ベクトル1710を生成させる。入力特徴ベクトル1710は、入力発話303を記述および表現し得る。入力発話303等の一連の単語を特徴ベクトルに変換するためのさまざまな技術が公知であり、そのような技術のうちの1つ以上が用いられてもよい。たとえば、トレーニングシステム350は、ワン・ホット符号化または他の何らかの符号化を用いて、入力発話303を対応する入力特徴ベクトル1710として符号化し得るが、必ずしも符号化する必要はない。しかしながら、マスタボット114の一実施形態は、分類器モデル324をトレーニングする際にトレーニング発話615からトレーニング特徴ベクトル620を生成するために用いられたのと同じ技術を用いる。
【0192】
ブロック2115において、マスタボット114は、ブロック2110で生成された入力特徴ベクトル1710を合成特徴ベクトルと比較する。より具体的には、いくつかの実施形態では、マスタボット114は、分類器モデル324に、ブロック2110において決定された入力特徴ベクトル1710を、
図18に関して上述したように決定され得る合成特徴ベクトルと比較させる。入力特徴ベクトル1710を合成特徴ベクトルと比較する際に、分類器モデル324は、入力特徴ベクトル1710と分類器モデル324のために以前に構築された各合成特徴ベクトルとの間の類似度または距離を決定し得る。
【0193】
入力特徴ベクトル1710と別の特徴ベクトル、具体的には合成特徴ベクトル、との間の類似度または距離はさまざまな方法で計算することができる。たとえば、類似度を決定するために、分類器モデル324は、合成特徴ベクトルと入力特徴ベクトル1710との間の算術差の絶対値(すなわち、ユークリッド距離)を、一方を他方から減算して絶対値を得ることによって、計算してもよい。別の例の場合、分類器モデル324は、入力特徴ベクトル1710を合成特徴ベクトルに乗じてもよい。たとえば、入力特徴ベクトル1710および合成特徴ベクトルのためにワン・ホット符号化が用いられる場合、各ベクトルエントリ(すなわち、各次元)は1または0の値を有することとなるだろう。この場合、1の値は特定の特徴の存在を表わし得る。入力特徴ベクトル1710と合成特徴ベクトルとがほとんど同じ特徴を有する場合、ベクトル-ベクトル乗算の結果は、乗算される2つのベクトルのいずれかとほぼ同じ数の1つの値を有するベクトルとなるだろう。そうでない場合、結果として生じるベクトルは、ほとんどが0となるだろう。別の例として、コサイン類似度を用いることができる。たとえば、入力特徴ベクトル1710と合成特徴ベクトルとの間のコサイン類似度は、両方のベクトルのユークリッド・ノルムの積で除した2つのベクトルのドット積として計算することができる。類似度を測定するための他のさまざまな技術が実現可能であり、本開示の範囲内にある。
【0194】
判定ブロック2120において、マスタボット114の分類器モデル324は、入力特徴ベクトル1710が合成特徴ベクトルのいずれかに十分に類似しているかどうかを判断する。分類器モデル324は、類似度が閾値を満たす場合に十分であると見なされるように、所定の閾値を用いてもよい。距離メトリックの場合と同様に、2つのベクトルが類似しているときに、用いられる類似度メトリックが小さい値を提供する場合、閾値は、たとえば、類似度が閾値以下である場合に入力特徴ベクトル1710が合成特徴ベクトルに十分に近くなるような上限閾値であり得る。しかしながら、2つのベクトルが類似しているときに、用いられる類似度メトリックが大きな値を提供する場合、閾値は、たとえば、類似度が閾値以上である場合に入力特徴ベクトル1710が合成特徴ベクトルに十分に近くなるように、より低い閾値であり得る。
【0195】
いくつかの実施形態では、十分な類似度であるかの判断は、合成特徴ベクトルの階層を用いて判断され得る。たとえば、入力特徴ベクトル1710は、十分な類似度が見出されるまで、または入力特徴ベクトル1710がこのようないずれの合成特徴ベクトルとも十分に類似していないと判断されるまで、ボットベクトルと比較され、次いで、必要に応じて、サブボットベクトルと比較され、次いで、必要に応じて、インテントベクトルと比較されてもよい。ボットベクトルがインテントベクトルよりも少なく、かつインテントベクトルがサブボットベクトルよりも少ないので、ボットベクトルに対する類似度を判断するために必要とされるコンピューティングリソースは、インテントベクトルに対する類似度を判断するために必要とされるコンピューティングリソースよりも少ない可能性がある、サブボットベクトルとの類似度を判断するために必要とされるコンピューティングリソースよりも少ない可能性がある。したがって、利用可能な最高レベル(たとえば、スキルボットレベル)から始めてさまざまなレベルで入力特徴ベクトル1710を合成特徴ベクトルと比較することにより、分類器モデル324は、より計算集約的な処理を採用する前に、それほど計算集約的でない処理を使用しつつ、どのスキルボット116が、もしいくらかでもあるのであれば、入力発話303に対処するのに最も適しているかを判断することができる。
【0196】
いくつかの実施形態では、入力発話303は、入力特徴ベクトル1710がすべてのボットベクトルから十分に離れている(たとえば、過剰であると見なされる所定の距離を超えている)場合、利用可能なスキルボット116のいずれとも無関係であると見なされ得る。しかしながら、付加的または代替的な実施形態では、入力発話303は、ボットベクトルとの相違のみに基づいて無関係であると見なされるわけではない。たとえば、入力特徴ベクトル1710が全てのボットベクトルと類似していない(すなわち、十分に類似していない)場合、これは、入力発話303が非クラス316に属するという手がかりをもたらす明確な指示であるとは限らない。対応するインテントが、スキルボット116が構成される他のインテントと類似していないため、入力特徴ベクトル1710がいずれのボットベクトルからも遠く離れている(すなわち、類似していない)が、依然として或るインテントベクトルに近いという状況があり得る。いくつかの実施形態では、入力特徴ベクトル1710をボットベクトルおよびインテントベクトルの両方と比較することは、典型的には、無関係の入力発話303を識別するのに十分である。したがって、入力発話303は、入力特徴ベクトル1710がすべてのボットベクトルとは類似しておらず、かつすべてのインテントベクトルとは類似していない場合、利用可能なスキルボット116とは無関係であると見なされ得る。いくつかの実施形態では、入力特徴ベクトル1710は、付加的または代替的には、入力発話303が非クラスのメンバであるかどうかを判断することの一環として、サブボットベクトルまたは他の合成特徴ベクトルと比較されてもよい。さまざまな実現例が実現可能であり、本開示の範囲内にある。
【0197】
判断ブロック2120において、どのような比較が実行されてもそれに基づいて、分類器モデル324が、入力特徴ベクトル1710がいずれの合成特徴ベクトルとも十分に類似していないと判断した場合、方法2100はブロック2125に進む。ブロック2125において、マスタボット114は、入力発話が利用可能ないずれのスキルボット116とも無関係であると判断し、このため、マスタボット114は、入力発話303が処理できないことを示し得る。結果として、たとえば、デジタルアシスタントは、ユーザ入力110を明確にするようにユーザに要求してもよい。
【0198】
しかしながら、判断ブロック2120において、入力特徴ベクトル1710が1つ以上の合成特徴ベクトルに十分に類似していると分類器モデル324が判断した場合、方法2100はブロック2130に進む。ブロック2130において、合成特徴ベクトルとの比較に基づいて、マスタボット114は、入力発話303に対処するためのスキルボット116を決定(すなわち、選択)する。たとえば、マスタボット114は、入力特徴ベクトル1710に最も類似していると見なされる合成特徴ベクトルに関連するスキルボット116を選択してもよい。たとえば、最も類似する合成特徴ベクトルがインテントベクトルである場合、マスタボット114は、インテントベクトルに対応するインテントに対処するように構成されたスキルボット116を選択してもよい。さらに、最も類似する合成特徴ベクトルがサブボットベクトルまたはボットベクトルである場合、マスタボット114は、サブボットベクトルまたはボットベクトルが対応するスキルボット116を選択してもよい。別の例では、マスタボット114は、以下でさらに説明するように、スキルボット116を選択するためにk最近傍技術を用いてもよい。
【0199】
ブロック2135において、マスタボット114は、ブロック2130において選択されたスキルボット116に入力発話をルーティングし得る。いくつかの実施形態では、マスタボット114が入力発話についての特定のインテントを識別した場合(たとえば、入力特徴ベクトル1710が単一のインテントベクトルに十分に近いと見なされた場合)、マスタボット114は、そのインテントをスキルボット116に示してもよく、これにより、スキルボット116がインテントを推測する処理をスキップすることを可能にする。次いで、スキルボット116は、入力発話303を処理してユーザ入力110に応答し得る。
【0200】
図22は、本明細書で説明するいくつかの実施形態に従った、入力発話に対処するためにスキルボット116を選択する方法2200を示す図である。この方法2200または同様の方法は、入力発話303が少なくとも1つの利用可能なスキルボット116に関係していると判断した後、上述の方法2100のブロック2130において用いられ得る。この方法2200は、スキルボット116を選択するためのk最近傍手法を提供するが、この手法に加えてまたはその代わりに他の技術が用いられてもよい。具体的には、この方法2200は、入力特徴ベクトル1710に対するk最近傍トレーニング特徴ベクトル620を利用して、どのスキルボット116を選択するべきかを決定する。
【0201】
図22に示す方法2200および本明細書で説明する他の方法は、1つ以上の処理ユニット(たとえば、プロセッサまたはプロセッサコア)によって実行されるソフトウェアで(たとえば、コード、命令、またはプログラムとして)、ハードウェアで、またはそれらの組合せで、実現され得る。ソフトウェアは、メモリデバイスなどの非一時的記憶媒体に記憶され得る。この方法2200は例示的かつ非限定的であるよう意図されている。
図22は、特定の並びまたは順序で起こるさまざまな動作を示すが、これは限定することを意図するものではない。特定の実施形態では、たとえば、これらの動作が異なる順序で実行されてもよく、または、方法2200の1つ以上の動作が並行して実行されてもよい。特定の実施形態では、方法2200はマスタボット114によって実行されてもよい。
【0202】
図22に示されるように、ブロック2205において、マスタボット114はkについての値を決定する。ここで、kは、考慮されるであろう近傍の数である。いくつかの実施形態では、kの値は、トレーニング特徴ベクトル620の総数(すなわち、トレーニング発話615の総数)の係数であり得る。
【0203】
ブロック2210では、ブロック2205で決定されたkの値を用いて、マスタボット114は、入力特徴ベクトル1710に最も近い(すなわち、最も類似する)k個のトレーニング特徴ベクトル620のセットを決定する。マスタボット114は、入力特徴ベクトル1710がいずれの合成特徴ベクトルとも十分に類似しているかどうかを判断するときに、上述で用いられたのと同じまたは異なる類似度メトリックを用いてもよい。たとえば、用いられる類似度メトリックは、ユークリッド距離、ベクトル乗算、またはコサイン類似度であり得る。
【0204】
ブロック2215において、マスタボット114は、ブロック2210で決定されたセット内の最も多くのトレーニング特徴ベクトル620を有するスキルボット116を選択する。いくつかの実施形態では、スキルボット116のトレーニング特徴ベクトル620がセットの大部分を構成する必要はなく、むしろ、セット内により大量のトレーニング特徴ベクトル620を有するスキルボット116が他にないことだけが必要となる。上述のように、このスキルボット116の選択後、マスタボット114は、処理のために、入力発話303を選択されたスキルボット116にルーティングしてもよい。
【0205】
入力特徴ベクトル1710に最も近いトレーニング特徴ベクトル620を考慮することに加えて、またはその代わりに、マスタボット114のいくつかの実施形態は、最も近いインテントベクトルなどの最も近い合成特徴ベクトルを考慮に入れてもよい。
図23は、本明細書で説明するいくつかの実施形態に従った、入力発話に対処するためにスキルボット116を選択する別の例示的な方法2300を示す図である。この方法2300または同様の方法は、入力発話303が少なくとも1つの利用可能なスキルボット116に関係していると判断した後に、上述の方法2100のブロック2130において用いられ得る。この方法2300は、スキルボット116を選択するためのk最近傍手法を提供するが、この手法に加えてまたはその代わりに他の技術が用いられてもよい。具体的には、
図22の方法2200とは対照的に、この方法2300は、入力特徴ベクトル1710に対するk最近傍インテントベクトルを利用して、どのスキルボット116を選択するべきかを決定する。
【0206】
図23に示す方法2300および本明細書で説明する他の方法は、1つ以上の処理ユニット(たとえば、プロセッサまたはプロセッサコア)によって実行されるソフトウェアで(たとえば、コード、命令、またはプログラムとして)、ハードウェアで、またはそれらの組合せで、実現され得る。ソフトウェアはメモリデバイスなどの非一時的記憶媒体に記憶され得る。この方法2300は例示的かつ非限定的であるよう意図されている。
図23は、特定の並びまたは順序で起こるさまざまな動作を示すが、これは限定することを意図するものではない。特定の実施形態では、たとえば、これらの動作が異なる順序で実行されてもよく、または、方法2300の1つ以上の動作が並行して実行されてもよい。特定の実施形態では、方法2300はマスタボット114によって実行されてもよい。
【0207】
図23に示されるように、ブロック2305において、マスタボット114はkについての値を決定する。ここで、kは、考慮されるであろう近傍の数である。いくつかの実施形態では、kの値はインテントベクトルの総数の係数であり得る。インテントベクトルの総数は、トレーニング発話615において表わされるインテントの総数に等しくてもよく、利用可能なスキルボット116が対処するように構成されるインテントの総数に等しくてもよく、kの値はその量の係数として選択されてもよい。
【0208】
ブロック2310では、マスタボット114は、ブロック2305で決定されたkの値を用いて、入力特徴ベクトル1710に最も近い(すなわち、最も類似する)k個のインテントベクトルのセットを決定する。マスタボット114は、上記方法2100において入力特徴ベクトル1710がいずれの合成特徴ベクトルとも十分に類似しているかどうかを判断するときに上記で使用したものと同じまたは異なる類似度メトリックを用い得る。たとえば、用いられる類似度メトリックは、ユークリッド距離、ベクトル乗算、またはコサイン類似度であり得る。
【0209】
ブロック2315において、マスタボット114は、ブロック2310において決定されたセット内で最も多くのインテントベクトルを有するスキルボット116を選択する。いくつかの実施形態では、スキルボット116のインテントベクトルがセットの大部分を構成する必要はなく、むしろ、セット内により多くのインテントベクトルを有するスキルボット116が他にないことだけが必要となる。上述のように、このスキルボット116の選択後、マスタボット114は、処理のために、入力発話303を選択されたスキルボット116にルーティングしてもよい。
【0210】
実現例
図24は、一実施形態を実現するための分散型システム2400の簡略図を示す。図示される実施形態において、分散型システム2400は、1つ以上の通信ネットワーク2410を介してサーバ2412に結合された1つ以上のクライアントコンピューティングデバイス2402、2404、2406、および2408を含む。クライアントコンピューティングデバイス2402、2404、2406、および2408は、1つ以上のアプリケーションを実行するように構成され得る。
【0211】
さまざまな例において、サーバ2412は、本開示に記載される処理を可能にする1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。
【0212】
特定の実施形態では、サーバ2412はまた、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの実施形態では、これらのサービスは、クライアントコンピューティングデバイス2402、2404、2406および/または2408のユーザに対して、サービスとしてのソフトウェア(Software as a Service:SaaS)モデル下のように、ウェブベースのサービスまたはクラウドサービスとして提供され得る。クライアントコンピューティングデバイス2402、2404、2406および/または2408を操作するユーザは、1つ以上のクライアントアプリケーションを利用してサーバ2412とやり取りすることで、これらのコンポーネントによって提供されるサービスを利用し得る。
【0213】
図24に示される構成では、サーバ2412は、サーバ2412によって実行される機能を実現する1つ以上のコンポーネント2418、2420および2422を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはそれらの組合わせによって実行され得るソフトウェアコンポーネントを含み得る。分散型システム2400とは異なり得る多種多様なシステム構成が実現可能であることが認識されるはずである。したがって、
図24に示される実施形態は、実施形態のシステムを実現するための分散型システムの一例であり、限定するよう意図されたものではない。
【0214】
ユーザは、クライアントコンピューティングデバイス2402、2404、2406および/または2408を用いて、本開示の教示に従ってサーバ2412と対話してもよい。クライアントデバイスは、当該クライアントデバイスのユーザが当該クライアントデバイスと対話することを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介してユーザに情報を出力してもよい。
図24は4つのクライアントコンピューティングデバイスだけを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0215】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲーミングシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他の感知デバイスなどの、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、さまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえば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)アプリケーション)のような多種多様なアプリケーションを実行可能であってもよく、各種通信プロトコルを使用してもよい。
【0216】
ネットワーク2410は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当該技術の当業者には周知のいずれかの種類のネットワークであればよく、上記プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない。単に一例として、ネットワーク2410は、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば電気電子学会(IEEE)802.11プロトコルスイートのいずれかの下で動作する無線ネットワーク、Bluetooth(登録商標)および/もしくは任意の他の無線プロトコル)、ならびに/または、これらおよび/もしくは他のネットワークの任意の組み合わせを含み得る。
【0217】
サーバ2412は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組み合わせで構成されてもよい。サーバ2412は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。これはたとえば、サーバに対して仮想記憶装置を維持するように仮想化できる論理記憶装置の1つ以上のフレキシブルプールなどである。様々な実施形態において、サーバ2412を、上記開示に記載の機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合させてもよい。
【0218】
サーバ2412内のコンピューティングシステムは、上述のうちのいずれかを含む1つ以上のオペレーティングシステム、および、市販されているサーバオペレーティングシステムを実行し得る。また、サーバ2412は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものを含むが、それらに限定されない。
【0219】
いくつかの実現例において、サーバ2412は、クライアントコンピューティングデバイス2402、2404、2406および2408のユーザから受信したデータフィードおよび/またはイベントアップデートを解析および整理統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどに関連するリアルタイムのイベントを含んでもよい、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムのアップデートを含み得るが、それらに限定されない。サーバ2412は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス2402、2404、2406および2408の1つ以上のディスプレイデバイスを介して表示するための1つ以上のアプリケーションも含み得る。
【0220】
分散型システム2400はまた、1つ以上のデータリポジトリ2414、2416を含み得る。特定の実施形態において、これらのデータリポジトリを用いてデータおよびその他の情報を格納してもよい。たとえば、データリポジトリ2414、2416のうちの1つ以上を用いて、本明細書に記載の処理によって生成されるデータもしくは情報、および/または、本明細書に記載の処理のために使用されるデータもしくは情報を格納してもよい。データリポジトリ2414、2416は、さまざまな場所に存在し得る。たとえば、サーバ2412が使用するデータリポジトリは、サーバ2412のローカル位置にあってもよく、またはサーバ2412から遠隔の位置にあってもよく、ネットワークベースの接続または専用接続を介してサーバ2412と通信する。データリポジトリ2414、2416は、異なる種類であってもよい。特定の実施形態において、サーバ2412が使用するデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および他の製造業者が提供するデータベースのようなリレーショナルデータベースであってもよい。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするように適合させてもよい。
【0221】
特定の実施形態では、データリポジトリ2414、2416のうちの1つ以上は、アプリケーションデータを格納するためにアプリケーションによって用いられてもよい。アプリケーションが使用するデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリのようなさまざまな種類のものであってもよい。
【0222】
特定の実施形態において、本開示に記載される機能は、クラウド環境を介してサービスとして提供され得る。
図25は、特定の実施形態に係る、本明細書に記載の機能をクラウドサービスとして提供し得るクラウドベースのシステム環境の簡略化されたブロック図である。
図25に示される実施形態において、クラウドインフラストラクチャシステム2502は、ユーザが1つ以上のクライアントコンピューティングデバイス2504、2506および2508を用いて要求し得る1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム2502は、サーバ2412に関して先に述べたものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。クラウドインフラストラクチャシステム2502内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および/または組み合わせとして編成され得る。
【0223】
ネットワーク2510は、クライアント2504、2506、および2508と、クラウドインフラストラクチャシステム2502との間におけるデータの通信および交換を容易にし得る。ネットワーク2510は、1つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク2510は、通信を容易にするために、有線および/または無線プロトコルを含む、1つ以上の通信プロトコルをサポートし得る。
【0224】
図25に示される実施形態は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの実施形態において、クラウドインフラストラクチャシステム2502が、
図25に示されるものよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、または、異なる構成または配置のコンポーネントを有していてもよいことが、理解されるはずである。たとえば、
図25は3つのクライアントコンピューティングデバイスを示しているが、代替的な実施形態においては、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0225】
クラウドサービスという用語は一般に、サービスプロバイダのシステム(たとえばクラウドインフラストラクチャシステム2502)により、インターネット等の通信ネットワークを介してオンデマンドでユーザにとって利用可能にされるサービスを指すのに使用される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストし得るとともに、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介してオンデマンドでアプリケーションをオーダーして使用し得る。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。たとえば、ミドルウェアサービス、データベースサービス、Java(登録商標)クラウドサービスなどのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)から提供される。
【0226】
特定の実施形態において、クラウドインフラストラクチャシステム2502は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデルなどのさまざまなモデルを使用して、1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム2502は、各種クラウドサービスのプロビジョンを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースの一式を含み得る。
【0227】
SaaSモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。たとえば、SaaSモデルを用いることにより、クラウドインフラストラクチャシステム2502がホストするオンデマンドアプリケーションに顧客がアクセスできるようにし得る。Oracle Corporation(登録商標)が提供するSaaSサービスの例は、人的資源/資本管理のための各種サービス、顧客関係管理(CRM)、企業資源計画(ERP)、供給管理(SCM)、企業業績管理(EPM)、解析サービス、ソーシャルアプリケーションなどを含むがこれらに限定されない。
【0228】
IaaSモデルは一般に、インフラストラクチャリソース(たとえばサーバ、ストレージ、ハードウェアおよびネットワーキングリソース)を、クラウドサービスとして顧客に提供することで柔軟な計算およびストレージ機能を提供するために使用される。各種IaaSサービスがOracle Corporation(登録商標)から提供される。
【0229】
PaaSモデルは一般に、顧客が、環境リソースを調達、構築、または管理しなくても、アプリケーションおよびサービスを開発、実行、および管理することを可能にするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例は、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、各種アプリケーション開発ソリューションサービスなどを含むがこれらに限定されない。
【0230】
クラウドサービスは一般に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。たとえば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム2502が提供する1つ以上のサービスをオーダーしてもよい。次いで、クラウドインフラストラクチャシステム2502は、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。たとえば、特定の実施形態では、本明細書に記載されるチャットボット関連の機能はユーザ/サブスクライバによって提供されるクラウドサービスとして提供されてもよい。クラウドインフラストラクチャシステム2502を、1つのクラウドサービスまたは複数のクラウドサービスであっても提供するように構成してもよい。
【0231】
クラウドインフラストラクチャシステム2502は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム2502は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般の大衆の顧客に提供される。この顧客は個人または企業であってもよい。他の特定の実施形態では、プライベートクラウドモデル下において、クラウドインフラストラクチャシステム2502がある組織内で(たとえば企業組織内で)機能してもよく、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部などの企業のさまざまな部署であってもよく、企業内の個人であってもよい。ある他の実施形態では、コミュニティクラウドモデル下において、クラウドインフラストラクチャシステム2502および提供されるサービスは、関連コミュニティ内のさまざまな組織で共有されてもよい。上記モデルの混成モデルなどのその他各種モデルが用いられてもよい。
【0232】
クライアントコンピューティングデバイス2504、2506、および2508は、異なるタイプであってもよく(たとえば
図24に示されるデバイス2402、2404、2406および2408)、1つ以上のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム2502が提供するサービスを要求することなど、クラウドインフラストラクチャシステム2502とのやり取りを行ない得る。たとえば、ユーザは、クライアントデバイスを使用して、本開示に記載されているチャットボット関連のサービスを要求してもよい。
【0233】
いくつかの実施形態において、クラウドインフラストラクチャシステム2502が実行する処理は、ビッグデータ解析を含み得る。この解析は、大きなデータセットを使用し、解析し、処理することにより、このデータ内のさまざまな傾向、挙動、関係などを検出し可視化することを含み得る。この解析は、1つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行してもよい。この解析に使用されるデータは、構造化データ(たとえばデータベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含み得る。
【0234】
図25の実施形態に示されるように、クラウドインフラストラクチャシステム2502は、クラウドインフラストラクチャシステム2502が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース2530を含み得る。インフラストラクチャリソース2530は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。
【0235】
特定の実施形態において、異なる顧客に対しクラウドインフラストラクチャシステム2502が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースのセットまたはリソースモジュール(「ポッド」とも処される)にまとめてもよい。各リソースモジュールまたはポッドは、1種類以上のリソースを予め一体化し最適化した組み合わせを含み得る。特定の実施形態において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングしてもよい。たとえば、第1のポッドセットをデータベースサービスのためにプロビジョニングしてもよく、第1のポッドセット内のポッドと異なるリソースの組み合わせを含み得る第2のポッドセットをJavaサービスなどのためにプロビジョニングしてもよい。いくつかのサービスについて、これらのサービスをプロビジョニングするために割り当てられたリソースをサービス間で共有してもよい。
【0236】
クラウドインフラストラクチャシステム2502自体が、クラウドインフラストラクチャシステム2502のさまざまなコンポーネントによって共有されるとともにクラウドインフラストラクチャシステム2502によるサービスのプロビジョニングを容易にするサービス2532を、内部で使用してもよい。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【0237】
クラウドインフラストラクチャシステム2502は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組み合わせで実現され得る。
図25に示されるように、サブシステムは、クラウドインフラストラクチャシステム2502のユーザまたは顧客がクラウドインフラストラクチャシステム2502とやり取りすることを可能にするユーザインターフェイスサブシステム2512を含み得る。ユーザインターフェイスサブシステム2512は、ウェブインターフェイス2514、クラウドインフラストラクチャシステム2502が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス2516、およびその他のインターフェイス2518などの、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用いて、クラウドインフラストラクチャシステム2502がインターフェイス2514、2516、および2518のうちの1つ以上を用いて提供する1つ以上のサービスを要求(サービス要求2534)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム2502が提供するクラウドサービスをブラウズし、クラウドインフラストラクチャシステム2502が提供するとともに顧客が申し込むことを所望する1つ以上のサービスについてサブスクリプションオーダーを行ない得る。このサービス要求は、顧客と、顧客が申しむことを所望する1つ以上のサービスとを識別する情報を含んでいてもよい。
【0238】
図25に示される実施形態などの特定の実施形態において、クラウドインフラストラクチャシステム2502は、新しいオーダーを処理するように構成されたオーダー管理サブシステム(order management subsystem:OMS)2520を含み得る。この処理の一部として、OMS2520は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。
【0239】
適切に妥当性確認がなされると、OMS2520は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(OPS)2524を呼び出し得る。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。たとえば、あるワークフローに従うと、OPS2524を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
【0240】
クラウドインフラストラクチャシステム2502は、要求されたサービスがいつ使用できるようになるかを示すために、応答または通知1044を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(たとえばリンク)を顧客に送信してもよい。
【0241】
クラウドインフラストラクチャシステム2502はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム2502は、顧客から受けた1つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を果たす。また、クラウドインフラストラクチャシステム2502は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金はたとえば月ごとに行ってもよい。
【0242】
クラウドインフラストラクチャシステム2502は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム2502は、場合によっては著作権情報を含む、これらの顧客についての情報を格納してもよい。特定の実施形態において、クラウドインフラストラクチャシステム2502は、顧客の情報を管理するとともに管理される情報を分離することで、ある顧客に関する情報が別の顧客からアクセスされないようにするように構成された、アイデンティティ管理サブシステム(IMS)2528を含む。IMS2528は、情報アクセス管理などのアイデンティティサービス、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスなどの、各種セキュリティ関連サービスを提供するように構成されてもよい。
【0243】
図26は、特定の実施形態を実現するために用いられ得る例示的なコンピュータシステム2600を示す。たとえば、いくつかの実施形態では、コンピュータシステム2600は、チャットボットシステムのシステムおよびサブシステムのいずれか、ならびに上記の様々なサーバおよびコンピュータシステムを実現するために用いられ得る。
図26に示されるように、コンピュータシステム2600は、バスサブシステム2602を介して他のいくつかのサブシステムと通信する処理サブシステム2604を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット2606、I/Oサブシステム2608、ストレージサブシステム2618、および通信サブシステム2624を含み得る。ストレージサブシステム2618は、記憶媒体2622およびシステムメモリ2610を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0244】
バスサブシステム2602は、コンピュータシステム2600のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム2602は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は複数のバスを利用してもよい。バスサブシステム2602は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスなどを含み得る。
【0245】
処理サブシステム2604は、コンピュータシステム2600の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム2600の処理リソースを、1つ以上の処理ユニット2632、2634などに編成することができる。処理ユニットは、1つ以上のプロセッサ、同一のまたは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの実施形態において、処理サブシステム2604は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)などのような1つ以上の専用コプロセッサを含み得る。いくつかの実施形態では、処理サブシステム2604の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を用いて実現され得る。
【0246】
いくつかの実施形態において、処理サブシステム2604内の処理ユニットは、システムメモリ2610またはコンピュータ可読記憶媒体2622に格納された命令を実行し得る。さまざまな実施形態において、処理ユニットはさまざまなプログラムまたはコード命令を実行するとともに、同時に実行する複数のプログラムまたはプロセスを維持し得る。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ2610および/または潜在的に1つ以上の記憶装置を含むコンピュータ可読記憶媒体2622に常駐し得る。適切なプログラミングを介して、処理サブシステム2604は、上述のさまざまな機能を提供し得る。コンピュータシステム2600が1つ以上の仮想マシンを実行している例において、1つ以上の処理ユニットが各仮想マシンに割り当てられてもよい。
【0247】
特定の実施形態において、コンピュータシステム2600によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム2604によって実行される処理の一部をオフロードするために、処理加速ユニット2606が任意に設けられてもよい。
【0248】
I/Oサブシステム2608は、コンピュータシステム2600に情報を入力するための、および/またはコンピュータシステム2600から、もしくはコンピュータシステム2600を介して、情報を出力するための、デバイスおよび機構を含み得る。一般に、「入力デバイス」という語の使用は、コンピュータシステム2600に情報を入力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを備えるデバイスなど、モーション感知および/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。加えて、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
【0249】
ユーザインターフェイス入力デバイスの他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含むが、それらに限定されない。加えて、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【0250】
一般に、出力デバイスという語の使用は、コンピュータシステム2600からユーザまたは他のコンピュータに情報を出力するための考えられるすべてのタイプのデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、投影装置、タッチスクリーンなどであってもよい。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまなディスプレイデバイスを含み得るが、それらに限定されない。
【0251】
ストレージサブシステム2618は、コンピュータシステム2600によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム2618は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ可読記憶媒体を提供する。処理サブシステム2604によって実行されると上述の機能を提供するソフトウェア(たとえばプログラム、コードモジュール、命令)が、ストレージサブシステム2618に格納されてもよい。ソフトウェアは、処理サブシステム2604の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム2618はまた、本開示の教示に従って用いられるデータを格納するためのリポジトリを提供してもよい。
【0252】
ストレージサブシステム2618は、揮発性および不揮発性メモリデバイスを含む1つ以上の非一時的メモリデバイスを含み得る。
図26に示すように、ストレージサブシステム2618は、システムメモリ2610およびコンピュータ可読記憶媒体2622を含む。システムメモリ2610は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ(RAM)と、固定命令が格納される不揮発性読取り専用メモリ(ROM)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実現例において、起動中などにコンピュータシステム2600内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)は、典型的には、ROMに格納されてもよい。典型的に、RAMは、処理サブシステム2604によって現在操作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ2610は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なるタイプのメモリを含み得る。
【0253】
一例として、限定を伴うことなく、
図26に示されるように、システムメモリ2610は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム2612、プログラムデータ2614、およびオペレーティングシステム2616を、ロードし得る。一例として、オペレーティングシステム2616は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステム、市販されているさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、および/または、iOS(登録商標)、Windows Phone、Android(登録商標) OS、BlackBerry(登録商標) OS、Palm(登録商標) OSオペレーティングシステムのようなさまざまなバージョンのモバイルオペレーティングシステムなどを、含み得る。
【0254】
コンピュータ可読記憶媒体2622は、いくつかの実施形態の機能を提供するプログラミングおよびデータ構成を格納し得る。コンピュータ可読記憶媒体2622は、コンピュータシステム2600のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供し得る。処理サブシステム2604によって実行されると上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム2618に格納されてもよい。一例として、コンピュータ可読記憶媒体2622は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ可読記憶媒体2622は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含み得るが、それらに限定されない。コンピュータ可読記憶媒体2622は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMのような揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含み得る。
【0255】
特定の実施形態において、ストレージサブシステム2618は、コンピュータ可読記憶媒体2622にさらに接続可能なコンピュータ可読記憶媒体リーダ2620も含み得る。リーダ2620は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。
【0256】
特定の実施形態において、コンピュータシステム2600は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム2600は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。特定の実施形態において、コンピュータシステム2600は、仮想マシンの構成および管理を容易にするハイパーバイザなどのプログラムを実行し得る。各仮想マシンには、メモリ、演算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースが割当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的には、コンピュータシステム2600によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るかまたは異なり得るそれ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム2600によって同時に実行され得る。
【0257】
通信サブシステム2624は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム2624は、他のシステムとコンピュータシステム2600との間のデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム2624は、コンピュータシステム2600が、1つ以上のクライアントデバイスとの間で情報を送受信するために、インターネットを介して1つ以上のクライアントデバイスへの通信チャネルを確立することを可能にし得る。
【0258】
通信サブシステム2624は、有線および/または無線通信プロトコルの両方をサポートし得る。たとえば、特定の実施形態において、通信サブシステム2624は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.XXファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの実施形態において、通信サブシステム2624は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続(たとえばEthernet(登録商標))を提供し得る。
【0259】
通信サブシステム2624は、さまざまな形式でデータを受信および送信し得る。たとえば、いくつかの実施形態において、通信サブシステム2624は、他の形式に加えて、構造化データフィードおよび/または非構造化データフィード2626、イベントストリーム2628、イベントアップデート2630などの形式で入力通信を受信してもよい。たとえば、通信サブシステム2624は、ソーシャルメディアネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード2626を受信(または送信)するように構成されてもよい。
【0260】
特定の実施形態において、通信サブシステム2624は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム2628および/またはイベントアップデート2630を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどを含み得る。
【0261】
通信サブシステム2624は、コンピュータシステム2600からのデータを他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード2626、イベントストリーム2628、イベントアップデート2630などのような各種異なる形式で、コンピュータシステム2600に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに、伝えられてもよい。
【0262】
コンピュータシステム2600は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのうちの1つであればよい。コンピュータおよびネットワークの性質が常に変化しているため、
図26に示されるコンピュータシステム2600の記載は、具体的な例として意図されているに過ぎない。
図26に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が実現可能である。当業者であれば、本明細書における開示および教示に基づいて、さまざまな実施形態を実現するための他の態様および/または方法を認識するだろう。
【0263】
特定の実施形態について説明したが、さまざまな変形、変更、代替構成、および均等物が可能である。実施形態は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作させることができる。加えて、特定の実施形態を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行することができる。加えて、動作の順序を再指定してもよい。プロセスは図に含まれない追加のステップを有し得る。上記の実施形態の各種特徴および局面は、個別に使用されてもよく、またはともに使用されてもよい。
【0264】
さらに、特定の実施形態をハードウェアとソフトウェアとの特定の組み合わせを用いて説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。特定の実施形態は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの別々のプロセッサ上で実現されてもよい。
【0265】
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計することにより、動作を実行するようにプログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、たとえば、非一時的なメモリ媒体に格納されたコードもしくは命令またはそれらの任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどにより、達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。
【0266】
本開示では具体的な詳細を示すことにより実施形態が十分に理解されるようにしている。しかしながら、実施形態はこれらの具体的な詳細がなくとも実施され得るものである。たとえば、周知の回路、プロセス、アルゴリズム、構造、および技術は、実施形態が曖昧にならないようにするために不必要な詳細事項なしで示している。本明細書は例示的な実施形態のみを提供し、他の実施形態の範囲、適用可能性、または構成を限定するよう意図されたものではない。むしろ、実施形態の上記説明は、各種実施形態を実現することを可能にする説明を当業者に提供する。要素の機能および構成の範囲内でさまざまな変更が可能である。
【0267】
したがって、明細書および添付の図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされ得ることは明らかであろう。このように、具体的な実施形態を説明してきたが、これらは限定を意図するものではない。さまざまな変形例および同等例ならびに開示された特徴の関連する任意の組合せは添付の特許請求の範囲内にある。
【国際調査報告】