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

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

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

特表2024-543062自然言語処理のパスのドロップアウト
<>
  • 特表-自然言語処理のパスのドロップアウト 図1
  • 特表-自然言語処理のパスのドロップアウト 図2
  • 特表-自然言語処理のパスのドロップアウト 図3
  • 特表-自然言語処理のパスのドロップアウト 図4A
  • 特表-自然言語処理のパスのドロップアウト 図4B
  • 特表-自然言語処理のパスのドロップアウト 図5A
  • 特表-自然言語処理のパスのドロップアウト 図5B
  • 特表-自然言語処理のパスのドロップアウト 図6
  • 特表-自然言語処理のパスのドロップアウト 図7
  • 特表-自然言語処理のパスのドロップアウト 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-19
(54)【発明の名称】自然言語処理のパスのドロップアウト
(51)【国際特許分類】
   G06N 3/08 20230101AFI20241112BHJP
   G06N 3/0475 20230101ALI20241112BHJP
【FI】
G06N3/08
G06N3/0475
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024527585
(86)(22)【出願日】2022-11-16
(85)【翻訳文提出日】2024-05-10
(86)【国際出願番号】 US2022050076
(87)【国際公開番号】W WO2023091468
(87)【国際公開日】2023-05-25
(31)【優先権主張番号】63/280,580
(32)【優先日】2021-11-17
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ブー,タン・ティエン
(72)【発明者】
【氏名】ファム,トゥエン・クアン
(72)【発明者】
【氏名】ジョンソン,マーク・エドワード
(72)【発明者】
【氏名】ドゥオン,タン・ロン
(57)【要約】
複数の層を含み、テキスト言語入力を処理するように構成される機械学習モデルのトレーニングを改善するための技術が提供される。機械学習モデルは1つまたは複数のブロックを含み、各ブロックは、マルチヘッド自己アテンションネットワーク、マルチヘッド自己アテンションネットワークに入力を提供するための第1の接続、およびマルチヘッド自己アテンションネットワークをバイパスして、入力を正規化層に提供する第2(残留)接続を含む。トレーニング中に、第2の接続はドロップアウトパラメータに従ってドロップアウトされる。追加的に、または代替的に、アテンション重み行列内の対角のエントリをブロックすることによって、アテンション重み行列がドロップアウトに使用される。その結果、機械学習モデルはコンテキスト情報にますます重点を置き、より正確な言語処理結果を提供する。
【特許請求の範囲】
【請求項1】
音声またはテキスト言語入力を処理するように機械学習モデルをトレーニングするためのコンピュータが実行する方法であって、前記方法は、
機械学習モデルへアクセスすることを含み、前記機械学習モデルは1つまたは複数のブロックを含み、各ブロックは、マルチヘッド自己アテンションネットワーク、前記マルチヘッド自己アテンションネットワークに入力を提供するための第1の接続、および前記マルチヘッド自己アテンションネットワークをバイパスして、前記入力を正規化層に提供するための第2の接続を含み、
前記方法は、
トレーニングデータセットへアクセスすることと、
ドロップアウトパラメータを識別することと、
前記ドロップアウトパラメータを前記第2の接続に適用することと、
前記トレーニングデータセットを使用して前記機械学習モデルをトレーニングし、トレーニングされる機械学習モデルを生成することと、を含み、前記第2の接続は、前記ドロップアウトパラメータに従ってドロップアウトされ、
前記方法は、
前記トレーニングされる機械学習モデルの使用を容易にすることを含む、コンピュータが実行する方法。
【請求項2】
前記機械学習モデルは複数のアテンションヘッドを含み、各アテンションヘッドは連結されてアテンション重み行列により乗算される出力を提供し、
前記方法はさらに、前記アテンション重み行列の対角エントリをドロップアウトすることを含む、請求項1に記載の方法。
【請求項3】
前記ドロップアウトパラメータは前記機械学習モデルのハイパーパラメータであり、前記方法は、
前記ドロップアウトパラメータを識別するためにハイパーチューニングを実行することをさらに含む、請求項1に記載の方法。
【請求項4】
前記第2の接続がドロップアウトされると、前記機械学習モデルは、マルチヘッド自己アテンションを通じてコンテキスト情報を学習するようになる、請求項1に記載の方法。
【請求項5】
前記トレーニングデータセットは、1つまたは複数の発話を含み、各発話は、エンティティとしてラベル付けされる1つまたは複数の単語と、エンティティとしてラベル付けされていない1つまたは複数の単語とを含み、
前記コンテキスト情報は、エンティティとしてラベル付けされていない前記1つまたは複数の単語に基づいて決定される、請求項4に記載の方法。
【請求項6】
前記トレーニングされる機械学習モデルの使用を容易にすることは、
エンティティを識別するために、前記トレーニングされる機械学習モデルに発話を入力することと、
前記識別されるエンティティに基づいて、前記発話に対する応答を準備して提供することと、を含む、請求項1に記載の方法。
【請求項7】
前記ドロップアウトパラメータはドロップアウト率であり、前記第2の接続は残留接続であり、
前記ドロップアウトパラメータを適用することは、前記ドロップアウト率に従って前記残留接続をドロップアウトすることを含む、請求項1に記載の方法。
【請求項8】
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに結合されるメモリと、を含み、前記メモリは、前記1つまたは複数のプロセッサによって実行可能な複数の命令を記憶し、前記複数の命令は、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
機械学習モデルへアクセスすることを含み、前記機械学習モデルは1つまたは複数のブロックを含み、各ブロックは、マルチヘッド自己アテンションネットワーク、前記マルチヘッド自己アテンションネットワークに入力を提供するための第1の接続、および前記マルチヘッド自己アテンションネットワークをバイパスして、前記入力を正規化層に提供するための第2の接続を含み、
トレーニングデータセットへアクセスすることと、
ドロップアウトパラメータを識別することと、
前記ドロップアウトパラメータを前記第2の接続に適用することと、
前記トレーニングデータセットを使用して前記機械学習モデルをトレーニングし、トレーニングされる機械学習モデルを生成することと、を含み、前記第2の接続は、前記ドロップアウトパラメータに従ってドロップアウトされ、
前記トレーニングされる機械学習モデルの使用を容易にすることを含む、動作を実行させる命令を含む、システム。
【請求項9】
前記機械学習モデルは複数のアテンションヘッドを含み、各アテンションヘッドは連結されアテンション重み行列で乗算される出力を提供し、
前記動作はさらに、前記アテンション重み行列の対角エントリをドロップアウトすることを含む、請求項8に記載のシステム。
【請求項10】
前記ドロップアウトパラメータは前記機械学習モデルのハイパーパラメータであり、
前記動作はさらに、前記ドロップアウトパラメータを識別するためにハイパーチューニングを実行することを含む、請求項8に記載のシステム。
【請求項11】
前記第2の接続がドロップアウトされると、前記機械学習モデルは、マルチヘッド自己アテンションを通じてコンテキスト情報を学習するようになる、請求項8に記載のシステム。
【請求項12】
前記トレーニングデータセットは、1つまたは複数の発話を含み、各発話は、エンティティとしてラベル付けされる1つまたは複数の単語と、エンティティとしてラベル付けされていない1つまたは複数の単語と、を含み、
前記コンテキスト情報は、エンティティとしてラベル付けされていない前記1つまたは複数の単語に基づいて決定される、請求項11に記載のシステム。
【請求項13】
前記トレーニングされる機械学習モデルの使用を容易にすることは、
エンティティを識別するために、前記トレーニングされる機械学習モデルに発話を入力することと、
前記識別されるエンティティに基づいて、前記発話に対する応答を準備して提供することと、を含む、請求項8に記載のシステム。
【請求項14】
前記ドロップアウトパラメータはドロップアウト率であり、前記第2の接続は残留接続であり、
前記ドロップアウトパラメータを適用することは、前記ドロップアウト率に従って前記残留接続をドロップアウトすることを含む、請求項8に記載のシステム。
【請求項15】
1つまたは複数のプロセッサに、
機械学習モデルへアクセスすることを含み、前記機械学習モデルは1つまたは複数のブロックを含み、各ブロックは、マルチヘッド自己アテンションネットワーク、前記マルチヘッド自己アテンションネットワークに入力を提供するための第1の接続、および前記マルチヘッド自己アテンションネットワークをバイパスして、前記入力を正規化層に提供するための第2の接続を含み、
トレーニングデータセットへアクセスすることと、
ドロップアウトパラメータを識別することと、
前記ドロップアウトパラメータを前記第2の接続に適用することと、
前記トレーニングデータセットを使用して前記機械学習モデルをトレーニングし、トレーニングされる機械学習モデルを生成することと、を含み、前記第2の接続は、前記ドロップアウトパラメータに従ってドロップアウトされ、
前記トレーニングされる機械学習モデルの使用を容易にすることを含む、動作を実行させるため、1つまたは複数のプロセッサによって実行可能な複数の命令を記憶する非一時的なコンピュータ可読メモリ。
【請求項16】
前記機械学習モデルは複数のアテンションヘッドを含み、各アテンションヘッドは連結されてアテンション重み行列により乗算される出力を提供し、
前記動作はさらに、前記アテンション重み行列の対角エントリをドロップアウトすることを含む、請求項15に記載の非一時的なコンピュータ可読メモリ。
【請求項17】
前記ドロップアウトパラメータは前記機械学習モデルのハイパーパラメータであり、
前記動作はさらに、前記ドロップアウトパラメータを識別するためにハイパーチューニングを実行することを含む、請求項15に記載の非一時的なコンピュータ可読メモリ。
【請求項18】
前記第2の接続がドロップアウトされると、前記機械学習モデルは、マルチヘッド自己アテンションを通じてコンテキスト情報を学習するようになる、請求項15に記載の非一時的なコンピュータ可読メモリ。
【請求項19】
前記動作は、
前記ドロップアウトパラメータはドロップアウト率であり、前記第2の接続は残留接続であり、
前記ドロップアウトパラメータを適用することは、前記ドロップアウト率に応じて前記残留接続をドロップアウトすることを含むことをさらに含む、請求項15に記載の非一時的なコンピュータ可読メモリ。
【請求項20】
前記トレーニングされる機械学習モデルの使用を容易にすることは、
エンティティを識別するために、前記トレーニングされる機械学習モデルに発話を入力することと、
前記識別されるエンティティに基づいて、前記発話に対する応答を準備して提供することと、を含む、請求項15に記載の非一時的なコンピュータ可読メモリ。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
本出願は、2021年11月17日に出願された米国仮出願第63/280,580号の優先権および利益を主張し、その開示はあらゆる目的でその全体が参照により本明細書に組み込まれる。
【0002】
発明の分野
本開示は、一般に人工知能技術に関し、より詳細には、パスドロップアウトを使用して自然言語処理のための機械学習モデルをトレーニングするための技術に関する。
【背景技術】
【0003】
背景
人工知能には多くの用途がある。例えば、世界中の多くのユーザが、即座に反応を得るためにインスタントメッセージングやチャットプラットフォームを利用している。組織は多くの場合、これらのインスタントメッセージングプラットフォームやチャットプラットフォームを使用して、顧客(またはエンドユーザ)とライブの会話を交わす。しかし、組織が顧客やエンドユーザとのライブ通信に従事するサービス担当者を雇用すると、非常にコストがかかる可能性がある。特にインターネット上でエンドユーザとの会話をシミュレートするために、チャットボットまたはボットの開発が始まっている。エンドユーザは、すでにインストールして使用しているメッセージングアプリを通じてボットと通信できる。インテリジェントボットは一般に人工知能(AI)を活用しており、ライブ会話においてよりインテリジェントかつコンテキストに応じた通信を行うことができるため、ボットとエンドユーザの間でより自然な会話が可能になり、会話エクスペリエンスが向上し得る。エンドユーザが、ボットが応答方法を知っている固定のキーワードやコマンドのセットを学習する代わりに、インテリジェントボットは、自然言語でのユーザの発話に基づいてエンドユーザの意図を理解し、それに応じて応答できる可能性がある。
【0004】
しかし、チャットボットなどの人工知能ベースのソリューションは、とある分野における特定の知識と、専ら専門の開発者の能力の範囲内であり得るとある技術の適用とを必要とするため、構築が困難な場合がある。このようなチャットボットの構築の一環として、開発者はまず企業とエンドユーザのニーズを理解することができる。その後、開発者は分析を行い、例えば、分析に使用するデータセットを選択すること、分析用の入力データセットを準備すること(例えば、データをクレンジングすること、分析前のデータを抽出すること、フォーマット化、および/または変換すること、データ特徴エンジニアリングを実行することなど)、分析を実行するための適切な機械学習(ML)技術またはモデルを識別すること、フィードバックに基づいて結果/成果を改善するために技術またはモデルを改善することに関連する決定を下すことができる。適切なモデルを識別するタスクには、使用する特定のモデルを識別する前に、複数のモデルを開発し、場合によっては並行して、これらのモデルを使用して反復的にテストおよび実験することが含まれ得る。さらに、教師あり学習ベースのソリューションには通常、トレーニングフェーズ、その後にアプリケーション(推論)フェーズ、およびトレーニングフェーズとアプリケーションフェーズの間の反復ループが含まれる。開発者は、最適なソリューションを達成するために、これらのフェーズを慎重に実装および監視する責任を負う場合がある。例えば、ML技術またはモデルをトレーニングするには、ML技術またはモデルが望ましい結果(例えば、発話からの意図の推論)を予測するために使用するとあるパターンまたは特徴(例えば、チャットボットの場合-生の言語処理だけでなく、意図の抽出と慎重な構文分析)をアルゴリズムが理解し学習できるようにするには、正確なトレーニングデータが必要である。ML技術またはモデルがこれらのパターンと特徴を適切に学習できるようにするために、開発者は、ML技術またはモデルのトレーニングデータのセットを選択、強化、最適化する責任を負う場合がある。
【発明の概要】
【0005】
簡単な概要
本明細書に開示される技術は、一般に、人工知能技術に関する。より具体的には、限定するものではないが、本明細書に開示される技術は、ドロップアウトを使用して機械学習モデルにコンテキスト特徴に焦点を当てるように教える機械学習モデルのトレーニングを改善するための技術に関する。
【0006】
さまざまな実施形態において、音声またはテキスト言語入力を処理するために機械学習モデルをトレーニングするためのコンピュータが実行する方法が提供され、これは、機械学習モデルへアクセスすることであって、機械学習モデルは1つまたは複数のブロックを含み、各ブロックはマルチヘッド自己アテンションネットワーク、マルチヘッド自己アテンションネットワークに入力を提供するための第1の接続、マルチヘッド自己アテンションネットワークをバイパスして、入力を正規化層に提供するための第2の接続を含む、ことと、トレーニングデータセットへアクセスすることと、ドロップアウトパラメータを識別することと、ドロップアウトパラメータを第2の接続に適用することと、トレーニングされる機械学習モデルを生成するためにトレーニングデータセットを使用して機械学習モデルをトレーニングすることであって、第2の接続はドロップアウトパラメータに従ってドロップアウトされることと、トレーニングされる機械学習モデルの使用を容易にすることと、を含む。
【0007】
いくつかの実施形態では、機械学習モデルは複数のアテンションヘッドを含み、各アテンションヘッドは、アテンション重み行列によって連結され乗算される出力を提供し、方法はさらに、アテンション重み行列内の対角エントリをドロップアウトすることを含む。
【0008】
いくつかの実施形態では、ドロップアウトパラメータは機械学習モデルのハイパーパラメータであり、この方法は、ドロップアウトパラメータを識別するためにハイパーチューニングを実行することをさらに含む。
【0009】
いくつかの実施形態では、第2の接続がドロップアウトされると、機械学習モデルは、マルチヘッド自己アテンションを通じてコンテキスト情報を学習するようになる。いくつかの態様では、トレーニングデータセットは、1つまたは複数の発話を含み、各発話は、エンティティとしてラベル付けされる1つまたは複数の単語と、エンティティとしてラベル付けされていない1つまたは複数の単語とを含む。コンテキスト情報は、エンティティとしてラベル付けされていない1つまたは複数の単語に基づいて決定される。
【0010】
いくつかの実施形態では、トレーニングされる機械学習モデルの使用を容易にすることは、エンティティを識別するためにトレーニングされる機械学習モデルに発話を入力することと、識別されるエンティティに基づいて発話に対する応答を準備して提供することと、を含む。
【0011】
いくつかの実施形態では、ドロップアウトパラメータはドロップアウト率であり、第2の接続は残留接続であり、ドロップアウトパラメータを適用することは、ドロップアウト率に従って残留接続をドロップアウトすることを含む。
【0012】
さまざまな実施形態において、1つまたは複数のデータプロセッサと、命令を含む非一時的なコンピュータ可読記憶媒体とを含むシステムが提供され、1つまたは複数のデータプロセッサ上で実行されるとき、1つまたは複数のデータプロセッサに、機械学習モデルへアクセスすることであって、機械学習モデルは1つまたは複数のブロックを含み、各ブロックは、マルチヘッド自己アテンションネットワーク、マルチヘッド自己アテンションネットワークに入力を提供するための第1の接続、およびマルチヘッド自己アテンションネットワークをバイパスして、入力を正規化層に提供するための第2の接続を含む、ことと、トレーニングデータセットへアクセスすることと、ドロップアウトパラメータを識別することと、ドロップアウトパラメータを第2の接続に適用することと、トレーニングされる機械学習モデルを生成するためにトレーニングデータセットを使用して機械学習モデルをトレーニングすることであって、第2の接続はドロップアウトパラメータに従ってドロップアウトされる、ことと、トレーニングされる機械学習モデルの使用を容易にすることと、を含む動作を実行させる。
【0013】
さまざまな実施形態において、非一時的な機械可読記憶媒体に具体的に具現化されるコンピュータプログラム製品が提供され、1つまたは複数のプロセッサに機械学習モデルへアクセスすることであって、機械学習モデルは、1つまたは複数のブロックを含み、各ブロックは、マルチヘッド自己アテンションネットワーク、マルチヘッド自己アテンションネットワークに入力を提供するための第1の接続、およびマルチヘッド自己アテンションネットワークをバイパスして、入力を正規化層に提供するための第2の接続を含む、ことと、トレーニングデータセットへアクセスすることと、ドロップアウトパラメータを識別することと、ドロップアウトパラメータを第2の接続に適用することと、トレーニングされる機械学習モデルを生成するためにトレーニングデータセットを使用して機械学習モデルをトレーニングすることであって、第2の接続はドロップアウトパラメータに従ってドロップアウトされる、ことと、トレーニングされる機械学習モデルの使用を容易にすることと、を含む、動作を実行させる、1つまたは複数のプロセッサによって実行可能な命令が含まれる。
【0014】
上記および下記に説明する技術は、多くの方法および多くのコンテキストで実装することができる。下記により詳細に説明するように、いくつかの実装例およびコンテキストが、以下の図を参照して提供される。しかし、次に挙げる実装とコンテキストは、数多くある実装とコンテキストのほんの一部にすぎない。
【図面の簡単な説明】
【0015】
図1】例示的な実施形態を組み込んだ分散環境の簡略化されるブロック図である。
図2】とある実施形態によるマスターボットを実装するコンピューティングシステムの簡略化されるブロック図である。
図3】とある実施形態によるスキルボットを実装するコンピューティングシステムの簡略化されるブロック図である。
図4A】さまざまな実施形態によるチャットボットのトレーニングおよび展開システムの簡略化されるブロック図である。
図4B】さまざまな実施形態による機械学習モデルの簡略化されるブロック図である。
図5A】とある実施形態によるパスドロップアウトを備えた機械学習モデルを生成し、使用するプロセスを示すフローチャートである。
図5B】いくつかの実施形態による、ドロップアウトを伴うトークン対の一例を示す図である。
図6】さまざまな実施形態を実装するための分散システムの簡略図を示す図である。
図7】さまざまな実施形態による、実施形態のシステムの1つまたは複数の構成要素によって提供されるサービスがクラウドサービスとして提供され得るシステム環境の1つまたは複数の構成要素の簡略化されるブロック図である。
図8】さまざまな実施形態を実装するために使用され得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0016】
詳細な説明
以下の説明では、説明の目的で、とある実施形態の完全な理解を提供するために具体的な詳細が記載される。しかし、これらの具体的な詳細がなくても、さまざまな実施形態を実施できることは明らかであろう。図および説明は制限的なものではない。「例示的な」という言葉は、本明細書では「例、実例、または説明として機能する」という意味で使用される。本明細書で「例示的」として説明される実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0017】
序論
人工知能には多くの用途がある。例えば、デジタルアシスタントは、ユーザが自然言語での会話でさまざまなタスクを実行できるようにする人工知能駆動のインターフェースである。デジタルアシスタントごとに、顧客は1つまたは複数のスキルを組み立てることができる。スキル(本明細書ではチャットボット、ボット、またはスキルボットとも呼ばれる)は、在庫の追跡、タイムカードの提出、経費報告書の作成など、特定のタイプのタスクに焦点を当てた個別のボットである。エンドユーザがデジタルアシスタントを動作すると、デジタルアシスタントはエンドユーザの入力を評価し、適切なチャットボットとの間で会話をルーティングする。デジタルアシスタントは、FACEBOOK(登録商標)メッセンジャー、SKYPE MOBILE(登録商標)メッセンジャー、ショートメッセージサービス(SMS)などのさまざまなチャネルを通じてエンドユーザに提供できる。チャネルは、さまざまなメッセージングプラットフォーム上のエンドユーザからデジタルアシスタントおよびそのさまざまなチャットボットにチャットをやり取りする。チャネルは、ユーザエージェントのエスカレーション、イベントによって開始される会話、およびテストもサポートし得る。
【0018】
チャットボットは入力される発話を処理して意味を識別する。本明細書で使用される発話またはメッセージは、チャットボットとの会話中に交換される単語のセット(例えば、1つまたは複数の文)を指す。
【0019】
チャットボットシステムなどの人工知能ベースの技術によって実行される処理の一部として、名前付きエンティティ認識は、名前付きエンティティ認識(NER)構成要素によって実行され得る。NERは、固有名(例えば、フロリダ)、商品(例えば、靴)、サービス(例えば、マッサージ)などの物の名前を認識するようにトレーニングされるモデルである。NERは、色やサイズなどの説明的な単語やフレーズを認識するようにトレーニングされることもできる。したがって、本明細書で使用される「名前付きエンティティ」または「エンティティ」には、機械学習モデルが識別するようにトレーニングされる単語またはフレーズ(物品、およびそのような物品に関連付けられる単語またはフレーズを含む)が含まれ得る。名前付きエンティティを認識すると、NERは対応する単語またはフレーズに名前付きエンティティタイプのラベルを付けることができる。名前付きエンティティタイプは、名前付きエンティティのカテゴリである。例えば、「NewYork」というフレーズには名前付きエンティティタイプcityのラベルが付けられ、「seventy」という単語には名前付きエンティティタイプtemperatureのラベルが付けられる。NERは、識別される単語またはフレーズに対応する名前付きエンティティを識別するようにトレーニングされる機械学習モデル(例えば、ニューラルネットワーク)を含む。
【0020】
ユーザの発話に基づいて名前付きエンティティを正確に識別できるチャットボットシステムなどの人工知能ベースのシステムを構築することは、自然言語の微妙さと曖昧さ、入力空間の次元(例えば、ユーザの発話の可能性、トレーニングデータのサイズが小さい)と出力空間のサイズ(名前付きエンティティの数)のために、部分的には困難なタスクである。一例として、トレーニングプロセスにおいて、NERモデルは周囲のコンテキスト情報ではなくエンティティ値自体に過度の焦点を置く場合がある。具体的な実施例として、「セントラルパークに行きたい」という発話では、「セントラルパーク」が名前付きエンティティであり、残りの「~に行きたい」という発話は名前付きエンティティの認識やその他のダイアログ処理タスクに使用できるコンテキスト情報を提供する。従来の技術を使用して名前付きエンティティ認識を実行すると、コンテキスト情報へのアテンションが不十分なために一部のエンティティが誤って分類されることが観察されている。
【0021】
名前付きエンティティ認識を実行する場合、モデルはコンテキストにあまりアテンションを払わないことが多いことがわかっている。例えば、「Evergreen口座を使用してJohn$10を支払う」という発話の場合、Evergreenの後には強力なコンテキスト信号である「account」という単語が続くため、モデルはエンティティタイプMerchant Typeとして「Evergreen」をタグ付けする必要がある。例示的な結果を表1に示す。
【0022】
【表1】
【0023】
表1において、第1の列はクエリまたは入力発話であり、第2の列は識別されるターゲットの名前付きエンティティを示す。第3の列は、従来技術(例えば、本明細書で説明するドロップアウト技術を使用しない)を使用して生成される誤った名前付きエンティティタグの例を示す。例えば、ターゲットの名前付きエンティティが販売者名「Home Depot」である場合、関連するコンテキストデータへのアテンションが欠けているため、販売者名は誤ってDepotとして識別される。モデルがこのように動作する理由の1つは、トレーニング時に語彙の特徴に重点を置きすぎることである。
【0024】
いくつかの実施形態では、モデルがコンテキスト情報により重点を置くようにするために、パスドロップアウトが実装される。パスドロップアウトは、単語/部分語の埋め込みからその表現出力までのパスをドロップアウトすることによって実現できる。より具体的には、システムは、(a)図4Bに示される第2の接続412、および/または(b)アテンション重み行列の対角エントリにドロップアウトを適用する。これを行うことにより、単語/部分語入力埋め込みからその出力表現までの残りのパスがブロックされる。したがって、モデルはコンテキスト情報に依存する必要がある(例えば、本明細書で説明するように、マルチヘッド自己アテンションネットワークを介して)。
【0025】
本開示のドロップアウト技術は、機械学習モデルをトレーニングしてコンテキスト情報にさらに重点を置くようにするために使用され、改善される結果が得られる。機械学習モデルは、名前付きエンティティ認識やその他の自然言語処理タスクを実行するようにトレーニングできる。ドロップアウトには、とある層の出力および/または接続がランダムにドロップアウトまたは無視されることが含まれる。いくつかの実施形態では、コンテキスト学習を強制するために、機械学習モデル内の特定の残留接続がドロップアウトされる。
【0026】
いくつかの実施形態では、機械学習モデルは、事前トレーニングされる言語モデルの一部であり得るトランスブロックであるか、トランスブロックを含む。トランスブロックは、マルチヘッド自己アテンションネットワークを含んでいる。マルチヘッド自己アテンションネットワークは、第1の接続(例えば、前のエンコーダへ)を介して入力埋め込みを受信する。機械学習モデルは、マルチヘッド自己アテンションネットワークをバイパスして、入力埋め込みを正規化層に提供するための残留接続を含んでいる。パスドロップアウトは、残留接続をドロップアウトするために適用される。これにより、コンテキスト情報を識別するために自己アテンションが適用される可能性が高まる。
【0027】
いくつかの実施形態では、ドロップアウトは、アテンション重み行列にさらに適用され、これにより、コンテキスト学習がさらに強化され、名前付きエンティティ認識性能が向上する。例えば、機械学習モデルは複数のアテンションヘッドを含み、各アテンションヘッドは連結されてアテンション重み行列により乗算される出力を提供する。アテンション重み行列内の選択されるエントリはランダムにドロップアウトされる。いくつかの態様では、アテンション重み行列の対角エントリがドロップアウトされる。これは、トークンとそれ自体を対にするエントリを無視することに対応する。代わりに、トークンと他のコンテキストトークンを対にするエントリが保持されるため、モデルもコンテキスト情報にますます重点を置くようになる。
【0028】
いくつかの実施形態では、ドロップアウトは、機械学習モデルのハイパーパラメータであるドロップアウトパラメータを使用して適用される。ハイパーチューニングプロセスを実行して、パスがドロップアウトされる頻度を制御する適切なドロップアウト率を選択することができる。
【0029】
ボットと分析システム
ボット(スキル、チャットボット、チャッターボット、またはトークボットとも呼ばれる)は、エンドユーザとの会話を実行できるコンピュータプログラムである。ボットは通常、自然言語メッセージを使用するメッセージングアプリケーションを通じて自然言語メッセージ(例えば、質問やコメント)に応答できる。企業は1つまたは複数のボットシステムを使用して、メッセージングアプリケーションを通じてエンドユーザと通信し得る。チャネルと呼ばれ得るメッセージングアプリケーションは、エンドユーザがすでにインストールして使い慣れている、エンドユーザが好むメッセージングアプリケーションである場合がある。したがって、エンドユーザは、ボットシステムとチャットするために新しいアプリケーションをダウンロードしてインストールする必要はない。メッセージングアプリケーションには、例えば、オーバーザトップ(OTT)メッセージングチャネル(例えば、Facebook Messenger、Facebook WhatsApp、WeChat、Line、Kik、Telegram、Talk、Skype、Slack、またはSMS)、仮想プライベートアシスタント(例えば、Amazon Dot、Echo、またはShow、Google Home、Apple HomePod)、ネイティブまたはハイブリッド/レスポンシブモバイルアプリやWebアプリケーションをチャット機能で拡張するモバイルアプリやWebアプリの拡張機能、または音声ベースの入力(例えば、対話にSiri、Cortana、Google Voice、またはその他の音声入力を使用するインターフェースを備えた装置やアプリ)が含まれ得る。
【0030】
いくつかの例では、ボットシステムは、Uniform Resource Identifier(URI)に関連付けられ得る。URIは文字列を使用してボットシステムを識別し得る。URIは、1つまたは複数のメッセージングアプリケーションシステムのWebhookとして使用できる。URIには、例えば、URL(Uniform Resource Locator)またはURN(Uniform Resource Name)が含まれ得る。ボットシステムは、メッセージングアプリケーションシステムからメッセージ(例えば、ハイパーテキスト転送プロトコル(HTTP)の呼び出し後メッセージ)を受信するように設計され得る。HTTPポスト呼び出しメッセージは、メッセージングアプリケーションシステムからURIに送信され得る。いくつかの実施形態では、メッセージはHTTPポスト呼び出しメッセージとは異なる場合がある。例えば、ボットシステムはショートメッセージサービス(SMS)からメッセージを受信し得る。本明細書での説明は、ボットシステムがメッセージとして受信する通信に言及し得るが、メッセージは、HTTPポスト呼び出しメッセージ、SMSメッセージ、または2つのシステム間の他の任意のタイプの通信であり得ることを理解されたい。
【0031】
エンドユーザは、ちょうど人間間の対話と同様に、会話型対話(会話型ユーザインターフェース(UI)と呼ばれることもある)を通じてボットシステムと対話することができる。場合によっては、対話には、エンドユーザがボットに「こんにちは」と言うと、ボットが「こんにちは」と応答して、どのように役立ち得るかをエンドユーザに尋ねることが含まれ得る。場合によっては、この対話は、例えば、ある口座から別の口座への送金など、銀行ボットとの取引上の対話、例えば、休暇残高の確認など、人事ボットとの情報対話、または、例えば、購入した商品の返品について話し合ったり、技術サポートを求めたりするなど、小売ボットとの対話である場合もある。
【0032】
いくつかの実施形態では、ボットシステムは、ボットシステムの管理者または開発者と対話することなく、エンドユーザの対話をインテリジェントに処理することができる。例えば、エンドユーザは、所望の目標を達成するために、ボットシステムに1つまたは複数のメッセージを送信し得る。メッセージには、テキスト、絵文字、音声、画像、ビデオ、またはその他のメッセージ伝達方法などのとあるコンテンツが含まれ得る。いくつかの実施形態では、ボットシステムは、コンテンツを標準化される形式(例えば、適切なパラメータを備えた企業サービスに対する表現状態転送(REST)呼び出し)に変換し、自然言語応答を生成することができる。ボットシステムは、エンドユーザに追加の入力パラメータを促したり、他の追加情報を要求したりすることもできる。いくつかの実施形態では、ボットシステムは、エンドユーザの発話に受動的に応答するのではなく、エンドユーザとの通信を開始することもできる。本明細書では、ボットシステムの明示的な呼び出しを識別し、呼び出されるボットシステムへの入力を決定するためのさまざまな技術について説明する。とある実施形態では、明示的な呼び出し分析は、発話内の呼び出し名の検出に基づいてマスターボットによって実行される。呼び出し名の検出に応答して、その呼び出し名に関連付けられるスキルボットへの入力のために発話を改良することができる。
【0033】
ボットとの会話は、複数の状態を含む特定の会話フローに従うことができる。フローは、入力に基づいて次に何が起こるかを定義できる。いくつかの実施形態では、ユーザ定義の状態(例えば、エンドユーザの意図)と、その状態において、または状態から状態へと実行するアクションを含む状態機械を使用して、ボットシステムを実装することができる。会話はエンドユーザの入力に基づいて異なるパスをたどる場合があり、それがボットによるフローの決定に影響を与える可能性がある。例えば、各状態で、エンドユーザの入力または発話に基づいて、ボットはエンドユーザの意図を決定し、次に実行する適切なアクションを決定できる。本明細書および発話のコンテキストにおいて使用される場合、「意図」という用語は、発話を提供したユーザの意図を指す。例えば、ユーザはピザを注文するためにボットと会話することを意図している場合があり、その結果、ユーザの意図は「ピザを注文する」という発話を通じて表現され得る。ユーザの意図は、ユーザが代わりにチャットボットに実行してほしい特定のタスクに向けることができる。したがって、発話は、ユーザの意図を反映した質問、コマンド、要求などの表現にすることができる。意図には、エンドユーザが達成したい目標が含まれ得る。
【0034】
チャットボットの構成に関連して、「意図」という用語は、本明細書では、ユーザの発話を、チャットボットが実行できる特定のタスク/アクション、またはタスク/アクションのカテゴリにマッピングするための構成情報を指すために使用される。発話の意図(つまり、ユーザの意図)とチャットボットの意図を区別するために、後者を本明細書では「ボットの意図」と呼ぶことがある。ボットの意図には、その意図に関連付けられる1つまたは複数の発話のセットが含まれ得る。例えば、ピザを注文するという意図には、ピザを注文したいという願望を表す発話のさまざまな並べ換えが含まれ得る。これらの関連する発話を使用して、チャットボットの意図分類子をトレーニングし、その後、ユーザからの入力発話がピザの注文の意図と一致するかどうかを意図分類子が決定できるようにすることができる。ボットの意図は、ユーザととある状態で会話を開始するための1つまたは複数のダイアログフローに関連付けることができる。例えば、ピザの注文意図の第1のメッセージは、「どのような種類のピザが好きであるか?」という質問にすることができる。関連する発話に加えて、ボットの意図には、意図に関連する名前付きエンティティがさらに含まれ得る。例えば、ピザの注文意図には、ピザを注文するタスクを実行するために使用される変数またはパラメータ、例えば、トッピング1、トッピング2、ピザのタイプ、ピザのサイズ、ピザの量などを含めることができる。エンティティの値は通常、ユーザとの会話を通じて取得される。
【0035】
図1は、とある実施形態によるチャットボットシステムを組み込んだ環境100の簡略化されるブロック図である。環境100は、DABP102のユーザがデジタルアシスタントまたはチャットボットシステムを作成および展開できるようにするデジタルアシスタントビルダプラットフォーム(DABP)102を備える。DABP102を使用して、1つまたは複数のデジタルアシスタント(またはDA)またはチャットボットシステムを作成できる。例えば、図1に示されるように、特定の企業を代表するユーザ104は、DABP102を使用して、特定の企業のユーザのためにデジタルアシスタント106を作成し展開することができる。例えば、銀行はDABP102を使用して、銀行の顧客が使用する1つまたは複数のデジタルアシスタントを作成できる。同じDABP102プラットフォームを複数の企業が使用してデジタルアシスタントを作成できる。別の例として、レストラン(例えば、ピザ店)のオーナーは、DABP102を使用して、レストランの顧客が食べ物を注文(例えば、ピザを注文)できるようにするデジタルアシスタントを作成して展開することができる。
【0036】
本開示の目的上、「デジタルアシスタント」は、デジタルアシスタントのユーザが自然言語会話を通じてさまざまなタスクを達成するのを支援するエンティティである。デジタルアシスタントは、ソフトウェアのみを使用して(例えば、デジタルアシスタントは、1つまたは複数のプロセッサによって実行可能なプログラム、コード、または命令を使用して実装されるデジタルエンティティである)、ハードウェアを使用して、またはハードウェアとソフトウェアの組み合わせを使用して実装することができる。デジタルアシスタントは、コンピュータ、携帯電話、時計、電化製品、車両などのさまざまな物理システムまたは装置で具体化または実装することができる。デジタルアシスタントは、チャットボットシステムと呼ばれることもある。したがって、本開示の目的上、デジタルアシスタントとチャットボットシステムという用語は交換可能である。
【0037】
DABP102を使用して構築されるデジタルアシスタント106などのデジタルアシスタントを使用して、デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を介してさまざまなタスクを実行することができる。会話の一部として、ユーザは、デジタルアシスタント106に1つまたは複数のユーザ入力110を提供し、デジタルアシスタント106から応答112を得ることができる。会話には、入力110と応答112の1つまたは複数を含めることができる。これらの会話を介して、ユーザは、デジタルアシスタントによって実行される1つまたは複数のタスクを要求することができ、これに応じて、デジタルアシスタントは、ユーザが要求したタスクを実行し、ユーザに適切な応答で応答するように構成される。
【0038】
ユーザ入力110は、一般に自然言語形式であり、発話と呼ばれる。ユーザ発話110は、ユーザが文、質問、テキストの断片、または単一の単語を入力し、それを入力としてデジタルアシスタント106に提供する場合など、テキスト形式とすることができる。いくつかの実施形態では、ユーザ発話110は、デジタルアシスタント106への入力として提供される何かをユーザが言うか話すときなど、音声入力または音声形式であり得る。発話は通常、ユーザ108が話す言語で行われる。例えば、発話は英語または他の言語で行われ得る。発話が音声形式である場合、音声入力はその特定の言語のテキスト形式の発話に変換され、テキスト発話はデジタルアシスタント106によって処理される。さまざまな音声からテキストへの処理技術を使用して、音声または音声入力をテキスト発話に変換することができ、その後デジタルアシスタント106によって処理される。いくつかの実施形態では、音声からテキストへの変換は、デジタルアシスタント106自体によって行われてもよい。
【0039】
発話は、テキスト発話または音声発話であり得、断片、文、複数の文、1つまたは複数の単語、1つまたは複数の質問、前述のタイプの組み合わせなどであることができる。デジタルアシスタント106は、発話に自然言語理解(NLU)技術を適用して、ユーザ入力の意味を理解するように構成されている。発話に対するNLU処理の一環として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成されており、これには、発話に対応する1つまたは複数の意図と1つまたは複数のエンティティを識別することが含まれる。発話の意味を理解すると、デジタルアシスタント106は、理解した意味または意図に応じて1つまたは複数のアクションまたは動作を実行することができる。本開示の目的上、発話は、デジタルアシスタント106のユーザ108によって直接提供されるテキスト発話であるか、または入力音声発話をテキスト形式に変換した結果であると仮定する。しかし、これはいかなる形でも限定または制限することを意図したものではない。
【0040】
例えば、ユーザ108の入力は、「ピザを注文したい」などの発話を提供することによって、ピザの注文を要求することができる。このような発話を受信すると、デジタルアシスタント106は、発話の意味を理解し、適切なアクションを実行するように構成される。適切なアクションには、例えば、ユーザが注文したいピザのタイプ、ピザのサイズ、ピザのトッピングなどについてのユーザ入力を求める質問でユーザに応答することが含まれ得る。デジタルアシスタント106によって提供される応答はまた、自然言語形式であってもよく、通常は入力発話と同じ言語であってもよい。これらの応答を生成する一環として、デジタルアシスタント106は自然言語生成(NLG)を実行することができる。ピザを注文するユーザの場合、ユーザとデジタルアシスタント106との間の会話を介して、デジタルアシスタントは、ピザの注文に必要な情報をすべて提供するようにユーザを誘導し、その後、会話の終わりにピザを注文させることができる。デジタルアシスタント106は、ピザが注文されることを示す情報をユーザに出力することによって会話を終了することができる。
【0041】
概念的なレベルでは、デジタルアシスタント106は、ユーザから受信した発話に応じてさまざまな処理を実行する。いくつかの実施形態では、この処理には、一連の処理ステップまたはパイプラインの処理ステップが含まれ、例えば、入力発話の意味を理解(自然言語理解(NLU)とも呼ばれる)することと、発話に応じて実行されるアクションを決定することと、そこでアクションの実行を適切に引き起こすことと、ユーザの発話に応答してユーザに出力される応答を生成すること、応答をユーザに出力することなどを含む。NLU処理は、受信した入力発話を解析して発話の構造および意味を理解すること、発話を改良および再形成して発話のより理解しやすい形式(例えば、論理形式)または構造を開発することを含むことができる。応答の生成には、NLG技術の使用が含まれ得る。
【0042】
デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理には、文解析などのさまざまなNLP関連処理が含まれ得る(例えば、トークン化、見出語化、文の品詞タグの識別、文内の名前付きエンティティの識別、文構造を表す依存関係ツリーの生成、文を文節に分割、個々の文節の分析、照応の解決、チャンキングの実行、など)。とある実施形態では、NLU処理またはその一部はデジタルアシスタント106自体によって実行される。いくつかの他の実施形態では、デジタルアシスタント106は、他のリソースを使用してNLU処理の一部を実行することができる。例えば、入力発話文の構文および構造は、パーサ、品詞タガー、および/または名前付きエンティティ認識装置を使用して文を処理することによって識別され得る。一実装では、英語の場合、パーサ、品詞タガー、およびスタンフォード自然言語処理(NLP)グループによって提供されるものなどの名前付きエンティティ認識装置が、文の構造および構文を分析するために使用される。これらは、Stanford CoreNLPツールキットの一部として提供される。
【0043】
本開示で提供されるさまざまな例は英語での発話を示しているが、これは例としてのみ意味されている。とある実施形態では、デジタルアシスタント106は、英語以外の言語での発話を処理することもできる。デジタルアシスタント106は、異なる言語の処理を実行するように構成されるサブシステム(例えば、NLU機能を実装する構成要素)を提供することができる。これらのサブシステムは、NLUコアサーバからのサービス呼び出しを使用して呼び出すことができるプラグイン可能な装置として実装できる。これにより、異なる処理順序が可能になるなど、NLU処理が言語ごとに柔軟かつ拡張可能になる。言語パックは個別の言語に対して提供され得、言語パックはNLUコアサーバから提供できるサブシステムのリストを登録できる。
【0044】
図1に示すデジタルアシスタント106などのデジタルアシスタントは、さまざまな異なるチャネルを通じてそのユーザ108が利用可能またはアクセスできるようにすることができ、とあるアプリケーション経由、ソーシャルメディアプラットフォーム経由、さまざまなメッセージングサービスやアプリケーション経由、その他のアプリケーションやチャネル経由などであるが、これらに限定されない。1つのデジタルアシスタントに複数のチャネルを構成して、異なるサービス上で実行したり、同時にアクセスしたりできるようにすることができる。
【0045】
デジタルアシスタントまたはチャットボットシステムは、一般に、1つまたは複数のスキルを含むか、またはそれに関連付けられている。とある実施形態では、これらのスキルは、ユーザと対話し、特定のタイプのタスクを実行するように構成される個別のチャットボット(スキルボットと呼ばれる)であり、例えば、在庫の追跡、タイムカードの提出、経費報告書の作成、食品の注文、銀行口座の確認、予約、ウィジェットの購入などである。例えば、図1に示される実施形態の場合、デジタルアシスタントまたはチャットボットシステム106は、スキル116-1、116-2などを含む。本開示の目的上、「スキル」および「スキル(複数)」という用語は、それぞれ「スキルボット」および「スキルボット(複数)」という用語と同義的に使用される。
【0046】
デジタルアシスタントに関連付けられる各スキルは、デジタルアシスタントのユーザがユーザとの会話を通じてタスクを完了するのに役立ち、その会話には、ユーザによって提供されるテキストまたは音声入力と、スキルボットによって提供される応答との組み合わせが含まれ得る。これらの応答は、ユーザへのテキストまたは音声メッセージの形式、および/またはユーザが選択できるようにユーザに提示される単純なユーザインターフェース要素(例えば、選択リスト)を使用し得る。
【0047】
スキルまたはスキルボットをデジタルアシスタントに関連付けたり追加したりできるさまざまな方法がある。場合によっては、スキルボットを企業が開発し、次いで、DABP102を使用してデジタルアシスタントに追加することができる。他の例では、スキルボットはDABP102を使用して開発および作成され、その後DABP102を使用して作成されるデジタルアシスタントに追加され得る。さらに他の例では、DABP102は、広範囲のタスクに向けられる複数のスキルを提供するオンラインデジタルストア(「スキルストア」と呼ばれる)を提供する。スキルストアを通じて提供されるスキルは、さまざまなクラウドサービスを公開することもできる。DABP102を使用して生成されているデジタルアシスタントにスキルを追加するには、DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択されるスキルがDABP102を使用して作成されるデジタルアシスタントに追加されることを示すことができる。スキルストアのスキルは、そのまままたは変更される形式でデジタルアシスタントに追加できる(例えば、DABP102のユーザは、スキルストアによって提供される特定のスキルボットを選択して複製し、選択されるスキルボットにカスタマイズまたは変更を加え、次いで、変更されるスキルボットを、DABP102を使用して作成されるデジタルアシスタントに追加することができる)。
【0048】
デジタルアシスタントまたはチャットボットシステムを実装するために、さまざまな異なるアーキテクチャを使用することができる。例えば、とある実施形態では、DABP102を使用して作成および展開されるデジタルアシスタントは、マスターボット/子(またはサブ)ボットのパラダイムまたはアーキテクチャを使用して実装され得る。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つまたは複数の子ボットと対話するマスターボットとして実装される。例えば、図1に示される実施形態では、デジタルアシスタント106は、マスターボット114と、マスターボット114の子ボットであるスキルボット116-1、116-2などを備える。とある実施形態では、デジタルアシスタント106自体がマスターボットとして機能するとみなされる。
【0049】
マスター子ボットアーキテクチャに従って実装されるデジタルアシスタントにより、デジタルアシスタントのユーザは、統一されるユーザインターフェース、すなわち、マスターボットを介して複数のスキルと対話できるようになる。ユーザがデジタルアシスタントを動作すると、ユーザ入力はマスターボットによって受信される。次に、マスターボットは、ユーザ入力の発話の意味を決定する処理を実行する。次に、マスターボットは、発話内でユーザによって要求されるタスクがマスターボット自体で処理できるかどうかを決定する。そうでない場合、マスターボットは、ユーザの要求を処理するための適切なスキルボットを選択し、選択したスキルボットに会話をルーティングする。これにより、ユーザは共通の単一インターフェースを介してデジタルアシスタントと会話できるようになり、特定のタスクを実行するように構成される複数のスキルボットを使用する機能も提供される。例えば、企業向けに開発されるデジタルアシスタントの場合、デジタルアシスタントのマスターボットは、特定の機能を備えたスキルボットと連携することができ、例えば、顧客関係管理(CRM)に関連する機能を実行するCRMボット、企業リソースプランニング(ERP)に関連する機能を実行するERPボット、人的資本管理(HCM)に関連する機能を実行するHCMボットなどである。このようにして、デジタルアシスタントのエンドユーザまたは消費者は、共通のマスターボットインターフェースを介してデジタルアシスタントへアクセスする方法を知るだけで済み、ユーザの要求を処理するために陰で複数のスキルボットが提供される。
【0050】
とある実施形態では、マスターボット/子ボットのインフラストラクチャにおいて、マスターボットは、利用可能なスキルボットのリストを認識するように構成される。マスターボットは、利用可能なさまざまなスキルボットを識別するメタデータ、およびスキルボットごとに、スキルボットによって実行できるタスクを含むスキルボットの機能にアクセスできる。マスターボットは、発話の形式でユーザ要求を受信すると、複数の利用可能なスキルボットの中から、ユーザ要求に最もよく応えまたは処理することができる特定のスキルボットを特定または予測するように構成されている。次に、マスターボットは、発話(または発話の一部)をその特定のスキルボットにルーティングして、さらに処理する。したがって、制御はマスターボットからスキルボットに流れる。マスターボットは複数の入出力チャネルをサポートできる。とある実施形態では、ルーティングは、1つまたは複数の利用可能なスキルボットによって実行される処理を利用して実行され得る。例えば、以下で説明するように、スキルボットは、発話の意図を推測し、推測される意図がスキルボットに構成されている意図と一致するかどうかを決定するようにトレーニングできる。したがって、マスターボットによって実行されるルーティングには、スキルボットが発話の処理に適した意図を使用して構成されているかどうかの指示をマスターボットに通信することが含まれ得る。
【0051】
図1の実施形態は、マスターボット114とスキルボット116-1、116-2、および116-3を備えるデジタルアシスタント106を示しているが、これに限定されるものではない。デジタルアシスタントは、デジタルアシスタントの機能を提供する他のさまざまな構成要素(例えば、他のシステムおよびサブシステム)を含むことができる。これらのシステムおよびサブシステムは、ソフトウェア(例えば、コンピュータ可読媒体に記憶され、1つまたは複数のプロセッサによって実行可能なコード、命令)のみで、ハードウェアのみで、またはソフトウェアとハードウェアの組み合わせを使用する実装で実装され得る。
【0052】
DABP102は、DABP102のユーザがデジタルアシスタントに関連付けられる1つまたは複数のスキルボットを含むデジタルアシスタントを作成できるようにするインフラストラクチャおよびさまざまなサービスおよび機能を提供する。場合によっては、スキルボットは、既存のスキルボットを複製することによって、例えば、スキルストアによって提供されるスキルボットを複製することによって作成できる。前に示したように、DABP102は、さまざまなタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットを複製できる。必要に応じて、複製されるスキルボットに変更やカスタマイズを加えることができる。他の例では、DABP102のユーザが、DABP102が提供するツールとサービスを使用して、スキルボットをゼロから作成した。前に示したように、DABP102によって提供されるスキルストアまたはスキルカタログは、さまざまなタスクを実行するための複数のスキルボットを提供することができる。
【0053】
とある実施形態では、高レベルで、スキルボットの作成またはカスタマイズには次のステップが含まれる。
【0054】
(1)新しいスキルボットの設定の構成
(2)スキルボットの1つまたは複数の意図を構成する
(3)1つまたは複数の意図に対する1つまたは複数のエンティティの構成
(4)スキルボットのトレーニング
(5)スキルボットのダイアログフローの作成
(6)必要に応じてスキルボットにカスタム構成要素を追加する
(7)スキルボットのテストと展開
上記の各ステップについて、以下に簡単に説明する。
【0055】
(1)新しいスキルボットの設定の構成-スキルボットに対してさまざまな設定を構成することができる。例えば、スキルボットの設計者は、作成するスキルボットの1つまたは複数の呼び出し名を指定できる。これらの呼び出し名は、次いで、デジタルアシスタントのユーザがスキルボットを明示的に呼び出すために使用できる。例えば、ユーザはユーザの発話に呼び出し名を入力して、対応するスキルボットを明示的に呼び出すことができる。
【0056】
(2)スキルボットの1つまたは複数の意図および関連する発話例の構成-スキルボット設計者は、作成されるスキルボットの1つまたは複数の意図(ボットの意図とも呼ばれる)を指定する。次に、スキルボットは、これらの指定される意図に基づいてトレーニングされる。これらの意図は、スキルボットが入力発話を推測するようにトレーニングされるカテゴリまたはクラスを表す。発話を受信すると、トレーニングされるスキルボットは発話の意図を推測する。推測される意図は、スキルボットのトレーニングに使用される定義済みの意図のセットから選択される。次に、スキルボットは、発話に対して推定される意図に基づいて、発話に応じて適切なアクションを実行する。場合によっては、スキルボットの意図は、スキルボットがデジタルアシスタントのユーザに対して実行できるタスクを表す。各意図には、意図識別子または意図名が与えられる。例えば、銀行用にトレーニングされるスキルボットの場合、スキルボットに指定される意図には、「CheckBalance」、「TransferMoney」、「DepositCheck」などが含まれ得る。
【0057】
スキルボットに対して定義される各意図に対して、スキルボット設計者は、その意図を表し説明する1つまたは複数の発話例を提供することもできる。これらの発話例は、ユーザがその意図のためにスキルボットに入力できる発話を表すことを目的としている。例えば、CheckBalance意図の場合、発話の例には、「普通預金口座の残高はいくらであるか?」、「当座預金口座にはいくらあるか?」、「口座にはいくらお金があるか?」などが含まれ得る。したがって、典型的なユーザ発話のさまざまな並べ換えを、意図に対する発話例として指定することができる。
【0058】
意図とそれに関連する例の発話は、スキルボットをトレーニングするためのトレーニングデータとして使用される。さまざまな異なるトレーニング技術が使用されてもよい。このトレーニングの結果、発話を入力として受信し、予測モデルによって発話に対して推測される意図を出力するように構成される予測モデルが生成される。場合によっては、入力発話は意図分析エンジンに提供され、トレーニングされるモデルを使用して入力発話の意図を予測または推論するように構成される。スキルボットは、推測される意図に基づいて1つまたは複数のアクションを実行できる。
【0059】
(3)スキルボットの1つまたは複数の意図のためのエンティティの構成-場合によっては、スキルボットがユーザの発話に適切に応答できるようにするために追加のコンテキストが必要になることがある。例えば、ユーザ入力の発話がスキルボット内の同じ意図として解決される状況が考えられる。例えば、上記の例では、「私の普通預金口座の残高はいくらであるか?」、「私の当座預金口座にはいくらあるか?」という発話は、どちらも同じCheckBalance意図に解決されるが、これらの発話は異なるものを要求する異なる要求である。このような要求を明確にするために、1つまたは複数のエンティティが意図に追加される。銀行スキルボットの例を使用すると、「checking」および「saving」という値を定義するAccountTypeというエンティティにより、スキルボットがユーザ要求を解析し、適切に応答できるようになる。上の例では、発話は同じ意図に解決されるが、AccountTypeエンティティに関連付けられる値は2つの発話で異なる。これにより、スキルボットは、2つの発話が同じ意図を解決しているにもかかわらず、それらの発話に対して異なるアクションを実行できる可能性がある。スキルボット用に構成されるとある意図に対して1つまたは複数のエンティティを指定できる。したがって、エンティティは、意図自体にコンテキストを追加するために使用される。エンティティは、意図をより完全に記述するのに役立ち、スキルボットがユーザ要求を完了できるようにする。
【0060】
とある実施形態では、(a)DABP102によって提供される組み込みエンティティ、および(2)スキルボット設計者によって指定できるカスタムエンティティの2つのタイプのエンティティが存在する。組み込みエンティティは、さまざまなボットで使用できる汎用エンティティである。組み込みエンティティの例には、時間、日付、住所、番号、電子メールアドレス、期間、定期的な期間、通貨、電話番号、URLなどに関連するエンティティが含まれるが、これらに限定されない。カスタムエンティティは、よりカスタマイズされるアプリケーションに使用される。例えば、銀行スキルの場合、小切手、貯蓄、クレジットカードなどのキーワードに対するユーザ入力をチェックすることにより、さまざまな銀行取引を可能にするスキルボット設計者によってAccountTypeエンティティが定義され得る。
【0061】
(4)スキルボットのトレーニング-スキルボットは、発話の形式でユーザ入力を受信し、受信した入力を解析または処理し、受信したユーザ入力に関連する意図を識別または選択するように構成される。上で示したように、スキルボットはこのためにトレーニングされる必要がある。とある実施形態では、スキルボットは、スキルボット用に構成される意図およびその意図に関連付けられる発話例(集合的にトレーニングデータ)に基づいてトレーニングされるため、スキルボットは、ユーザ入力発話をその構成される意図の1つに解決できる。とある実施形態では、スキルボットは、トレーニングデータを使用してトレーニングされる予測モデルを使用し、スキルボットがユーザが何を言っているか(または、場合によっては言おうとしているか)を識別できるようにする。DABP102は、さまざまな機械学習ベースのトレーニング技術、ルールベースのトレーニング技術、および/またはそれらの組み合わせなど、スキルボット設計者がスキルボットをトレーニングするために使用できるさまざまなトレーニング技術を提供する。とある実施形態では、トレーニングデータの一部(例えば、80%)がスキルボットモデルのトレーニングに使用され、別の部分(例えば、残りの20%)がモデルのテストまたは検証に使用される。トレーニングが完了すると、トレーニングされるモデル(トレーニングされるスキルボットとも呼ばれる)を使用して、ユーザの発話を処理および応答できるようになる。とある場合、ユーザの発話が1つの回答のみを必要とし、それ以上の会話を必要としない質問である場合がある。このような状況に対処するために、スキルボットにQ&A(質問と回答)意図を定義することができる。これにより、スキルボットは、ダイアログ定義を更新せずに、ユーザの要求に対する応答を出力できるようになる。Q&A意図は、通常の意図と同様の方法で作成される。Q&A意図のダイアログフローは、通常の意図のダイアログフローとは異なる場合がある。
【0062】
(5)スキルボット用のダイアログフローの作成--スキルボット用に指定されるダイアログフローは、受信したユーザ入力に応じてスキルボットの異なる意図が解決されるときにスキルボットがどのように反応するかを記述する。ダイアログフローは、例えば、スキルボットがユーザの発話に応答する方法、スキルボットがユーザに入力を促す方法、スキルボットがデータを返す方法など、スキルボットが実行する動作またはアクションを定義する。ダイアログフローは、スキルボットが従うフローチャートのようなものである。スキルボット設計者は、マークダウン言語などの言語を使用してダイアログフローを指定する。とある実施形態では、OBotMLと呼ばれるYAMLのバージョンを使用して、スキルボットのダイアログフローを指定できる。スキルボットのダイアログフロー定義は、会話自体のモデルとして機能し、スキルボットの設計者がスキルボットと、スキルボットがサービスを提供するユーザとの間の対話を振り付けできるようにする。
【0063】
とある実施形態では、スキルボットのダイアログフロー定義には、次の3つのセクションが含まれる。
【0064】
(a)コンテキストセクション
(b)デフォルトの遷移セクション
(c)状態セクション
コンテキストセクション-スキルボット設計者は、コンテキストセクション内の会話フローで使用される変数を定義することができる。コンテキストセクションで名前を付けることができるその他の変数には、エラー処理用の変数、組み込みエンティティまたはカスタムエンティティ用の変数、スキルボットがユーザ設定を認識して保持できるようにするユーザ変数などが含まれるが、これらに限定されない。
【0065】
デフォルト遷移セクション-スキルボットの遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクションで定義することができる。デフォルト遷移セクションで定義される遷移はフォールバックとして機能し、状態内に定義される該当する遷移がない場合、または状態遷移をトリガーするために必要な条件が満たされない場合にトリガーされる。デフォルトの遷移セクションを使用すると、スキルボットが予期しないユーザクションを適切に処理できるようにするルーティングを定義できる。
【0066】
状態セクション-ダイアログフローおよびその関連動作は、ダイアログフロー内の論理を管理する一連の一時的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログのその時点で必要な機能を提供する構成要素に名前を付ける。したがって、状態は構成要素を中心に構築される。状態には構成要素固有のプロパティが含まれており、構成要素の実行後にトリガーされる他の状態への遷移を定義する。
【0067】
特殊な場合のシナリオは、状態セクションを使用して処理することができる。例えば、デジタルアシスタント内の第2のスキルで何かを行うために、使用している第1のスキルを一時的に離れる選択肢をユーザに提供したい場合がある。例えば、ユーザがショッピングスキルとの会話に参加している場合(例えば、ユーザが購入についていくつかの選択を行っている場合)、ユーザは銀行スキルにジャンプし(例えば、ユーザは購入に十分なお金があることを確認したい場合がある)、その後ショッピングスキルに戻ってユーザの注文を完了したい場合がある。これに対処するには、第1のスキルのアクションを構成して、同じデジタルアシスタント内の第2の異なるスキルとの対話を開始し、元のフローに戻ることができる。
【0068】
(6)カスタム構成要素をスキルボットに追加する-上述したように、スキルボットのダイアログフローで指定される状態は、その状態に対応して必要な機能を提供する構成要素に名前を付ける。構成要素を使用すると、スキルボットが機能を実行できるようになる。とある実施形態では、DABP102は、広範囲の機能を実行するための事前構成される構成要素のセットを提供する。スキルボット設計者は、これらの事前構成される構成要素を1つまたは複数選択し、それらをスキルボットのダイアログフローの状態に関連付けることができる。スキルボット設計者は、DABP102によって提供されるツールを使用してカスタム構成要素または新しい構成要素を作成し、そのカスタム構成要素をスキルボットのダイアログフロー内の1つまたは複数の状態に関連付けることもできる。
【0069】
(7)スキルボットのテストおよび展開-DABP102は、スキルボット設計者が開発中のスキルボットをテストできるようにするいくつかの機能を提供する。その後、スキルボットを展開してデジタルアシスタントに含めることができる。
【0070】
上記の説明はスキルボットの作成方法を説明しているが、同様の技術を使用してデジタルアシスタント(またはマスターボット)を作成することもできる。マスターボットまたはデジタルアシスタントレベルで、組み込みシステム意図をデジタルアシスタント用に構成できる。これらの組み込みシステム意図は、デジタルアシスタントに関連付けられるスキルボットを呼び出すことなくデジタルアシスタント自体(つまり、マスターボット)が処理できる一般的なタスクを識別するために使用される。マスターボットに対して定義されるシステム意図の例は次のとおりである。(1)終了:ユーザがデジタルアシスタントの現在の会話またはコンテキストを終了したいという信号を送ったときに適用される。(2)ヘルプ:ユーザがヘルプや方向性を求めた場合に適用される。(3)UnresolvedIntent:終了およびヘルプ意図とよく一致しないユーザ入力に適用される。デジタルアシスタントは、デジタルアシスタントに関連付けられる1つまたは複数のスキルボットに関する情報も記憶する。この情報により、マスターボットは発話を処理するための特定のスキルボットを選択できる。
【0071】
マスターボットまたはデジタルアシスタントレベルでは、ユーザがフレーズまたは発話をデジタルアシスタントに入力すると、デジタルアシスタントは、発話および関連する会話をルーティングする方法を決定する処理を実行するように構成される。デジタルアシスタントは、ルールベース、AIベース、またはそれらの組み合わせであり得るルーティングモデルを使用してこれを決定する。デジタルアシスタントはルーティングモデルを使用して、ユーザ入力発話に対応する会話が処理のために特定のスキルにルーティングされるべきか、組み込みシステム意図に従ってデジタルアシスタントまたはマスターボット自体によって処理されるべきか、あるいは現在の会話フローでは別の状態として扱われるべきかを決定する。
【0072】
とある実施形態では、この処理の一部として、デジタルアシスタントは、ユーザ入力発話がその呼び出し名を使用してスキルボットを明示的に識別するかどうかを決定する。ユーザ入力に呼び出し名が存在する場合、その呼び出し名に対応するスキルボットの明示的な呼び出しとして扱われる。このようなシナリオでは、デジタルアシスタントは、さらなる処理のために明示的に呼び出されるスキルボットにユーザ入力をルーティングし得る。特定のまたは明示的な呼び出しがない場合、とある実施形態では、デジタルアシスタントは、受信したユーザ入力発話を評価し、システム意図およびデジタルアシスタントに関連付けられるスキルボットの信頼スコアを計算する。スキルボットまたはシステム意図に対して計算されるスコアは、ユーザ入力がスキルボットが実行するように構成されているタスクを表す可能性、またはシステム意図を表す可能性を表す。関連する計算される信頼スコアが閾値(例えば、信頼閾値ルーティングパラメータ)を超えるシステム意図またはスキルボットが、さらなる評価の候補として選択される。次に、デジタルアシスタントは、識別される候補から、ユーザ入力発話をさらに処理するための特定のシステム意図またはスキルボットを選択する。とある実施形態では、1つまたは複数のスキルボットが候補として識別される後、それらの候補スキルに関連付けられる意図が(各スキルの意図モデルに従って)評価され、各意図について信頼スコアが決定される。一般に、信頼スコアが閾値(例えば70%)を超える意図は、候補意図として扱われる。特定のスキルボットが選択されている場合、ユーザの発話はさらなる処理のためにそのスキルボットにルーティングされる。システム意図が選択されている場合、選択されるシステム意図に従ってマスターボット自体によって1つまたは複数のアクションが実行される。
【0073】
図2は、とある実施形態によるマスターボット(MB)システム200の簡略化されるブロック図である。MBシステム200は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアの組み合わせで実装できる。MBシステム200は、前処理サブシステム210、マルチ意図サブシステム(MIS)220、明示的呼び出しサブシステム(EIS)230、スキルボット呼び出し部240、およびデータストア250を含む。図2に示されるMBシステム200は、マスターボット内の構成要素の配置の一例にすぎない。当業者であれば、多くの可能な変形例、代替例、および修正例を認識するであろう。例えば、いくつかの実装では、MBシステム200は、図2に示されるものよりも多いまたは少ないシステムまたは構成要素を有してもよく、2つ以上のサブシステムを組み合わせてもよく、またはサブシステムの異なる構成または配置を有してもよい。
【0074】
前処理サブシステム210は、ユーザからの発話「A」202を受信し、言語検出器212および言語パーサ214を介して発話を処理する。上で示したように、発話は音声やテキストなどのさまざまな方法で提供できる。発話202は、文の断片、完全な文、複数の文などであり得る。発話202には句読点を含めることができる。例えば、発話202が音声として提供される場合、前処理サブシステム210は、結果として得られるテキストに句読点(例えば、カンマ、セミコロン、ピリオドなど)を挿入する音声テキストコンバータ(図示せず)を使用して音声をテキストに変換することができる。
【0075】
言語検出器212は、発話202のテキストに基づいて発話202の言語を検出する。各言語は独自の文法および意味論を有するため、発話202が処理される方法は言語に依存する。発話の構文と構造を分析する際には、言語間の違いが考慮される。
【0076】
言語パーサ214は、発話202を解析して、発話202内の個々の言語単位(例えば、単語)の品詞(POS)タグを抽出する。POSタグには、例えば、名詞(NN)、代名詞(PN)、動詞(VB)などが含まれる。言語パーサ214は、発話202の言語単位をトークン化し(例えば、各単語を別個のトークンに変換するために)、単語を見出し語化することもできる。補題は、辞書で表される単語セットの主な形式である(例えば、「run」は、run、runs、ran、runningなどの補題である)。言語パーサ214が実行できる他のタイプの前処理には、複合表現のチャンク化、例えば、「credit」と「card」を単一の表現「credit_card」に組み合わせることが含まれる。言語パーサ214は、発話202内の単語間の関係を識別することもできる。例えば、いくつかの実施形態では、言語パーサ214は、発話のどの部分(例えば、特定の名詞)が直接目的語であるか、発話のどの部分が前置詞であるかなどを示す依存関係ツリーを生成する。言語パーサ214によって実行される処理の結果は、抽出される情報205を形成し、発話202自体とともに入力としてMIS220に提供される。
【0077】
上で示したように、発話202は複数の文を含むことができる。複数の意図と明示的な呼び出しを検出する目的で、発話202は、複数の文が含まれている場合でも単一の単位として扱うことができる。しかし、とある実施形態では、例えば前処理サブシステム210によって前処理を実行して、複数の意図分析および明示的呼び出し分析のために複数の文の中から単一の文を識別することができる。一般に、MIS220およびEIS230によって生成される結果は、発話202が個々の文のレベルで処理されるか、または複数の文を含む単一の単位として処理されるかに関係なく、実質的に同じである。
【0078】
MIS220は、発話202が複数の意図を表すかどうかを決定する。MIS220は発話202内の複数の意図の存在を検出できるが、MIS220によって実行される処理には、発話202の意図がボット用に構成される任意の意図と一致するかどうかを決定することは含まれない。代わりに、発話202の意図がボットの意図と一致するかどうかを決定するための処理は、MBシステム200の意図分類器242によって、またはスキルボットの意図分類器によって実行され得る(例えば、図3の実施形態に示されるように)。MIS220によって実行される処理では、発話202を処理できるボット(例えば、特定のスキルボットまたはマスターボット自体)が存在することを仮定している。したがって、MIS220によって実行される処理では、チャットボットシステム内のボットに関する知識(例えば、マスターボットに登録されているスキルボットのID)や、特定のボットに対して構成されている意図に関する知識は必要ない。
【0079】
発話202が複数の意図を含むことを決定するために、MIS220は、データストア250内のルールセット252から1つまたは複数のルールを適用する。発話202に適用されるルールは、発話202の言語に依存し、複数の意図の存在を示す文パターンを含み得る。例えば、文パターンは、文の2つの部分(例えば接続詞)を結合する等位接続詞を含むことができ、両方の部分は別個の意図に対応する。発話202が文パターンと一致する場合、発話202は複数の意図を表していると推測できる。複数の意図を含む発話は、必ずしも異なる意図を持っているわけではないことに留意されたい(例えば、異なるボットに向けられる意図、または同じボット内の異なる意図に向けられる意図)。代わりに、発話には同じ意図の個別のインスタンスが含まれ得る。例えば、「支払い口座Xを使用してピザを注文し、次に支払い口座Yを使用してピザを注文する」などである。
【0080】
発話202が複数の意図を表していることを決定する一環として、MIS220はまた、発話202のどの部分が各意図に関連付けられているかを決定する。MIS220は、複数の意図を含む発話で表現される各意図に対して、図2に示すように、元の発話の代わりに別々に処理するための新しい発話、例えば発話「B」206と発話「C」208を構築する。したがって、元の発話202は、一度に1つずつ処理される2つ以上の別個の発話に分割することができる。MIS220は、抽出される情報205を使用して、および/または発話202自体の分析から、2つ以上の発話のうちどれを最初に処理すべきかを決定する。例えば、MIS220は、発話202が、特定の意図が最初に処理されるべきであることを示す標識語を含むと決定することができる。この特定の意図に対応する新しく形成される発話(例えば、発話206または発話208の1つ)は、EIS230によるさらなる処理のために最初に送信されることになる。第1の発話によって引き起こされる会話が終了した(または一時的に中断される)後、次に優先度の高い発話(例えば発話206または発話208の他方)を処理のためにEIS230に送信することができる。
【0081】
EIS230は、受信した発話(例えば、発話206または発話208)がスキルボットの呼び出し名を含むかどうかを決定する。とある実施形態では、チャットボットシステム内の各スキルボットには、そのスキルボットをチャットボットシステム内の他のスキルボットから区別する固有の呼び出し名が割り当てられる。呼び出し名のリストは、データストア250内のスキルボット情報254の一部として維持することができる。発話に呼び出し名と一致する単語が含まれている場合、その発話は明示的な呼び出しであるとみなされる。ボットが明示的に呼び出されない場合、EIS230によって受信される発話は、非明示的に呼び出している発話234とみなされ、マスターボットの意図分類器(例えば、意図分類器242)に入力されて、発話を処理するためにどのボットを使用するかを決定する。場合によっては、意図分類器242は、マスターボットが非明示的に呼び出す発話を処理すべきであると決定することになる。他の例では、意図分類器242は、発話を処理のためにルーティングするスキルボットを決定する。
【0082】
EIS230によって提供される明示的呼び出し機能には、いくつかの利点がある。マスターボットが実行する必要がある処理の量を削減できる。例えば、明示的な呼び出しがある場合、マスターボットは、意図分類分析(例えば、意図分類器242を使用)を行う必要がない場合もあり、スキルボットを選択するために縮小される意図分類分析を行う必要がある場合もある。したがって、明示的呼び出し分析により、意図分類分析に頼ることなく、特定のスキルボットの選択が可能になる場合がある。
【0083】
また、複数のスキルボット間で機能が重複する状況もあり得る。これは、例えば2つのスキルボットによって処理される意図が重複している場合、または互いに非常に近い場合に発生し得る。このような状況では、マスターボットが意図分類分析のみに基づいて複数のスキルボットのうちどれを選択するかを識別することが困難な場合がある。このようなシナリオでは、明示的な呼び出しにより、使用される特定のスキルボットが明確になる。
【0084】
発話が明示的な呼び出しであることを決定することに加えて、EIS230は、発話のいずれかの部分が、明示的に呼び出されるスキルボットへの入力として使用されるべきかどうかを決定する役割を担う。特に、EIS230は、発話の一部が呼び出しに関連していないかどうかを決定することができる。EIS230は、発話の分析および/または抽出される情報205の分析を通じてこの決定を実行することができる。EIS230は、EIS230が受信した発話全体を送信する代わりに、呼び出しに関連付けられていない発話の一部を、呼び出されるスキルボットに送信できる。場合によっては、呼び出されるスキルボットへの入力は、呼び出しに関連付けられる発話の一部を削除するだけで形成される。例えば、「ピザボットを使用してピザを注文したい」は、「ピザボットの使用」はピザボットの呼び出しには関連するが、ピザボットによって実行される処理とは無関係であるため、「ピザを注文したいである」と短縮できる。場合によっては、EIS230は、例えば完全な文を形成するために、呼び出されるボットに送信される部分を再フォーマットしてもよい。したがって、EIS230は、明示的な呼び出しがあることを決定するだけでなく、明示的な呼び出しがあった場合にスキルボットに何を送信するかも決定する。場合によっては、呼び出されるボットに入力するテキストがない場合がある。例えば、発話が「ピザボット」であった場合、EIS230は、ピザボットが呼び出されていると決定することができるが、ピザボットによって処理されるテキストが存在しない。このようなシナリオでは、EIS230は、送信するものが何もないことをスキルボット呼び出し部240に示すことができる。
【0085】
スキルボット呼び出し部240は、さまざまな方法でスキルボットを呼び出す。例えば、スキルボット呼び出し部240は、明示的な呼び出しの結果として特定のスキルボットが選択されるという指示235の受信に応答して、ボットを呼び出すことができる。指示235は、明示的に呼び出されるスキルボットの入力とともにEIS230によって送信できる。このシナリオでは、スキルボット呼び出し部240は、会話の制御を明示的に呼び出されるスキルボットに引き渡す。明示的に呼び出されるスキルボットは、EIS230からの入力をスタンドアロンの発話として扱うことによって、入力に対する適切な応答を決定する。例えば、応答は、特定のアクションを実行すること、または特定の状態で新しい会話を開始することなどであり得、新しい会話の初期状態はEIS230から送信される入力に依存する。
【0086】
スキルボット呼び出し部240がスキルボットを呼び出すことができる別の方法は、意図分類子242を使用する暗黙的呼び出しを介することである。意図分類器242は、機械学習および/またはルールベースのトレーニング技術を使用してトレーニングされ、発話が特定のスキルボットが実行するように構成されるタスクを表す可能性を決定することができる。意図分類器242は、スキルボットごとに1つのクラス、異なるクラスでトレーニングされる。例えば、新しいスキルボットがマスターボットに登録されるたびに、新しいスキルボットに関連付けられる発話例のリストを使用して、意図分類器242をトレーニングして、特定の発話が新しいスキルボットが実行できるタスクを表す可能性を決定することができる。このトレーニングの結果として生成されるパラメータ(例えば、機械学習モデルのパラメータの値のセット)は、スキルボット情報254の一部として記憶することができる。
【0087】
とある実施形態では、意図分類器242は、本明細書でさらに詳細に説明するように、機械学習モデルを使用して実装される。機械学習モデルのトレーニングは、さまざまなスキルボットに関連付けられる発話例から発話の少なくともサブセットを入力して、機械学習モデルの出力として、どのボットが特定のトレーニング発話を処理するための正しいボットであるかについての推論を生成することを含んでもよい。各トレーニング発話について、トレーニング発話に使用する正しいボットの指示がグラウンドトゥルース情報として提供され得る。機械学習モデルの動作は、次いで、生成される推論とグランドトゥルース情報の間の差異を最小限に抑えるために(例えば、逆伝播を通じて)適応させることができる。
【0088】
とある実施形態では、意図分類器242は、マスターボットに登録されるスキルボットごとに、スキルボットが発話(例えば、EIS230から受信した非明示的に呼び出す発話234)を処理できる可能性を示す信頼スコアを決定する。意図分類器242はまた、構成される各システムレベルの意図(例えば、ヘルプ、終了)の信頼スコアを決定することもできる。特定の信頼スコアが1つまたは複数の条件を満たす場合、スキルボット呼び出し部240は、特定の信頼スコアに関連付けられるボットを呼び出す。例えば、信頼スコアの閾値を満たす必要がある場合がある。したがって、意図分類器242の出力245は、システム意図の識別または特定のスキルボットの識別のいずれかである。いくつかの実施形態では、信頼スコア閾値を満たすことに加えて、信頼スコアは、次に高い信頼スコアを一定の勝率だけ超えなければならない。このような条件を課すと、複数のスキルボットの信頼スコアが各々信頼スコア閾値を超えた場合に、特定のスキルボットにルーティングできるようになる。
【0089】
信頼スコアの評価に基づいてボットを識別した後、スキルボット呼び出し部240は、識別されるボットに処理を引き渡す。システム意図の場合、識別されるボットがマスターボットになる。それ以外の場合、識別されるボットはスキルボットである。さらに、スキルボット呼び出し部240は、識別されるボットに対する入力247として何を提供するかを決定する。上で示したように、明示的な呼び出しの場合、入力247は、呼び出しに関連付けられていない発話の一部に基づくか、または入力247が何もない(例えば、空の文字列)場合がある。暗黙的な呼び出しの場合、入力247は発話全体になる可能性がある。
【0090】
データストア250は、マスターボットシステム200のさまざまなサブシステムによって使用されるデータを記憶する1つまたは複数のコンピューティング装置を備える。上で説明したように、データストア250は、ルール252およびスキルボット情報254を含む。ルール252は、例えば、発話が複数の意図を表すとき、および複数の意図を表す発話をどのように分割するかをMIS220によって決定するためのルールを含む。ルール252はさらに、スキルボットを明示的に呼び出す発話のどの部分をスキルボットに送信するかをEIS230によって決定するためのルールを含む。スキルボット情報254は、チャットボットシステムにおけるスキルボットの呼び出し名、例えば、特定のマスターボットに登録されているすべてのスキルボットの呼び出し名のリストを含む。スキルボット情報254は、チャットボットシステム内の各スキルボットの信頼スコアを決定するために意図分類器242によって使用される情報、例えば機械学習モデルのパラメータを含むこともできる。
【0091】
図3は、とある実施形態によるスキルボットシステム300の簡略化されるブロック図である。スキルボットシステム300は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアの組み合わせで実装できるコンピューティングシステムである。図1に示される実施形態などのとある実施形態では、スキルボットシステム300を使用して、デジタルアシスタント内に1つまたは複数のスキルボットを実装することができる。
【0092】
スキルボットシステム300は、MIS310、意図分類器320、および会話マネージャ330を含む。MIS310は、図2のMIS220に類似しており、データストア350内のルール352を使用して以下を決定するように動作可能であることを含む同様の機能を提供する。(1)発話が複数の意図を表しているかどうか、またそうであれば、(2)複数の意図の意図ごとに発話を別の発話に分割する方法。とある実施形態では、複数の意図を検出し、発話を分割するためにMIS310によって適用されるルールは、MIS220によって適用されるルールと同じである。MIS310は発話302と抽出される情報304を受信する。抽出される情報304は、図1の抽出される情報205に類似しており、言語パーサ214またはスキルボットシステム300にローカルな言語パーサを使用して生成することができる。
【0093】
意図分類器320は、図2の実施形態に関連して上述し、本明細書でさらに詳細に説明した意図分類器242と同様の方法でトレーニングすることができる。例えば、とある実施形態では、意図分類器320は、機械学習モデルを使用して実装される。意図分類器320の機械学習モデルは、特定のスキルボットに関連付けられる発話例の少なくともサブセットをトレーニング発話として使用して、特定のスキルボット用にトレーニングされる。各トレーニング発話のグラウンドトゥルースは、トレーニング発話に関連付けられる特定のボットの意図になる。
【0094】
発話302は、ユーザから直接受信することも、マスターボットを介して提供することもできる。例えば、図2に示される実施形態におけるMIS220およびEIS230を介した処理の結果として、発話302がマスターボットを介して供給される場合、MIS220によってすでに実行される処理の繰り返しを避けるために、MIS310をバイパスすることができる。しかし、発話302が、例えば、スキルボットへのルーティング後に生じる会話中に、ユーザから直接受信される場合、MIS310は、発話302を処理して、発話302が複数の意図を表すかどうかを決定することができる。そうである場合、MIS310は1つまたは複数のルールを適用して、発話302を意図ごとに個別の発話、例えば発話「D」306と発話「E」308に分割する。発話302が複数の意図を表さない場合、MIS310は、発話302を分割することなく、意図分類のために発話302を意図分類器320に転送する。
【0095】
意図分類器320は、受信した発話(例えば、発話306または308)をスキルボットシステム300に関連付けられる意図と一致するように構成されている。上で説明したように、スキルボットは1つまたは複数の意図で構成でき、各意図には、その意図に関連付けられ、分類器のトレーニングに使用される少なくとも1つの発話例が含まれる。図2の実施形態では、マスターボットシステム200の意図分類器242は、個々のスキルボットの信頼スコアおよびシステム意図に対する信頼スコアを決定するようにトレーニングされる。同様に、意図分類器320は、スキルボットシステム300に関連付けられる各意図の信頼スコアを決定するようにトレーニングすることができる。意図分類器242によって実行される分類はボットレベルであるのに対し、意図分類器320によって実行される分類は意図レベルであり、したがってより粒度が細かい。意図分類器320は、意図情報354にアクセスできる。意図情報354は、スキルボットシステム300に関連付けられる意図ごとに、その意図の意味を表し図示し、通常、その意図によって実行可能なタスクに関連付けられる発話のリストを含む。意図情報354は、この発話リストに関するトレーニングの結果として生成されるパラメータをさらに含むことができる。
【0096】
会話マネージャ330は、意図分類器320の出力として、意図分類器320に入力される発話に最もよく一致するものとして意図分類器320によって識別される特定の意図の指示322を受信する。場合によっては、意図分類器320は一致を決定できないことがある。例えば、発話がシステム意図または異なるスキルボットの意図に向けられている場合、意図分類器320によって計算される信頼スコアは信頼スコア閾値を下回る可能性がある。これが発生すると、スキルボットシステム300は、処理のために、例えば、別のスキルボットにルーティングするために、発話をマスターボットに参照することができる。しかし、意図分類器320がスキルボット内の意図を識別することに成功した場合、会話マネージャ330はユーザとの会話を開始することになる。
【0097】
会話マネージャ330によって開始される会話は、意図分類器320によって識別される意図に固有の会話である。例えば、会話マネージャ330は、識別される意図に対するダイアログフローを実行するように構成される状態機械を使用して実装され得る。状態機械には、デフォルトの開始状態(例えば、追加の入力なしで意図が呼び出される場合)と1つまたは複数の追加の状態を含めることができ、各状態には、スキルボットによって実行されるアクション(例えば、購入トランザクションの実行)および/またはユーザに提示されるダイアログ(例えば、質問、応答)が関連付けられている。したがって、会話マネージャ330は、意図を識別する指示322を受信するとアクション/ダイアログ335を決定することができ、会話中に受信した後続の発話に応じて追加のアクションまたはダイアログを決定することができる。
【0098】
データストア350は、スキルボットシステム300のさまざまなサブシステムによって使用されるデータを記憶する1つまたは複数のコンピューティング装置を備える。図3に示すように、データストア350は、ルール352および意図情報354を含む。とある実施形態では、データストア350は、マスターボットまたはデジタルアシスタントのデータストア、例えば図2のデータストア250に統合することができる。
【0099】
チャットボットのトレーニングおよび展開システム
いくつかの実施形態では、機械学習モデルは、名前付きエンティティ認識などの言語処理タスクの実行時性能を向上させるために、パスドロップアウトを使用してトレーニングされる。機械学習モデルは、図1図2、および図3に関して説明したように、チャットボットシステムに実装することができる。
【0100】
図4Aは、さまざまな実施形態によるチャットボットトレーニングおよび展開システム400の簡略化されるブロック図である。チャットボットトレーニングおよび展開システム400は、入力として入力発話402を受信する。入力発話402は、発話に対応するテキストまたは発話音声であってもよい。入力発話402はトークナイザ404によって処理されて、トークン406が生成される。トークン406は、トークナイザ404によって入力発話402内で識別される単語、単語の一部、文字、または単語のセットを含み得るテキストの単位である(例えば、私は、ジャマイカに行きたい、ここで、トークンはダッシュで区切られている)。
【0101】
トークン406はエンコーダ408への入力として提供される。エンコーダ408は、例えば、事前トレーニングされる言語モデル(例えば、Bidirectional Encoder Representations from Transformers(BERT))または別の適切なエンコーダの一部であってもよい。BERTは、エンコーダ構成要素とデコーダ構成要素を含むトランスベースのネットワークである。(Devlinら、「BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding」、arXiv:1810.04805 (2018)を参照)。具体的な実施例として、エンコーダ408は、BERTの最下位n(8)層である。いくつかの例では、エンコーダは、1つの埋め込み層とn-1(7)のトランス層を含む。エンコーダ408は特徴埋め込み409を生成する。特徴埋め込み409は、低次元空間におけるトークン(例えば、部分語、単語など)の高密度ベクトル表現であり得る。特徴埋め込み409は、図4Bに示すような機械学習モデル410の構成要素への入力として提供される。
【0102】
ドロップアウトパスを含む機械学習モデル
図4Bは、第2の接続412に対応するドロップアウトパスを含む、言語処理タスクを実行するための機械学習モデル410の構成要素を示すブロック図である。機械学習モデル410の構成要素は、図4Aおよび図1図3に関して上で説明したように、より大きなモデルまたはモデルのセットの一部であってもよい。
【0103】
機械学習モデル410は、発話内の1つまたは複数のエンティティを認識するために構成され使用される名前付きエンティティ認識モデルであるか、またはその一部であることができる。いくつかの態様では、機械学習モデル410は、BERTなどの事前トレーニングされる言語モデルである、またはその一部である。いくつかの例では、410に示される構成要素はBERTデコーダに対応する。
【0104】
いくつかの実施形態では、機械学習モデル410は、1つまたは複数のトランスエンコーダブロックを含む。トランスエンコーダブロックの第1の主要構成要素は、複数の自己アテンションネットワークの出力を連結するマルチヘッド自己アテンション構成要素である。(Vaswaniら、「Attention is All You Need」、31st Conf. on Neural Info. Processing Systs (NPIS 2017)、図2参照)。残留接続と正規化は、マルチヘッド自己アテンション構成要素の出力に適用され、その後、フィードフォワードニューラルネットワークに供給され、その後、残留接続と正規化のステップが続く。
【0105】
機械学習モデル410は、複数の層、マルチヘッド自己アテンション技術を使用する複数の層、および/または1つまたは複数のトランスブロックを含む複数の層を含むことができる。
【0106】
機械学習モデル410は、マルチヘッド自己アテンションネットワーク414を含む。マルチヘッド自己アテンションネットワークは、複数の層と複数のアテンションヘッドの出力を連結したものである。(Vaswani、前述を参照)。各アテンションヘッドは連結される出力を提供し得る。
【0107】
機械学習モデル410は、第1の接続411を含む。第1の接続411は、入力埋め込み409(入力発話402の符号化表現)を入力としてマルチヘッド自己アテンションネットワーク414に提供する。入力埋め込み409は、第1の接続411を介してマルチヘッド自己アテンションネットワーク414への入力として提供される。
【0108】
マルチヘッド自己アテンション技術の場合、複数のヘッドの各々は、異なるクエリ、キー、および値の線形投影を使用して自己アテンション技術を実行する。自己アテンション技術は、特定の入力埋め込みを、クエリ表現(クエリ線形投影を使用して生成)、キー表現(キー線形投影を使用して生成)、および値表現(値線形投影を使用して生成)の各々に変換できる。クエリ表現とキー表現を乗算して(場合によってはソフトマックス関数などの活性化関数を適用して)、別の位置の値を評価するときに、特定の位置の値にどの程度のアテンションを払う必要があるかを示すアテンションスコアを生成する。その後、アテンションスコアに値表現を乗算して出力を生成できる。これは、アテンション重み行列を使用して行列内のアテンションスコアを編成し、バッチ処理における並列化の力を活用することで実行できる。マルチヘッド自己アテンションネットワーク414の出力には、トークン間の構文関係や意味関係など、各トークンの依存関係に関連付けられる情報が含まれ得る。(Vaswaniら、前出を参照)。
【0109】
マルチヘッド自己アテンションネットワーク414の出力は、正規化構成要素416に提供される。正規化構成要素416は、受信した入力を正規化することができる。例えば、正規化構成要素は、入力xとサブ層によって実装される関数であるSublayer(x)に基づいて層正規化を計算し、出力する。
【0110】
機械学習モデル410は、マルチヘッド自己アテンションネットワーク414をバイパスして、入力埋め込み409を正規化構成要素416に直接渡す第2の接続412をさらに含む。いくつかの実装では、第2の接続412は、1つまたは複数の層をスキップすることによって機械学習モデルの後半部分にデータが到達するためのパスである残留接続である。
【0111】
いくつかの実施形態では、第2の接続412はドロップアウトされる(「X」413によって示されるように)。第2の接続412は、例えば、第2の接続412の前または後にドロップアウト層を含めることによってドロップアウトすることができる。第2の接続412をドロップアウトすることにより、入力埋め込みはマルチヘッド自己アテンションネットワーク414によってますます処理されることになる。
【0112】
いくつかの実施形態では、機械学習モデル410は、フィードフォワード構成要素418と、フィードフォワード構成要素418の出力を加算し正規化するための第2の正規化構成要素420とをさらに含む。機械学習モデル410は、フィードフォワード構成要素418を通る第3のパスと、第1の正規化構成要素416の出力を第2の正規化構成要素420に接続する第4のパスとを含んでもよい。
【0113】
機械学習モデルの最終的な出力422は、例えば、入力から識別される1つまたは複数の単語に対応する名前付きエンティティタイプであってもよい。例えば、「Joe’s Shoe Depotで使った金額はいくらであるか」という発話に対応する出力は、Joe’s Shoe DepotをタイプMERCHANT_NAMEの名前付きエンティティとして識別する。いくつかの態様では、複数の機械学習モデル410がチャットボットトレーニングおよび展開システム400に含まれる。出力422は、トランスブロックなどの機械学習モデルのセットに対して、次の機械学習モデルなどに提供され得る。
【0114】
チャットボット実装段階では、機械学習モデル410は、1つまたは複数の他のモデルと組み合わせて使用されてもよく、例えば、発話が特定のスキルボットが実行するように構成されているタスクを表している可能性を決定するための別のモデル、第1のタイプのスキルボットの発話から意図を予測する別のモデル、および/または第2のタイプのスキルボットの発話から意図を予測する別のモデルなどである。
【0115】
パスドロップアウトを伴う機械学習モデルを生成および使用するための技術
図5Aは、とある実施形態による、パスドロップアウトを伴う機械学習モデルを生成および使用するためのプロセス500を示すフローチャートである。図5Aに示される処理は、それぞれのシステムの1つまたは複数の処理装置(例えば、プロセッサ、コア)、ハードウェア、またはそれらの組み合わせによって実行されるソフトウェア(例えば、コード、命令、プログラム)で実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に記憶されてもよい。図5Aに示され、以下で説明される方法は、例示を目的としており、限定するものではない。図5Aは、特定のシーケンスまたは順序で行われるさまざまな処理ステップを示しているが、これに限定することを意図したものではない。とある代替実施形態では、ステップは何らかの異なる順序で実行されてもよいし、一部のステップは並行して実行されてもよい。
【0116】
ブロック502では、機械学習モデルへアクセスする。機械学習モデルは1つまたは複数のブロックを含む。いくつかの実施形態では、ブロックは、図4Bに関して上で説明したように、自己アテンションを使用して入力データを処理するトランスブロックである。各ブロックは、マルチヘッド自己アテンションネットワークを含んでいる。図4Bに関して上述したように、各マルチヘッド自己アテンションネットワークは、マルチヘッド自己アテンション技術を実装するように構成される複数の層を含む。機械学習モデルは、マルチヘッド自己アテンションネットワークに入力を提供するための第1の接続も含む(例えば、図4Bに示される第1の接続411)。機械学習モデルはまた、マルチヘッド自己アテンションネットワークをバイパスして、入力を正規化層に提供するための第2の接続(例えば、図4Bに示す第2の接続412)を含む。
【0117】
ブロック504で、トレーニングデータセットがアクセスされる。トレーニングデータセットには、入力データ(例えば、サンプル発話)と対応するラベル(例えば、発話内の名前付きエンティティ)の対が含まれる。
【0118】
トレーニングデータセットは、1つまたは複数のスキルボットに関連付けられる発話例を含むことができる。上で示したように、発話はテキスト形式である。発話は、文の断片、完全な文、複数の文などであり得る。場合によっては、発話例は以前または既存のクライアントまたは顧客によって提供されることがある。他の例では、発話例は、以前の発話ライブラリから自動的に生成される(例えば、チャットボットが学習するように指定されるスキルに特有の発話をライブラリから識別する)。
【0119】
トレーニングデータはトレーニングラベルを含むこともでき、各トレーニングラベルは個々のトレーニング発話に対応する。トレーニングラベルは、値の行列またはテーブルに記憶することも、行列またはテーブルとして記憶することもできる。トレーニング発話ごとに、推定される正しいエンティティおよびその分類の指示が、トレーニングラベルのグラウンドトゥルース情報として提供され得る。トレーニング中のモデルの動作は、さまざまなエンティティに対して生成される推論とグランドトゥルース情報の間の差異を最小限に抑えるために(例えば、逆伝播を通じて)適応させることができる。
【0120】
ブロック506で、ドロップアウトパラメータが識別される。いくつかの実装では、ドロップアウトパラメータはドロップアウト率である。ドロップアウトパラメータは、特定のトレーニング反復で何か(例えば、図4の第2の接続412、または後述するアテンション重み)がドロップアウト(すなわち、ブロックまたは無視)される可能性を確立する。例えば、第2の接続のドロップアウトパラメータが0の場合、その接続はまったくドロップアウトされない。第2の接続のドロップアウトパラメータが0.31の場合、第2の接続はトレーニング反復の一部でドロップアウトされる。第2の接続のドロップアウトパラメータが0.9の場合、トレーニング反復の多く(つまり、より高い割合)でドロップアウトされる。
【0121】
いくつかの実施形態では、ドロップアウトパラメータは機械学習モデルのハイパーパラメータである。ハイパーパラメータは、機械学習モデルの動作を制御するために調整または最適化できる設定である。
【0122】
ドロップアウトパラメータは、ハイパーチューニングプロセスを実行することによって識別することができる。システムは、ハイパーパラメータ最適化プロセスを実行して、ドロップアウトパラメータの適切な値を選択し得る。いくつかの実装では、ドロップアウトパラメータは、グリッド検索、ランダム検索、またはベイジアン最適化などの適切なハイパーパラメータ最適化技術を使用して識別される。ハイパーパラメータは、モデルの性能を反映する目的関数を最適化または最小化するためにこれらのハイパーパラメータの値を選択するハイパーパラメータ調整アルゴリズムを使用して確立できる。モデルの性能は、トレーニングデータセットとは別の検証データセットまたはテストデータセットで測定できる。適切なハイパーチューニングプロセスの例では、ユーザはまず各ハイパーパラメータの検索空間(可能な値のセット)を定義する。複数のプロセスがあり、各々がN個のトライアルの固定セットを実行する(Nは構成可能である)。調査結果は共有データベースに記憶される。トライアルごとに、プロセスによってハイパーパラメータのセットが選択され(過去のトライアルやランダム検索などを使用して)、完全なエンドツーエンドのトレーニングと評価が実行される。評価結果を用いてトライアルスコアを計算する。トライアルが実行される後、最高のスコアを持つトライアルが選択される。
【0123】
ブロック508で、ドロップアウトパラメータが第2の接続に適用される。第2の接続は、ブロック506で識別されるドロップアウトパラメータに従ってドロップアウトされる。いくつかの実施形態では、第2の接続は残留接続であり、ドロップアウトパラメータはドロップアウト率である。ドロップアウトパラメータの適用には、ドロップアウト率に従って残留接続をドロップアウトすることが含まれる。ドロップアウトパラメータに基づいて、第2の接続は使用されず、入力は第1の接続を介して流れる。これは、ドロップアウト率に応じて、トレーニング反復のサブセットで発生し得る。
【0124】
代替的に、または追加的に、ドロップアウトはアテンション重み行列に適用される。アテンション重み行列は、トークンの対のスコアで構成される。トークンは、モデルがコンテキスト表現を計算しようとしている位置にあるトークンと、周囲のトークン(それ自体を含む)である。トークンは、例えば、単語、テキストまたは発話音声の他の単位であり得る。例えば、文の対sとsの入力表現特徴マップが一致されて、アテンション重み行列Aが得られる。ここで、アテンション行列Aijの各セルは、sのi番目のトークンとsのj番目のトークンの間のアテンションスコアを表す。(Mahendran Venkatachalam、「Attention in Neural Networks」、Towards Data Science、available at https://towardsdatascience.com/attention-in-neural-networks-e66920838742 (2019)を参照)(i番目のトークンとj番目のトークンは同じ文に属することができるため、「self-attention」の「self」になる)。アテンション重み行列には、各トークンから他のトークンへのアテンション重み(それ自体を含む)が含まれ得る。例えば、トークンが100個の場合、アテンション重み行列のサイズは100×100になる。アテンション重み行列の対角線のエントリは、トークンからトークン自体へのアテンションを表す。これらの対角エントリが削除されると、モデルはトークン自体へのアテンションを減らし、周囲のトークンへのアテンションを高めるように強制される。図5Bは、アテンション重み行列のようなトークンの対の例を示す。この例では、図5Bに関して以下でさらに詳細に説明するように、「evergreen」などのトークン自体のアテンションスコアがゼロになるように、ドロップアウトが対角エントリに適用される。
【0125】
いくつかの態様では、第1のドロップアウトパラメータが第2の接続に対して識別され、第2のドロップアウトパラメータがアテンション重み行列に対して識別される。ドロップアウトパラメータ(例えば、上述のようにハイパーチューナーによって選択される)に応じて、第2の接続および/またはアテンション重み行列のエントリは、特定のトレーニング反復でドロップアウトされ得る。例えば、1つのトレーニング反復では、第2の接続とアテンション重み行列の対角エントリの両方がドロップアウトされる。2回目のトレーニング反復では、第2の接続がドロップアウトされるが、アテンション重み行列の対角エントリはドロップアウトされない。3回目のトレーニング反復では、アテンション重み行列の対角エントリがドロップアウトされるが、第2の接続はドロップアウトされないなど。
【0126】
ブロック510で、トレーニングデータセットを使用して機械学習モデルがトレーニングされ、トレーニングされる機械学習モデルが生成される。トレーニング中、第2の接続および/またはアテンション重み行列内の対角エントリは、ブロック506で識別され、ブロック508で適用されるドロップアウトパラメータに従ってドロップアウトされる。
【0127】
トレーニングには、モデルの現在のバージョンを使用して1つまたは複数のトレーニングデータ要素(例えば、入力発話または対応する符号化)の各々を処理して予測を生成することと、予測およびデータ要素に対応するラベルに基づいて損失を計算することと、損失に基づいてモデルの1つまたは複数のパラメータを更新することと、が含まれ得る。予測を生成するために、各トレーニングデータ要素に対して複数の中間値が生成され得る。例えば、中間値には、モデル内の層からの出力が含まれ得る。各層は複数の出力(例えば、100を超える出力、1,000を超える出力、10,000を超える出力、または100,000を超える出力)を生成し得る。場合によっては、入力が同じで、モデルのハイパーパラメータが同じで、モデルのパラメータが同じである限り、モデル全体が一貫した出力を生成するように構成される。トレーニングが完了すると、トレーニングされる機械学習モデルが生成され、それがエンティティ認識モデルとなることも、その一部となることもできる。
【0128】
ドロップアウトを適用することにより(例えば、第2の接続および/またはアテンション重み行列のエントリがドロップアウトされる場合)、トレーニングプロセスでは、機械学習モデルはマルチヘッド自己アテンションを通じてコンテキスト情報を学習するようになる。上で述べたように、トレーニングデータセットには1つまたは複数の発話が含まれ得る。発話には、エンティティ(例えば、California、Record Depotなど)としてラベル付けされる1つまたは複数の単語が含まれ得る。発話には、エンティティとしてラベル付けされていない1つまたは複数の単語(例えば、in、the、how、get、fastなど)も含まれ得る。エンティティとしてラベル付けされていないこれらの単語は、コンテキスト情報を決定するために使用できる。例えば、「シドニーへの道順が必要である」という発話では、シドニーという単語はエンティティ(都市)としてラベル付けされ、残りの単語(I、need、directions、to)はシドニーが地理的な場所であるというコンテキストを提供する。この種のコンテキスト情報は、特にコンテキストで解決できる曖昧さがある場合に、モデルがエンティティをより正確に識別するのに役立ち得る。
【0129】
ブロック512では、トレーニングされる機械学習モデルの使用が容易になる。例えば、トレーニングされる機械学習モデルに入力発話が提供され、入力発話内のエンティティを識別する。代替的に、または追加的に、トレーニングされる機械学習モデルを使用して、発話に関連付けられる意図を識別し、および/または発話に対する応答を識別することができる。いくつかの例では、トレーニングされる機械学習モデルの使用を容易にすることは、エンティティを識別するためにトレーニングされる機械学習モデルに発話を入力することを含む。トレーニングされる機械学習モデルは、入力発話を処理して、その中の1つまたは複数のエンティティを識別する。機械学習モデルを実行するシステムは、その後、エンティティを出力したり、意図の決定、応答の決定などのさらなる処理を実行したりすることができる。機械学習モデルを実行するシステム、または識別されるエンティティまたはその派生物を受信する下流システムは、次いで、識別されるエンティティに基づいて発話に対する応答を準備し、提供することができる。例えば、応答は、質問に答える音声出力、表示されるテキスト、表示される画像などであり得る。
【0130】
実装時、トレーニングされる機械学習モデルは、1つまたは複数のチャットボットを実装するトレーニングされるエンティティ認識モデルの一部として、またはそれとして展開され、使用され得る。例えば、1つまたは複数のチャットボットは、トレーニングされる機械学習モデルを使用して構成され得、1人または複数のユーザからテキストデータ(例えば、発話に対応するもの)を受信し、1つまたは複数のチャットボットによって受信されるさまざまな発話からエンティティを認識して抽出する。テキストデータには、トレーニングされる機械学習モデルがトレーニングされた環境またはそれに対応するコンテキストで受信されるテキストデータが含まれ得る。エンティティは、テキストデータから取得される抽出される情報の一部であり、意図の分類などの下流処理で使用され得る。次いで、抽出されるエンティティに基づいて生成される出力は、発話のソースに対応する装置に送信および/または提示され得る。
【0131】
図5Bは、いくつかの実施形態による、ドロップアウトを伴うトークン対の一例を示す図550である。トークンの例は、pay552、john554、$556、10 558、using560、evergreen562、account564である。上記のアテンション重み行列では、各トークンは、それ自体を含む各他のトークンに対して、ある程度のアテンションを持つ。このような対は、2つの列の間の線で示される。
【0132】
図5Aに関して上で説明したように、いくつかの実施形態では、アテンション重み行列の対角エントリがドロップアウトされる。対角エントリは、トークンとそれ自体の対を表す。図5Bに示すように、アテンション重み行列の対角エントリがドロップアウトされると、evergreen562などのトークンは、発話内の他のトークン(例えば、この例ではトークン552~560および564)へのアテンションを保持し、コンテキスト情報を提供できる。evergreen562とevergreen562など、トークン同士の対に対するアテンション重みは、「X」580で示されるように、ドロップアウトされるかゼロに設定される。このドロップアウトがトレーニングに適用されると、機械学習モデルは周囲の形容詞や動詞などのコンテキスト情報にますます重点を置くように学習する。
【0133】
本明細書で説明される技術を使用して、第2の接続および/またはアテンション重み行列の対角エントリにドロップアウトを適用することによって、機械学習モデルは、マルチヘッド自己アテンションを通じてコンテキスト情報を学習するようになる。その結果、モデルはコンテキスト情報にさらに重点を置くことを余儀なくされ、結果が向上する。以下の表2は、パスドロップアウトがある場合とない場合の結果の例を示している。表示されている値はF1スコアで、精度(正しい予測の数をモデルによって行われた予測の合計で割ったもの)と再現率(真陽性の数を真陽性と偽陰性の合計数で割ったもの)の加重平均である。F1スコアは精度と再現率のバランスを伝え、F1スコアが高いほど結果が良くなる(例えば、より正確になる)ことを示す。
【0134】
【表2】
【0135】
説明システム
図6は、分散システム600の簡略図を示す。図示の例では、分散システム600は、1つまたは複数の通信ネットワーク610を介してサーバ612に結合される1つまたは複数のクライアントコンピューティング装置602、604、606、および608を含む。クライアントコンピューティング装置602、604、606、および608は、1つまたは複数のアプリケーションを実行するように構成され得る。
【0136】
さまざまな例において、サーバ612は、本開示で説明される1つまたは複数の実施形態を可能にする1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。とある例では、サーバ612は、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションも提供することができる。いくつかの例では、これらのサービスは、クライアントコンピューティング装置602、604、606、および/または608のユーザに、サービスとしてのソフトウェア(SaaS)モデルなどの下で、ウェブベースまたはクラウドサービスとして提供され得る。クライアントコンピューティング装置602、604、606、および/または608を動作するユーザは、順に1つまたは複数のクライアントアプリケーションを利用してサーバ612と対話し、これらの構成要素によって提供されるサービスを利用することができる。
【0137】
図6に示される構成では、サーバ612は、サーバ612によって実行される機能を実装する1つまたは複数の構成要素618、620、および622を含み得る。これらの構成要素には、1つまたは複数のプロセッサ、ハードウェア構成要素、またはそれらの組み合わせによって実行できるソフトウェア構成要素が含まれ得る。分散システム600とは異なり得る、さまざまな異なるシステム構成が可能であることを理解されたい。したがって、図6に示される例は、例示的なシステムを実装するための分散システムの一例であり、限定することを意図したものではない。
【0138】
ユーザは、クライアントコンピューティング装置602、604、606、および/または608を使用して、1つまたは複数のアプリケーション、モデル、またはチャットボットを実行することができ、これは、本開示の教示に従って実装またはサービスされ得る1つまたは複数のイベントまたはモデルを生成し得る。クライアント装置は、クライアント装置のユーザがクライアント装置と対話できるようにするインターフェースを提供することができる。クライアント装置は、このインターフェースを介してユーザに情報を出力することもできる。図6には4つのクライアントコンピューティング装置のみが示されているが、任意の数のクライアントコンピューティング装置がサポートされ得る。
【0139】
クライアント装置には、ポータブルハンドヘルド装置、パーソナルコンピュータやラップトップなどの汎用コンピュータ、ワークステーションコンピュータ、ウェアラブル装置、ゲームシステム、シンクライアント、さまざまなメッセージング装置、センサまたは他の感知装置などのさまざまなタイプのコンピューティングシステムなどが含まれ得る。これらのコンピューティング装置は、さまざまなタイプとバージョンのソフトウェアアプリケーションとオペレーティングシステムを実行し得(例えば、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、Linux(登録商標)またはGoogle Chrome(商標)OSなどのLinux系オペレーティングシステム)、これには、さまざまなモバイルオペレーティングシステム(例えば、Microsoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(商標)、BlackBerry(登録商標)、Palm OS(登録商標))が含まれる。ポータブルハンドヘルド装置には、携帯電話、スマートフォン(例えば、iPhone(登録商標))、タブレット(例えば、iPad(登録商標))、携帯情報端末(PDA)などが含まれ得る。ウェアラブル装置には、Google Glass(登録商標)ヘッドマウントディスプレイおよびその他の装置が含まれ得る。ゲームシステムには、さまざまなハンドヘルドゲーム装置、インターネット対応ゲーム装置(例えば、Kinect(登録商標)ジェスチャ入力装置を備えたまたは備えていないMicrosoft Xbox(登録商標)ゲームコンソール、Sony Play Station(登録商標)システム、Nintendo(登録商標)が提供するさまざまなゲームシステムなど)、などが含まれ得る。クライアント装置は、さまざまなインターネット関連アプリ、通信アプリケーション(例えば、電子メールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)などのさまざまな異なるアプリケーションを実行することができ、さまざまな通信プロトコルを使用することができる。
【0140】
ネットワーク610は、当業者によく知られている任意のタイプのネットワークであり、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、Apple Talk(登録商標)などを含むがこれらに限定されない、さまざまな利用可能なプロトコルのいずれかを使用してデータ通信をサポートできる。単なる例として、ネットワーク610は、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(例えば、電気電子学会(IEEE)1002.11プロトコルスイートのいずれかで動作するネットワーク)、Bluetooth(登録商標)、および/または他の無線プロトコル)、ならびに/またはこれらおよび/もしくは他のネットワークの任意の組み合わせであり得る。
【0141】
サーバ612は、1つまたは複数の汎用コンピュータ、専用サーバコンピュータ(例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な配置および/または組み合わせから構成され得る。サーバ612は、仮想オペレーティングシステムを実行する1つもしくは複数の仮想機械、またはサーバの仮想記憶装置を維持するために仮想化され得る論理記憶装置の1つもしくは複数の柔軟なプールなどの仮想化を伴う他のコンピューティングアーキテクチャを含み得る。さまざまな例において、サーバ612は、前述の開示で説明される機能を提供する1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。
【0142】
サーバ612のコンピューティングシステムは、上述したもののいずれかを含む1つまたは複数のオペレーティングシステム、ならびに任意の市販のサーバオペレーティングシステムを実行することができる。サーバ612は、さまざまな追加のサーバプリケーションおよび/または中間層アプリケーションのいずれかを実行することもでき、これには、HTTP(ハイパーテキストトランスポートプロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(共通ゲートウェイインターフェース)サーバ、JAVA(登録商標)サーバ、データベースサーバなどが含まれる。例示的なデータベースサーバには、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものが含まれるが、これらに限定されない。
【0143】
いくつかの実装では、サーバ612には、クライアントコンピューティング装置602、604、606、および608のユーザから受信したデータフィードおよび/またはイベント更新を分析および統合するための1つまたは複数のアプリケーションが含まれ得る。例として、データフィードおよび/またはイベント更新には、Twitter(登録商標)フィード、Facebook(登録商標)更新、または1つまたは複数のサードパーティ情報ソースおよび継続的なデータストリームから受信したリアルタイム更新が含まれ得るが、これらに限定されず、これには、センサーデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などに関連するリアルタイムイベントが含まれ得る。サーバ612はまた、クライアントコンピューティング装置602、604、606、および608の1つまたは複数の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つまたは複数のアプリケーションを含み得る。
【0144】
分散システム600には、1つまたは複数のデータリポジトリ614、616も含まれ得る。これらのデータリポジトリは、とある例ではデータやその他の情報を記憶するために使用され得る。例えば、データリポジトリ614、616の1つまたは複数は、さまざまな実施形態によるさまざまな機能を実行するときにサーバ612によって使用されるチャットボットが使用するための、チャットボットの性能に関連する情報や生成されるモデルなどの情報を記憶するために使用できる。データリポジトリ614、616は、さまざまな場所に存在することができる。例えば、サーバ612によって使用されるデータリポジトリは、サーバ612に対してローカルであってもよいし、サーバ612からリモートであってもよく、ネットワークベースまたは専用接続を介してサーバ612と通信してもよい。データリポジトリ614、616は異なるタイプであってもよい。とある例では、サーバ612によって使用されるデータリポジトリは、例えば、Oracle Corporation(登録商標)や他のベンダーによって提供されるデータベースなどのリレーショナルデータベースなどのデータベースである場合がある。これらのデータベースの1つまたは複数は、SQL形式のコマンドに応答してデータベース間のデータの記憶、更新、および取得を可能にするように適合させることができる。
【0145】
とある例では、データリポジトリ614、616のうちの1つまたは複数は、アプリケーションデータを記憶するためにアプリケーションによって使用されてもよい。アプリケーションによって使用されるデータリポジトリは、例えば、キー/値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムによってサポートされる一般的な記憶リポジトリなど、さまざまなタイプの場合がある。
【0146】
とある例では、本開示で説明される機能は、クラウド環境を介してサービスとして提供され得る。図7は、とある例に従って、さまざまなサービスがクラウドサービスとして提供され得るクラウドベースのシステム環境の簡略化されるブロック図である。図7に示される例では、クラウドインフラストラクチャシステム702は、1つまたは複数のクライアントコンピューティング装置704、706、および708を使用するユーザによって要求され得る1つまたは複数のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム702は、サーバ612について上述したものを含むことができる1つまたは複数のコンピュータおよび/またはサーバを備えることができる。クラウドインフラストラクチャシステム702内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、または任意の他の適切な配置および/または組み合わせとして編成され得る。
【0147】
ネットワーク710は、クライアント704、706、および708とクラウドインフラストラクチャシステム702との間のデータの通信および交換を容易にすることができる。ネットワーク710は、1つまたは複数のネットワークを含むことができる。ネットワークは同じタイプであっても、異なるタイプであってもよい。ネットワーク710は、通信を容易にするために、有線および/または無線プロトコルを含む1つまたは複数の通信プロトコルをサポートすることができる。
【0148】
図7に示す例は、クラウドインフラストラクチャシステムの一例にすぎず、限定することを意図したものではない。いくつかの他の例では、クラウドインフラストラクチャシステム702は、図7に示されるものより多いまたは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の異なる構成または配置を有してもよいことを理解されたい。例えば、図7は3つのクライアントコンピューティング装置を示しているが、代替例では任意の数のクライアントコンピューティング装置がサポートされ得る。
【0149】
クラウドサービスという用語は、一般的に、サービスプロバイダのシステム(例えば、クラウドインフラストラクチャシステム702)によって、インターネットなどの通信ネットワークを介して、オンデマンドでユーザに提供されるサービスを指すために使用される。通常、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバやシステムは、顧客自身のオンプレミスのサーバやシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。したがって、顧客は、サービス用のライセンス、サポート、またはハードウェアおよびソフトウェアリソースを別途購入することなく、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。例えば、クラウドサービスプロバイダのシステムがアプリケーションをホストでき、ユーザはアプリケーションを実行するためのインフラストラクチャリソースを購入することなく、インターネット経由でオンデマンドでアプリケーションを注文して使用できる。クラウドサービスは、アプリケーション、リソース、サービスへの簡単かつスケーラブルなアクセスを提供するように設計されている。いくつかのプロバイダがクラウドサービスを提供している。例えば、ミドルウェアサービス、データベースサービス、Javaクラウドサービスなど、いくつかのクラウドサービスがカリフォルニア州レッドウッドショアーズのOracle Corporation(登録商標)によって提供されている。
【0150】
とある例では、クラウドインフラストラクチャシステム702は、異なるモデルを使用して1つまたは複数のクラウドサービスを提供することができ、例えば、Software as a Service(SaaS)モデル、Platform as a Service(PaaS)モデル、Infrastructure as a Service(IaaS)モデル、およびハイブリッドサービスモデルを含むその他のモデルなどである。クラウドインフラストラクチャシステム702は、さまざまなクラウドサービスの提供を可能にする一連のアプリケーション、ミドルウェア、データベース、および他のリソースを含むことができる。
【0151】
SaaSモデルでは、顧客が基礎となるアプリケーションのハードウェアやソフトウェアを購入することなく、アプリケーションまたはソフトウェアをインターネットなどの通信ネットワークを介してサービスとして顧客に提供できる。例えば、SaaSモデルを使用して、クラウドインフラストラクチャシステム702によってホストされるオンデマンドアプリケーションへのアクセスを顧客に提供できる。Oracle Corporation(登録商標)が提供するSaaSサービスの例には、人事/資本管理のためのさまざまなサービス、顧客関係管理(CRM)、企業リソースプランニング(ERP)、サプライチェーン管理(SCM)、企業性能管理(EPM)、分析サービス、ソーシャルアプリケーションなどが含まれるが、これらに限定されない。
【0152】
IaaSモデルは、一般に、インフラストラクチャリソース(例えば、サーバ、記憶装置、ハードウェアおよびネットワーキングリソース)をクラウドサービスとして顧客に提供し、弾性なコンピューティングおよび記憶機能を提供するために使用される。さまざまなIaaSサービスがOracle Corporation(登録商標)によって提供されている。
【0153】
PaaSモデルは、一般に、顧客がそのようなリソースを調達、構築、または維持する必要なく、顧客がアプリケーションおよびサービスを開発、実行、および管理できるようにするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例には、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、さまざまなアプリケーション開発ソリューションサービスなどが含まれるが、これらに限定されない。
【0154】
クラウドサービスは、一般に、オンデマンド自己サービスベース、サブスクリプションベース、弾力的に拡張可能、信頼性が高く、可用性が高く、安全な方法で提供される。例えば、顧客は、サブスクリプション注文を介して、クラウドインフラストラクチャシステム702によって提供される1つまたは複数のサービスを注文することができる。次に、クラウドインフラストラクチャシステム702は、顧客のサブスクリプション注文で要求されるサービスを提供するための処理を実行する。例えば、ユーザは、発話を使用して、上述したように、クラウドインフラストラクチャシステムにとあるアクション(例えば、意図)を実行するように要求し、および/または本明細書で説明するようにチャットボットシステムにサービスを提供することができる。クラウドインフラストラクチャシステム702は、1つまたは複数のクラウドサービスを提供するように構成され得る。
【0155】
クラウドインフラストラクチャシステム702は、異なる展開モデルを介してクラウドサービスを提供することができる。パブリッククラウドモデルでは、クラウドインフラストラクチャシステム702はサードパーティのクラウドサービスプロバイダによって所有され得、クラウドサービスは個人または企業であり得る一般の顧客に提供される。とある他の例では、プライベートクラウドモデルの下で、クラウドインフラストラクチャシステム702は組織内(例えば、企業組織内)で動作され、組織内の顧客にサービスが提供され得る。例えば、顧客は人事部、給与部などの企業のさまざまな部門、あるいは企業内の個人である場合もある。他のとある例では、コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム702および提供されるサービスは、関連するコミュニティ内の複数の組織によって共有され得る。上記モデルのハイブリッドなど、他のさまざまなモデルも使用可能である。
【0156】
クライアントコンピューティング装置704、706、および708は、異なるタイプ(例えば、図6に示されるクライアントコンピューティング装置602、604、606、および608)であってもよく、1つまたは複数のクライアントアプリケーションを動作させることができてもよい。ユーザは、クライアント装置を使用して、クラウドインフラストラクチャシステム702によって提供されるサービスを要求するなど、クラウドインフラストラクチャシステム702と対話することができる。例えば、ユーザは、本開示で説明されるように、クライアント装置を使用して、チャットボットからの情報またはアクションを要求することができる。
【0157】
いくつかの例では、サービスを提供するためにクラウドインフラストラクチャシステム702によって実行される処理には、モデルのトレーニングおよび展開が含まれ得る。この分析には、データセットの使用、分析、操作を行って、1つまたは複数のモデルをトレーニングおよび展開することが含まれ得る。この分析は、場合によってはデータを並行して処理したり、データを使用してシミュレーションを実行したりするなど、1つまたは複数のプロセッサによって実行することができる。例えば、ビッグデータ分析は、チャットボットシステム用の1つまたは複数のモデルを生成およびトレーニングするために、クラウドインフラストラクチャシステム702によって実行され得る。この分析に使用されるデータには、構造化データ(例えば、データベースに記憶されているデータ、または構造化モデルに従って構造化されるデータ)および/または非構造化データ(例えば、データブロブ(バイナリラージオブジェクト))が含まれ得る。
【0158】
図7の例に示されるように、クラウドインフラストラクチャシステム702は、クラウドインフラストラクチャシステム702によって提供されるさまざまなクラウドサービスの提供を容易にするために利用されるインフラストラクチャリソース730を含むことができる。インフラストラクチャリソース730には、例えば、処理リソース、記憶またはメモリリソース、ネットワーキングリソースなどが含まれ得る。とある例では、アプリケーションから要求される記憶を提供するために利用可能な記憶仮想機械は、クラウドインフラストラクチャシステム702の一部であってもよい。他の例では、記憶仮想機械は異なるシステムの一部であってもよい。
【0159】
とある例では、さまざまな顧客向けにクラウドインフラストラクチャシステム702によって提供されるさまざまなクラウドサービスをサポートするためのこれらのリソースの効率的なプロビジョニングを促進するために、リソースは、リソースのセットまたはリソースモジュール(「ポッド」とも呼ばれる)にバンドルされ得る。各リソースモジュールまたはポッドは、1つまたは複数のタイプのリソースの事前に統合および最適化される組み合わせを含み得る。とある例では、異なるタイプのクラウドサービスに対して異なるポッドが事前にプロビジョニングされ得る。例えば、第1セットのポッドはデータベースサービス用にプロビジョニングでき、第2セットのポッドは、第1セットのポッド内のポッドとは異なるリソースの組み合わせを含むことができ、Javaサービスなど用にプロビジョニングできる。一部のサービスでは、サービスをプロビジョニングするために割り当てられるリソースがサービス間で共有され得る。
【0160】
クラウドインフラストラクチャシステム702は、それ自体、クラウドインフラストラクチャシステム702の異なる構成要素によって共有され、クラウドインフラストラクチャシステム702によるサービスのプロビジョニングを容易にするサービス732を内部的に使用することができる。これらの内部共有サービスには、セキュリティおよびIDサービス、統合サービス、企業リポジトリサービス、企業マネージャーサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするサービス、電子メールサービス、通知サービス、ファイル転送サービスなどが含まれ得るが、これらに限定されない。
【0161】
クラウドインフラストラクチャシステム702は、複数のサブシステムを備えることができる。これらのサブシステムは、ソフトウェアやハードウェア、またはそれらの組み合わせで実装できる。図7に示すように、サブシステムは、クラウドインフラストラクチャシステム702のユーザまたは顧客がクラウドインフラストラクチャシステム702と対話できるようにするユーザインターフェースサブシステム712を含んでもよい。ユーザインターフェースサブシステム712は、ウェブインターフェース714、オンラインストアインターフェース716などのさまざまな異なるインターフェースを含むことができ、クラウドインフラストラクチャシステム702によって提供されるクラウドサービスは宣伝され、消費者および他のインターフェース718によって購入可能である。例えば、顧客は、クライアント装置を使用して、インターフェース714、716、および718の1つまたは複数を使用して、クラウドインフラストラクチャシステム702によって提供される1つまたは複数のサービスを要求する(サービス要求734)場合がある。例えば、顧客はオンラインストアにアクセスし、クラウドインフラストラクチャシステム702によって提供されるクラウドサービスを閲覧し、顧客がサブスクライブを希望するクラウドインフラストラクチャシステム702によって提供される1つまたは複数のサービスのサブスクリプション注文を行うことができる。サービス要求には、顧客を識別する情報と、顧客がサブスクリプションを希望する1つまたは複数のサービスが含まれ得る。例えば、顧客は、クラウドインフラストラクチャシステム702によって提供されるサービスのサブスクリプション注文を行うことができる。注文の一部として、顧客は、サービスが提供されるチャットボットシステムを識別する情報と、任意でチャットボットシステムの1つまたは複数の資格情報を提供できる。
【0162】
図7に示される例などのとある例では、クラウドインフラストラクチャシステム702は、新しい注文を処理するように構成される注文管理サブシステム(OMS)720を備えることができる。この処理の一部として、まだ作成していない場合は、OMS720は顧客の口座を作成し、要求されるサービスを顧客に提供するために顧客に請求するために使用される請求情報および/または会計情報を顧客から受信し、顧客情報を確認し、確認後、顧客の注文を予約する。さまざまなワークフローを調整して、プロビジョニングの注文を準備するように構成できる(まだ作成していない場合)。
【0163】
適切に検証されると、OMS720は、処理、メモリ、およびネットワーキングリソースを含む注文のためのリソースをプロビジョニングするように構成される注文プロビジョニングサブシステム(OPS)724を呼び出し得る。プロビジョニングには、注文に対してリソースを割り当て、顧客の注文によって要求されるサービスを容易にするためにリソースを構成することが含まれ得る。注文に対してリソースがプロビジョニングされる方法およびプロビジョニングされるリソースのタイプは、顧客が注文したクラウドサービスのタイプによって異なる場合がある。例えば、1つのワークフローによれば、OPS724は、要求されている特定のクラウドサービスを決定し、その特定のクラウドサービスに対して事前構成されている可能性のあるポッドの数を識別するように構成され得る。注文に対して割り当てられるポッドの数は、要求されるサービスのサイズ/量/レベル/範囲によって異なる場合がある。例えば、割り当てられるポッドの数は、サービスによってサポートされるユーザの数、サービスが要求されている期間などに基づいて決定され得る。割り当てられるポッドは、次いで、要求されるサービスを提供するために、特定の要求顧客向けにカスタマイズできる。
【0164】
とある例では、セットアップフェーズ処理は、上で説明したように、プロビジョニングプロセスの一部としてクラウドインフラストラクチャシステム702によって実行され得る。クラウドインフラストラクチャシステム702はアプリケーションIDを生成し、クラウドインフラストラクチャシステム702自体によって提供される記憶仮想機械の中から、またはクラウドインフラストラクチャシステム702以外の他のシステムによって提供される記憶仮想機械の中から、アプリケーションのための記憶仮想機械を選択できる。
【0165】
クラウドインフラストラクチャシステム702は、要求したサービスがいつ使用できるようになったかを示すために、要求している顧客に応答または通知744を送信することができる。場合によっては、顧客が要求されるサービスの使用および利点の利用を開始できるようにする情報(例えば、リンク)が顧客に送信され得る。とある例では、サービスを要求する顧客の場合、応答は、クラウドインフラストラクチャシステム702によって生成されるチャットボットシステムIDと、チャットボットシステムIDに対応するチャットボットシステムについてクラウドインフラストラクチャシステム702によって選択されるチャットボットシステムを識別する情報とを含み得る。
【0166】
クラウドインフラストラクチャシステム702は、複数の顧客にサービスを提供することができる。各顧客に対して、クラウドインフラストラクチャシステム702は、顧客から受信した1つまたは複数のサブスクリプション注文に関連する情報を管理し、注文に関連する顧客データを維持し、要求されるサービスを顧客に提供する責任を負う。クラウドインフラストラクチャシステム702はまた、顧客によるサブスクリプションサービスの使用に関する使用統計を収集することもできる。例えば、使用される記憶の量、転送されるデータの量、ユーザ数、システムの稼働時間と停止時間などの統計が収集され得る。この使用情報は、顧客への請求に使用され得る。請求は、例えば、月次サイクルで行うことができる。
【0167】
クラウドインフラストラクチャシステム702は、複数の顧客に並行してサービスを提供することができる。クラウドインフラストラクチャシステム702は、おそらく専有情報を含む、これらの顧客のための情報を記憶することができる。とある例では、クラウドインフラストラクチャシステム702は、顧客情報を管理し、ある顧客に関連する情報が別の顧客によってアクセスできないように管理情報の分離を提供するように構成されるID管理サブシステム(IMS)728を備える。IMS728は、情報アクセス管理、認証および承認サービス、顧客IDとロールおよび関連機能の管理サービスなどのIDサービスなど、さまざまなセキュリティ関連サービスを提供するように構成できる。
【0168】
図8は、コンピュータシステム800の一例を示す。いくつかの例では、コンピュータシステム800は、分散環境内のデジタルアシスタントまたはチャットボットシステムのいずれか、および上述のさまざまなサーバおよびコンピュータシステムを実装するために使用され得る。図8に示すように、コンピュータシステム800は、バスサブシステム802を介して他の多くのサブシステムと通信する処理サブシステム804を含むさまざまなサブシステムを含む。これらの他のサブシステムには、処理加速装置806、I/Oサブシステム808、記憶サブシステム818、および通信サブシステム824が含まれ得る。記憶サブシステム818は、記憶媒体822およびシステムメモリ810を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0169】
バスサブシステム802は、コンピュータシステム800のさまざまな構成要素およびサブシステムが意図したとおりに相互に通信できるようにする機構を提供する。バスサブシステム802は単一のバスとして概略的に示されているが、バスサブシステムの代替例では複数のバスを利用することもできる。バスサブシステム802は、メモリバスまたはメモリコントローラ、周辺バス、さまざまなバスアーキテクチャのいずれかを使用するローカルバスなどを含むいくつかのタイプのバス構造のいずれであってもよい。例えば、そのようなアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびPeripheral Component Interconnect(PCI)バスが含まれ得る。これは、IEEEP1386.1規格などに従って製造されるメザニンバスとして実装され得る。
【0170】
処理サブシステム804は、コンピュータシステム800の動作を制御し、1つまたは複数のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサには、単一コアまたはマルチコアプロセッサが含まれ得る。コンピュータシステム800の処理リソースは、1つまたは複数の処理装置832、834などに編成され得る。処理装置には、1つもしくは複数のプロセッサ、同じもしくは異なるプロセッサからの1つもしくは複数のコア、コアとプロセッサの組み合わせ、またはコアとプロセッサのその他の組み合わせが含まれ得る。いくつかの例では、処理サブシステム804は、グラフィックプロセッサ、デジタル信号プロセッサ(DSP)などの1つまたは複数の専用コプロセッサを含み得る。いくつかの例では、処理サブシステム804の処理装置の一部またはすべてが、特定用途向け集積回路(ASIC)やフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされる回路を使用して実装され得る。
【0171】
いくつかの例では、処理サブシステム804内の処理装置は、システムメモリ810またはコンピュータ可読記憶媒体822に記憶される命令を実行することができる。さまざまな例において、処理装置は、さまざまなプログラムまたはコード命令を実行し、複数の同時実行プログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、システムメモリ810および/または潜在的に1つもしくは複数の記憶装置を含むコンピュータ可読記憶媒体822に載置することができる。適切なプログラミングを通じて、処理サブシステム804は、上述のさまざまな機能を提供することができる。コンピュータシステム800が1つまたは複数の仮想機械を実行している場合、1つまたは複数の処理装置が各仮想機械に割り当てられ得る。
【0172】
とある例では、コンピュータシステム800によって実行される全体の処理を加速するために、カスタマイズされる処理を実行するため、または処理サブシステム804によって実行される処理の一部をオフロードするために、処理加速装置806が任意で提供されてもよい。
【0173】
I/Oサブシステム808は、コンピュータシステム800に情報を入力するための、および/またはコンピュータシステム800からもしくはコンピュータシステム800を介して情報を出力するための装置および機構を含み得る。一般に、入力装置という用語の使用は、コンピュータシステム800に情報を入力するためのあらゆる可能なタイプの装置および機構を含むことを意図している。ユーザインターフェース入力装置には、例えば、キーボード、マウスやトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドやタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えた音声入力装置、マイク、およびその他のタイプの入力装置が含まれ得る。ユーザインターフェース入力装置には、モーションセンシング装置および/またはジェスチャ認識装置も含まれ得、例えば、ユーザが入力装置を制御および動作できるようにするMicrosoft Kinect(登録商標)モーションセンサー、Microsoft Xbox(登録商標)360ゲームコントローラー、ジェスチャや音声コマンドを使用して入力を受信するためのインターフェースを提供する装置などである。ユーザインターフェース入力装置には、ユーザの目の動き(例えば、写真を撮影しているときやメニューを選択しているときの「まばたき」)を検出し、その目のジェスチャを入力装置(例えば、Google Glass(登録商標))への入力として変換するGoogle Glass(登録商標)まばたき検出器などの目のジェスチャ認識装置も含まれ得る。さらに、ユーザインターフェース入力装置は、ユーザが音声コマンドを通じて音声認識システム(例えば、Siri(登録商標)ナビゲータ)と対話できるようにする音声認識センシング装置を含んでもよい。
【0174】
ユーザインターフェース入力装置の他の例には、限定されないが、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、およびスピーカー、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー距離計、視線追跡装置などの音声/ビジュアル装置が含まれ得る。さらに、ユーザインターフェース入力装置には、例えば、コンピュータ断層撮影法、磁気共鳴画像化、位置放射断層撮影法、および医療用超音波検査装置などの医療用画像化入力装置が含まれ得る。ユーザインターフェース入力装置には、例えば、MIDIキーボード、デジタル楽器などの音声入力装置も含まれ得る。
【0175】
一般に、出力装置という用語の使用は、コンピュータシステム800からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置および機構を含むことを意図している。ユーザインターフェース出力装置には、ディスプレイサブシステム、インジケータライト、または音声出力装置などの非視覚的ディスプレイが含まれ得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。例えば、ユーザインターフェース出力装置には、モニター、プリンタ、スピーカー、ヘッドフォン、自動車ナビゲーションシステム、プロッター、音声出力装置、モデムなど、テキスト、グラフィック、音声/ビデオ情報を視覚的に伝えるさまざまなディスプレイ装置が含まれるが、これらに限定されない。
【0176】
記憶サブシステム818は、コンピュータシステム800によって使用される情報およびデータを記憶するためのリポジトリまたはデータストアを提供する。記憶サブシステム818は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための、有形の非一時的なコンピュータ可読記憶媒体(例えば、非一時的なコンピュータ可読メモリ)を提供する。記憶サブシステム818は、処理サブシステム804によって実行されると上述の機能を提供するソフトウェア(例えば、プログラム、コードモジュール、命令)を記憶することができる。ソフトウェアは、処理サブシステム804の1つまたは複数の処理装置によって実行され得る。記憶サブシステム818は、本開示の教示に従って認証を提供することもできる。
【0177】
記憶サブシステム818は、揮発性メモリ装置および不揮発性メモリ装置を含む、1つまたは複数の非一時的メモリ装置を含み得る。図8に示されるように、記憶サブシステム818は、システムメモリ810およびコンピュータ可読記憶媒体822を含む。システムメモリ810には、プログラム実行中に命令とデータを記憶するための揮発性メインランダムアクセスメモリ(RAM)と、固定命令が記憶される不揮発性読み取り専用メモリ(ROM)またはフラッシュメモリを含む、複数のメモリが含まれ得る。いくつかの実装では、起動中など、コンピュータシステム800内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)は、通常、ROMに記憶され得る。RAMは通常、処理サブシステム804によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実装では、システムメモリ810は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含み得る。
【0178】
限定ではなく一例として、図8に示すように、システムメモリ810は、実行中のアプリケーションプログラム812をロードすることができ、これには、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのさまざまなアプリケーション、プログラムデータ814、およびオペレーティングシステム816が含まれ得る。一例として、オペレーティングシステム816は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinuxオペレーティングシステム、さまざまな市販のUNIX(登録商標)またはUNIX類似オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがこれらに限定されない)、および/またはモバイルオペレーティングシステム、例えば、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムなどのさまざまなバージョンを含み得る。
【0179】
コンピュータ可読記憶媒体822は、いくつかの例の機能を提供するプログラミングおよびデータ構造を記憶することができる。コンピュータ可読媒体822は、コンピュータシステム800用のコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶を提供し得る。処理サブシステム804によって実行されると、上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム818に記憶され得る。一例として、コンピュータ可読記憶媒体822は、ハードディスクドライブ、磁気ディスクドライブ、CDROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光媒体などの不揮発性メモリが含まれ得る。コンピュータ可読記憶媒体822としては、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどが含まれ得る、これらに限定されない。コンピュータ可読記憶媒体822には、フラッシュメモリベースのSSDなどの不揮発性メモリに基づくソリッド状態ドライブ(SSD)、企業フラッシュドライブ、ソリッド状態ROMなど、ソリッド状態RAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、DRAMとフラッシュメモリベースのSSDを組み合わせて使用するハイブリッドSSDなどの揮発性メモリをベースとするSSDも含まれ得る。
【0180】
とある例では、記憶サブシステム818はまた、コンピュータ可読記憶媒体822にさらに接続され得るコンピュータ可読記憶媒体リーダ820を含み得る。リーダ820は、ディスク、フラッシュドライブなどのメモリ装置からデータを受信して読み取るように構成され得る。
【0181】
とある例では、コンピュータシステム800は、処理リソースおよびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートすることができる。例えば、コンピュータシステム800は、1つまたは複数の仮想機械を実行するためのサポートを提供することができる。とある例では、コンピュータシステム800は、仮想機械の構成および管理を容易にするハイパーバイザなどのプログラムを実行することができる。各仮想機械には、メモリ、コンピューティング(例えば、プロセッサ、コア)、I/O、およびネットワークリソースが割り当てられ得る。各仮想機械は通常、他の仮想機械とは独立して実行される。仮想機械は通常、独自のオペレーティングシステムを実行し、それは、コンピュータシステム800によって実行される他の仮想機械によって実行されるオペレーティングシステムと同じであっても、異なっていてもよい。したがって、複数のオペレーティングシステムがコンピュータシステム800によって同時に潜在的に実行され得る。
【0182】
通信サブシステム824は、他のコンピュータシステムおよびネットワークへのインターフェースを提供する。通信サブシステム824は、コンピュータシステム800から他のシステムとの間でデータを送受信するためのインターフェースとして機能する。例えば、通信サブシステム824により、コンピュータシステム800は、インターネットを介して1つまたは複数のクライアント装置との通信チャネルを確立し、クライアント装置との間で情報を送受信できるようになる。例えば、コンピュータシステム800を使用して図1に示すボットシステム120を実装する場合、通信サブシステムを使用して、アプリケーション用に選択されるチャットボットシステムと通信することができる。
【0183】
通信サブシステム824は、有線通信プロトコルおよび/または無線通信プロトコルの両方をサポートすることができる。とある例では、通信サブシステム824は、無線音声および/またはデータネットワーク(例えば、携帯電話技術、3G、4G、またはEDGE(世界的な進化のための強化されるデータ速度)などの高度なデータネットワーク技術の使用)へアクセスするための無線周波数(RF)トランシーバ構成要素、WiFi(IEEE802.XXファミリ規格、その他のモバイル通信技術、またはそれらの組み合わせ)、全地球測位システム(GPS)受信機構成要素、および/または他の構成要素を含んでもよい。いくつかの例では、通信サブシステム824は、無線インターフェースに加えて、または無線インターフェースの代わりに、有線ネットワーク接続(例えば、イーサネット)を提供することができる。
【0184】
通信サブシステム824は、さまざまな形式でデータを送受信することができる。いくつかの例では、他の形式に加えて、通信サブシステム824は、構造化および/または非構造化データフィード826、イベントストリーム828、イベント更新830などの形式で入力通信を受信することができる。例えば、通信サブシステム824は、ソーシャルメディアネットワークおよび/または他の通信サービスのユーザからリアルタイムでデータフィード826を受信(または送信)するように構成され得、例えば、Twitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリー(RSS)フィードなどのWebフィード、および/または1つまたは複数のサードパーティ情報ソースからのリアルタイム更新などである。
【0185】
とある例では、通信サブシステム824は、連続データストリームの形式でデータを受信するように構成され、これには、明示的な終了がなく、本質的に連続的または無制限である可能性がある、リアルタイムイベントおよび/またはイベント更新830のイベントストリーム828が含まれ得る。連続データを生成するアプリケーションの例としては、センサーデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などが挙げられ得る。
【0186】
通信サブシステム824は、コンピュータシステム800から他のコンピュータシステムまたはネットワークにデータを通信するように構成することもできる。データは、構造化データフィードおよび/または非構造化データフィード826、イベントストリーム828、イベント更新830などのさまざまな形式で、コンピュータシステム800に結合される1つまたは複数のストリーミングデータソースコンピュータと通信している可能性のある1つまたは複数のデータベースに通信され得る。
【0187】
コンピュータシステム800は、さまざまなタイプのうちの1つであり得、これには、ハンドヘルドポータブル装置(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムが含まれる。コンピュータおよびネットワークの絶え間なく変化する性質のため、図8に示されるコンピュータシステム800の説明は、具体的な実施例としてのみ意図されている。図8に示されるシステムよりも多いまたは少ない構成要素を有する他の多くの構成が可能である。本明細書で提供される開示および教示に基づいて、さまざまな例を実装するための他の方法および/または方法があることを理解されたい。
【0188】
具体的な実施例を説明したが、さまざまな修正、変更、代替構成、および均等物が可能である。例は、とある具体的なデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、特定の一連のトランザクションおよびステップを使用してとある例を説明したが、これが限定を意図するものではないことは当業者には明らかである。一部のフローチャートでは動作が逐次的なプロセスとして説明されているが、動作の多くは並列または同時に実行できる。さらに、動作の順序は並べ替えることができる。プロセスには、図に含まれていない追加のステップが含まれ得る。上記の例のさまざまな特徴および態様は、個別にまたは組み合わせて使用できる。
【0189】
さらに、ハードウェアとソフトウェアの特定の組み合わせを使用してとある例を説明したが、ハードウェアとソフトウェアの他の組み合わせも可能であることを認識されたい。とある例は、ハードウェアのみで、もしくはソフトウェアのみで、またはそれらの組み合わせを使用して実装することができる。本明細書で説明されるさまざまなプロセスは、同じプロセッサ上で実装されてもよいし、異なるプロセッサ上で任意の組み合わせで実装されてもよい。
【0190】
装置、システム、構成要素、またはモジュールがとある動作または機能を実行するように構成されていると説明されている場合、このような構成は、例えば、動作を実行する電子回路を設計することによって、コンピュータ命令もしくはコード、または非一時的メモリ媒体に記憶されるコードもしくは命令を実行するようにプログラムされるプロセッサもしくはコア、またはそれらの任意の組み合わせを実行することなどによって動作を実行するプログラマブル電子回路(例えば、マイクロプロセッサ)をプログラムすることによって達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、プロセスの異なる対が異なる技術を使用することも、同じプロセスの対が異なる時点で異なる技術を使用することもできる。
【0191】
実施例の完全な理解を提供するために、本開示では具体的な詳細が与えられる。しかし、これらの具体的な詳細なしで例を実施することもできる。例えば、よく知られている回路、プロセス、アルゴリズム、構造、および技術は、例を分かりにくくすることを避けるために不必要な詳細を省略して示されている。この説明は、例示的な例のみを提供するものであり、他の例の範囲、適用性、または構成を制限することを意図するものではない。むしろ、前述の例の説明は、当業者に、さまざまな例を実装するための有効な説明を提供するものである。要素の機能や配置にはさまざまな変更を加えることができる。
【0192】
したがって、本明細書および図面は、限定的な意味ではなく、例示的な意味としてみなされるべきである。しかし、特許請求の範囲に記載のより広い趣旨および範囲から逸脱することなく、追加、減算、削除、ならびにその他の修正および変更を行うことができることは明らかである。したがって、具体的な実施例を説明したが、これらは限定することを意図したものではない。さまざまな修正および均等物は、以下の特許請求の範囲内に含まれる。
【0193】
前述の明細書では、本開示の態様を具体的な実施例を参照して説明したが、当業者であれば、本開示はこれらに限定されないことは理解できるであろう。上述の開示のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。さらに、例は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書に記載されているものを超えて、任意の数の環境および用途で利用することができる。したがって、明細書および図面は、限定的なものではなく、例示的なものとみなされるべきである。
【0194】
前述の説明では、例示の目的で、方法を特定の順序で説明した。代替例では、方法は説明した順序とは異なる順序で実行されてもよいことを理解されたい。また、上述の方法は、ハードウェア構成要素によって実行されてもよいし、機械実行可能命令のシーケンスで具体化されてもよく、命令でプログラムされる汎用もしくは専用のプロセッサまたは論理回路などの機械に方法を実行させるために使用することができることを理解されたい。これらの機械実行可能命令は、CD-ROMまたはその他のタイプの光ディスク、フロッピーディスク、ROM、RAM、EPROM、EEPROM、磁気カードもしくは光カード、フラッシュメモリ、または電子命令を記憶するのに適したその他のタイプの機械可読媒体など、1つまたは複数の機械可読媒体に記憶され得る。あるいは、これらの方法は、ハードウェアとソフトウェアの組み合わせによって実行されてもよい。
【0195】
構成要素がとある動作を実行するように構成されていると説明されている場合、このような構成は、例えば、動作を実行する電子回路または他のハードウェアを設計することによって、動作を実行するプログラマブル電子回路(例えば、マイクロプロセッサまたは他の適切な電子回路)をプログラムすることによってまたはそれらの組み合わせによって達成され得る。
【0196】
本明細書では、本出願の例示的な実施例について詳細に説明したが、本発明の概念は、他のさまざまな形で具体化および採用され得ること、および、添付の請求項は、先行技術によって制限されない限り、そのような変形を含むように解釈されることが意図されていることを理解されたい。
図1
図2
図3
図4A
図4B
図5A
図5B
図6
図7
図8
【国際調査報告】