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

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

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

特表2023-551860自然言語処理のためのドメイン外データ拡張
<>
  • 特表-自然言語処理のためのドメイン外データ拡張 図1
  • 特表-自然言語処理のためのドメイン外データ拡張 図2
  • 特表-自然言語処理のためのドメイン外データ拡張 図3
  • 特表-自然言語処理のためのドメイン外データ拡張 図4
  • 特表-自然言語処理のためのドメイン外データ拡張 図5
  • 特表-自然言語処理のためのドメイン外データ拡張 図6
  • 特表-自然言語処理のためのドメイン外データ拡張 図7
  • 特表-自然言語処理のためのドメイン外データ拡張 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-13
(54)【発明の名称】自然言語処理のためのドメイン外データ拡張
(51)【国際特許分類】
   G06F 40/30 20200101AFI20231206BHJP
   G06N 3/09 20230101ALI20231206BHJP
【FI】
G06F40/30
G06N3/09
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023532752
(86)(22)【出願日】2021-11-29
(85)【翻訳文提出日】2023-07-25
(86)【国際出願番号】 US2021060956
(87)【国際公開番号】W WO2022115676
(87)【国際公開日】2022-06-02
(31)【優先権主張番号】63/119,526
(32)【優先日】2020-11-30
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/452,743
(32)【優先日】2021-10-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ジャラルッディン,エリアス・ルクマン
(72)【発明者】
【氏名】ビシュノイ,ビシャル
(72)【発明者】
【氏名】ドゥオング,タン・ロング
(72)【発明者】
【氏名】ジョンソン,マーク・エドワード
(72)【発明者】
【氏名】ザレムーディ,ポーヤ
(72)【発明者】
【氏名】シンガラジュ,ゴータム
(72)【発明者】
【氏名】シュ,イン
(72)【発明者】
【氏名】ブリノフ,ブラディスラフ
(72)【発明者】
【氏名】ホング,ユ-ヘング
(57)【要約】
自然言語処理においてチャットボットシステムをトレーニングするためのドメイン外データ拡張のための技術を提供する。特定の一局面では、1つ以上の発話についての1つ以上のインテントを識別するように機械学習モデルをトレーニングするための発話のトレーニングセットを受信するステップと、ドメイン外(out-of-domain:OOD)例で発話のトレーニングセットを拡張するステップとを含む方法が提供される。拡張するステップは、OOD例のデータセットを生成するステップと、OOD例のデータセットからOOD例をフィルタリングして除去するステップと、フィルタリングされたOOD例のデータセット内に残っている各OOD例についての難易度値を決定するステップと、各OODについての難易度値に基づいて発話のトレーニングセットからの発話とフィルタリングされたOODのデータセットからの発話とを含む拡張された発話のバッチを生成するステップと、を含む。その後、機械学習モデルは、カリキュラムトレーニングプロトコルに従って拡張された発話のバッチを用いてトレーニングされる。
【特許請求の範囲】
【請求項1】
方法であって、
データ処理システムにおいて、1つ以上の発話についての1つ以上のインテントを識別するように機械学習モデルをトレーニングするための発話のトレーニングセットを受信するステップと、
前記データ処理システムによって、ドメイン外(out-of-domain:OOD)例で前記発話のトレーニングセットを拡張するステップとを含み、前記拡張するステップは、
OOD例のデータセットを生成するステップと、
前記発話のトレーニングセットのうちの前記発話のコンテキストに実質的に類似するコンテキストを有するOOD例を前記OOD例のデータセットからフィルタリングして除去するステップと、
前記フィルタリングされたOOD例のデータセット内に残っている各OOD例についての難易度値を決定するステップと、
各OODについての前記難易度値に基づいて、前記発話のトレーニングセットからの発話と、前記フィルタリングされたOODのデータセットからの発話とを含む拡張された発話のバッチを生成するステップとを含み、前記方法はさらに、
前記データ処理システムによって、前記拡張された発話のバッチを用いて前記機械学習モデルをトレーニングするステップを含み、前記トレーニングするステップは、前記拡張された発話のバッチの各バッチ内の前記OOD例の前記難易度値に基づいて、前記拡張された発話のバッチを前記機械学習モデルに供給するステップを含む、方法。
【請求項2】
前記OOD例のコンテキストと前記発話のトレーニングセットのうちの前記発話のコンテキストとの間の実質的な類似性は、クラス間の不一致を回避するために距離尺度に基づいて決定される、請求項1に記載の方法。
【請求項3】
前記OOD例のコンテキストと前記発話のトレーニングセットのうちの前記発話のコンテキストとの間の実質的な類似性は、多言語ユニバーサル・センテンス・エンコーダ(Multilingual Universal Sentence Encoder:MUSE)シングル埋込みを用いて決定され、min(d_i)<予め定められた閾値(d_i=ユークリッド距離(v_i,u))である場合、前記OOD例のコンテキストおよび前記発話のトレーニングセットのうちの前記発話のコンテキストは実質的に類似していると判定される、請求項2に記載の方法。
【請求項4】
前記難易度値は、容易なOOD例が高いd_i値を有する一方で、困難なOOD例が前記予め定められた閾値により近いより低いd_i値を有するように、前記d_i値から導き出される、請求項3に記載の方法。
【請求項5】
前記拡張された発話のバッチは以下の制約に基づいて生成され、前記以下の制約は、(i)予め定められたバッチサイズ、(ii)各バッチ内の前記発話のトレーニングセットからの発話の予め定められた数のドメイン内例の組込み、(iii)各バッチ内の前記フィルタリングされたOODのデータセットからの発話の予め定められた数のOOD例の組込み、(iv)前記予め定められた数のドメイン内例および前記予め定められた数の発話のOOD例は、前記予め定められたバッチサイズを維持するように選択され、(v)各バッチに組込まれた発話のOOD例は、実質的に類似する難易度値を有し、ならびに、任意には、(vi)前記フィルタリングされたOODのデータセットからの各ODD例は、前記拡張された発話のバッチのうちの単一のバッチのみに組込まれる、という制約を含む、請求項4に記載の方法。
【請求項6】
前記トレーニングされた機械学習モデルをチャットボットシステムにおいて展開するステップをさらに含む、先行する請求項のいずれか1項に記載の方法。
【請求項7】
前記拡張された発話のバッチは、バッチバランシングスキームを用いて生成される、先行する請求項のいずれか1項に記載の方法。
【請求項8】
システムであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサに結合されたメモリとを含み、前記メモリは、前記1つ以上のプロセッサによって実行可能な複数の命令を格納し、前記複数の命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに以下の動作を実行させる命令を含み、前記以下の動作は、
1つ以上の発話についての1つ以上のインテントを識別するように機械学習モデルをトレーニングするための発話のトレーニングセットを受信する動作と、
ドメイン外(OOD)例で前記発話のトレーニングセットを拡張する動作とを含み、前記拡張する動作は、
OOD例のデータセットを生成する動作と、
前記発話のトレーニングセットのうちの前記発話のコンテキストに実質的に類似するコンテキストを有するOOD例を前記OOD例のデータセットからフィルタリングして除去する動作と、
前記フィルタリングされたOOD例のデータセット内に残っている各OOD例についての難易度値を決定する動作と、
各OODについての前記難易度値に基づいて、前記発話のトレーニングセットからの発話と、前記フィルタリングされたOODのデータセットからの発話とを含む拡張された発話のバッチを生成する動作とを含み、前記以下の動作はさらに、
前記拡張された発話のバッチを用いて前記機械学習モデルをトレーニングする動作を含み、前記トレーニングする動作は、前記拡張された発話のバッチの各バッチ内の前記OOD例の前記難易度値に基づいて、前記拡張された発話のバッチを前記機械学習モデルに供給する動作を含む、システム。
【請求項9】
前記OOD例のコンテキストと前記発話のトレーニングセットのうちの前記発話のコンテキストとの間の実質的な類似性は、クラス間の不一致を回避するために距離尺度に基づいて決定される、請求項8に記載のシステム。
【請求項10】
前記OOD例のコンテキストと前記発話のトレーニングセットのうちの前記発話のコンテキストとの間の実質的な類似性は、多言語ユニバーサル・センテンス・エンコーダ(MUSE)シングル埋込みを用いて決定され、min(d_i)<予め定められた閾値(d_i=ユークリッド距離(v_i,u))である場合、前記OOD例のコンテキストおよび前記発話のトレーニングセットのうちの前記発話のコンテキストは実質的に類似していると判定される、請求項9に記載のシステム。
【請求項11】
前記難易度値は、容易なOOD例が高いd_i値を有する一方で、困難なOOD例が前記予め定められた閾値により近いより低いd_i値を有するように、前記d_i値から導き出される、請求項10に記載のシステム。
【請求項12】
前記拡張された発話のバッチは以下の制約に基づいて生成され、前記以下の制約は、(i)予め定められたバッチサイズ、(ii)各バッチ内の前記発話のトレーニングセットからの発話の予め定められた数のドメイン内例の組込み、(iii)各バッチ内の前記フィルタリングされたOODのデータセットからの発話の予め定められた数のOOD例の組込み、(iv)前記予め定められた数のドメイン内例および前記予め定められた数の発話のOOD例は、前記予め定められたバッチサイズを維持するように選択され、(v)各バッチに組込まれた発話のOOD例は、実質的に類似する難易度値を有し、ならびに、任意には、(vi)前記フィルタリングされたOODのデータセットからの各ODD例は、前記拡張された発話のバッチのうちの単一のバッチのみに組込まれる、という制約を含む、請求項11に記載のシステム。
【請求項13】
前記以下の動作はさらに、前記トレーニングされた機械学習モデルをチャットボットシステムにおいて展開する動作を含む、請求項8から12のいずれか1項に記載のシステム。
【請求項14】
前記拡張された発話のバッチは、バッチバランシングスキームを用いて生成される、請求項8から13のいずれか1項に記載のシステム。
【請求項15】
1つ以上のプロセッサによって実行可能な複数の命令を格納する非一時的なコンピュータ可読メモリであって、前記複数の命令は、前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに以下の動作を実行させる命令を含み、前記以下の動作は、
1つ以上の発話についての1つ以上のインテントを識別するように機械学習モデルをトレーニングするための発話のトレーニングセットを受信する動作と、
ドメイン外(OOD)例で前記発話のトレーニングセットを拡張する動作とを含み、前記拡張する動作は、
OOD例のデータセットを生成する動作と、
前記発話のトレーニングセットのうちの前記発話のコンテキストに実質的に類似するコンテキストを有するOOD例を前記OOD例のデータセットからフィルタリングして除去する動作と、
前記フィルタリングされたOOD例のデータセット内に残っている各OOD例についての難易度値を決定する動作と、
各OODについての前記難易度値に基づいて、前記発話のトレーニングセットからの発話と、前記フィルタリングされたOODのデータセットからの発話とを含む拡張された発話のバッチを生成する動作とを含み、前記以下の動作はさらに、
前記拡張された発話のバッチを用いて前記機械学習モデルをトレーニングする動作を含み、前記トレーニングする動作は、前記拡張された発話のバッチの各バッチ内の前記OOD例の前記難易度値に基づいて、前記拡張された発話のバッチを前記機械学習モデルに供給する動作を含む、非一時的なコンピュータ可読メモリ。
【請求項16】
前記OOD例のコンテキストと前記発話のトレーニングセットのうちの前記発話のコンテキストとの間の実質的な類似性は、クラス間の不一致を回避するために距離尺度に基づいて決定される、請求項15に記載の非一時的なコンピュータ可読メモリ。
【請求項17】
前記OOD例のコンテキストと前記発話のトレーニングセットのうちの前記発話のコンテキストとの間の実質的な類似性は、多言語ユニバーサル・センテンス・エンコーダ(MUSE)シングル埋込みを用いて決定され、min(d_i)<予め定められた閾値(d_i=ユークリッド距離(v_i,u))である場合、前記OOD例のコンテキストおよび前記発話のトレーニングセットのうちの前記発話のコンテキストは実質的に類似していると判定される、請求項16に記載の非一時的なコンピュータ可読メモリ。
【請求項18】
前記難易度値は、容易なOOD例が高いd_i値を有する一方で、困難なOOD例が前記予め定められた閾値により近いより低いd_i値を有するように、前記d_i値から導き出される、請求項17に記載の非一時的なコンピュータ可読メモリ。
【請求項19】
前記拡張された発話のバッチは以下の制約に基づいて生成され、前記以下の制約は、(i)予め定められたバッチサイズ、(ii)各バッチ内の前記発話のトレーニングセットからの発話の予め定められた数のドメイン内例の組込み、(iii)各バッチ内の前記フィルタリングされたOODのデータセットからの発話の予め定められた数のOOD例の組込み、(iv)前記予め定められた数のドメイン内例および前記予め定められた数の発話のOOD例は、前記予め定められたバッチサイズを維持するように選択され、(v)各バッチに組込まれた発話のOOD例は、実質的に類似する難易度値を有し、ならびに、任意には、(vi)前記フィルタリングされたOODのデータセットからの各ODD例は、前記拡張された発話のバッチのうちの単一のバッチのみに組込まれる、という制約を含む、請求項18に記載の非一時的なコンピュータ可読メモリ。
【請求項20】
前記以下の動作はさらに、前記トレーニングされた機械学習モデルをチャットボットシステムにおいて展開する動作を含む、請求項15から19のいずれか1項に記載の非一時的なコンピュータ可読メモリ。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2020年11月30日に出願された米国仮出願第63/119,526号の利益および優先権を主張する、2021年10月28日に出願された米国非仮出願第17/452,743号の利益および優先権を主張するものであって、その内容全体があらゆる目的のために引用により本明細書中に援用されている。
【0002】
分野
本開示は、概してチャットボットシステムに関し、より特定的には、自然言語処理においてチャットボットシステムをトレーニングするためのドメイン外(out-of-domain:OOD)データ拡張のための技術に関する。
【背景技術】
【0003】
背景
世界中の多くのユーザは、即時反応を得るためにインスタントメッセージングまたはチャットプラットフォーム上に存在している。組織は、しばしば、これらのインスタントメッセージングまたはチャットプラットフォームを用いて、顧客(またはエンドユーザ)とライブ会話に参加する。しかしながら、顧客またはエンドユーザとのライブ通信に参加するためにサービス人員を雇用することは、組織にとって非常に費用がかかる可能性がある。チャットボットまたはボットは、特にインターネット上で、エンドユーザとの会話をシミュレートするために開発され始めた。エンドユーザは、自身らが既にインストールし使用しているメッセージングアプリを介してボットと通信することができる。一般に人工知能(artificial intelligence:AI)によって駆動されるインテリジェントなボットは、ライブ会話において、よりインテリジェントにかつ文脈に沿って通信することができ、したがって、会話体験の改善のために、ボットとエンドユーザとの間の、より自然な会話を可能にし得る。ボットが応答の仕方を知っているキーワードまたはコマンドの固定セットをエンドユーザが学習する代わりに、インテリジェントなボットは、自然言語でのエンドユーザ発話に基づいてエンドユーザのインテントを理解し、それに応じて応答することができる可能性がある。
【0004】
しかしながら、これらの自動化されたソリューションは、特定の分野における特定の知識と、専門開発者の能力内にしかあり得ない特定の技術の適用とを必要とするので、チャットボットを構築することは困難である。このようなチャットボットの構築の一環として、開発者はまず企業およびエンドユーザのニーズを理解してもよい。次いで、開発者は、例えば、分析のために使用されるべきデータセットを選択すること、分析のために入力データセットを準備すること(例えば、データのクレンジング、分析前のデータの抽出、フォーマット化および/または変換、データ特徴エンジニアリングの実行など)、分析を行うための適切な機械学習(machine learning:ML)技術またはモデルを識別すること、およびフィードバックに基づいて結果/成果を改善するよう技術またはモデルを改善することに関連する判断を分析および実行してもよい。適切なモデルを識別するタスクは、複数のモデルを場合によっては並行して開発すること、これらのモデルを用いて反復的にテストおよび実験した後に、特定のモデルを使用のために識別することを含み得る。さらに、教師あり学習ベースのソリューションは、典型的には、トレーニング段階と、それに続く適用(すなわち、推論)段階と、トレーニング段階と適用段階との間の反復ループとを含む。開発者は、最適解を達成するために、これらの段階を注意深く実施および監視する役割を担う可能性がある。例えば、ML技術またはモデルをトレーニングするために、ML技術またはモデルが所望の成果(例えば、発話からのインテントの推論)を予測するために使用することになる、特定のパターンまたは特徴(例えば、チャットボットの場合、単に未加工言語処理ではなく、インテント抽出および慎重な構文解析)をアルゴリズムが理解および学習することを可能にするために、正確なトレーニングデータが必要とされる。ML技術またはモデルがこれらのパターンおよび特徴を適切に学習することを確実にするために、開発者は、ML技術またはモデルのためにトレーニングデータのセットを選択し、拡充し、最適化する役割を担う可能性がある。
【発明の概要】
【0005】
概要
ここに開示する技術は、概して、チャットボットに関する。より具体的には、限定ではないが、ここに開示する技術は、自然言語処理においてチャットボットシステムをトレーニングするためのトレーニングデータのセットのOODデータ拡張のための技術に関する。チャットボットは、ユーザの発話を、ユーザの事前定義されたインテントなどの様々なクラスに分類することができる。チャットボットの分類器は、入力(例えば、ユーザ発話)に基づいて出力(例えば、インテント)を生成するトレーニングされたMLモデルを含んでもよい。ユーザ発話は音声の形態をとり得る。この場合、トレーニングされたMLモデルは、音声認識を改善させるものとして理解することができ、ここで、音声認識は、ユーザインテントをより正確に識別することを可能にする。トレーニングされたMLモデルをトレーニングするために使用されるトレーニングデータが適切でない場合、チャットボットは、誤ったインテントをより頻繁に判断する可能性がある。ここに開示する技術は、MLモデルが無関係なコンテキストに対してより強靱であり、ドメイン内またはOODインテントのパターンまたは境界をより正確に学習するように、MLモデルをトレーニングするためのOOD拡張されたデータセットを提供することができる。
【0006】
様々な実施形態では、以下を含むコンピュータにより実現される方法が提供される。コンピュータにより実現される方法は、データ処理システムにおいて、1つ以上の発話についての1つ以上のインテントを識別するように機械学習モデルをトレーニングするための発話のトレーニングセットを受信するステップと、当該データ処理システムによって、ドメイン外(out-of-domain:OOD)例で発話のトレーニングセットを拡張するステップとを含む。当該拡張するステップは、OOD例のデータセットを生成するステップと、発話のトレーニングセットのうちの発話のコンテキストに実質的に類似するコンテキストを有するOOD例をOOD例のデータセットからフィルタリングして除去するステップと、フィルタリングされたOOD例のデータセット内に残っている各OOD例についての難易度値を決定するステップと、各OODについての難易度値に基づいて、発話のトレーニングセットからの発話と、フィルタリングされたOODのデータセットからの発話とを含む拡張された発話のバッチを生成するステップと、データ処理システムによって、当該拡張された発話のバッチを用いて機械学習モデルをトレーニングするステップとを含み、当該トレーニングするステップは、当該拡張された発話のバッチの各バッチ内の当該OOD例の難易度値に基づいて、当該拡張された発話のバッチを機械学習モデルに供給するステップを含む。
【0007】
いくつかの実施形態では、OOD例のコンテキストと発話のトレーニングセットのうちの発話のコンテキストとの間の実質的な類似性は、クラス間の不一致(collisions)を回避するために距離尺度に基づいて決定される。
【0008】
いくつかの実施形態では、当該OOD例のコンテキストと当該発話のトレーニングセットのうちの当該発話のコンテキストとの間の実質的な類似性は、多言語ユニバーサル・センテンス・エンコーダ(Multilingual Universal Sentence Encoder:MUSE)シングル埋込みを用いて決定され、min(d_i)<予め定められた閾値(d_i=ユークリッド距離(v_i,u))である場合、当該OOD例のコンテキストおよび当該発話のトレーニングセットのうちの当該発話のコンテキストは実質的に類似していると判定される。
【0009】
いくつかの実施形態では、当該難易度値は、容易なOOD例が高いd_i値を有する一方で、困難なOOD例が当該予め定められた閾値により近いより低いd_i値を有するように、当該d_i値から導き出される。
【0010】
いくつかの実施形態では、当該拡張された発話のバッチは以下の制約に基づいて生成され、当該以下の制約は、(i)予め定められたバッチサイズ、(ii)各バッチ内の当該発話のトレーニングセットからの発話の予め定められた数のドメイン内例の組込み、(iii)各バッチ内の当該フィルタリングされたOODのデータセットからの発話の予め定められた数のOOD例の組込み、(iv)当該予め定められた数のドメイン内例および当該予め定められた数の発話のOOD例は、当該予め定められたバッチサイズを維持するように選択され、(v)各バッチに組込まれた発話のOOD例は、実質的に類似する難易度値を有し、ならびに、任意には、(vi)当該フィルタリングされたOODのデータセットからの各ODD例は、当該拡張された発話のバッチのうちの単一のバッチのみに組込まれる、という制約を含む。
【0011】
いくつかの実施形態では、当該方法は、トレーニングされた機械学習モデルをチャットボットシステムにおいて展開するステップをさらに含む。
【0012】
いくつかの実施形態では、当該拡張された発話のバッチは、バッチバランシングスキームを用いて生成される。
【0013】
様々な実施形態では、コンピュータにより実現される方法が提供される。コンピュータにより実現される方法は、チャットボットシステムが、チャットボットシステムと対話するユーザによって生成された発話を受信するステップと、チャットボットシステム内に展開されたインテント分類器を用いて、発話をインテントに対応するインテントカテゴリに分類するステップとを含み、当該インテント分類器は、トレーニングデータを用いて識別された複数のモデルパラメータを含み、当該トレーニングデータは、1つ以上の発話についての1つ以上のインテントを識別するようにインテント分類器をトレーニングするための、拡張された発話のトレーニングセットを含み、拡張された発話のトレーニングセットは、発話のトレーニングセットからの拡張された発話を含むように人工的に生成され、当該拡張された発話は、当該発話のトレーニングセットのうちの発話のコンテキストと実質的に異なるコンテキストを有するOOD発話であり、OOD例のコンテキストと発話のトレーニングセットのうちの発話のコンテキストとの間の実質的な相違は、多言語ユニバーサル・センテンス・エンコーダ(MUSE)シングル埋込みを用いて決定され、min(d_i)=>予め定められた閾値(d_i=ユークリッド距離(v_i,u))である場合、OOD例のコンテキストおよび発話のトレーニングセットのうちの発話のコンテキストは実質的に相違していると判定され、複数のモデルパラメータは、損失関数を最小化することに基づいてトレーニングデータを用いて識別され、コンピュータにより実現される方法はさらに、インテント分類器を用いて、分類に基づいてインテントを出力するステップを含む。
【0014】
様々な実施形態では、1つ以上のデータプロセッサと、1つ以上のデータプロセッサ上で実行されると当該1つ以上のデータプロセッサにここに開示される1つ以上の方法の一部またはすべてを実行させる命令を含む非一時的なコンピュータ可読記憶媒体とを含む、システムが提供される。
【0015】
様々な実施形態では、非一時的な機械可読記憶媒体において有形に具現化されるコンピュータプログラム製品が提供される。当該コンピュータプログラム製品は、1つ以上のデータプロセッサにここで開示される1つ以上の方法の一部またはすべてを実行させるように構成される命令を含む。
【0016】
上記および以下で説明する技術は、いくつかの方法およびいくつかの状況で実現され得る。いくつかの例示的な実現例および状況が、以下でより詳細に説明されるように、添付の図を参照して提供される。しかしながら、以下の実現例および状況は、多くのうちのほんの数例にすぎない。
【図面の簡単な説明】
【0017】
図1】例示的な実施形態を組込んだ分散環境を示す簡略ブロック図である。
図2】特定の実施形態に従った、マスタボットを実現するコンピューティングシステムを示す簡略ブロック図である。
図3】特定の実施形態に従った、スキルボットを実現するコンピューティングシステムを示す簡略ブロック図である。
図4】様々な実施形態に従った、チャットボットトレーニングおよび展開システムを示す簡略ブロック図である。
図5】様々な実施形態に従った、OOD例でトレーニングデータセットを拡張するためのプロセスフローを示す図である。
図6】様々な実施形態を実現するための分散型システムを示す簡略図である。
図7】様々な実施形態に従った、一実施形態のシステムの1つ以上のコンポーネントによって提供されるサービスがクラウドサービスとして提供され得る、システム環境の1つ以上のコンポーネントを示す簡略ブロック図である。
図8】様々な実施形態を実現するために用いられ得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0018】
詳細な説明
以下の説明では、説明の目的で、特定の詳細が、特定の実施形態の完全な理解を促すために記載される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実施され得ることは明らかであろう。図および記載は、限定することを意図したものではない。「例示的」という語は、ここでは、「例、事例、または例示として供される」ことを意味するために用いられる。「例示的」としてここに記載される任意の実施形態または設計は、必ずしも、他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0019】
導入
デジタルアシスタントは、ユーザが自然言語会話において様々なタスクを達成するのを助ける人工知能駆動型インターフェイスである。各デジタルアシスタントについて、顧客は、1つ以上のスキルをアセンブルし得る。スキル(ここでは、チャットボット、ボット、またはスキルボットとしても記載される)は、在庫の追跡、タイムカードの提出、および経費報告の作成など、特定の種類のタスクに焦点を当てる個々のボットである。エンドユーザがデジタルアシスタントに携わる場合、デジタルアシスタントは、エンドユーザ入力を評価し、適切なチャットボットとの間で会話をルーティングする。デジタルアシスタントは、FACEBOOK(登録商標)メッセンジャー、SKYPE MOBILE(登録商標)メッセンジャー、またはショートメッセージサービス(SMS)などの様々なチャネルを介してエンドユーザにとって利用可能にすることができる。チャネルは、様々なメッセージングプラットフォーム上でエンドユーザからデジタルアシスタントおよびその様々なチャットボットへチャットを行き来させる。チャネルはまた、ユーザエージェントの段階的拡大、イベント起動型会話、およびテストをサポートしてもよい。
【0020】
インテントは、ユーザがチャットボットにして欲しいことをチャットボットに理解させることを可能にする。インテントは、ユーザのインテントを取込む精度に対応して、ユーザの発話(例えば、場合によっては音声として伝えられるコマンドまたは命令)が理解される精度で、ユーザによって(例えば、音声形式で)コンピュータに与えられる命令と考えることができる。これは、コマンドまたは命令に対するコンピュータの応答が適切であるかどうかに直接関係がある。なぜなら、コマンドまたは命令がより良く理解されるほど、コンピュータからより良い応答が得られるからである。ここで使用する場合、発話またはメッセージは、チャットボットとの会話の間に交換される単語のセット(例えば、1つ以上の文)を指し得る。インテントは、何らかのユーザアクション(例えば、ピザの注文)を示す名前を提供し、そのアクションをトリガすることに一般に関連付けられる実際のユーザステートメントまたは発話のセットをコンパイルすることによって、作成されてもよい。チャットボットの認知は、これらのインテントから導き出されるので、各インテントは、チャットボットがあいまいなユーザ入力を解釈し得るように、ロバストな(1から二十数個の発話)であるデータセットから作成および変更され得る。豊富な発話のセットは、チャットボットが、「この注文は無視して!」または「配達はキャンセルして!」のような、同じ事を意味するが異なって表現されるメッセージを受信したときに、ユーザが何を望んでいるかを理解することを可能にする。集合的に、インテントおよびそれらに属する発話は、チャットボット用のトレーニングコーパスを構成する。コーパスを用いて機械学習モデルをトレーニングすることにより、顧客は、その機械学習モデルを、本質的に、エンドユーザ入力を単一のインテントに分解するための参照ツールに変換し得る。顧客は、インテントテストおよびインテントトレーニングの循環を通じてチャットボットの認知の鋭敏さを改善することができる。
【0021】
しかしながら、ユーザ発話に基づいてエンドユーザのインテントを判断することができるチャットボットを構築することは、部分的には、自然言語の微妙さおよび曖昧さ、ならびに入力空間の次元(例えば、起こり得る可能性のあるユーザ発話)および出力空間のサイズ(インテントの数)のため、困難なタスクである。この困難さの具体例は、インテントを表わすために、婉曲語句、同義語、または非文法的言語を採用する等の自然言語の特性から生じる。例えば、発話は、ピザ、注文、または配達を明示的に言及することなく、ピザを注文するインテントを表わし得る。例えば、特定の地域の現地語では「ピザ」は「パイ」と呼ばれる。自然言語での不正確さまたはばらつき等のこれらの傾向により、不確実性が生じることになり、例えばキーワードを含めることによってインテントを明示的に表示するのとは対照的に、インテントの予測のためのパラメータとしての信頼度が導入されることになる。したがって、チャットボットの性能およびチャットボットによるユーザ体験を改善するために、チャットボットをトレーニング、監視、デバッグ、および再トレーニングする必要があるかもしれない。従来のシステムでは、口語理解(SLU)および自然言語処理(NLP)におけるデジタルアシスタントまたはチャットボットの機械学習モデルをトレーニングおよび再トレーニングするためのトレーニングシステムが提供される。従来、チャットボットシステムに使用されるモデルは、NLPにおいて、任意のインテントについて「製造された」発話でトレーニングされる。例えば、「Do you do price changes?(価格変更をしますか?)」という発話を用いて、この種の発話を「Do you offer a price match.(プライスマッチを提供するか)」というインテントとして分類するようチャットボットシステムの分類器モデルをトレーニングしてもよい。製造された発話でのモデルのトレーニングは、最初に、サービスを提供するためにチャットボットシステムをトレーニングするのを支援し、次いで、チャットボットシステムは、一旦それが展開されてユーザから実際の発話を取得し始めると、再トレーニングされてもよい。
【0022】
テキスト分類のためのモデルの従来のトレーニングは、グラウンドトゥルースインテントでラベル付けされた発話のトレーニングデータセットから始まる。しかしながら、発話のトレーニングデータセットは、典型的には、未解決のインテントとしてOOD発話を分類するようにモデルをトレーニングするためのドメイン外(OOD)テスト発話を欠いている。具体的には、機械学習モデルは、ドメイン内インテントに対する過剰信頼度に勝るかまたは過剰信頼度を判断する傾向を有し得る。トレーニング中のOODテスト発話が欠如していることにより、トレーニングされた機械学習モデルのテストまたは展開実行中に偽陽性が生じる可能性がある。例えば、いくつかのドメイン外(OOD)テスト発話は、ドメイン内インテントへの学習引力を引起こすOODテスト発話がトレーニング中に欠如しているために、ドメイン内インテントの下では誤分類され得ることが観察されている。
【0023】
したがって、これらの問題に対処するために別のアプローチが必要となる。機械学習モデルが、未解決のインテント等の正確なOODインテントについて発話をより良く学習および分類するために、本明細書に記載のアプローチは、OOD例(負のデータ拡張)でトレーニングデータを拡張することによって、機械学習モデルにこれを学習させるよう試みるものである。これらのOOD例のラベルは、正確なインテント、または未解決のインテント等のグラウンドトゥルースのためのものであるだろう。その結果、機械学習モデルは、OOD発話が正確なインテントまたは未解決のインテント等のグラウンドトルースとして分類されるべきであることをより良く一般化し、学習するだろう。様々な実施形態では、データ処理システムにおいて、1つ以上の発話についての1つ以上のインテントを識別するように機械学習モデルをトレーニングするための発話のトレーニングセットを受信するステップと、データ処理システムによって、ドメイン外(OOD)例で発話のトレーニングセットを拡張するステップとを含む方法が提供される。拡張するステップは、OOD例のデータセットを生成するステップと、発話のトレーニングセットのうちの発話のコンテキストに実質的に類似するコンテキストを有するOOD例をOOD例のデータセットからフィルタリングして除去するステップと、フィルタリングされたOOD例のデータセット内に残っている各OOD例についての難易度値を決定するステップと、各OODについての難易度値に基づいて、発話のトレーニングセットからの発話と、フィルタリングされたOODのデータセットからの発話とを含む拡張された発話のバッチを生成するステップとを含み、当該方法はさらに、データ処理システムによって、拡張された発話のバッチを用いてインテント分類器をトレーニングするステップを含み、当該トレーニングするステップは、拡張された発話のバッチの各バッチ内のOOD例の難易度値に基づいて、拡張された発話のバッチを機械学習モデルに供給するステップを含む。
【0024】
ボットおよび分析システム
ボット(スキル、チャットボット、チャターボット、またはトークボットとも称される)は、エンドユーザとの会話を実行することができるコンピュータプログラムである。ボットは一般に、自然言語メッセージを用いるメッセージングアプリケーションを通じて自然言語メッセージ(例えば質問またはコメント)に応答することができる。企業は、1つ以上のボットシステムを用いて、メッセージングアプリケーションを通じてエンドユーザと通信し得る。メッセージングアプリケーションは、チャネルと呼ばれることもあり、エンドユーザが既にインストールし、慣れ親しんでいる、エンドユーザの好みのメッセージングアプリケーションであり得る。したがって、エンドユーザは、ボットシステムとチャットするために新たなアプリケーションをダウンロードおよびインストールする必要がない。メッセージングアプリケーションは、例えば、オーバーザトップ(OTT)メッセージングチャネル(例えば、Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack,またはSMS)、バーチャルプライベートアシスタント(例えば、Amazon Dot, Echo,またはShow, Google(登録商標) Home, Apple HomePodなど)、チャット機能を有するネイティブもしくはハイブリッド/応答モバイルアプリもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリ拡張、または音声ベースの入力(例えば、Siri, Cortana, Google Voice、または対話のための他の音声入力を用いるインターフェイスを有するデバイスもしくはアプリ)を含み得る。
【0025】
いくつかの例では、ボットシステムは、ユニフォームリソース識別子(URI)に関連付けられ得る。URIは、文字列を用いてボットシステムを識別し得る。URIは、1つ以上のメッセージングアプリケーションシステムのためのウェブフックとして用いられ得る。URIは、例えば、ユニフォームリソース位置指定子(URL)またはユニフォームリソース名(URN)を含み得る。ボットシステムは、メッセージングアプリケーションシステムからメッセージ(例えば、ハイパーテキスト転送プロトコル(HTTP)ポストコールメッセージ)を受信するように設計されてもよい。HTTPポストコールメッセージは、メッセージングアプリケーションシステムからURIに向けられてもよい。いくつかの実施形態では、メッセージはHTTPポストコールメッセージとは異なり得る。例えば、ボットシステムは、ショートメッセージサービス(SMS)からメッセージを受信し得る。ここでの説明は、ボットシステムがメッセージとして受信する通信について言及し得るが、メッセージは、HTTPポストコールメッセージ、SMSメッセージ、または2つのシステム間の任意の他のタイプの通信であり得ることを理解されたい。
【0026】
エンドユーザは、人同士の間の対話のように、会話による対話(会話によるユーザインターフェイス(UI)と呼ばれることもある)を通じてボットシステムと対話し得る。場合によっては、対話は、エンドユーザがボットに「Hello(こんにちは)」と言い、ボットが「Hi(やあ)」と応答し、エンドユーザをどのように支援できるかをエンドユーザに問い合わせることを含んでもよい。場合によっては、対話はまた、例えば、ある口座から別の口座への送金等、銀行ボットとの取引対話、例えば、バケーションバランスの照合等、例えばHRボットとの情報対話、または、例えば、購入した商品の返品もしくは技術的サポートの要求を説明する小売店ボットとの対話であってもよい。
【0027】
いくつかの実施形態では、ボットシステムは、ボットシステムの管理者または開発者との対話なしにエンドユーザ対話をインテリジェントに扱い得る。例えば、エンドユーザは、所望の目標を達成するために、ボットシステムに1つ以上のメッセージを送信してもよい。メッセージは、テキスト、絵文字、音声、画像、映像、またはメッセージを伝達する他の方法等の特定のコンテンツを含み得る。いくつかの実施形態では、ボットシステムは、コンテンツを標準化された形式(例えば、適切なパラメータを有する企業サービスに対するREST(representational state transfer)コール)に変換し、自然言語応答を生成してもよい。ボットシステムはまた、追加の入力パラメータをエンドユーザに促すか、または他の追加情報を要求してもよい。いくつかの実施形態では、ボットシステムはまた、エンドユーザ発話に受動的に応答するのではなく、エンドユーザとの通信を開始してもよい。ここでは、ボットシステムの明示的な呼出しを識別し、呼出されるボットシステムに対する入力を決定するための様々な技術を説明する。特定の実施形態では、明示的な呼出し分析は、発話における呼出し名の検出に基づいて、マスタボットによって実行される。呼出し名の検出に応答して、発話は、呼出し名に関連付けられるスキルボットへの入力のために精緻化されてもよい。
【0028】
ボットとの会話は、複数の状態を含む特定の会話フローに従い得る。フローは、入力に基づいて次に起こるものを定義し得る。いくつかの実施形態では、ユーザが定義した状態(例えば、エンドユーザのインテント)と、状態においてとるべき、または状態に応じてとるべきアクションとを含む状態機械を用いてボットシステムを実現し得る。会話は、エンドユーザ入力に基づいて様々な経路をとる可能性があり、これは、ボットがフローについて行う決定に影響を及ぼす可能性がある。例えば、各状態において、エンドユーザ入力または発話に基づいて、ボットは、エンドユーザのインテントを判断して、次にとるべき適切なアクションを決定し得る。本明細書で用いる場合、および発話の文脈において、「インテント」という語は、発話を与えたユーザのインテントを指す。例えば、ユーザは、ピザを注文するために会話でボットに関わることを意図する場合があり、このため、ユーザのインテントは、「ピザを注文して」という発話によって表現されてもよい。ユーザのインテントは、ユーザがユーザに代わってチャットボットに実行して欲しい特定のタスクに向けることができる。したがって、発話は、ユーザのインテントを反映する質問、コマンド、要求などとして表現することができる。インテントは、エンドユーザが達成することを望むであろう目標を含み得る。
【0029】
チャットボットの構成の文脈において、「インテント」という語は、ここでは、ユーザの発話を、チャットボットが実行できる特定のタスク/アクションまたはタスク/アクションのカテゴリにマッピングするための構成情報を指すために用いられる。発話のインテント(すなわち、ユーザのインテント)とチャットボットのインテントとを区別するために、後者をここでは「ボットインテント」と呼ぶことがある。ボットインテントは、そのインテントに関連付けられる1つ以上発話のセットを含み得る。例えば、ピザを注文することに関するインテントは、ピザの注文を行う要望を表す発話の様々な順列を有し得る。これらの関連付けられた発話は、チャットボットのインテント分類器をトレーニングするために用いることができ、インテント分類器が、その後、ユーザからの入力発話がピザ注文インテントと一致するかどうかを判断することを可能にする。ボットインテントは、特定の状態においてユーザと会話を開始するための1つ以上のダイアログフローに関連付けられ得る。例えば、ピザ注文インテントに関する第1のメッセージは、「どの種類のピザがよろしいですか?」という質問であり得る。関連付けられた発話に加えて、ボットインテントは、さらに、そのインテントに関連する固有表現を含み得る。例えば、ピザ注文インテントは、ピザを注文するタスクを実行するために用いられる変数またはパラメータ、例えば、トッピング1、トッピング2、ピザの種類、ピザサイズ、ピザ数量などを含み得る。エンティティの値は、典型的には、ユーザとの会話を通じて取得される。
【0030】
図1は、特定の実施形態に従ったチャットボットシステムを組込んだ環境100の簡略ブロック図である。環境100は、デジタルアシスタントビルダプラットフォーム(digital assistant builder platform:DABP)102を含み、DABP102のユーザがデジタルアシスタントまたはチャットボットシステムを作成および展開することを可能にする。DABP102は、1つ以上のデジタルアシスタント(またはDA)またはチャットボットシステムを作成するために使用することができる。例えば、図1に示すように、特定の企業を表すユーザ104は、DABP102を使用して、特定の企業のユーザ用のデジタルアシスタント106を作成および展開することができる。例えば、銀行が、DABP102を使用して、銀行の顧客による使用のために1つ以上のデジタルアシスタントを作成することができる。複数の企業が、同じDABP102プラットフォームを使用して、デジタルアシスタントを作成することができる。別の例として、レストラン(例えば、ピザショップ)の所有者は、DABP102を用いて、レストランの顧客が食べ物を注文すること(例えば、ピザを注文すること)を可能にするデジタルアシスタントを作成および展開してもよい。
【0031】
本開示の目的のために、「デジタルアシスタント」は、デジタルアシスタントのユーザが自然言語会話を通じて様々なタスクを達成するのに役立つエンティティである。デジタルアシスタントは、ソフトウェア(例えば、デジタルアシスタントは、1つ以上のプロセッサによって実行可能なプログラム、コード、または命令を用いて実現されるデジタルエンティティである)のみを用いて、ハードウェアを用いて、またはハードウェアとソフトウェアとの組合わせを用いて、実現され得る。デジタルアシスタントは、コンピュータ、携帯電話、腕時計、器具、車両等の様々な物理的システムもしくはデバイスにおいて具現化または実現され得る。デジタルアシスタントは、チャットボットシステムとも称されることもある。したがって、本開示の目的のために、デジタルアシスタントおよびチャットボットシステムという文言は置換可能である。
【0032】
DABP102を使用して構築されるデジタルアシスタント106等のデジタルアシスタントは、デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を介して種々のタスクを行うために使用可能である。会話の一部として、ユーザは、1つ以上のユーザ入力110をデジタルアシスタント106に提供し、デジタルアシスタント106から応答112を得てもよい。会話は、入力110および応答112のうちの1つ以上を含み得る。これらの会話を介して、ユーザは、1つ以上のタスクをデジタルアシスタント106によって実行するよう要求することができ、それに応答して、デジタルアシスタント106は、ユーザ要求タスクを実行し、適切な応答でユーザに応答するよう構成される。
【0033】
ユーザ入力110は、概して自然言語形式であり、発話と呼ばれる。ユーザ発話110は、ユーザが文、質問、テキスト片、または単一の単語さえもタイプし、それを入力としてデジタルアシスタント106に提供する場合などのようなテキスト形式であり得る。いくつかの実施形態では、ユーザ発話110は、ユーザがデジタルアシスタント106に入力として提供される何かを言ったりまたは話したりする場合等の音声入力または発話形式であり得る。発話は、典型的には、ユーザ108によって話される言語である。例えば、発話は、英語または何らかの他の言語であってもよい。発話が音声形式である場合、音声入力はその特定の言語のテキスト形式の発話に変換され、次いで、テキスト発話はデジタルアシスタント106によって処理される。様々な音声-テキスト処理技術を用いて、音声または聴覚的入力をテキスト発話に変換してもよく、テキスト発話は、その後、デジタルアシスタント106によって処理される。いくつかの実施形態では、音声からテキストへの変換は、デジタルアシスタント106自体によって行われてもよい。
【0034】
テキスト発話または音声発話であり得る発話は、断章、文、複数の文、1つ以上の単語、1つ以上の質問、前述のタイプの組合せなどであり得る。デジタルアシスタント106は、ユーザ入力の意味を理解するために発話に自然言語理解(NLU)技術を適用するよう構成される。発話に関するNLU処理の一部として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成され、これは、発話に対応する1つ以上のインテントおよび1つ以上のエンティティを識別することを伴う。発話の意味を理解すると、デジタルアシスタント106は、理解された意味またはインテントに応じた1つ以上のアクションまたは動作を実行し得る。本開示の目的のために、発話は、デジタルアシスタント106のユーザ108によって直接提供されたテキスト発話であるか、または入力音声発話をテキスト形式に変換した結果であると仮定する。しかしながら、これは、いかなる態様においても限定的または制限的であることを意図するものではない。
【0035】
例えば、ユーザ108の入力は、「私はピザを注文したい」等の発話を提供することによって、ピザが注文されることを要求してもよい。そのような発話を受信すると、デジタルアシスタント106は、発話の意味を理解し、適切なアクションを取るよう構成される。適切なアクションは、例えば、ユーザが注文したいピザのタイプ、ピザのサイズ、ピザの任意のトッピングなどに関する、ユーザ入力を要求する質問で、ユーザに応答することを含んでもよい。デジタルアシスタント106によって提供される応答はまた、自然言語形式であってもよく、典型的には入力発話と同じ言語であってもよい。これらの応答を生成することの一環として、デジタルアシスタント106は、自然言語生成(NLG)を実行してもよい。ユーザがピザを注文するために、ユーザとデジタルアシスタント106との間の会話を介して、デジタルアシスタントは、ピザを注文するためのすべての必要な情報を提供するようにユーザを誘導してもよく、次いで、会話の終わりに、ピザを注文させてもよい。デジタルアシスタント106は、ピザが注文されたことを示す情報をユーザに出力することによって、会話を終了してもよい。
【0036】
概念レベルでは、デジタルアシスタント106は、ユーザから受信した発話に応答して種々の処理を実行する。いくつかの実施形態では、この処理は、例えば、入力発話の意味を理解すること(自然言語理解(NLU)と呼ばれることもある)、発話に応答して実行されるべきアクションを決定すること、適宜アクションを実行させること、ユーザ発話に応じてユーザに出力されるべき応答を生成すること、応答をユーザに出力することなどを含む、一連の処理ステップまたは処理ステップのパイプラインを伴う。NLU処理は、受信した入力発話を構文解析して発話の構造および意味を理解することと、発話を精緻化および再構成して、発話について、よりよく理解可能な形式(例えば、論理形式)または構造を展開することとを含み得る。応答を生成することは、NLG技術を使用することを含んでもよい。
【0037】
デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理は、文解析(例えば、トークン化、見出し語化、文に対する品詞タグの識別、文中の固有表現の識別、文構造を表すための依存関係ツリーの生成、文の節への分割、個々の節の分析、照応形の解決、チャンク化の実行など)等の様々なNLP関連処理を含み得る。特定の実施形態では、NLU処理またはその一部は、デジタルアシスタント106自体によって実行される。いくつかの他の実施形態では、デジタルアシスタント106は、他のリソースを用いてNLU処理の一部を実行してもよい。例えば、入力発話文の構文および構造は、パーサ、品詞タグ付け部、および/または固有表現認識部を用いて文を処理することによって識別されてもよい。一実現例では、英語の場合、文構造および構文を解析するために、Stanford Natural Language Processing (NLP) Groupによって提供されるものの等の、パーサ、品詞タグ付け部、および固有表現認識部が用いられる。これらは、Stanford CoreNLPツールキットの一部として提供される。
【0038】
本開示で提供される様々な例は英語での発話を示すが、これは単なる例としてのみ意味されるものである。特定の実施形態では、デジタルアシスタント106は、英語以外の言語で発話を処理することもできる。デジタルアシスタント106は、様々な言語に対する処理を実行するよう構成されるサブシステム(例えば、NLU機能を実現するコンポーネント)を提供してもよい。これらのサブシステムは、NLUコアサーバからのサービスコールを用いて呼出し可能なプラグ可能ユニットとして実現されてもよい。これは、NLU処理を、様々な順序の処理を可能にすることを含めて、各言語ごとに柔軟かつ拡張可能にする。言語パックは、個々の言語に対して提供されてもよく、言語パックは、NLUコアサーバからサービス提供され得るサブシステムのリストを登録することができる。
【0039】
図1に示されるデジタルアシスタント106等のデジタルアシスタントは、限定ではないが、特定のアプリケーションを介して、ソーシャルメディアプラットフォームを介して、種々のメッセージングサービスおよびアプリケーションを介して、ならびに他のアプリケーションまたはチャネル等の種々の異なるチャネルを介して、そのユーザ108に利用可能またはアクセス可能にすることができる。単一のデジタルアシスタントは、当該デジタルアシスタント用に構成されたいくつかのチャネルを有し得るので、様々なサービス上で同時に実行することができ、様々なサービスによって同時にアクセスすることができる。
【0040】
デジタルアシスタントまたはチャットボットシステムは、一般に、1つ以上のスキルを含むか、または1つ以上のスキルに関連付けられる。特定の実施形態では、これらのスキルは、ユーザと対話し、在庫の追跡、タイムカードの提出、経費報告の作成、食品の注文、銀行口座の確認、予約の作成、ウィジェットの購入などの特定の種類のタスクを果たすように構成された個々のチャットボット(スキルボットと呼ばれる)である。例えば、図1に示す実施形態では、デジタルアシスタントまたはチャットボットシステム106は、スキル116-1、116-2等を含む。本開示の目的のために、「スキル」という語は、「スキルボット」という語と同義的に用いられる。
【0041】
デジタルアシスタントに関連付けられる各スキルは、ユーザとの会話を通じて、デジタルアシスタントのユーザがタスクを完了するのを助け、この場合、会話は、ユーザによって提供されるテキストまたは聴覚的入力と、スキルボットによって提供される応答との組合わせを含み得る。これらの応答は、ユーザへのテキストメッセージもしくは音声メッセージの形態、および/またはユーザが選択を行えるようユーザに提示される単純なユーザインターフェイス要素(例えば、選択リスト)を用いる形態であってもよい。
【0042】
スキルまたはスキルボットをデジタルアシスタントに関連付けるかまたは追加することができる様々な方法がある。場合によっては、スキルボットは企業によって開発され、次いでDABP102を用いてデジタルアシスタントに追加され得る。他の例では、スキルボットは、DABP102を用いて開発および作成され、次いで、DABP102を用いて作成されたデジタルアシスタントに追加され得る。さらに他の例では、DABP102は、広範囲のタスクに向けられた複数のスキルを提供するオンラインデジタルストア(「スキルストア」と呼ばれる)を提供する。スキルストアを通じて提供されるスキルも、様々なクラウドサービスを公開し得る。DABP102を使用して生成されるデジタルアシスタントにスキルを追加するために、DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択されたスキルがDABP102を使用して作成されるデジタルアシスタントに追加されることを示し得る。スキルストアからのスキルは、そのまま、または修正された形態で、デジタルアシスタントに追加することができる(例えば、DABP102のユーザは、スキルストアによって提供される特定のスキルボットを選択してクローニングし、選択されたスキルボットをカスタマイズまたは修正し、次いで、修正されたスキルボットを、DABP102を用いて作成されたデジタルアシスタントに追加してもよい)。
【0043】
デジタルアシスタントまたはチャットボットシステムを実現するために、様々な異なるアーキテクチャが使用されてもよい。例えば、特定の実施形態では、DABP102を用いて作成および展開されるデジタルアシスタントは、マスタボット/子(もしくはサブ)ボットパラダイムまたはアーキテクチャを用いて実現されてもよい。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つ以上の子ボットと対話するマスタボットとして実現される。例えば、図1に示す実施形態では、デジタルアシスタント106は、マスタボット114と、マスタボット114の子ボットであるスキルボット116-1、116-2などとを含む。特定の実施形態では、デジタルアシスタント106自体がマスタボットとして動作すると考えられる。
【0044】
マスタ・子ボットアーキテクチャに従って実現されるデジタルアシスタントは、デジタルアシスタントのユーザが、統合されたユーザインターフェイスを介して、すなわちマスタボットを介して、複数のスキルと対話することを可能にする。ユーザがデジタルアシスタントに関与する場合、ユーザ入力はマスタボットによって受信される。次いで、マスタボットは、ユーザ入力発話の意味を判定するための処理を実行する。次いで、マスタボットは、発話においてユーザが要求したタスクがマスタボット自体によって処理され得るかどうかを判定し、そうでなければ、マスタボットは、ユーザ要求を処理するために適切なスキルボットを選択し、会話を選択されたスキルボットにルーティングする。これにより、ユーザは共通の単一のインターフェイスを介してデジタルアシスタントと会話することができ、特定のタスクを実行するよう構成されたいくつかのスキルボットを使用する能力を依然として備えることができる。例えば、企業用に開発されたデジタルアシスタントの場合、デジタルアシスタントのマスタボットは、顧客関係管理(CRM)に関連する機能を実行するためのCRMボット、企業資源計画(ERP)に関連する機能を実行するためのERPボット、人的資本管理(HCM)に関連する機能を実行するためのHCMボットなどの特定の機能を有するスキルボットとインターフェイスを取り得る。このように、デジタルアシスタントのエンドユーザまたは消費者は、共通のマスタボットインターフェイスを介してデジタルアシスタントにアクセスする方法を知るだけでよく、背後では、複数のスキルボットがユーザ要求を処理するために提供される。
【0045】
特定の実施形態では、マスタボット/子ボットインフラストラクチャにおいて、マスタボットは、スキルボットの利用可能なリストを認識するよう構成される。マスタボットは、様々な利用可能なスキルボットと、各スキルボットごとに、各スキルボットによって実行可能なタスクを含む各スキルボットの能力とを識別するメタデータへのアクセスを有してもよい。ユーザ要求を発話の形態で受信すると、マスタボットは、複数の利用可能なスキルボットから、ユーザ要求に最も良く対応できるかもしくはユーザ要求をもっとも良く処理することができる特定のスキルボットを識別または予測するよう構成される。次いで、マスタボットは、その発話(またはその発話の一部分)を、さらなる処理のために、その特定のスキルボットにルーティングする。従って、制御はマスタボットからスキルボットに流れる。マスタボットは、複数の入力および出力チャネルをサポートすることができる。特定の実施形態では、ルーティングは、1つ以上の利用可能なスキルボットによって実行される処理の助けを借りて実行され得る。例えば、以下に説明するように、スキルボットは、発話のインテントを推測し、推測されたインテントがスキルボットが構成されるインテントに合致するかどうかを判定するようにトレーニングすることができる。したがって、マスタボットによって実行されるルーティングは、スキルホットが発話を処理するのに適したインテントで構成されたかどうかの指示をスキルホットがマスタボットに通信することを伴い得る。
【0046】
図1の実施形態は、マスタボット114ならびにスキルボット116-1、116-2、および116-3を備えるデジタルアシスタント106を示すが、これは限定を意図するものではない。デジタルアシスタントは、デジタルアシスタントの機能を提供する様々な他のコンポーネント(例えば、他のシステムおよびサブシステム)を含み得る。これらのシステムおよびサブシステムは、ソフトウェア(例えば、コンピュータ可読媒体上に格納され、1つ以上のプロセッサによって実行可能なコード、命令)のみで、ハードウェアのみで、またはソフトウェアとハードウェアとの組合わせを用いる実現例において実現されてもよい。
【0047】
DABP102は、DABP102のユーザが、デジタルアシスタントに関連付けられる1つ以上のスキルボットを含むデジタルアシスタントを作成することを可能にする、インフラストラクチャならびに種々のサービスおよび特徴を提供する。場合によっては、スキルボットは、既存のスキルボットをクローニングすることによって、例えば、スキルストアによって提供されるスキルボットをクローニングすることによって、作成することができる。前述のように、DABP102は、様々なタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットをクローニングすることができる。必要に応じて、クローニングされたスキルボットに修正またはカスタマイズを行ってもよい。いくつかの他の事例では、DABP102のユーザは、DABP102によって提供されるツールおよびサービスを使用して、スキルボットをゼロから作成した。前述のように、DABP102によって提供されるスキルストアまたはスキルカタログは、様々なタスクを実行するための複数のスキルボットを提供してもよい。
【0048】
特定の実施形態では、ある高次レベルにおいて、スキルボットを作成またはカスタマイズすることは、以下のステップを含む。
(1)新たなスキルボットに関する設定を構成するステップ
(2)スキルボットに関して1つ以上のインテントを構成するステップ
(3)1つ以上のインテントに関して1つ以上のエンティティを構成するステップ
(4)スキルボットをトレーニングするステップ
(5)スキルボットのためのダイアログフローを作成するステップ
(6)必要に応じてカスタムコンポーネントをスキルボットに追加するステップ
(7)スキルボットをテストおよび展開するステップ
以下、上述の各工程について簡単に説明する。
【0049】
(1)新たなスキルボットに関する設定を構成するステップ。様々な設定がスキルボットのために構成されてもよい。例えば、スキルボット設計者は、作成されているスキルボットの1つ以上の呼出し名を指定することができる。これらの呼出し名は、次いで、スキルボットを明示的に呼出すためにデジタルアシスタントのユーザによって使用され得る。例えば、ユーザは、ユーザの発話に呼出し名を入力して、対応するスキルボットを明示的に呼出すことができる。
【0050】
(2)スキルボットに関して1つ以上のインテントおよび関連する例示的な発話を設定するステップ。スキルボット設計者は、作成されているスキルボットに関して1つ以上のインテント(ボットインテントとも呼ばれる)を指定する。次いで、スキルボットは、これらの指定されたインテントに基づいてトレーニングされる。これらのインテントは、スキルボットが入力発話について推論するようにトレーニングされるカテゴリまたはクラスを表す。発話を受信すると、トレーニングされたスキルボットは、発話についてのインテントを推論し、推論されるインテントは、スキルボットをトレーニングするために使用されたインテントの事前定義されたセットから選択される。次いで、スキルボットは、発話に対して推論されたインテントに基づいて、その発話に応じた適切なアクションを取る。場合によっては、スキルボットに関するインテントは、スキルボットがデジタルアシスタントのユーザに対して実行することができるタスクを表す。各インテントには、インテント識別子またはインテント名が与えられる。例えば、銀行に関してトレーニングされたスキルボットの場合、そのスキルボットに関して指定されたインテントは、「CheckBalance(残高照会)」、「TransferMoney(送金)」、「DepositCheck(小切手の預け入れ)」等を含み得る。
【0051】
スキルボットに関して定義される各インテントについて、スキルボット設計者はまた、そのインテントを代表するとともに例示する1つ以上の例示的な発話も提供し得る。これらの例示的な発話は、ユーザがそのインテントのためにスキルボットに入力し得る発話を表すよう意図されている。例えば、残高照会のインテントの場合、例示的な発話は、「What's my savings account balance?(私の普通預金口座の残高は?)」、「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」、「How much money do I have in my account(私の口座にはいくらのお金がありますか?)」などを含み得る。したがって、典型的なユーザ発話の様々な順列が、インテントに関する発話例として指定されてもよい。
【0052】
インテントおよびそれらの関連する例示的発話は、スキルボットをトレーニングするためのトレーニングデータとして使用される。様々な異なるトレーニング技術が使用されてもよい。このトレーニングの結果として、予測モデルが生成され、当該予測モデルは、発話を入力として取り込み、予測モデルによって発話について推論されたインテントを出力するよう構成される。場合によっては、入力発話は、トレーニングされたモデルを使用して入力発話に対するインテントを予測または推測するよう構成されたインテント分析エンジンに提供される。次いで、スキルボットは、推論されたインテントに基づいて1つ以上のアクションを取ってもよい。
【0053】
(3)スキルボットの1つ以上のインテントに関してエンティティを構成するステップ。場合によっては、スキルボットがユーザ発話に適切に応答することを可能にするために追加のコンテキストが必要とされる可能性がある。例えば、ユーザ入力発話が、スキルボットにおいて同じインテントに変わる状況があり得る。例えば、上記の例では、発話「What's my savings account balance?(私の普通預金口座の残高は?)」および「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」は両方とも、同じ残高照会のインテントになるが、これらの発話は、別々のことを要求する別々の要求である。そのような要求を明確にするために、1つ以上のエンティティがインテントに追加される。銀行業務スキルボットの例を用いると、「checking(当座)」および「saving(普通)」と呼ばれる値を定義するAccountType(口座種類)と呼ばれるエンティティは、スキルボットがユーザ要求を解析し、適切に応答することを可能にし得る。上記の例では、発話は同じインテントになるが、AccountTypeエンティティに関連付けられる値は、2つの発話に関して異なっている。これにより、スキルボットは、2つの発話が同じインテントになるにもかかわらず、2つの発話に対して場合によっては異なるアクションを実行することができる。1つ以上のエンティティは、スキルボットに対して構成された特定のインテントのために指定され得る。したがって、エンティティは、コンテキストをインテント自体に追加するために用いられる。エンティティは、インテントをより充分に記述するのに役立ち、スキルボットがユーザ要求を完了できるようにする。
【0054】
特定の実施形態では、2つのタイプのエンティティ、すなわち、(a)DABP102によって提供される組込みエンティティ、および(2)スキルボット設計者によって指定され得るカスタムエンティティがある。組込みエンティティは、多種多様なボットとともに用いることができる汎用エンティティである。組込みエンティティの例は、限定はしないが、時間、日付、アドレス、番号、電子メールアドレス、持続時間、循環期間、通貨、電話番号、URLなどに関連するエンティティを含む。カスタムエンティティは、よりカスタマイズされた用途に用いられる。例えば、銀行業務スキルの場合、AccountTypeエンティティは、スキルボット設計者によって、当座、普通およびクレジットカードなどのようなキーワードについてユーザ入力をチェックすることによって様々な銀行取引を可能にするよう定義されてもよい。
【0055】
(4)スキルボットをトレーニングするステップ。スキルボットは、ユーザ入力を発話の形態で受信し、受信した入力を解析または処理し、受信したユーザ入力に関連するインテントを識別または選択するように構成される。上述のように、スキルボットは、このためにトレーニングされなければならない。特定の実施形態では、スキルボットは、そのスキルボット用に構成されたインテント、およびそのインテントに関連付けられた例示的な発話(集合的にトレーニングデータ)に基づいてトレーニングされ、それにより、スキルボットは、ユーザ入力発話を、スキルボットの構成されたインテントの1つに変えることができる。特定の実施形態では、スキルボットは、トレーニングデータを用いてトレーニングされてユーザが言っていること(または場合によっては、言おうとしていること)をスキルボットが識別することを可能にする予測モデルを使用する。DABP102は、様々な機械学習ベースのトレーニング技術、ルールベースのトレーニング技術、および/またはそれらの組合わせを含む、スキルボットをトレーニングするためにスキルボット設計者によって使用可能な様々な異なるトレーニング技術を提供する。特定の実施形態では、トレーニングデータの一部分(例えば80%)は、スキルボットモデルをトレーニングするために用いられ、別の部分(例えば残りの20%)は、モデルをテストまたは検証するために用いられる。トレーニングされると、トレーニングされたモデル(トレーニングされたスキルボットと呼ばれることもある)は、次いで、ユーザ発話を処理してそれに応答するために使用することができる。特定の場合には、ユーザの発話は、単一の回答だけを必要とし、さらなる会話を必要としない質問であり得る。このような状況に対処するために、スキルボットに対してQ&A(質疑応答)インテントを定義してもよい。これは、スキルボットがダイアログ定義を更新する必要なしにユーザ要求に対する返答を出力することを可能にする。Q&Aインテントは、通常のインテントと同様に生成される。Q&Aインテントについてのダイアログフローは、通常のインテントについてのダイアログフローとは異なり得る。
【0056】
(5)スキルボットのためにダイアログフローを作成するステップ。スキルボットに関して指定されるダイアログフローは、受信されたユーザ入力に応答してスキルボットについての様々なインテントが解決されるのに応じてスキルボットがどのように反応するかを記述する。ダイアログフローは、例えば、スキルボットがどのようにユーザ発話に応答するか、スキルボットがどのようにユーザに入力を促すか、スキルボットがどのようにデータを返すかといった、スキルボットが取るであろう動作またはアクションを定義する。ダイアログフローは、スキルボットが辿るフローチャートのようなものである。スキルボット設計者は、マークダウン言語などの言語を用いてダイアログフローを指定する。特定の実施形態では、OBotMLと呼ばれるYAMLのバージョンを用いて、スキルボットのためのダイアログフローを指定し得る。スキルボットのためのダイアログフロー定義は、スキルボット設計者に、スキルボットとスキルボットが対応するユーザとの間の対話のコレオグラフィを行わせる、会話自体についてのモデルとして機能する。
【0057】
特定の実施形態では、スキルボットについてのダイアログフロー定義は3つのセクションを含む。
(a)コンテキストセクション
(b)デフォルト遷移セクション
(c)状態セクション。
【0058】
コンテキストセクション。スキルボット設計者は、コンテキストセクションにおいて、会話フローで用いられる変数を定義することができる。コンテキストセクションで指名され得る他の変数は、限定されないが、エラー処理のための変数、組込みエンティティまたはカスタムエンティティのための変数、スキルボットがユーザ選好を認識および持続することを可能にするユーザ変数などを含む。
【0059】
デフォルト遷移セクション。スキルボットのための遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクションにて定義することができる。デフォルト遷移セクションにて定義される遷移は、フォールバックとして作用し、状態内に定義される適用可能な遷移がない場合または状態遷移をトリガするために必要な条件を満すことができない場合にトリガされる。デフォルト遷移セクションは、スキルボットが予想外のユーザアクションをそつなく処理することを可能にするルーティングを定義するために用いることができる。
【0060】
状態セクション。ダイアログフローおよびその関連動作は、ダイアログフロー内の論理を管理する一連の一時的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログのその点において必要とされる機能を提供するコンポーネントを指名する。このようにして、コンポーネントの周囲に状態を構築する。状態は、コンポーネント固有の特性を含み、コンポーネントが実行された後にトリガされる他の状態への遷移を定義する。
【0061】
特別なケースのシナリオは、状態セクションを用いて取り扱うことができる。例えば、ユーザが関与している第1のスキルを一時的に離れて、デジタルアシスタント内で第2のスキルで何かを行うというオプションを、ユーザに与えたい場合があるかもしれない。例えば、ユーザがショッピングスキルとの会話に関与している(例えば、ユーザが購入のために何らかの選択を行った)場合、ユーザは、銀行業務スキルにジャンプし(例えば、ユーザは、その購入に十分な金額を有することを確かめたい場合があるかもしれない)、その後、ユーザの注文を完了するためにショッピングスキルに戻ることを望む場合がある。これに対処するために、第1のスキルにおけるアクションは、同じデジタルアシスタントにおいて第2の異なるスキルとの対話を開始し、次いで元のフローに戻るように構成され得る。
【0062】
(6)カスタムコンポーネントをスキルボットに追加するステップ。上述のように、スキルボットのためにダイアログフローにおいて指定される状態は、その状態に対応する必要な機能を提供するコンポーネントを指名する。コンポーネントは、スキルボットが機能を実行することを可能にする。特定の実施形態では、DABP102は、広範囲の機能を実行するための事前構成されたコンポーネントのセットを提供する。スキルボット設計者は、これらの事前構成されたコンポーネントのうちの1つ以上を選択し、それらをスキルボットのためのダイアログフロー内の状態と関連付けることができる。スキルボット設計者はまた、DABP102によって提供されるツールを用いてカスタムまたは新たなコンポーネントを作成し、カスタムコンポーネントをスキルボットのためのダイアログフロー内の1つ以上の状態と関連付けることができる。
【0063】
(7)スキルボットをテストおよび展開するステップ。DABP102は、スキルボット設計者が開発中のスキルボットをテストすることを可能にするいくつかの特徴を提供する。次いで、スキルボットは、デジタルアシスタントにおいて展開され、それに含めることができる。
【0064】
上記の説明は、スキルボットをどのように作成するかについて説明しているが、同様の技術を用いてデジタルアシスタント(またはマスタボット)を作成してもよい。マスタボットまたはデジタルアシスタントレベルでは、デジタルアシスタントのために組込みシステムインテントが構成され得る。これらの組込みシステムインテントは、デジタルアシスタント自体(すなわち、マスタボット)が、デジタルアシスタントに関連付けられるスキルボットを呼出すことなく取り扱うことができる一般的なタスクを識別するために用いられる。マスタボットに関して定義されるシステムインテントの例は以下を含む。(1)退出:ユーザがデジタルアシスタントにおいて現在の会話またはコンテキストを終了したい旨を知らせる場合に該当。(2)ヘルプ:ユーザがヘルプまたは方向付けを求める場合に該当。(3)未解決のインテント(UnresolvedIntent):退出インテントおよびヘルプインテントと適切に一致しないユーザ入力に該当。デジタルアシスタントはまた、デジタルアシスタントに関連付けられる1つ以上のスキルボットに関する情報を格納する。この情報は、マスタボットが、発話を処理するために特定のスキルボットを選択することを可能にする。
【0065】
マスタボットまたはデジタルアシスタントレベルでは、ユーザがデジタルアシスタントに句または発話を入力すると、デジタルアシスタントは、発話および関連する会話をどのようにルーティングするかを判断する処理を行うように構成される。デジタルアシスタントは、ルールベース、AIベース、またはそれらの組合わせであり得るルーティングモデルを用いて、これを判断する。デジタルアシスタントは、ルーティングモデルを用いて、ユーザ入力発話に対応する会話が、処理のために特定のスキルにルーティングされるべきか、組込みシステムインテントに従ってデジタルアシスタントもしくはマスタボット自体によって処理されるべきか、または現在の会話フローにおいて異なる状態として処理されるべきかを判断する。
【0066】
特定の実施形態では、この処理の一部として、デジタルアシスタントは、ユーザ入力発話が、スキルボットを、その呼出し名を用いて明示的に識別するかどうかを判断する。呼出し名がユーザ入力に存在する場合、それは、呼出し名に対応するスキルボットの明示的な呼出しとして扱われる。そのようなシナリオでは、デジタルアシスタントは、ユーザ入力を、さらなる処理のために、明示的に呼出されたスキルボットにルーティングし得る。特定の呼出しまたは明示的な呼出しがない場合、特定の実施形態では、デジタルアシスタントは、受信したユーザ入力発話を評価し、デジタルアシスタントに関連付けられるシステムインテントおよびスキルボットについて信頼度スコアを計算する。スキルボットまたはシステムインテントについて計算されるスコアは、ユーザ入力が、スキルボットが実行するように構成されるタスクを表すかまたはシステムインテントを表す可能性を表す。関連する計算済みの信頼度スコアが閾値(例えば、Confidence Threshold(信頼度閾値)ルーティングパラメータ)を超えるシステムインテントまたはスキルボットは、さらなる評価の候補として選択される。次いで、デジタルアシスタントは、識別された候補から、ユーザ入力発話のさらなる処理のために、特定のシステムインテントまたはスキルボットを選択する。特定の実施形態では、1つ以上のスキルボットが候補として識別された後、それらの候補スキルに関連付けられるインテントが(各スキルごとのインテントモデルに従って)評価され、信頼度スコアが各インテントごとに判断される。一般に、閾値(例えば70%)を超える信頼度スコアを有するインテントは、候補インテントとして扱われる。特定のスキルボットが選択された場合、ユーザ発話は、さらなる処理のために、そのスキルボットにルーティングされる。システムインテントが選択される場合、選択されたシステムインテントに従って、マスタボット自体によって、1つ以上のアクションが実行される。
【0067】
図2は、特定の実施形態に従った、マスタボット(MB)システム200の簡略化されたブロック図である。MBシステム200は、ソフトウェアのみで、ハードウェアのみで、またはハードウェアとソフトウェアとの組合わせで実現することができる。MBシステム200は、前処理サブシステム210と、複合インテントサブシステム(multiple intent subsystem:MIS)220と、明示的呼出サブシステム(explicit invocation subsystem:EIS)230と、スキルボット呼出部240と、データストア250とを含む。図2に示すMBシステム200は、マスタボットにおけるコンポーネントの構成の単なる例である。当業者は、多くの実現可能な変形例、代替例、および修正例を認識するであろう。例えば、いくつかの実現例では、MBシステム200は、図2に示されるものより多いかもしくは少ないシステムもしくはコンポーネントを有してもよく、2つ以上のサブシステムを組合わせてもよく、または異なる構成もしくは配置のサブシステムを有してもよい。
【0068】
前処理サブシステム210は、ユーザから発話「A」202を受信し、言語検出部212および言語パーサ214を通して発話を処理する。上述したように、発話は、音声またはテキストを含む様々な方法で提供され得る。発話202は、断章、完全な文、複数の文などであり得る。発話202は句読点を含み得る。例えば、発話202が音声として提供される場合、前処理サブシステム210は、結果として生じるテキストに句読点、例えば、カンマ、セミコロン、ピリオド等を挿入する、音声テキスト変換器(図示せず)を使用して、音声をテキストに変換してもよい。
【0069】
言語検出部212は、発話202のテキストに基づいて、発話202の言語を検出する。各言語は独自の文法および意味論を有するので、発話202が処理される態様はその言語に依存する。言語の違いは、発話の構文および構造を解析する際に考慮される。
【0070】
言語パーサ214は、発話202を構文解析して、発話202内の個々の言語単位(例えば、単語)について品詞(part of speech:POS)タグを抽出する。POSタグは、例えば、名詞(noun:NN)、代名詞(pronoun:PN)、動詞(verb:VB)などを含む。言語パーサ214はまた、(例えば、各単語を別々のトークンに変換するために)発話202の言語単位をトークン化し、単語を見出し語化してもよい。見出し語は、辞書で表される単語のセットの主な形態である(例えば、「run」は、run, runs, ran, runningなどについての見出し語である)。言語パーサ214が実行できる他のタイプの前処理は、複合表現のチャンク化、例えば、「credit」および「card」を単一の表現「credit_card」に組合わせることを含む。言語パーサ214はまた、発話202内の単語間の関係を識別し得る。例えば、いくつかの実施形態では、言語パーサ214は、発話のどの部分(例えば、特定の名詞)が直接目的語であるか、発話のどの部分が前置詞であるか等を示す依存関係ツリーを生成する。言語パーサ214によって実行された処理の結果は、抽出情報205を形成し、発話202それ自体とともにMIS220に入力として提供される。
【0071】
上述したように、発話202は、複数の文を含み得る。複数のインテントおよび明示的な呼出しを検出する目的で、発話202は、たとえそれが複数の文を含む場合であっても、単一の単位として扱われ得る。しかしながら、特定の実施形態では、前処理は、例えば、前処理サブシステム210によって、複合インテント分析および明示的呼出し分析のために複数の文中で単一の文を識別するように実行することができる。概して、MIS220およびEIS230によって生成される結果は、発話202が個々の文のレベルで処理されるか、または複数の文を含む単一の単位として処理されるかにかかわらず、実質的に同じである。
【0072】
MIS220は、発話202が複数のインテントを表すかどうかを判断する。MIS220は、発話202において複数のインテントの存在を検出することができるが、MIS220によって実行される処理は、発話202のインテントがボットのために構成された任意のインテントと一致するかどうかを判断することを伴わない。代わりに、発話202のインテントがボットインテントと一致するかどうかを判断するための処理は、(例えば、図3の実施形態に示すように)MBシステム200のインテント分類器242によって、またはスキルボットのインテント分類器によって実行され得る。MIS220によって実行される処理は、発話202を処理することができるボット(例えば、特定のスキルボットまたはマスタボット自体)が存在すると仮定する。したがって、MIS220によって実行される処理は、どのようなボットがチャットボットシステム内にあるかについての知識(例えば、マスタボットに登録されたスキルボットのアイデンティティ)または特定のボットに関してどのようなインテントが構成されているかについての知識を必要としない。
【0073】
発話202が複数のインテントを含むと判断するために、MIS220は、データストア250内のルール252のセットから1つ以上のルールを適用する。発話202に適用されるルールは、発話202の言語に依存し、複数のインテントの存在を示す文パターンを含み得る。例えば、ある文パターンは、文の2つの部分(例えば等位項)を接続する接続詞を含んでもよく、両方の部分は別個のインテントに対応する。発話202が文パターンに一致する場合、発話202は複数のインテントを表わしていると推測することができる。複数のインテントを有する発話は、必ずしも異なるインテント(例えば、異なるボットに向けられるインテント、または同じボット内の異なるインテント)を有するとは限らないことに留意されたい。代わりに、発話は、同じインテントの別々のインスタンス、例えば、「支払い口座Xを使用してピザを注文し、次いで支払い口座Yを使用してピザを注文する」を有し得る。
【0074】
発話202が複数のインテントを表すと判断することの一環として、MIS220は、発話202のどのような部分が各インテントに関連付けられるかも判断する。MIS220は、複数のインテントを含む発話で表現されるインテントごとに、図2に示すように、元の発話の代わりに別の処理のための新たな発話、例えば発話「B」206および発話「C」208を構築する。したがって、元の発話202は、一度に1つずつ取り扱われる2つ以上の別個の発話に分割することができる。MIS220は、抽出された情報205を使用して、および/または発話202自体の分析から、2つ以上の発話のうちのどれが最初に処理されるべきかを判断する。例えば、MIS220は、発話202が、特定のインテントが最初に扱われるべきであることを示すマーカワードを含むと判断してもよい。この特定のインテントに対応する新たに形成された発話(例えば、発話206または発話208のうちの一方)は、EIS230によるさらなる処理のために最初に送信されることになる。第1の発話によってトリガされた会話が終了した(または一時的に中断された)後、次に優先度が高い発話(例えば、発話206または発話208の他方)が、次いで、処理のためにEIS230に送られ得る。
【0075】
EIS230は、それが受信する発話(例えば、発話206または発話208)がスキルボットの呼出し名を含むかどうかを判断する。特定の実施形態では、チャットボットシステム内の各スキルボットには、そのスキルボットをチャットボットシステム内の他のスキルボットから区別する固有の呼出し名が割当てられる。呼出し名のリストは、データストア250内にスキルボット情報254の一部として維持することができる。発話が呼出し名に一致する単語を含むとき、発話は明示的な呼出しであると見なされる。ボットが明示的に呼出されない場合、EIS230が受信した発話は、非明示的に呼出す発話234と見なされ、マスタボットのインテント分類器(例えば、インテント分類器242)に入力されて、発話を処理するためにどのボットを使用するかが判断される。いくつかの例では、インテント分類器242は、マスタボットが非明示的に呼出す発話を処理すべきであると判断するだろう。他の例では、インテント分類器242は、処理のために発話をルーティングするためのスキルボットを決定するだろう。
【0076】
EIS230によって提供される明示的な呼出し機能はいくつかの利点を有する。それは、マスタボットが実行しなければならない処理の量を低減させることができる。例えば、明示的な呼出しがある場合、マスタボットは、(例えば、インテント分類器242を使用して)いかなるインテント分類分析も行わなくてもよく、またはスキルボットを選択するために、低減されたインテント分類分析を行わなければならないかもしれない。したがって、明示的な呼出し分析は、インテント分類分析に頼ることなく、特定のスキルボットの選択を可能にし得る。
【0077】
また、複数のスキルボット間で機能に重複がある状況もあり得る。これは、例えば、2つのスキルボットによって取り扱われるインテントが重なり合うかまたは互いに非常に近い場合に起こり得る。そのような状況では、マスタボットにとっては、インテント分類分析のみに基づいて複数のスキルボットのうちのどれを選択すべきかを識別することは、困難であるかもしれない。このようなシナリオでは、明示的な呼出しは、使用されるべき特定のスキルボットの曖昧さを解消する。
【0078】
発話が明示的な呼出しであると判断することに加えて、EIS230は、発話の任意の部分が明示的に呼出されるスキルボットへの入力として使用されるべきかどうかを判断する役割を果たす。特に、EIS230は、発話の一部が呼出しに関連付けられていないかどうかを判断することができる。EIS230は、発話の分析および/または抽出された情報205の分析を通じて、この判断を行うことができる。EIS230は、EIS230が受信した発話全体を送信する代わりに、呼出しに関連付けられていない発話の部分を呼出されたスキルボットに送ることができる。いくつかの例では、呼出されたスキルボットへの入力は、単に、呼出しに関連付けられる発話の任意の部分を除去することによって形成される。例えば、「Pizza Botを使用してピザを注文したい」は、「ピザを注文したい」に短縮することができ、なぜならば、「Pizza Botを使用して」は、ピザボットの呼出しに関係するが、ピザボットによって実行されるいかなる処理にも関係しないからである。いくつかの例では、EIS230は、例えば完全な文を形成するために、呼出されたボットに送られるべき部分を再フォーマットしてもよい。したがって、EIS230は、明示的な呼出しがあることだけでなく、明示的な呼出しがあるときに何をスキルボットに送るべきかも判断する。いくつかの例においては、呼出されるボットに入力するテキストがない場合がある。例えば、発話が「Pizza Bot」であった場合、EIS230は、ピザボットが呼出されているが、ピザボットによって処理されるテキストはないと判断し得る。そのようなシナリオでは、EIS230は、送信すべきものがないことをスキルボット呼出部240に示してもよい。
【0079】
スキルボット呼出部240は、様々な態様でスキルボットを呼出す。例えば、スキルボット呼出部240は、特定のスキルボットが明示的な呼出しの結果として選択されたという指示235の受信に応答してボットを呼出すことができる。指示235は、明示的に呼出されたスキルボットについての入力とともにEIS230によって送信され得る。このシナリオでは、スキルボット呼出部240は、明示的に呼出されたスキルボットに会話の制御を引き継ぐ。明示的に呼出されたスキルボットは、入力を独立した発話として扱うことによって、EIS230からの入力に対する適切な応答を判断するだろう。例えば、応答は、特定のアクションを実行すること、または特定の状態で新たな会話を開始することであり得、新たな会話の初期状態は、EIS230から送信された入力に依存する。
【0080】
スキルボット呼出部240がスキルボットを呼出すことができる別の態様は、インテント分類器242を用いた暗黙的な呼出しによるものである。インテント分類器242は、機械学習および/またはルールベースのトレーニング技術を使用してトレーニングすることができ、これにより、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断することができる。インテント分類器242は、スキルボットごとに1つのクラスが対応している様々なクラスでトレーニングされる。例えば、新たなスキルボットがマスタボットに登録されるたびに、その新たなスキルボットに関連付けられる例示的な発話のリストを使用してインテント分類器242をトレーニングすることで、ある特定の発話が、その新たなスキルボットが実行できるあるタスクを表す尤度を判断することができる。このトレーニングの結果として生成されるパラメータ(例えば、機械学習モデルのパラメータについての値のセット)は、スキルボット情報254の一部として格納することができる。
【0081】
特定の実施形態では、インテント分類器242は、ここでさらに詳細に説明するように、機械学習モデルを使用して実現される。機械学習モデルのトレーニングは、機械学習モデルの出力として、どのボットが任意の特定のトレーニング発話を処理するための正しいボットであるかについての推論を生成するために、様々なスキルボットに関連付けられる例示的な発話から、少なくとも発話のサブセットを入力することを含んでもよい。各トレーニング発話ごとに、そのトレーニング発話のために使用すべき正しいボットの指示が、グラウンドトゥルース情報として提供され得る。機械学習モデルの挙動は、次いで、生成された推論とグラウンドトルゥース情報との間の差異を最小限にするように(例えば、逆伝搬を通じて)適合させることができる。
【0082】
特定の実施形態では、インテント分類器242は、マスタボットに登録された各スキルボットごとに、そのスキルボットがある発話(例えば、EIS230から受信した非明示的に呼出す発話234)を処理できる尤度を示す信頼度スコアを判定する。インテント分類器242はまた、構成された各システムレベルインテント(例えば、ヘルプ、退出)ごとに信頼度スコアを判定してもよい。ある特定の信頼度スコアが1つ以上の条件を満たす場合、スキルボット呼出部240は、その特定の信頼度スコアに関連付けられるボットを呼出すことになる。例えば、ある閾値信頼度スコア値が満たされる必要があるかもしれない。したがって、インテント分類器242の出力245は、あるシステムインテントの識別またはある特定のスキルボットの識別のいずれかである。いくつかの実施形態では、閾値信頼度スコア値を満たすことに加えて、信頼度スコアは、次に高い信頼度スコアを特定の勝利マージン分だけ上回っていなければならない。そのような条件を課すことは、複数のスキルボットの信頼度スコアの各々が閾値信頼度スコア値を上回っている場合に特定のスキルボットへのルーティングを可能にするだろう。
【0083】
信頼度スコアの評価に基づいてボットを識別した後、スキルボット呼出部240は、識別されたボットに処理を引き渡す。システムインテントの場合、識別されたボットはマスタボットである。そうでない場合、識別されたボットはスキルボットである。さらに、スキルボット呼出部240は、識別されたボットについての入力247として何を提供するかを判断することになる。上述したように、明示的な呼出しの場合、入力247は呼出に関連付けられていない発話の一部に基づき得るか、または入力247は無(例えば、空のストリング)であり得る。暗黙的な呼出の場合、入力247は発話全体であり得る。
【0084】
データストア250は、マスタボットシステム200の種々のサブシステムによって使用されるデータを格納する1つ以上のコンピューティングデバイスを備える。上述したように、データストア250は、ルール252およびスキルボット情報254を含む。ルール252は、例えば、発話がいつ複数のインテントを表すか、および複数のインテントを表す発話をどのように分割するか、をMIS220によって判断するためのルールを含む。ルール252はさらに、スキルボットを明示的に呼出す発話のどの部分をスキルボットに送信すべきかをEIS230によって判断するためのルールを含む。スキルボット情報254は、チャットボットシステム内のスキルボットの呼出し名、例えば、ある特定のマスタボットに登録されたすべてのスキルボットの呼出し名のリストを含む。スキルボット情報254はまた、チャットボットシステム内の各スキルボットごとに信頼度スコアを判定するためにインテント分類器242が使用する情報、例えば、機械学習モデルのパラメータ、を含み得る。
【0085】
図3は、特定の実施形態に従ったスキルボットシステム300の簡略ブロック図である。スキルボットシステム300は、ソフトウェアのみで、ハードウェアのみで、またはハードウェアとソフトウェアとの組合わせで実現され得るコンピューティングシステムである。図1に示される実施形態等の特定の実施形態では、スキルボットシステム300は、デジタルアシスタント内で1つ以上のスキルボットを実現するために使用することができる。
【0086】
スキルボットシステム300は、MIS310と、インテント分類器320と、会話マネージャ330とを含む。MIS310は、図2のMIS220に類似しており、(1)発話が複数のインテントを表すかどうか、およびそうである場合、(2)発話を複数のインテントの各インテントごとにどのように別個の発話に分割するか、をデータストア350内のルール352を使用して判断するよう動作可能であることを含む同様の機能を提供する。特定の実施形態では、複数のインテントを検出し、発話を分割するために、MIS310によって適用されるルールは、MIS220によって適用されるルールと同じである。MIS310は、発話302および抽出された情報304を受信する。抽出された情報304は、図1の抽出された情報205に類似しており、言語パーサ214またはスキルボットシステム300にローカルな言語パーサを使用して生成することができる。
【0087】
インテント分類器320は、図2の実施形態に関連して上述したインテント分類器242と同様の態様で、ここでさらに詳細に説明するようにトレーニングされ得る。例えば、特定の実施形態では、インテント分類器320は、機械学習モデルを使用して実現される。インテント分類器320の機械学習モデルは、トレーニング発話として特定のスキルボットに関連付けられる例示的な発話の少なくともサブセットを使用して、当該特定のスキルボットについてトレーニングされる。各トレーニング発話に関するグラウンドトゥルースは、そのトレーニング発話に関連付けられる特定のボットインテントであろう。
【0088】
発話302は、ユーザから直接受信され得るか、またはマスタボットを介して供給され得る。発話302が、例えば、図2に示される実施形態におけるMIS220およびEIS230を通した処理の結果としてマスタボットを通して供給される場合、MIS310は、MIS220によって既に行われた処理の反復を回避するようにバイパスさせることができる。しかしながら、発話302が、例えば、スキルボットへのルーティング後に行なわれる会話中に、ユーザから直接受信される場合、MIS310は、発話302を処理して、発話302が複数のインテントを表すかどうかを判断することができる。発話302が複数のインテントを表す場合、MIS310は、1つ以上のルールを適用して、発話302を各インテントごとに別個の発話、例えば、発話「D」306および発話「E」308に分割する。発話302が複数のインテントを表さない場合、MIS310は、発話302を、分割することなく、インテント分類のためにインテント分類器320に転送する。
【0089】
インテント分類器320は、受信した発話(例えば、発話306または308)をスキルボットシステム300に関連付けられるインテントと照合するよう構成される。上述したように、スキルボットは、1つ以上のインテントとともに構成することができ、各インテントは、そのインテントに関連付けられるとともに分類器をトレーニングするために使用される、少なくとも1つの例示的な発話を含む。図2の実施形態では、マスタボットシステム200のインテント分類器242は、個々のスキルボットについての信頼度スコアおよびシステムインテントについての信頼度スコアを判定するようにトレーニングされる。同様に、インテント分類器320は、スキルボットシステム300に関連付けられる各インテントについての信頼度スコアを判定するようにトレーニングされ得る。インテント分類器242によって実行される分類はボットレベルであるが、インテント分類器320によって実行される分類はインテントレベルであり、したがってより細かい粒度である。インテント分類器320は、インテント情報354にアクセスできる。インテント情報354は、スキルボットシステム300に関連付けられる各インテントごとに、そのインテントの意味を表わすとともに例示し典型的にはそのインテントによって実行可能なタスクに関連付けられる発話のリストを含む。インテント情報354は、さらに、この発話のリストでのトレーニングの結果として生成されるパラメータを含み得る。
【0090】
会話マネージャ330は、インテント分類器320の出力として、インテント分類器320に入力された発話に最もよく一致するものとして、インテント分類器320によって識別された特定のインテントの指示322を受信する。場合によっては、インテント分類器320は、何らかの一致を判断することができない。例えば、インテント分類器320によって計算される信頼度スコアは、発話がシステムインテントまたは異なるスキルボットのインテントに向けられる場合、閾値信頼度スコア値を下回るかもしれない。これが発生すると、スキルボットシステム300は、発話を、処理のため、例えば、異なるスキルボットにルーティングするために、マスタボットに委ねてもよい。しかしながら、インテント分類器320がスキルボット内においてインテントの識別に成功した場合、会話マネージャ330はユーザとの会話を開始するだろう。
【0091】
会話マネージャ330によって開始される会話は、インテント分類器320によって識別されるインテントに固有の会話である。例えば、会話マネージャ330は、識別されたインテントのために、あるダイアログフローを実行するよう構成される状態機械を使用して実現されてもよい。状態機械は、(例えば、インテントがいかなる追加の入力もなしに呼出される場合についての)デフォルト開始状態、および1つ以上の追加の状態を含み得るが、この場合、各状態には、スキルボットによって実行されるべきアクション(例えば、購入取引を実行する)および/またはユーザに提示されるべきダイアログ(例えば、質問、応答)が関連付けられている。したがって、会話マネージャ330は、インテントを識別する指示322を受信すると、アクション/ダイアログ335を決定することができ、会話中に受信した後続の発話に応答して追加のアクションまたはダイアログを決定することができる。
【0092】
データストア350は、スキルボットシステム300の様々なサブシステムによって使用されるデータを格納する1つ以上のコンピューティングデバイスを備える。図3に示すように、データストア350は、ルール352およびインテント情報354を含む。特定の実施形態では、データストア350は、マスタボットまたはデジタルアシスタントのデータストア、例えば、図2のデータストア250に統合され得る。
【0093】
OODデータ拡張
発話をインテントとして分類するために使用されるモデルは、信頼度を上回る可能性があり、OODであるテキストに関して不良な結果をもたらす可能性があることが発見されている。この問題を克服するために、様々な実施形態は、モデルを一般化させて、OOD発話が正確なインテントまたは未解決のインテント等のグランドトゥルースとして分類されるべきであることを学習させるために、OOD例を有する発話(負の学習発話)でトレーニングデータを拡張するための技術に向けられている。OOD例でトレーニングデータを拡張することによって、当該モデルは、それらをOODクラスを含むそれぞれのクラスに結び付ける正しいコンテキストにおける例の最も重要な部分に焦点を合わせるのにより優れている。拡張されたテキストデータに対してトレーニングされた当該モデルは、図1図2および図3に関して説明したように、チャットボットシステムにおいて実現され得る。有利には、これらのモデルおよびチャットボットは、モデルが正しいコンテキスト内の発話の重要な部分により良く焦点を合わせることができるので、OOD発話に対してより良好に機能する。さらに、拡張は、合成に依存しない方式で自動的に適用されるので、顧客またはクライアントは、様々なコンテキスト内のOOD発話をトレーニングデータに追加することについて懸念する必要がない。
【0094】
図4は、テキストデータ405に基づいて分類器(例えば、図2および図3に関して説明したインテント分類器242または320)をトレーニングして利用するよう構成されたャットボットシステム400の局面を示すブロック図である。図4に示すように、この例におけるチャットボットシステム400によって実行されるテキスト分類は、様々な段階、即ち、予測モデルトレーニング段階410と、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断するためのスキルボット呼出段階415と、発話を1つ以上のインテントとして分類するためのインテント予測段階420とを含む。予測モデルトレーニング段階410は、他の段階によって使用される1つ以上の予測モデル425a~425n(「n」は任意の自然数を表す)(ここでは個々に予測モデル425と称され得るとともに、集合的に予測モデル425とも称され得る)を構築し、トレーニングする。例えば、予測モデル425は、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断するためのモデルと、第1のタイプのスキルボットについて発話からインテントを予測するための別のモデルと、第2のタイプのスキルボットについて発話からインテントを予測するための別のモデルとを含み得る。さらに他のタイプの予測モデルが、本開示に従った他の例で実現されてもよい。
【0095】
予測モデル425は、畳み込みニューラルネットワーク(convolutional neural network:「CNN」)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(residual neural network:「Resnet」)、または回帰型ニューラルネットワーク、例えば長短期記憶(long short-term memory:「LSTM」)モデルもしくはゲート付き回帰型ユニット(gated recurrent unit:「GRU」)モデル、ディープニューラルネットワーク(Deep Neural Network:「DNN」)の他の変形物(例えば、単一インテント分類のためのマルチレベルnバイナリDNN分類器もしくはマルチクラスDNN分類器)などの機械学習(machine-learning:「ML」)モデルであり得る。予測モデル425はまた、ナイーブベイズ分類器、線形分類器、サポートベクトルマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組合せ、例えば、CNN-HMMまたはMCNN(マルチスケール畳み込みニューラルネットワーク)など、自然言語処理のためにトレーニングされた任意の他の適切なMLモデルであり得る。チャットボットシステム400は、特定のスキルボットが実行するよう構成されるタスクの尤度を判断し、第1のタイプのスキルボットについて発話からインテントを予測し、第2のタイプのスキルボットについて発話からインテントを予測するために、同じタイプの予測モデルまたは異なるタイプの予測モデルを採用してもよい。さらに他のタイプの予測モデルが、本開示に従った他の例で実現されてもよい。
【0096】
様々な予測モデル425をトレーニングするために、トレーニング段階410は、3つの主要なコンポーネント、即ち、データセット準備430、特徴エンジニアリング435、およびモデルトレーニング440から構成される。データセット準備430は、データアセット445をロードし、システムが予測モデル425をトレーニングおよびテストすることができるように、データアセット445をトレーニングおよび検証セット445a~445nに分割し、基本的な前処理を実行するプロセスを含む。データアセット445は、様々なスキルボットに関連付けられる例示的な発話からの発話の少なくともサブセットを含んでもよい。上述したように、発話は、音声またはテキストを含む様々な方法で提供され得る。発話は、断章、完全な文、複数の文などであり得る。例えば、発話が音声として提供される場合、データ準備430は、結果として生じるテキストに句読点、例えば、カンマ、セミコロン、ピリオド等を挿入する、音声テキスト変換器(図示せず)を使用して、音声をテキストに変換してもよい。場合によっては、例示的な発話は、クライアントまたは顧客によって提供される。他の例では、例示的な発話は、(例えば、チャットボットが学習するスキルに特有のライブラリからの発話を識別する)以前の発話のライブラリから自動的に生成される。予測モデル425のためのデータアセット445は、入力テキストもしくは音声(またはテキストもしくは音声フレームの入力特徴)と、値の行列またはテーブルとして入力テキストもしくは音声(または入力特徴)に対応するラベル450とを含み得る。例えば、トレーニング発話ごとに、そのトレーニング発話に使用すべき正確なボットの指示が、ラベル450についてのグラウンドトゥルース情報として提供されてもよい。予測モデル425の挙動は、次いで、生成された推論とグラウンドトゥルース情報との間の差を最小にするように(例えば、逆伝搬により)適合させることができる。代替的には、予測モデル425は、トレーニング発話として特定のスキルボットに関連付けられる例示的な発話の少なくともサブセットを使用して、当該特定のスキルボットについてトレーニングされてもよい。各トレーニング発話ごとのラベル450についてのグラウンドトゥルース情報は、そのトレーニング発話に関連付けられる特定のボットインテントであろう。
【0097】
様々な実施形態では、データ準備430は、予測モデル425をOOD発話に対してより強靱なものにするために、様々なコンテキスト内に発話のOOD例を含めるように、データアセット445をOODデータ拡張する(455)ことを含む。様々なコンテキストにおいてOOD例でデータアセット445を拡張することにより、予測モデル425は、例と、これらの例をOODクラスを含むそれぞれのクラスに結び付けるコンテキストとについての最も重要な部分に対してより適切に焦点を合わせる。拡張455は、データアセット445の元の発話とともに様々なコンテキスト内のOOD発話を組込むためのOOD拡張技術を用いて実現される。OOD拡張技術は、以下の4つの動作を含む。4つの動作は、概して、(i)複数のOOD例を含むデータセットを生成する動作と、(ii)元の発話のコンテキストに類似し過ぎているコンテキストを伴うOOD例をフィルタリングして除去する動作と、(iii)OOD例の数がドメイン内発話と比較してはるかに大きくなり得るので、OOD例とドメイン内例との間のバランスを取るためにバッチプロセスにおけるトレーニング中にOOD例をモデルに供給する動作と、を含む。バッチの供給は、より容易なOOD例を含むバッチから開始し、より困難なOOD例を含むバッチにかけて継続される。
【0098】
生成するステップは以下のステップを含み得る。すなわち、(i)コーパス内のクラスタ(例えば、内部企業指向単言語データセット)を識別するステップ、(ii)WordNet等の語彙データベース内のクラスタを識別するステップ、(iii)テキスト生成モデルを用いて複数のドメイン(すなわち、データのクラスタ)にわたるOOD例を生成するステップ、(iv)敵対的攻撃モデルを用いて複数のドメイン(すなわち、データのクラスタ)にわたるOOD例を生成するステップ、または、それらの任意の組合せ、ならびに、(iv)OOD例のデータセット内に含まれるべき識別されたクラスタもしくはドメインの各々からOOD例を選択するステップ、を含み得る。クラスタまたはドメインは、他のグループ内のクラスタまたはドメイン、例えば、気象関連OOD例のクラスタ、スポーツ関連OOD例のクラスタ、政治関連OOD例のクラスタ等よりも、(何らかの意味で)互いにより類似しているデータのセットであってもよい。クラスタまたはドメインの識別は、上記例の任意の既知のクラスタリング分析技術(例えば、k平均クラスタリング)を用いて実行されてもよい。
【0099】
1.コーパスからOOD例を見出す
OOD例は、コーパス(例えば、NLTK's BrownコーパスおよびReutersコーパス)内の文を探すことによって候補として識別され得る。短すぎる(5単語未満)例は、多くのコンテンツを含まない例を追加することが有益でない場合があるので、フィルタリングして除去されてもよい。さらに、容易過ぎる例(容易さ等の難易度の測定についてはここで詳しく説明する)は、容易過ぎる例を追加することが有益でない場合があるので、除外されてもよい(モデルは、容易過ぎる例からは何も学習し得ない)。
【0100】
2.語彙データベースからOOD例を見出す
データについての起こり得るすべてのクラスタまたはドメインをカバーするOOD例を見出すために、WordNet等の語彙データベースが用いられ得る。
【0101】
3.モデル、例えばGPT-2を用いてOOD例を生成
OOD例は、Generative Pre-trained Transformer 2(GPT-2)等のテキスト生成モデルを用いて生成することができる。これは、データの特定のクラスタまたはドメインに関して生成されるタイプの例に対してより多くの制御を提供し得る。
【0102】
4.敵対的攻撃モデルを用いてOOD例を生成
敵対的攻撃モデルの変形例は、予測モデルによってドメイン内にあるものとして分類されることが分かっているOOD文を生成するために使用され得る。これは、クラスタまたはドメイン識別ステップを必要としないので1回限りの方法である。
【0103】
フィルタリングするステップは、クラス間の不一致を回避するために距離尺度(例えば、Minkowski、Manhattan、Euclidean、hamming、cosine等)を用いてトレーニングデータ内の例に類似しすぎている(実質的に類似する)OOD例をフィルタリングして除去するステップを含み得る。いくつかの例では、距離フィルタリングは、OOD例候補のベクトルとトレーニングデータの例との間のユークリッド距離に基づく。フィルタリングの例は、(i)全てのドメインについての全体的固定距離閾値を使用する(例えば、デフォルト距離=1.3を使用する)こと、(ii)トレーニング例とそれらの最も近い近傍との間の距離のパーセンタイルを使用すること、(iii)[-0.1,0.2]において+の固定マージンを空けてトレーニング例から最も近い近傍までの最大距離を使用すること、(iv)トレーニング例から最も近い近傍までの最大距離に何らかの係数[0.9~1.2]を乗じたものを使用すること、または、(v)それらの任意の組合せ、を含み得る。
【0104】
いくつかの実施形態では、OOD例をフィルタリングするために、すべてのクラスタまたはドメインに対して全体的な固定距離閾値が使用される。全体的な固定距離閾値は、多言語ユニバーサル・センテンス・エンコーダ(MUSE)シングル埋込み等の多言語単語埋込みのためのモデルを用いて決定され得る。MUSEは、トレーニングされた複数の言語すべてに共通の単一の埋込み空間を作成することができる、複数のタスクおよび複数の言語で同時にトレーニングされた文符号化モデルである。MUSEフィルタリングプロセスは以下を含む。(i)トレーニングデータにおける発話x_i(i=1→n)の表現としてv_i=muse(x_i)を使用すること、(ii)「コカコーラ(登録商標)を注文したい」等のood発話の表現としてu=muse(ood発話)を使用すること、(iii)d_i=ユークリッド距離(v_i,u)を使用すること、を含み、さらに、(iv)min(d_i)<予め定められた閾値(例えば1.3)であれば、=>>、例えば「コカコーラ(登録商標)を注文したい」という発話はドメイン内インテント(例えば、order_pizzaインテント)に近くなり過ぎる。したがって、この発話「コカコーラ(登録商標)を注文したい」は、OOD例のデータセットからフィルタリングして除去されるであろう。
【0105】
供給するステップは、バッチバランシング方式を用いて正確な量のOOD例が各トレーニングバッチに存在することを確実にするステップを含み得る(例が少な過ぎる場合、それは、OOD例が影響を及ぼさないことを意味し、OOD例が多過ぎる場合、ドメイン内の例において元の例を消し去ってしまう可能性がある)。例えば、30%までの正の例(元のドメイン内の例)および70%までの負の例(OOD例)を含む分類のための不均衡なマルチクラスデータセットの場合、例えば、正トレーニングデータから10個までのデータ点がサンプリングされるとともに負トレーニングデータから10個までのデータ点がサンプリングされるように、逆伝搬のために使用される各バッチのバランスを取ることを確実にするようにトレーニングする際に、予め定められた数のバッチサイズが選択され得る。これにより、モデルがOOD例等の負データに偏ることが回避される。
【0106】
さらに、OOD例データセット内のOOD例は、最も容易なものから最も困難なものでソートされて、ソートに基づいて各トレーニングバッチに組込まれてもよい。OOD例の難易度(困難さまたは容易さ)は、例えば、フィルタリングするステップからd_i値をソートすることによって、MUSE表現を用いて決定することができる。容易なOOD例は高いd_i値を有する一方、困難なOOD例はより低いd_i値を有し、予め定められた閾値、例えば1.3により近くなるだろう。OOD例は、難易度決定/ソートに基づいてソートされ得るとともに、トレーニングデータのバッチに導入され得る(例えば、容易なOOD例を最初の5個のバッチに導入し、中間のOOD例を次の5個のバッチに導入し、困難なOOD例を次の5個のバッチに導入してもよい)。これらのバッチは、カリキュラムトレーニング技術等の最も容易なプロトコルから最も困難なプロトコルまでを用いて予測モデル425に供給され得る。多くのOOD例の可能性があるので、カリキュラムトレーニング技術は、予測モデル425が各OOD例に一度だけ公開されるように確立され得る。言い換えれば、これらのバッチは、作成されると、(困難さにかかわらず)各OOD例がトレーニングデータのバッチに一度だけ組込まれるという制約付きで予測モデル425に供給される。OOD拡張のための上述のプロセスの特徴は、予測モデル425のハイパーパラメータ(例えば、エポック=28、固定ロジット=FALSE、1つのインテント当たりのOOD発話=14、1つのバッチ当たりのOOD発話=5)として扱われ得る。
【0107】
OOD拡張技術の導入により、予測モデル425は、OOD発話および通常のドメイン内発話に対してより良好に機能することとなるが、これは、予測モデル425が発話の重要な部分に対してより良く焦点を合わせることができるからである。さらに、OOD拡張が合成非依存方式で自動的に適用されるので、顧客またはクライアントは、OOD発話をトレーニングデータに手動で追加することについて懸念する必要がない。
【0108】
場合によっては、追加の拡張が、(OOD拡張とともに)データアセット445に適用されてもよい。例えば、Easy Data Augmentation(容易なデータ拡張)(EDA)技術が、テキスト分類タスクの性能を高めるために使用されてもよい。EDAは4つの操作、即ち、同義語置換、ランダム挿入、ランダム交換、およびランダム削除を含んでおり、これらは過剰適合を防止し、よりロバストなモデルのトレーニングを助ける。OOD拡張とは対照的に、EDA操作は、概して、(i)元のテキストから単語を取得し、(ii)それらの単語を、元のテキストを基準にして各データアセット445内に組込む。例えば、同義語置換操作は、元の文(例えば発話)からストップワードではないn個の単語をランダムに選択すること、および、これらの単語の各々を、ランダムに選択されたその同義語の1つと置換することを含む。ランダム挿入操作は、元の文においてストップワードではないランダムな単語のランダムな同義語をn回、見つけることと、その同義語をその文中のランダムな位置に挿入することとを含む。ランダム交換操作は、文中において2つの単語をn回、ランダムに選択すること、およびそれらの位置を交換することを含む。ランダム削除操作は、文中において各単語を確率pでランダムに削除することを含む。
【0109】
様々な実施形態では、特徴エンジニアリング435は、データアセット445を(OOD拡張とともに)特徴ベクトルに変換することを含み、および/または新たな特徴を作成することは、(OOD拡張とともに)データアセット445を用いて作成されることになる。特徴ベクトルは、特徴としてのカウントベクトル、単語レベル、nグラムレベルもしくは文字レベルなどの特徴としてのTF-IDFベクトル、特徴としての単語埋め込み、特徴としてのテキスト/NLP、特徴としてのトピックモデル、またはそれらの組合せを含んでもよい。カウントベクトルは、各行が発話を表し、各列が発話からの単語を表し、各セルが発話内の特定の単語の頻度カウントを表している、データアセット445の行列表記である。TF-IDFスコアは、発話における単語の相対的重要度を表す。単語埋め込みは、密なベクトル表現を用いて単語および発話を表す形式である。ベクトル空間内の単語の位置は、テキストから学習され、その単語が使用されるときにその単語を取り囲む単語に基づく。テキスト/NLPベースの特徴は、発話内の単語数、発話内の文字数、平均単語密度、句読点数、大文字数、見出し語数、品詞タグ(例えば、名詞および動詞)の頻度分布、またはそれらの任意の組合せを含んでもよい。トピックモデリングは、発話の集まりから、当該集まりにおいて最良の情報を含む単語のグループ(トピックと呼ばれる)を識別する技術である。
【0110】
様々な実施形態では、モデルトレーニング440は、特徴エンジニアリング435において作成された特徴ベクトルおよび/または新たな特徴を使用して分類器をトレーニングすることを含む。場合によっては、トレーニングプロセスは、予測モデル425について損失関数または誤差関数を最小化する、予測モデル425についてのパラメータのセットを見つけるための反復動作を含む。各反復は、予測モデル425についてのパラメータのセットを使用する損失関数または誤差関数の値が、前の反復において別のパラメータのセットを使用する損失関数または誤差関数の値よりも小さくなるように、予測モデル425についてのパラメータのセットを見つけることを伴い得る。損失関数または誤差関数は、予測モデル425を使用して予測される出力とデータアセット445に含まれるラベル450との間の差を測定するように構築することができる。パラメータのセットが識別されると、予測モデル425はトレーニングされ、設計通りに予測に利用することができる。
【0111】
データアセット445、ラベル450、特徴ベクトルおよび/または新たな特徴に加えて、他の技術および情報も、予測モデル425のトレーニングプロセスを改良するために採用することができる。例えば、特徴ベクトルおよび/または新たな特徴は、分類器またはモデルの精度を改善するのに役立つよう、互いに組合わされてもよい。付加的または代替的には、ハイパーパラメータが、調整または最適化されてもよく、例えば、ツリー長、リーフ、ネットワークパラメータ等のいくつかのパラメータが、最良適合モデルを得るように微調整することができる。しかしながら、ここに記載のトレーニング機構は、主に予測モデル425のトレーニングに焦点を合わせている。これらのトレーニング機構はまた、他のデータアセットからトレーニングされた既存の予測モデル425を微調整するために利用され得る。例えば、場合によっては、予測モデル425は、別のスキルボットに特有の発話を使用して事前にトレーニングされているかもしれない。そのような場合、予測モデル425は、ここで説明するように(OOD拡張とともに)データアセット445を使用して再トレーニングすることができる。
【0112】
予測モデルトレーニング段階410は、タスク予測モデル460およびインテント予測モデル465を含むトレーニングされた予測モデル425を出力する。タスク予測モデル460は、スキルボット呼出段階415において、ある発話が、特定のスキルボットが実行するよう構成されているタスクを表す尤度を判断するために使用されてもよく(470)、インテント予測モデル465は、インテント予測段階420において、発話を1つ以上のインテントとして分類するために使用されてもよい(475)。いくつかの例では、スキルボット呼出段階415およびインテント予測段階420は、いくつかの例では、別個のモデルを用いて、独立して進められてもよい。例えば、トレーニングされたインテント予測モデル465は、最初にスキルボット呼出段階415においてスキルボットを識別することなく、スキルボットについてインテントを予測するためにインテント予測段階420において使用されてもよい。同様に、タスク予測モデル460は、インテント予測段階420において発話のインテントを識別することなく、スキルボット呼出段階415において、発話に対して使用されるべきタスクまたはスキルボットを予測するために、使用されてもよい。
【0113】
代替的には、スキルボット呼出段階415およびインテント予測段階420は、一方の段階が他方の段階の出力を入力として用いるか、または一方の段階が他方の段階の出力に基づいて特定のスキルボットについて特定の態様で呼出される状態で、連続的に行われてもよい。例えば、所与のテキストデータ405に関して、スキルボット呼出部は、スキルボット呼出段階415およびタスク予測モデル460を使用して暗黙の呼出しを通じてスキルボットを呼出すことができる。タスク予測モデル460は、機械学習および/またはルールベースのトレーニング技術を使用してトレーニングされることで、ある発話が、ある特定のスキルボット470が実行するよう構成されるあるタスクを表す尤度を判断することができる。次いで、識別または呼出されたスキルボットおよび所与のテキストデータ405に関して、インテント予測段階420およびインテント予測モデル465を使用して、受信された発話(例えば、所与のデータアセット445内の発話)を、スキルボットに関連付けられたインテント475に一致させることができる。ここで説明するように、スキルボットは、1つ以上のインテントで構成することができ、各インテントは、そのインテントに関連付けられるとともに分類器をトレーニングするために使用される、少なくとも1つの例示的な発話を含む。いくつかの実施形態では、マスタボットシステムで使用されるスキルボット呼出段階415およびタスク予測モデル460は、個々のスキルボットについての信頼度スコアおよびシステムインテントについての信頼度スコアを判定するようトレーニングされる。同様に、インテント予測段階420およびインテント予測モデル465は、スキルボットシステムに関連付けられたインテントごとに信頼度スコアを判定するようトレーニングされ得る。スキルボット呼出段階415およびタスク予測モデル460によって実行される分類はボットレベルであるが、インテント予測段階420およびインテント予測モデル465によって実行される分類はインテントレベルであり、したがって、粒度はより細かい。
【0114】
OODデータ拡張および発話分類のための技術
図5は、いくつかの実施形態による、OOD例でトレーニングデータセットを拡張するためのプロセス500を示すフローチャートである。図5に示される処理は、それぞれのシステムの1つ以上の処理ユニット(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)、ハードウェア、またはそれらの組合わせで実現されてもよい。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)格納されてもよい。図5に提示され、以下に説明される方法は、例示的かつ非限定的であることが意図されている。図5は、特定のシーケンスまたは順序で行なわれる様々な処理ステップを示すが、これは限定することを意図するものではない。特定の代替実施形態では、それらのステップはなんらかの異なる順序で実行されてもよく、またはいくつかのステップが並行して実行されてもよい。図1図4に示される実施形態等の特定の実施形態では、図5に示される処理は、前処理サブシステム(例えば、前処理サブシステム210または予測モデルトレーニング段階410)によって実行されて、1つ以上の予測モデル(例えば、インテント分類器242もしくは320または予測モデル425)によるトレーニングのためのOOD拡張されたデータセットを生成してもよい。
【0115】
505において、発話のトレーニングセットがデータ処理システム(例えば、図4に関して説明したチャットボットシステム400)によって受信される。いくつかの例では、発話のトレーニングセットは、1つ以上の発話について1つ以上のインテントを識別するよう機械学習モデルをトレーニングするために使用される。
【0116】
510において、データ処理システムによって、OOD例で発話のトレーニングセットが拡張されて、拡張された発話のトレーニングセットが得られる。様々な実施形態において、拡張するステップは(i)OOD例のデータセットを生成するステップと、(ii)発話のトレーニングセットのうちの発話のコンテキストに実質的に類似するコンテキストを有するOOD例をOOD例のデータセットからフィルタリングして除去するステップと、(iii)フィルタリングされたOOD例のデータセット内に残っている各OOD例についての難易度値を決定するステップと、(iv)各OODについての難易度値に基づいて、発話のトレーニングセットからの発話と、フィルタリングされたOODのデータセットからの発話とを含む拡張された発話のバッチを生成するステップとを含む。本明細書で使用する時、アクションが何かに「基づいて」いる場合、これは、アクションが何かの少なくとも一部に少なくとも部分的に基づいていることを意味する。本明細書で使用する時、「実質的に」、「ほぼ」、および「約」という語は、当業者によって理解されるように、必ずしも完全にではないが大部分が特定されるものである(および完全に特定されるものを含む)と定義される。開示されるいずれの実施形態においても、「実質的に」、「ほぼ」、または「約」という語は、特定されるものの「[パーセンテージ]内」と置換えられてもよく、ここでは、パーセンテージは、0.1パーセント、1パーセント、5パーセント、および10パーセントを含む。OOD例のコンテキストと発話のトレーニングセットのうちの発話のコンテキストとの間の実質的な類似性は、クラス間の不一致を回避するために距離尺度に基づいて決定される。
【0117】
任意には、OOD例のコンテキストと発話のトレーニングセットのうちの発話のコンテキストとの間の実質的な類似性は、多言語ユニバーサル・センテンス・エンコーダ(MUSE)シングル埋込みを用いて決定され、min(d_i)<予め定められた閾値(d_i=ユークリッド距離(v_i,u))である場合、OOD例のコンテキストおよび発話のトレーニングセットのうちの発話のコンテキストは実質的に類似していると判定される。
【0118】
場合によっては、難易度値は、容易なOOD例が高いd_i値を有する一方で、困難なOOD例が予め定められた閾値により近いより低いd_i値を有するように、d_i値から導き出される。拡張された発話のバッチは、以下の制約に基づいて生成され得る。すなわち、(i)予め定められたバッチサイズ、(ii)各バッチ内の発話のトレーニングセットからの発話の予め定められた数のドメイン内例の組込み、(iii)各バッチ内のフィルタリングされたOODのデータセットからの発話の予め定められた数のOOD例の組込み、(iv)予め定められた数のドメイン内例および予め定められた数の発話のOOD例が予め定められたバッチサイズを維持するように選択されること、(v)各バッチに組込まれた発話のOOD例が実質的に類似する難易度値を有すること、ならびに、任意には、(vi)フィルタリングされたOODのデータセットからの各ODD例が拡張された発話のバッチの単一のバッチのみに組込まれること、を含む。
【0119】
515において、ある発話もしくはメッセージが、あるスキルボットが実行するよう構成されるあるタスクを表す尤度を判断するよう、またはある発話もしくはメッセージをあるスキルボットに関連付けられるあるインテントに一致させるよう、当該拡張された発話のバッチを用いて機械学習モデルをトレーニングする。トレーニングは、拡張された発話のバッチの各バッチ内のOOD例の難易度値に基づいて、拡張された発話のバッチを機械学習モデルに供給することを含むカリキュラムトレーニングプロトコルに従って実行され得る。その後、520において、トレーニングされた機械学習モデルをチャットボットシステム内に(例えば、スキルボットの一部として)展開することで、ある発話もしくはメッセージが、あるスキルボットが実行するよう構成されるあるタスクを表す尤度を判断してもよく、または、ある発話もしくはメッセージをあるスキルボットに関連付けられるあるインテントに一致させるようにしてもよい。例えば、発話を受信し、分析して、発話がスキルボットの呼出し名を含むかどうかを判断してもよい。呼出し名が見つからない場合、発話は非明示的に呼出しているとみなされ、プロセスはトレーニングされた機械学習モデルなどのインテント分類器に進む。呼出し名があると判断された場合、発話は明示的な呼出しであるとみなされ、プロセスは、発話のどの部分が呼出し名に関連付けられているかの判断へと進む。
【0120】
トレーニングされたモデルが呼出される場合、受信された発話全体が、インテント分類器への入力として提供される。発話を受信するインテント分類器は、マスタボットのインテント分類器(例えば、図2のインテント分類器242)であり得る。インテント分類器は、発話のインテントがシステムインテント(例えば、退出、ヘルプ)または特定のスキルボットに一致するかどうかを判断するために、OOD拡張されたデータを用いてトレーニングされた、機械学習ベースまたはルールベースの分類器であり得る。ここで説明するように、マスタボットによって実行されるインテント分析は、特定のスキルボット内のどのインテントが発話にとって最良の一致であるかを判断することなく当該特定のスキルボットに対して一致することに限定されてもよい。したがって、発話を受信するインテント分類器は、呼出されるべき特定のスキルボットを識別してもよい。代替として、発話が特定のシステムインテントを表す(例えば、発話が単語「退出」または「ヘルプ」を含む)場合、その発話を受信するインテント分類器は、この特定のシステムインテントのために構成されるダイアログフローに基づいて、マスタボットとユーザとの間の会話をトリガするよう、その特定のシステムインテントを識別してもよい。
【0121】
呼出し名がある場合、1つ以上の明示的な呼出しルールを適用して、発話のどの部分が呼出し名に関連付けられているかを判断する。この判断は、POSタグ、依存関係情報、および/または発話とともに受信される他の抽出された情報を使用する、発話の文構造の分析に基づき得る。例えば、呼出し名に関連付けられるある部分は、呼出し名を含む名詞句、または呼出し名に対応する前置詞付きの目的語であり得る。処理に基づいて判断される、呼出し名に関連付けられる任意の部分は、除去される。発話の意味を伝えるために必要とされない発話の他の部分(例えば、前置詞単語)も除去することができる。発話の特定の部分の除去は、呼出し名に関連付けられるスキルボットについての入力を生成する。受信した発話のうち除去後に残る部分がある場合、その残りの部分は、例えば、テキストストリングとして、スキルボットへの入力のための新たな発話を形成する。そうではなく、受信された発話が完全に除去された場合、入力は空のストリングであってもよい。
【0122】
その後、呼出し名に関連付けられるスキルボットが呼出され、そのスキルボットには生成された入力が提供される。生成された入力を受信すると、呼出されたスキルボットは、例えば、OOD拡張されたデータでトレーニングされたスキルボットのインテント分類器を使用してインテント分析を実行して、入力に表されたユーザインテントに一致するボットインテントを識別することによって、その入力を処理するだろう。一致するボットインテントの識別の結果、スキルボットは、一致するボットインテントに関連付けられるダイアログフローに従って、特定のアクションを実行するかまたはユーザとの会話を開始してもよい。例えば、入力が空のストリングである場合、会話は、ダイアログフローに関して定義されるデフォルト状態で開始され得、例えば、歓迎メッセージであり得る。代替的に、入力が空のストリングでない場合、例えば、入力が、エンティティについての値を含むか、またはスキルボットが入力の一部として受信したことによりもはやユーザに求める必要がない何らかの他の情報を含むので、会話は何らかの中間状態で開始され得る。別の例として、スキルボットは、(例えば、スキルボットに関して構成されたすべてのボットインテントの信頼度スコアが特定の閾値を下回るので)入力を処理できない、と判断してもよい。この状況では、スキルボットは、入力を処理(例えば、マスタボットのインテント分類器を使用するインテント分析)のためにマスタボットに戻して任せてもよく、またはスキルボットは、ユーザに明確化を促してもよい。
【0123】
様々な実施形態では、チャットボットシステム内におけるインテント分類器の展開および使用は、チャットボットシステムが、チャットボットシステムと対話するユーザによって生成される発話を受信することと、チャットボットシステム内で展開されるインテント分類器を使用して、発話をインテントに対応するインテントカテゴリに分類することと、インテント分類器を使用して、分類することに基づいてインテントを出力することとを含む。インテント分類器は、トレーニングデータを使用して識別される複数のモデルパラメータを含み、トレーニングデータは、1つ以上の発話について1つ以上のインテントを識別するようインテント分類器をトレーニングするための拡張された発話のトレーニングセットと、1つ以上の発話についての1つ以上のインテントを識別するようにインテント分類器をトレーニングするための拡張された発話のトレーニングセットとを含み、拡張された発話のトレーニングセットは、発話のトレーニングセットから、拡張された発話を含むよう、人工的に生成され、この場合、拡張された発話は、発話のトレーニングセットのうちの発話のコンテキストと実質的に異なるコンテキストを有するOOD発話であり、OOD例のコンテキストと発話のトレーニングセットのうちの発話のコンテキストとの間の実質的な相違は、多言語ユニバーサル・センテンス・エンコーダ(MUSE)シングル埋込みを用いて決定され、ここで、min(d_i)=>予め定められた閾値(d_i=ユークリッド距離(v_i,u))である場合、OOD例のコンテキストおよび発話のトレーニングセットのうちの発話のコンテキストは実質的に異なっていると判定される。複数のモデルパラメータは、損失関数を最小化することに基づいてトレーニングデータを用いて識別される。チャットボットシステム内のインテント分類器を展開および使用することはさらに、インテント分類器を用いて、分類に基づいてインテントを出力することを含む。
【0124】
OOD例のコンテキストと発話のトレーニングセットのうちの発話のコンテキストとの間の実質的な相違は、クラス間の不一致を回避するために距離尺度に基づいて決定され得る。
【0125】
例示的なシステム
図6は、分散型システム600の簡略図を示す。図示される例において、分散型システム600は、1つ以上の通信ネットワーク610を介してサーバ612に結合された1つ以上のクライアントコンピューティングデバイス602、604、606、および608を含む。クライアントコンピューティングデバイス602、604、606、および608は、1つ以上のアプリケーションを実行するように構成され得る。
【0126】
さまざまな例において、サーバ612は、本開示に記載される1つ以上の実施形態を可能にする1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。特定の例では、サーバ612はまた、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの例では、これらのサービスは、クライアントコンピューティングデバイス602、604、606および/または608のユーザに対して、サービスとしてのソフトウェア(Software as a Service:SaaS)モデル下のように、ウェブベースのサービスまたはクラウドサービスとして提供され得る。クライアントコンピューティングデバイス602、604、606および/または608を操作するユーザは、1つ以上のクライアントアプリケーションを利用してサーバ612とやり取りすることで、これらのコンポーネントによって提供されるサービスを利用し得る。
【0127】
図6に示す構成では、サーバ612は、当該サーバ612が実行する機能を実現する1つ以上のコンポーネント618、620および622を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはそれらの組合わせによって実行され得るソフトウェアコンポーネントを含み得る。分散型システム600とは異なり得る多種多様なシステム構成が可能であることが認識されるはずである。したがって、図6に示す例は、例示的なシステムを実現するための分散型システムの一例であり、限定するよう意図されたものではない。
【0128】
ユーザは、クライアントコンピューティングデバイス602、604、606および/または608を用いて、本開示の教示に従って実現または処理され得る1つ以上のイベントまたはモデルを生成し得る1つ以上のアプリケーション、モデルまたはチャットボットを実行し得る。クライアントデバイスは、当該クライアントデバイスのユーザが当該クライアントデバイスと対話することを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介してユーザに情報を出力してもよい。図6は4つのクライアントコンピューティングデバイスだけを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0129】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどの、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、例えば、各種モバイルオペレーティングシステム(例えばMicrosoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含むさまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(例えばMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、Linux(登録商標)またはLinux系オペレーティングシステム、例えば、Google Chrome(登録商標)OS)を含み得る。ポータブルハンドヘルドデバイスは、セルラーフォン、スマートフォン(例えばiPhone(登録商標))、タブレット(例えばiPad(登録商標))、携帯情報端末(PDA)などを含み得る。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイおよびその他のデバイスを含み得る。ゲームシステムは、各種ハンドヘルドゲームデバイス、インターネット接続可能なゲームデバイス(例えばKinect(登録商標)ジェスチャ入力デバイス付き/無しのMicrosoft Xbox(登録商標)ゲーム機、Sony PlayStation(登録商標)システム、Nintendo(登録商標)が提供する各種ゲームシステムなど)を含み得る。クライアントデバイスは、各種インターネット関連アプリケーション、通信アプリケーション(例えばEメールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)のような多種多様なアプリケーションを実行可能であってもよく、各種通信プロトコルを使用してもよい。
【0130】
ネットワーク610は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートし得る、当該技術の当業者には周知のいずれかの種類のネットワークであればよく、上記プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない。単に一例として、ネットワーク610は、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(例えば電気電子学会(IEEE)802.11プロトコルスイートのいずれかの下で動作するネットワーク、Bluetooth(登録商標)および/または任意の他の無線プロトコル)、ならびに/またはこれらおよび/もしくは他のネットワークの任意の組合わせであり得る。
【0131】
サーバ612は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組合わせで構成されてもよい。サーバ612は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得るものであって、例えば、サーバに対して仮想記憶装置を維持するように仮想化され得る論理記憶装置の1つ以上のフレキシブルプールなどである。様々な例において、サーバ612を、上記開示に記載の機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合させてもよい。
【0132】
サーバ612内のコンピューティングシステムは、上記オペレーティングシステムのうちのいずれかを含む1つ以上のオペレーティングシステム、および、市販されている任意のサーバオペレーティングシステムを実行し得る。また、サーバ612は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまな付加的な他のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものを含むが、それらに限定されない。
【0133】
いくつかの実現例において、サーバ612は、クライアントコンピューティングデバイス602、604、606および608のユーザから受信したデータフィードおよび/またはイベントアップデートを解析および整理統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(例えば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどに関連するリアルタイムのイベントを含み得る、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムのアップデートを含み得るが、それらに限定されない。サーバ612は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス602、604、606および608の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションも含み得る。
【0134】
分散型システム600はまた、1つ以上のデータリポジトリ614、616を含み得る。特定の例において、これらのデータリポジトリを用いてデータおよびその他の情報を格納し得る。例えば、データリポジトリ614、616のうちの1つ以上を用いて、様々な実施形態による様々な機能の実行時にサーバ612によって使用されるチャットボットが使用するためのチャットボット性能または生成されたモデルに関連する情報等の情報を格納し得る。データリポジトリ614、616は、さまざまな場所に存在し得る。例えば、サーバ612が使用するデータリポジトリは、サーバ612のローカル位置にあってもよく、またはサーバ612から遠隔の位置にあってもよく、ネットワークベースの接続または専用接続を介してサーバ612と通信してもよい。データリポジトリ614、616は、異なる種類であってもよい。特定の例において、サーバ612が使用するデータリポジトリは、データベース、例えば、Oracle Corporation(登録商標)および他の製造業者が提供するデータベース等のリレーショナルデータベースであってもよい。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするように適合させてもよい。
【0135】
特定の例では、データリポジトリ614、616のうちの1つ以上は、アプリケーションデータを格納するためにアプリケーションによって用いられてもよい。アプリケーションが使用するデータリポジトリは、例えば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリ等のさまざまな種類のものであってもよい。
【0136】
特定の例において、本開示に記載される機能は、クラウド環境を介してサービスとして提供され得る。図7は、特定の例に係る、各種サービスがクラウドサービスとして提供され得るクラウドベースのシステム環境の簡略化されたブロック図である。図7に示す例において、クラウドインフラストラクチャシステム702は、ユーザが1つ以上のクライアントコンピューティングデバイス704、706および708を用いて要求し得る1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム702は、サーバ612に関して先に述べたものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。クラウドインフラストラクチャシステム702内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および/もしくは組合わせとして編成され得る。
【0137】
ネットワーク710は、クライアント704、706、および708と、クラウドインフラストラクチャシステム702との間におけるデータの通信および交換を容易にし得る。ネットワーク710は、1つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク710は、通信を容易にするために有線および/または無線プロトコルを含む1つ以上の通信プロトコルをサポートし得る。
【0138】
図7に示す例は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの例において、クラウドインフラストラクチャシステム702が、図7に示すものよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組合わせてもよく、または、異なる構成または配置のコンポーネントを有していてもよいことが、理解されるはずである。例えば、図7は3つのクライアントコンピューティングデバイスを示しているが、代替例においては、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0139】
クラウドサービスという用語は一般に、サービスプロバイダのシステム(例えばクラウドインフラストラクチャシステム702)により、インターネット等の通信ネットワークを介してオンデマンドでユーザにとって利用可能にされるサービスを指すのに使用される。典型的には、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。例えば、クラウドサービスプロバイダのシステムはアプリケーションをホストし得るとともに、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介してオンデマンドでアプリケーションをオーダーして使用し得る。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。例えば、ミドルウェアサービス、データベースサービス、Java(登録商標)クラウドサービスなどのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)から提供される。
【0140】
特定の例において、クラウドインフラストラクチャシステム702は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデルなどのさまざまなモデルを使用して、1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム702は、各種クラウドサービスのプロビジョンを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースの一式を含み得る。
【0141】
SaaSモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。例えば、SaaSモデルを用いることにより、クラウドインフラストラクチャシステム702がホストするオンデマンドアプリケーションに顧客がアクセスできるようにし得る。Oracle Corporation(登録商標)が提供するSaaSサービスの例は、人的資源/資本管理のための各種サービス、カスタマー・リレーションシップ・マネジメント(CRM)、エンタープライズ・リソース・プランニング(ERP)、サプライチェーン・マネジメント(SCM)、エンタープライズ・パフォーマンス・マネジメント(EPM)、解析サービス、ソーシャルアプリケーションなどを含むがこれらに限定されない。
【0142】
IaaSモデルは一般に、インフラストラクチャリソース(例えばサーバ、ストレージ、ハードウェアおよびネットワーキングリソース)を、クラウドサービスとして顧客に提供することにより、柔軟な計算およびストレージ機能を提供するために使用される。各種IaaSサービスがOracle Corporation(登録商標)から提供される。
【0143】
PaaSモデルは一般に、顧客が、環境リソースを調達、構築、または維持しなくても、アプリケーションおよびサービスを開発、実行、および管理することを可能にするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例は、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、各種アプリケーション開発ソリューションサービスなどを含むがこれらに限定されない。
【0144】
クラウドサービスは一般に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。例えば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム702が提供する1つ以上のサービスをオーダーしてもよい。次いで、クラウドインフラストラクチャシステム702は、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。例えば、ユーザは、発話を用いて、クラウドインフラストラクチャシステムに、上記のように特定のアクション(例えばインテント)を取ること、および/または本明細書で説明するようにチャットボットシステムのためのサービスを提供することを要求してもよい。クラウドインフラストラクチャシステム702は、1つのクラウドサービスまたは複数のクラウドサービスであっても提供するように構成され得る。
【0145】
クラウドインフラストラクチャシステム702は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム702は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。この顧客は個人または企業であってもよい。ある他の例では、プライベートクラウドモデル下において、クラウドインフラストラクチャシステム702がある組織内で(例えば企業組織内で)機能してもよく、サービスはこの組織内の顧客に提供される。例えば、この顧客は、人事部、給与部などの企業のさまざまな部署であってもよく、企業内の個人であってもよい。ある他の例では、コミュニティクラウドモデル下において、クラウドインフラストラクチャシステム702および提供されるサービスは、関連コミュニティ内のさまざまな組織で共有されてもよい。上記モデルの混成モデルなどのその他各種モデルが用いられてもよい。
【0146】
クライアントコンピューティングデバイス704、706、および708は、異なるタイプ(例えば図6に示されるクライアントコンピューティングデバイス602、604、606および608等)であってもよく、1つ以上のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム702が提供するサービスを要求するなどの、クラウドインフラストラクチャシステム702とのやり取りを行い得る。例えば、ユーザは、本開示に記載の通り、クライアントデバイスを使用してチャットボットに情報またはアクションを要求してもよい。
【0147】
いくつかの例において、クラウドインフラストラクチャシステム702が、サービスを提供するために実行する処理は、モデルトレーニングおよび展開を含み得る。この解析は、データセットを使用し、解析し、処理することにより、1つ以上のモデルをトレーニングおよび展開することを含み得る。この解析は、1つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行されてもよい。例えば、チャットボットシステムのために1つ以上のモデルを生成およびトレーニングするために、ビッグデータ解析がクラウドインフラストラクチャシステム702によって実行されてもよい。この解析に使用されるデータは、構造化データ(例えばデータベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(例えばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含み得る。
【0148】
図7の例に示すように、クラウドインフラストラクチャシステム702は、クラウドインフラストラクチャシステム702が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース730を含み得る。インフラストラクチャリソース730は、例えば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。特定の例では、アプリケーションから要求されたストレージを処理するために利用可能なストレージ仮想マシンは、クラウドインフラストラクチャシステム702の一部であってもよい。他の例では、ストレージ仮想マシンは、異なるシステムの一部であってもよい。
【0149】
特定の例において、異なる顧客に対しクラウドインフラストラクチャシステム702が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースのセットまたはリソースモジュール(「ポッド」とも処される)にまとめてもよい。各リソースモジュールまたはポッドは、1種類以上のリソースを予め一体化し最適化した組合わせを含み得る。特定の例において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングしてもよい。例えば、第1のポッドセットをデータベースサービスのためにプロビジョニングしてもよく、第1のポッドセット内のポッドと異なるリソースの組合わせを含み得る第2のポッドセットをJavaサービスなどのためにプロビジョニングしてもよい。いくつかのサービスについて、これらのサービスをプロビジョニングするために割当てられたリソースをサービス間で共有してもよい。
【0150】
クラウドインフラストラクチャシステム702自体が、クラウドインフラストラクチャシステム702の様々なコンポーネントによって共有されるとともにクラウドインフラストラクチャシステム702によるサービスのプロビジョニングを容易にするサービス732を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性、バックアップリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【0151】
クラウドインフラストラクチャシステム702は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組合わせで実現され得る。図7に示すように、サブシステムは、クラウドインフラストラクチャシステム702のユーザまたは顧客がクラウドインフラストラクチャシステム702とやり取りすることを可能にするユーザインターフェイスサブシステム712を含み得る。ユーザインターフェイスサブシステム712は、ウェブインターフェイス714、クラウドインフラストラクチャシステム702が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス716、およびその他のインターフェイス718などの、各種異なるインターフェイスを含み得る。例えば、顧客は、クライアントデバイスを用いて、クラウドインフラストラクチャシステム702がインターフェイス714、716、および718のうちの1つ以上を用いて提供する1つ以上のサービスを要求(サービス要求734)してもよい。例えば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム702が提供するクラウドサービスをブラウズし、クラウドインフラストラクチャシステム702が提供するとともに顧客が申し込むことを所望する1つ以上のサービスについてサブスクリプションオーダーを行い得る。このサービス要求は、顧客と、顧客が申しむことを所望する1つ以上のサービスとを識別する情報を含んでいてもよい。例えば、顧客は、クラウドインフラストラクチャシステム702によって提供されるサービスの申し込み注文を出すことができる。注文の一部として、顧客は、サービスが提供されるチャットボットシステムを識別する情報と、任意にはチャットボットシステムについての1つ以上の資格情報とを提供し得る。
【0152】
図7に示す例のような特定の例において、クラウドインフラストラクチャシステム702は、新しいオーダーを処理するように構成されたオーダー管理サブシステム(order management subsystem:OMS)720を含み得る。この処理の一部として、OMS720は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。
【0153】
適切に妥当性確認がなされると、OMS720は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(order provisioning subsystem:OPS)724を呼出し得る。プロビジョニングは、オーダーのためのリソースを割当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングする方法およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。例えば、あるワークフローに従うと、OPS724を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。例えば、割当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
【0154】
特定の例では、セットアップ段階処理は、上述したように、クラウドインフラストラクチャシステム702によって、プロビジョニングプロセスの一部として実行され得る。クラウドインフラシステム702は、アプリケーションIDを生成し、クラウドインフラシステム702自体によって提供されるストレージ仮想マシンの中から、またはクラウドインフラシステム702以外の他のシステムによって提供されるストレージ仮想マシンから、アプリケーション用のストレージ仮想マシンを選択し得る。
【0155】
クラウドインフラストラクチャシステム702は、要求されたサービスがいつ使用できるようになるかを示すために、応答または通知744を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(例えばリンク)を顧客に送信してもよい。特定の例では、サービスを要求する顧客に対して、応答は、クラウドインフラストラクチャシステム702によって生成されたチャットボットシステムIDと、チャットボットシステムIDに対応するチャットボットシステムのためにクラウドインフラストラクチャシステム702によって選択されたチャットボットシステムを識別する情報とを含み得る。
【0156】
クラウドインフラストラクチャシステム702はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム702は、顧客から受けた1つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を果たす。また、クラウドインフラストラクチャシステム702は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。例えば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金は例えば月ごとに行ってもよい。
【0157】
クラウドインフラストラクチャシステム702は、サービスを複数の顧客に並行して提供してもよい。クラウドインフラストラクチャシステム702は、場合によっては著作権情報を含む、これらの顧客についての情報を格納してもよい。特定の例において、クラウドインフラストラクチャシステム702は、顧客の情報を管理するとともに管理される情報を分離することで、ある顧客に関する情報が別の顧客からアクセスされないようにするように構成された、アイデンティティ管理サブシステム(IMS)728を含む。IMS728は、情報アクセス管理などのアイデンティティサービス、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスなどの、各種セキュリティ関連サービスを提供するように構成されてもよい。
【0158】
図8は、コンピュータシステム800の例を示す。いくつかの例では、コンピュータシステム800は、分散環境内の任意のデジタルアシスタントまたはチャットボットシステムのいずれか、ならびに上記の様々なサーバおよびコンピュータシステムを実現するために用いられ得る。図8に示すように、コンピュータシステム800は、バスサブシステム802を介して他のいくつかのサブシステムと通信する処理サブシステム804を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット806、I/Oサブシステム808、ストレージサブシステム818、および通信サブシステム824を含み得る。ストレージサブシステム818は、記憶媒体822およびシステムメモリ810を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0159】
バスサブシステム802は、コンピュータシステム800のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム802は単一のバスとして概略的に示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム802は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。例えば、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスなどを含み得る。
【0160】
処理サブシステム804は、コンピュータシステム800の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサは、シングルコアまたはマルチコアのプロセッサを含み得る。コンピュータシステム800の処理リソースを、1つ以上の処理ユニット832、834などに編成してもよい。処理ユニットは、1つ以上のプロセッサ、同一のまたは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組合わせ、またはコアとプロセッサとのその他の組合わせを含み得る。いくつかの例において、処理サブシステム804は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)などのような1つ以上の専用コプロセッサを含み得る。いくつかの例では、処理サブシステム804の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を用いて実現され得る。
【0161】
いくつかの例において、処理サブシステム804内の処理ユニットは、システムメモリ810またはコンピュータ可読記憶媒体822に格納された命令を実行し得る。さまざまな例において、処理ユニットはさまざまなプログラムまたはコード命令を実行するとともに、同時に実行する複数のプログラムまたはプロセスを維持し得る。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ810および/または潜在的に1つ以上の記憶装置を含むコンピュータ可読記憶媒体822に常駐していてもよい。適切なプログラミングを介して、処理サブシステム804は、上述のさまざまな機能を提供し得る。コンピュータシステム800が1つ以上の仮想マシンを実行している例において、1つ以上の処理ユニットが各仮想マシンに割当てられてもよい。
【0162】
特定の例において、コンピュータシステム800によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム804によって実行される処理の一部をオフロードするために、処理加速ユニット806を任意に設けてもよい。
【0163】
I/Oサブシステム808は、コンピュータシステム800に情報を入力するための、および/またはコンピュータシステム800から、もしくはコンピュータシステム800を介して、情報を出力するための、デバイスおよび機構を含み得る。一般に、「入力デバイス」という語の使用は、コンピュータシステム800に情報を入力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、例えば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを提供するデバイスなど、モーションセンシングおよび/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(例えば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(例えばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。加えて、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(例えばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
【0164】
ユーザインターフェイス入力デバイスの他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含むが、それらに限定されない。加えて、ユーザインターフェイス入力デバイスは、例えば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、例えば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【0165】
一般に、出力デバイスという語の使用は、コンピュータシステム800からユーザまたは他のコンピュータに情報を出力するための考えられるすべてのタイプのデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するディスプレイなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。例えば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含み得るが、それらに限定されない。
【0166】
ストレージサブシステム818は、コンピュータシステム800によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム818は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ可読記憶媒体を提供する。処理サブシステム804によって実行されると上述の機能を提供するソフトウェア(例えばプログラム、コードモジュール、命令)が、ストレージサブシステム818に格納されてもよい。ソフトウェアは、処理サブシステム804の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム818はまた、本開示の教示に従って認証を提供してもよい。
【0167】
ストレージサブシステム818は、揮発性および不揮発性のメモリデバイスを含む1つ以上の非一時的メモリデバイスを含み得る。図8に示すように、ストレージサブシステム818は、システムメモリ810およびコンピュータ可読記憶媒体822を含む。システムメモリ810は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ(RAM)と、固定命令が格納される不揮発性読取り専用メモリ(ROM)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実現例において、起動中などにコンピュータシステム800内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)は、典型的には、ROMに格納されてもよい。典型的に、RAMは、処理サブシステム804によって現在操作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ810は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などのような複数の様々なタイプのメモリを含み得る。
【0168】
限定ではなく一例として、図8に示すように、システムメモリ810は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム812、プログラムデータ814、およびオペレーティングシステム816を、ロードしてもよい。一例として、オペレーティングシステム816は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステム、市販されているさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、および/または、iOS(登録商標)、Windows Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムのようなさまざまなバージョンのモバイルオペレーティングシステムなどを、含み得る。
【0169】
コンピュータ可読記憶媒体822は、いくつかの例の機能を提供するプログラミングおよびデータ構成を格納し得る。コンピュータ可読記憶媒体822は、コンピュータシステム800のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供し得る。処理サブシステム804によって実行されると上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム818に格納されてもよい。一例として、コンピュータ可読記憶媒体822は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ可読記憶媒体822は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含み得るが、それらに限定されない。コンピュータ可読記憶媒体822は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMのような揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組合わせを使用するハイブリッドSSDも含み得る。
【0170】
特定の例において、ストレージサブシステム818は、コンピュータ可読記憶媒体822にさらに接続され得るコンピュータ可読記憶媒体リーダ820も含み得る。リーダ820は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。
【0171】
特定の例において、コンピュータシステム800は、処理リソースおよびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。例えば、コンピュータシステム800は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。特定の例において、コンピュータシステム800は、仮想マシンの構成および管理を容易にするハイパーバイザなどのプログラムを実行し得る。各仮想マシンには、メモリ、演算(例えばプロセッサ、コア)、I/O、およびネットワーキングリソースが割当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的には、コンピュータシステム800によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るかまたは異なり得るそれ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム800によって同時に実行され得る。
【0172】
通信サブシステム824は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム824は、他のシステムとコンピュータシステム800との間のデータの送受のためのインターフェイスとして機能する。例えば、通信サブシステム824は、コンピュータシステム800が、1つ以上のクライアントデバイスとの間で情報を送受信するために、インターネットを介して1つ以上のクライアントデバイスへの通信チャネルを確立することを可能にし得る。例えば、コンピュータシステム800が、図1に示されるボットシステム120を実現するために使用される場合、通信サブシステムは、アプリケーション用に選択されたチャットボットシステムと通信するために使用され得る。
【0173】
通信サブシステム824は、有線および/または無線の通信プロトコルを共にサポートし得る。特定の例において、通信サブシステム824は、(例えば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.XXファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの例において、通信サブシステム824は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続(例えばEthernet(登録商標))を提供し得る。
【0174】
通信サブシステム824は、さまざまな形式でデータを受信および送信し得る。いくつかの例において、通信サブシステム824は、他の形式に加えて、構造化データフィードおよび/または非構造化データフィード826、イベントストリーム828、イベントアップデート830などの形式で入力通信を受信してもよい。例えば、通信サブシステム824は、ソーシャルメディアネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード826を受信(または送信)するように構成されてもよい。
【0175】
特定の例において、通信サブシステム824は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム828および/またはイベントアップデート830を含んでもよい。連続データを生成するアプリケーションの例としては、例えば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(例えばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどを含み得る。
【0176】
通信サブシステム824は、コンピュータシステム800からのデータを他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード826、イベントストリーム828、イベントアップデート830などのような各種異なる形式で、コンピュータシステム800に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに、伝えられてもよい。
【0177】
コンピュータシステム800は、ハンドヘルドポータブルデバイス(例えばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(例えばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのうちの1つであり得る。コンピュータおよびネットワークの性質が常に変化しているため、図8に示すコンピュータシステム800の記載は、具体的な例として意図されているに過ぎない。図8に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が実現可能である。本明細書における開示および教示に基づいて、さまざまな例を実現するための他の態様および/または方法があることが認識されるはずである。
【0178】
特定の例について説明したが、さまざまな変形、変更、代替構成、および均等例が実現可能である。例は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作させることができる。さらに、特定の一連のトランザクションおよびステップを使用していくつかの例を説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行されてもよい。加えて、動作の順序を再指定してもよい。プロセスは図に含まれない追加のステップを有し得る。上記の例の各種特徴および局面は、個別に使用されてもよく、または一緒に使用されてもよい。
【0179】
さらに、特定の例をハードウェアとソフトウェアとの特定の組合わせを用いて説明してきたが、ハードウェアとソフトウェアとの他の組合わせも可能であることが理解されるはずである。特定の例は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組合わせを用いて実現されてもよい。本明細書に記載のさまざまなプロセスは、同じプロセッサまたは任意の組合わせの異なるプロセッサ上で実現されてもよい。
【0180】
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、例えば、動作を実行するように電子回路を設計することにより、動作を実行するようにプログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、例えば、非一時的なメモリ媒体に格納されたコードもしくは命令を実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行することにより、またはそれらの任意の組合わせにより、達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信してもよく、様々な対のプロセスは様々な技術を使用してもよく、または同じ対のプロセスは様々な時間に様々な技術を使用してもよい。
【0181】
本開示では具体的な詳細を示すことにより例が十分に理解されるようにしている。しかしながら、例はこれらの具体的な詳細がなくとも実施され得るものである。例えば、周知の回路、プロセス、アルゴリズム、構造、および技術は、例が曖昧にならないようにするために不必要な詳細事項なしで示している。本明細書は例示的な例のみを提供し、他の例の範囲、適用可能性、または構成を限定するよう意図されたものではない。むしろ、例についての上記説明は、各種例を実現することを可能にする説明を当業者に提供するだろう。要素の機能および構成の範囲内でさまざまな変更がなされ得る。
【0182】
したがって、明細書および図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているようにより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされ得ることは明らかであろう。このように、具体的な例を説明してきたが、これらは限定を意図するものではない。さまざまな変形例および同等例は添付の特許請求の範囲内にある。
【0183】
上記の明細書では、本開示の局面についてその具体的な例を参照して説明しているが、本開示はそれに限定されるものではないということを当業者は認識するであろう。上記の開示のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、例は、明細書のより広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境および用途で利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
【0184】
上記の説明では、例示の目的で、方法を特定の順序で記載した。代替例では、方法は記載された順序とは異なる順序で実行されてもよいことを理解されたい。また、上記の方法は、ハードウェアコンポーネントによって実行されてもよく、または、マシン実行可能命令のシーケンスで具体化されてもよく、マシン実行可能命令は、用いられると、そのような命令でプログラムされた汎用もしくは専用のプロセッサまたは論理回路などのマシンに当該方法を実行させるために使用され得ることも理解されたい。これらのマシン実行可能命令は、CD-ROMもしくは他の種類の光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気もしくは光学カード、フラッシュメモリのような、1つ以上の機械可読媒体、または電子命令を格納するのに適した他の種類の機械可読媒体に保存されてもよい。代替的には、これらの方法は、ハードウェアとソフトウェアとの組合わせによって実行されてもよい。
【0185】
構成要素が特定の動作を実行するように構成されるものとして記載されている場合、そのような構成は、例えば、特定の動作を実行するよう電子回路もしくは他のハードウェアを設計すること、特定の動作を実行するようプログラミング可能な電子回路(例えばマイクロプロセッサもしくは他の好適な電子回路)をプログラミングすること、またはそれらの任意の組合わせによって達成されてもよい。
【0186】
本願の具体例をここに詳細に記載したが、本発明の概念は、他の態様で様々に具現化および採用され得ること、および特許請求の範囲は、先行技術によって限定される場合を除き、そのような変形を含むように解釈されるよう意図されていることを理解されたい。
図1
図2
図3
図4
図5
図6
図7
図8
【国際調査報告】