(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-31
(54)【発明の名称】ハッシュ埋め込みを用いた言語検出のための広範な深層ネットワーク
(51)【国際特許分類】
G06F 40/216 20200101AFI20241024BHJP
G06N 3/04 20230101ALI20241024BHJP
【FI】
G06F40/216
G06N3/04
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024526927
(86)(22)【出願日】2022-11-07
(85)【翻訳文提出日】2024-06-11
(86)【国際出願番号】 US2022049164
(87)【国際公開番号】W WO2023081483
(87)【国際公開日】2023-05-11
(32)【優先日】2021-11-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-11-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ブー,タン・ティエン
(72)【発明者】
【氏名】ザレムーディ,ポーヤ
(72)【発明者】
【氏名】ブー,ズイ
(72)【発明者】
【氏名】ジョンソン,マーク・エドワード
(72)【発明者】
【氏名】ジョン,シュ
(72)【発明者】
【氏名】ブリノフ,ブラディスラフ
(72)【発明者】
【氏名】ホアン,コン・ズイ・ブー
(72)【発明者】
【氏名】ホン,ユ-ヘン
(72)【発明者】
【氏名】ゴエル,ビナムル
(72)【発明者】
【氏名】オグレン,フィリップ・ビクター
(72)【発明者】
【氏名】ガッデ,シュリニバーサ・ファニ・クマール
(72)【発明者】
【氏名】ビシュノイ,ビシャル
(72)【発明者】
【氏名】ドゥオン,タン・ロン
(57)【要約】
本明細書に開示される技術は、一般的に言語検出に関する。特定の一態様では、テキスト単位のnグラムのシーケンスを取得することと、埋め込み層を使用してnグラムのシーケンスの順序付けられる複数の埋め込みベクトルを取得することと、深層ネットワークを使用して順序付けられる複数の埋め込みベクトルに基づく符号化ベクトルを取得することと、分類器を使用して符号化ベクトルに基づくテキスト単位の言語予測を取得することと、を含む方法が提供される。深層ネットワークには注意機構が含まれており、埋め込み層を使用して順序付けられる複数の埋め込みベクトルを取得することは、nグラムのシーケンス内の各nグラムについて、nグラムのハッシュ値を取得することと、ハッシュ値に基づいて、複数の成分ベクトルの中から成分ベクトルを選択することと、成分ベクトルに基づいてnグラムの埋め込みベクトルを取得することと、を含む。
【特許請求の範囲】
【請求項1】
テキスト単位のnグラムのシーケンスを取得することと、
埋め込み層を使用して、nグラムの前記シーケンスに対して順序付けられる複数の埋め込みベクトルを取得することと、
深層ネットワークを使用して、前記順序付けられる複数の埋め込みベクトルに基づく符号化ベクトルを取得することと、
分類器を使用して、前記符号化ベクトルに基づく前記テキスト単位の言語予測を取得することと、を含み、
前記埋め込み層は、複数の成分ベクトルを有するトレーニングされるモデルを含み、
前記深層ネットワークは注意機構を含み、
前記埋め込み層を使用して前記順序付けられる複数の埋め込みベクトルを取得することは、nグラムの前記シーケンス内の各nグラムに対して、
前記nグラムの第1のハッシュ値と前記nグラムの第2のハッシュ値を取得することと、
前記第1のハッシュ値に基づいて、前記複数の成分ベクトルの中から第1の成分ベクトルを選択することと、
前記第2のハッシュ値に基づいて、前記複数の成分ベクトルの中から第2の成分ベクトルを選択することと、
前記第1の成分ベクトルと前記第2の成分ベクトルに基づいて、前記nグラムの埋め込みベクトルを取得することと、を含む、言語検出方法。
【請求項2】
nグラムの前記シーケンスは、複数の文字レベルのnグラムと複数の単語レベルのnグラムとを含む、請求項1に記載の方法。
【請求項3】
前記複数の文字レベルのnグラムのnの値は、前記複数の単語レベルのnグラムのnの値とは異なる、請求項2に記載の方法。
【請求項4】
前記深層ネットワークは、トレーニングされる畳み込みニューラルネットワークを含む、請求項1に記載の方法。
【請求項5】
nグラムの前記シーケンス内の各nグラムについて、
前記nグラムの前記第1のハッシュ値を取得することは、第1のシード値を有するハッシュ関数を前記nグラムに適用することを含み、
前記nグラムの前記第2のハッシュ値を取得することは、第2のシード値を有する前記ハッシュ関数を前記nグラムに適用することを含み、前記第2のシード値は前記第1のシード値とは異なる、請求項1に記載の方法。
【請求項6】
前記埋め込み層を使用して前記順序付けられる複数の埋め込みベクトルを取得することは、nグラムの前記シーケンス内の各nグラムについて、前記第1のハッシュ値にモジュロ関数を適用して第1のインデックスを取得し、前記第2のハッシュ値に前記モジュロ関数を適用して第2のインデックスを取得することを含み、前記第1の成分ベクトルの選択は前記第1のインデックスに基づき、前記第2の成分ベクトルの選択は前記第2のインデックスに基づく、請求項1に記載の方法。
【請求項7】
nグラムの前記シーケンス内の各nグラムについて、前記nグラムの前記埋め込みベクトルを取得することは、前記第1の成分ベクトルと前記第2の成分ベクトルとを連結することを含む、請求項1~請求項6のいずれか1項に記載の方法。
【請求項8】
nグラムの前記シーケンス内の各nグラムについて、前記nグラムの前記埋め込みベクトルを取得することは、
前記第1の成分ベクトルに第1の重み値を適用して第1の重み付けベクトルを取得することと、
前記第2の成分ベクトルに第2の重み値を適用して第2の重み付けベクトルを取得することと、を含み、前記埋め込みベクトルは前記第1の重み付けベクトルと前記第2の重み付けベクトルに基づく、請求項1~請求項6のいずれか1項に記載の方法。
【請求項9】
前記分類器はフィードフォワードニューラルネットワークを含む、請求項1~請求項6のいずれか1項に記載の方法。
【請求項10】
前記分類器を使用することは、前記フィードフォワードニューラルネットワークの最終層の出力にソフトマックス関数を適用することを含む、請求項9に記載の方法。
【請求項11】
1つまたは複数のデータプロセッサと、
前記1つまたは複数のデータプロセッサによって実行されると、前記1つまたは複数のデータプロセッサに
テキスト単位のnグラムのシーケンスを取得することと、
埋め込み層を使用して、nグラムの前記シーケンスに対して順序付けられる複数の埋め込みベクトルを取得することと、
深層ネットワークを使用して、前記順序付けられる複数の埋め込みベクトルに基づく符号化ベクトルを取得することと、
分類器を使用して、前記符号化ベクトルに基づく前記テキスト単位の言語予測を取得することと、を含む、処理を実行させる命令を記憶する、1つまたは複数の非一時的なコンピュータ可読媒体と、を含み、
前記埋め込み層は、複数の成分ベクトルを有するトレーニングされるモデルを含み、
前記深層ネットワークは注意機構を含み、
前記埋め込み層を使用して前記順序付けられる複数の埋め込みベクトルを取得することは、nグラムの前記シーケンス内の各nグラムに対して、
前記nグラムの第1のハッシュ値と前記nグラムの第2のハッシュ値を取得することと、
前記第1のハッシュ値に基づいて、前記複数の成分ベクトルの中から第1の成分ベクトルを選択することと、
前記第2のハッシュ値に基づいて、前記複数の成分ベクトルの中から第2の成分ベクトルを選択することと、
前記第1の成分ベクトルと前記第2の成分ベクトルに基づいて、前記nグラムの埋め込みベクトルを取得することと、を含む、システム。
【請求項12】
前記nグラムの前記シーケンス内の各nグラムについて、
前記nグラムの前記第1のハッシュ値を取得することは、第1のシード値を有するハッシュ関数を前記nグラムに適用することを含み、
前記nグラムの前記第2のハッシュ値を取得することは、第2のシード値を有する前記ハッシュ関数を前記nグラムに適用することを含み、前記第2のシード値は前記第1のシード値とは異なる、請求項11に記載のシステム。
【請求項13】
前記埋め込み層を使用して前記順序付けられる複数の埋め込みベクトルを取得することは、nグラムの前記シーケンス内の各nグラムについて、前記第1のハッシュ値にモジュロ関数を適用して第1のインデックスを取得し、前記第2のハッシュ値に前記モジュロ関数を適用して第2のインデックスを取得することを含み、前記第1の成分ベクトルの選択は前記第1のインデックスに基づき、前記第2の成分ベクトルの選択は前記第2のインデックスに基づく、請求項11に記載のシステム。
【請求項14】
nグラムの前記シーケンス内の各nグラムについて、前記nグラムの前記埋め込みベクトルを取得することは、
前記第1の成分ベクトルに第1の重み値を適用して第1の重み付けベクトルを取得することと、
前記第2の成分ベクトルに第2の重み値を適用して第2の重み付けベクトルを取得することと、を含み、前記埋め込みベクトルは前記第1の重み付けベクトルと前記第2の重み付けベクトルに基づく、請求項11に記載のシステム。
【請求項15】
前記深層ネットワークのトレーニングは、対応する入力テキスト単位のスクリプト情報に従って言語予測を制限することを含む、請求項11~14のいずれか1項に記載のシステム。
【請求項16】
1つまたは複数の非一時的な機械可読媒体に有形に具体化されるコンピュータプログラム製品であって、1つまたは複数のデータプロセッサに、
テキスト単位のnグラムのシーケンスを取得することと、
埋め込み層を使用して、nグラムの前記シーケンスに対して順序付けられる複数の埋め込みベクトルを取得することと、
深層ネットワークを使用して、前記順序付けられる複数の埋め込みベクトルに基づく符号化ベクトルを取得することと、
分類器を使用して、前記符号化ベクトルに基づく前記テキスト単位の言語予測を取得することと、を含む、処理を実行させるように構成される命令を含み、
前記埋め込み層は、複数の成分ベクトルを有するトレーニングされるモデルを含み、
前記深層ネットワークは注意機構を含み、
前記埋め込み層を使用して前記順序付けられる複数の埋め込みベクトルを取得することは、nグラムの前記シーケンス内の各nグラムに対して、
前記nグラムの第1のハッシュ値と前記nグラムの第2のハッシュ値を取得することと、
前記第1のハッシュ値に基づいて、前記複数の成分ベクトルの中から第1の成分ベクトルを選択することと、
前記第2のハッシュ値に基づいて、前記複数の成分ベクトルの中から第2の成分ベクトルを選択することと、
前記第1の成分ベクトルと前記第2の成分ベクトルに基づいて、前記nグラムの埋め込みベクトルを取得することと、を含む、コンピュータプログラム製品。
【請求項17】
nグラムの前記シーケンス内の各nグラムについて、
前記nグラムの前記第1のハッシュ値を取得することは、第1のシード値を有するハッシュ関数を前記nグラムに適用することを含み、
前記nグラムの前記第2のハッシュ値を取得することは、第2のシード値を有する前記ハッシュ関数を前記nグラムに適用することを含み、前記第2のシード値は前記第1のシード値とは異なる、請求項16に記載のコンピュータプログラム製品。
【請求項18】
前記埋め込み層を使用して前記順序付けられる複数の埋め込みベクトルを取得することは、nグラムの前記シーケンス内の各nグラムについて、前記第1のハッシュ値にモジュロ関数を適用して第1のインデックスを取得し、前記第2のハッシュ値に前記モジュロ関数を適用して第2のインデックスを取得することを含み、前記第1の成分ベクトルの選択は前記第1のインデックスに基づき、前記第2の成分ベクトルの選択は前記第2のインデックスに基づく、請求項16に記載のコンピュータプログラム製品。
【請求項19】
nグラムの前記シーケンス内の各nグラムについて、前記nグラムの前記埋め込みベクトルを取得することは、
前記第1の成分ベクトルに第1の重み値を適用して第1の重み付けベクトルを取得することと、
前記第2の成分ベクトルに第2の重み値を適用して第2の重み付けベクトルを取得することと、を含み、前記埋め込みベクトルは前記第1の重み付けベクトルと前記第2の重み付けベクトルに基づく、請求項16に記載のコンピュータプログラム製品。
【請求項20】
前記深層ネットワークの使用は、
nグラムの前記シーケンスのうち第1のnグラムに対応する第1の特徴値に第1の注意重みを適用することと、
nグラムの前記シーケンス内の第2のnグラムに対応する第2の特徴値に、前記第1の注意重みとは異なる第2の注意重みを適用することと、を含む、請求項16~19のいずれか1項に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、2021年11月8日に出願された米国仮特許出願第63/263,728号、発明の名称「WIDE AND DEEP NETWORK FOR LANGUAGE DETECTION USING HASHED EMBEDDINGS」、および2022年11月4日に出願された米国非仮出願第18/052,694号、「WIDE AND DEEP NETWORK FOR LANGUAGE DETECTION USING HASH EMBEDDINGS」に対する優先権を主張し、これらの出願は、あらゆる目的のためにその全体が参照により本明細書に組み込まれる。
【0002】
発明の分野
本開示は、一般的には自然言語処理に関し、より具体的には言語検出の技術に関する。
【背景技術】
【0003】
背景
世界中の多くのユーザが、即座に反応を得るためにインスタントメッセージングやチャットプラットフォームを利用している。組織は多くの場合、これらのインスタントメッセージングプラットフォームやチャットプラットフォームを使用して、顧客(またはエンドユーザ)とライブの会話を交わす。しかし、組織が顧客やエンドユーザとのライブ通信に従事するサービス担当者を雇用すると、非常にコストがかかる可能性がある。特にインターネット上でエンドユーザとの会話をシミュレートするために、チャットボット(または「ボット」)の開発が始まっている。エンドユーザは、すでにインストールして使用しているメッセージングアプリを通じてボットと通信できる。インテリジェントボットは一般に人工知能(AI)を活用しており、ライブ会話においてよりインテリジェントかつコンテキストに応じた通信を行うことができるため、ボットとエンドユーザの間でより自然な会話が可能になり、会話エクスペリエンスが向上し得る。エンドユーザが、ボットが応答方法を知っている固定のキーワードやコマンドのセットを学習する代わりに、インテリジェントボットは、自然言語でのユーザの発話に基づいてエンドユーザの意図を理解し、それに応じて応答できる可能性がある。
【0004】
言語検出は、テキスト単位の言語を識別するタスクである。テキスト単位の例としては、文、電子メール、投稿、テキストメッセージ、製品レビュー、段落、または文書などが挙げられる。テキスト単位は、発話に応じて音声テキスト変換モジュールによって生成され得る。言語検出は、機械翻訳、テキスト分類など、多くのテキスト処理タスクの最初のステップの1つである。例えば、多言語ボットの展開を成功させるには、正確な言語検出が重要になり得る。
【発明の概要】
【課題を解決するための手段】
【0005】
概要
本明細書に開示される技術は、一般的には言語検出(例えば、自然言語処理)に関する。言語検出を実行するために使用できる機械学習(ML)モデルの例には、ワイドネットワークが含まれる。例えば、言語検出に対する機械学習のアプローチには、入力テキストを文字列として、またはnグラムやサブワードのシーケンスとして、ワイドネットワークに提示することが含まれ得る。本明細書に開示される技術は、テキスト単位の言語検出を提供することができる。
【0006】
さまざまな実施形態において、言語検出のためのコンピュータが実装する方法は、テキスト単位のnグラムのシーケンスを取得することと、埋め込み層を使用してnグラムのシーケンスの順序付けられる複数の埋め込みベクトルを取得することと、深層ネットワークを使用して順序付けられる複数の埋め込みベクトルに基づく符号化ベクトルを取得することと、分類器を使用して符号化ベクトルに基づくテキスト単位の言語予測を取得することと、を含む。埋め込み層には、複数の成分ベクトルを有するトレーニングされるモデルが含まれ、深層ネットワークには、注意機構(例えば、1つまたは複数の注意層)を備えたトレーニングされる畳み込みニューラルネットワークが含まれる。この方法では、埋め込み層を使用して順序付けられる複数の埋め込みベクトルを取得することは、nグラムのシーケンス内の各nグラムについて、nグラムの第1のハッシュ値とnグラムの第2のハッシュ値を取得することと、第1のハッシュ値に基づいて、複数の成分ベクトルの中から第1の成分ベクトルを選択することと、第2のハッシュ値に基づいて、複数の成分ベクトルの中から第2の成分ベクトルを選択することと、第1の成分ベクトルと第2の成分ベクトルを連結することによってnグラムの埋め込みベクトルを取得することと、を含む。いくつかの実施形態では、深層ネットワークは、注意機構を備えたトレーニングされる畳み込みニューラルネットワークを含む。
【0007】
いくつかの実施形態では、nグラムのシーケンスには、複数の文字レベルのnグラムと複数の単語レベルのnグラムが含まれる。いくつかの実施形態では、複数の文字レベルのnグラムのnの値は、複数の単語レベルのnグラムのnの値と異なる。
【0008】
いくつかの実施形態では、nグラムのシーケンス内の各nグラムについて、nグラムの第1のハッシュ値を取得することは、第1のランダムシード値を有するハッシュ関数をnグラムに適用することを含み、nグラムの第2のハッシュ値を取得することは、第2のランダムシード値を有するハッシュ関数をnグラムに適用することを含み、第2のシード値は第1のシード値とは異なる。
【0009】
いくつかの実施形態では、埋め込み層を使用して順序付けられる複数の埋め込みベクトルを取得することは、nグラムのシーケンス内の各nグラムについて、第1のハッシュ値にモジュロ関数を適用して第1のインデックスを取得し、第2のハッシュ値にモジュロ関数を適用して第2のインデックスを取得することを含み、第1の成分ベクトルの選択は第1のインデックスに基づいており、第2の成分ベクトルの選択は第2のインデックスに基づいている。
【0010】
いくつかの実施形態では、nグラムのシーケンス内の各nグラムについて、nグラムの埋め込みベクトルを取得することは、第1の成分ベクトルと第2の成分ベクトルを連結することを含む。
【0011】
いくつかの実施形態では、注意機構を備えたトレーニングされる畳み込みニューラルネットワークを含む深層ネットワークが、テキスト単位に現れるnグラムの順序を考慮して、テキスト単位を表す最終的な符号化ベクトルを生成するために、nグラム埋め込みベクトルのシーケンスに使用される。
【0012】
いくつかの実施形態では、分類器はフィードフォワードニューラルネットワークを含む。いくつかの実施形態では、テキスト単位の符号化ベクトルの場合、分類器を使用することは、フィードフォワードニューラルネットワークの最終層の出力にソフトマックス関数を適用することを含む。
【0013】
さまざまな実施形態において、本明細書に開示される1つまたは複数の方法の一部または全部を実行するための処理回路と、処理回路に結合され、nグラムのシーケンスを記憶するためのメモリとを含む装置が提供される。
【0014】
さまざまな実施形態において、1つまたは複数のデータプロセッサと、1つまたは複数のデータプロセッサによって実行されると、1つまたは複数のデータプロセッサに本明細書に開示される1つまたは複数の方法の一部または全部を実行させる命令を記憶する1つまたは複数の非一時的なコンピュータ可読媒体とを含むシステムが提供される。
【0015】
さまざまな実施形態において、1つまたは複数の非一時的な機械可読媒体に有形に具体化されるコンピュータプログラム製品は、1つまたは複数のデータプロセッサに本明細書に開示される1つまたは複数の方法の一部または全部を実行させるように構成される命令を含む。
【0016】
上記および下記に説明する技術は、多くの方法および多くのコンテキストで実装することができる。下記により詳細に説明するように、いくつかの実装例およびコンテキストが、以下の図を参照して提供される。しかし、次に挙げる実装とコンテキストは、数多くある実装とコンテキストのほんの一部にすぎない。
【図面の簡単な説明】
【0017】
【
図1】例示的な実施形態を組み込んだ分散環境の簡略化されるブロック図である。
【
図2】とある実施形態によるマスターボットを実装するコンピューティングシステムの簡略化されるブロック図である。
【
図3】とある実施形態によるスキルボットを実装するコンピューティングシステムの簡略化されるブロック図である。
【
図4】さまざまな実施形態に従ったモデルアーキテクチャの一例を示す図である。
【
図5】さまざまな実施形態に従ったモデルアーキテクチャの別の例を示す図である。
【
図6】
図5のモデルアーキテクチャがさまざまな実施形態に従って変更される例を示す図である。
【
図7】さまざまな実施形態に従ったAPIへの要求の例を示す図である。
【
図8】さまざまな実施形態に従ったAPIからの応答の例を示す図である。
【
図9】OPUSソースデータセットを説明する表を示す図である。
【
図10】さまざまな実施形態に従った言語検出テストの結果を示す図である。
【
図11】さまざまな実施形態に従った装置のブロック図を示す図である。
【
図12】さまざまな実施形態に従った装置に含まれ得る注意機構を備えた深層ネットワークの例を示す図である。
【
図13】さまざまな実施形態に従って埋め込み層によって実行され得る演算の例を示す図である。
【
図14】さまざまな実施形態に従った言語検出のプロセスフローを示す図である。
【
図15】さまざまな実施形態に従った言語検出のプロセスフローを示す図である。
【
図16】さまざまな実施形態を実装するための分散システムの簡略図を示す図である。
【
図17】さまざまな実施形態による、実施形態のシステムの1つまたは複数の構成要素によって提供されるサービスがクラウドサービスとして提供され得るシステム環境の1つまたは複数の構成要素の簡略化されるブロック図である。
【
図18】さまざまな実施形態を実装するために使用され得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0018】
詳細な説明
以下の説明では、説明の目的で、とある実施形態の完全な理解を提供するために具体的な詳細が記載される。しかし、これらの具体的な詳細がなくても、さまざまな実施形態を実施できることは明らかであろう。図および説明は制限的なものではない。「例示的な」という言葉は、本明細書では「例、実例、または説明として機能する」という意味で使用される。本明細書で「例示的」として説明される実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0019】
本明細書において使用されるように、あるアクションが何かに「基づいている」場合、これは、そのアクションが少なくとも部分的に、その何かの少なくとも一部に基づいていることを意味する。「に基づく」の使用は、オープンかつ包括的であることを意味し、1つまたは複数の記載される条件、項目、または値に「基づく」プロセス、ステップ、計算、またはその他のアクションは、実際には、記載されるもの以外の追加の条件、項目、または値に基づく場合がある。本明細書で使用される「実質的に」、「およそ」および「約」という用語は、当業者によって理解されるように、大部分は指定されているが必ずしも完全に指定されているとは限らない(指定されているものを完全に含む)ものとして定義される。開示されるいずれの実施形態においても、「実質的に」、「およそ」、または「約」という用語は、指定されるものの「[パーセンテージ]以内」に置き換えられ得、ここで、パーセンテージには、0.1、1、5、および10パーセントが含まれる。
【0020】
導入
これまでの研究では、言語検出タスクをテキスト分類タスクとして定式化してきた。そのようなアプローチの1つは、従来の特徴ベースの機械学習(例えば、nグラム特徴を使用したNaive Bayes)を利用してタスクを処理することである。別のそのようなアプローチでは、タスクを処理するために深層学習(例えば、畳み込みニューラルネットワーク(CNN)や長短期記憶(LSTM)ネットワーク)が利用されている。
【0021】
本明細書に記載の技術には、言語検出のタスクを処理するために、nグラム特徴を備えた注意CNN(つまり、注意機構を備えたCNN)を利用することが含まれる。例えば、深層学習を使用して135の言語の言語検出アプリケーションプログラミングインターフェイス(API)を構築するアプローチについて説明する。公開されているデータセットでの実験では、このようなモデルがfastText、Google(登録商標)、Microsoftの言語検出APIと同等かそれ以上に機能することが示されている。
【0022】
自然言語処理には多くの用途がある。例えば、デジタルアシスタントは、自然言語による会話を使用してユーザがさまざまなタスクを実行できるように支援する人工知能駆動型インターフェースである。各デジタルアシスタントごとに、顧客は1つまたは複数のスキルを組み立てることができる。スキル(本明細書ではチャットボット、ボット、またはスキルボットとも呼ばれる)は、在庫の追跡、タイムカードの送信、ピザの注文、銀行情報の取得、経費報告書の作成など、特定の種類のタスクに重点を置いた個別のコンピュータプログラムである。タスクを実行するために、ボットはエンドユーザと会話を行うことができる。ボットは通常、自然言語メッセージを使用するメッセージングアプリケーションを通じて自然言語メッセージ(例えば、質問やコメント)に応答できる。企業は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、またはその他の音声入力を使用するインターフェースを備えた装置やアプリ)が含まれ得る。
【0023】
いくつかの例では、ボットシステムは、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つのシステム間の他の任意のタイプの通信であり得ることを理解されたい。
【0024】
エンドユーザは、ちょうど人間間の対話と同様に、会話型対話(会話型ユーザインターフェース(UI)と呼ばれることもある)を通じてボットシステムと対話することができる。場合によっては、対話には、エンドユーザがボットに「こんにちは」と言うと、ボットが「こんにちは」と応答して、どのように役立ち得るかをエンドユーザに尋ねることが含まれ得る。場合によっては、この対話は、例えば、ある口座から別の口座への送金など、銀行ボットとの取引上の対話、例えば、休暇残高の確認など、人事ボットとの情報対話、または、例えば、購入した商品の返品について話し合ったり、技術サポートを求めたりするなど、小売ボットとの対話である場合もある。
【0025】
いくつかの実施形態では、ボットシステムは、ボットシステムの管理者または開発者と対話することなく、エンドユーザの対話をインテリジェントに処理することができる。例えば、エンドユーザは、所望の目標を達成するために、ボットシステムに1つまたは複数のメッセージを送信し得る。メッセージには、テキスト、絵文字、音声、画像、ビデオ、またはその他のメッセージ伝達方法などのとあるコンテンツが含まれ得る。いくつかの実施形態では、ボットシステムは、コンテンツを標準化される形式(例えば、適切なパラメータを備えた企業サービスに対する表現状態転送(REST)呼び出し)に変換し、自然言語応答を生成することができる。ボットシステムは、エンドユーザに追加の入力パラメータを促したり、他の追加情報を要求したりすることもできる。いくつかの実施形態では、ボットシステムは、エンドユーザの発話に受動的に応答するのではなく、エンドユーザとの通信を開始することもできる。本明細書では、ボットシステムの明示的な呼び出しを識別し、呼び出されるボットシステムへの入力を決定するためのさまざまな技術について説明する。とある実施形態では、明示的な呼び出し分析は、発話内の呼び出し名の検出に基づいてマスターボットによって実行される。呼び出し名の検出に応答して、その呼び出し名に関連付けられるスキルボットへの入力のために発話を改良することができる。
【0026】
ボットとの会話は、複数の状態を含む特定の会話フローに従うことができる。フローは、入力に基づいて次に何が起こるかを定義できる。いくつかの実施形態では、ユーザ定義の状態(例えば、エンドユーザの意図)と、その状態において、または状態から状態へと実行するアクションを含む状態機械を使用して、ボットシステムを実装することができる。会話はエンドユーザの入力に基づいて異なるパスをたどる場合があり、それがボットによるフローの決定に影響を与える可能性がある。例えば、各状態で、エンドユーザの入力または発話に基づいて、ボットはエンドユーザの意図を決定し、次に実行する適切なアクションを決定できる。本明細書および発話のコンテキストにおいて使用される場合、「意図」という用語は、発話を提供したユーザの意図を指す。例えば、ユーザはピザを注文するためにボットと会話することを意図している場合があり、その結果、ユーザの意図は「ピザを注文する」という発話を通じて表現され得る。ユーザの意図は、ユーザが代わりにチャットボットに実行してほしい特定のタスクに向けることができる。したがって、発話は、ユーザの意図を反映した質問、コマンド、要求などの表現にすることができる。意図には、エンドユーザが達成したい目標が含まれ得る。
【0027】
チャットボットの構成に関連して、「意図」という用語は、本明細書では、ユーザの発話を、チャットボットが実行できる特定のタスク/アクション、またはタスク/アクションのカテゴリにマッピングするための構成情報を指すために使用される。発話の意図(つまり、ユーザの意図)とチャットボットの意図を区別するために、後者を本明細書では「ボットの意図」と呼ぶことがある。ボットの意図には、その意図に関連付けられる1つまたは複数の発話のセットが含まれ得る。例えば、ピザを注文するという意図には、ピザを注文したいという願望を表す発話のさまざまな並べ換えが含まれ得る。これらの関連する発話を使用して、チャットボットの意図分類子をトレーニングし、その後、ユーザからの入力発話がピザの注文の意図と一致するかどうかを意図分類子が決定できるようにすることができる。ボットの意図は、ユーザととある状態で会話を開始するための1つまたは複数のダイアログフローに関連付けることができる。例えば、ピザの注文意図の第1のメッセージは、「どのような種類のピザが好きであるか?」という質問にすることができる。関連する発話に加えて、ボットの意図には、意図に関連する名前付きエンティティがさらに含まれ得る。例えば、ピザの注文意図には、ピザを注文するタスクを実行するために使用される変数またはパラメータ、例えば、トッピング1、トッピング2、ピザのタイプ、ピザのサイズ、ピザの量などを含めることができる。エンティティの値は通常、ユーザとの会話を通じて取得される。
【0028】
図1は、とある実施形態によるチャットボットシステムを組み込んだ環境100の簡略化されるブロック図である。環境100は、DABP102のユーザがデジタルアシスタントまたはチャットボットシステムを作成および展開できるようにするデジタルアシスタントビルダプラットフォーム(DABP)102を備える。DABP102を使用して、1つまたは複数のデジタルアシスタント(またはDA)またはチャットボットシステムを作成できる。例えば、
図1に示されるように、特定の企業を代表するユーザ104は、DABP102を使用して、特定の企業のユーザのためにデジタルアシスタント106を作成し展開することができる。例えば、銀行はDABP102を使用して、銀行の顧客が使用する1つまたは複数のデジタルアシスタントを作成できる。同じDABP102プラットフォームを複数の企業が使用してデジタルアシスタントを作成できる。別の例として、レストラン(例えば、ピザ店)のオーナーは、DABP102を使用して、レストランの顧客が食べ物を注文(例えば、ピザを注文)できるようにするデジタルアシスタントを作成して展開することができる。
【0029】
本開示の目的上、「デジタルアシスタント」は、デジタルアシスタントのユーザが自然言語会話を通じてさまざまなタスクを達成するのを支援するエンティティである。デジタルアシスタントは、ソフトウェアのみを使用して(例えば、デジタルアシスタントは、1つまたは複数のプロセッサによって実行可能なプログラム、コード、または命令を使用して実装されるデジタルエンティティである)、ハードウェアを使用して、またはハードウェアとソフトウェアの組み合わせを使用して実装することができる。デジタルアシスタントは、コンピュータ、携帯電話、時計、電化製品、車両などのさまざまな物理システムまたは装置で具体化または実装することができる。デジタルアシスタントは、チャットボットシステムと呼ばれることもある。したがって、本開示の目的上、デジタルアシスタントとチャットボットシステムという用語は交換可能である。
【0030】
DABP102を使用して構築されるデジタルアシスタント106などのデジタルアシスタントを使用して、デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を介してさまざまなタスクを実行することができる。会話の一部として、ユーザは、デジタルアシスタント106に1つまたは複数のユーザ入力110を提供し、デジタルアシスタント106から応答112を得ることができる。会話には、入力110と応答112の1つまたは複数を含めることができる。これらの会話を介して、ユーザは、デジタルアシスタントによって実行される1つまたは複数のタスクを要求することができ、これに応じて、デジタルアシスタントは、ユーザが要求したタスクを実行し、ユーザに適切な応答で応答するように構成される。
【0031】
ユーザ入力110は、一般に自然言語形式であり、発話と呼ばれる。ユーザ発話110は、ユーザが文、質問、テキストの断片、または単一の単語を入力し、それを入力としてデジタルアシスタント106に提供する場合など、テキスト形式とすることができる。いくつかの実施形態では、ユーザ発話110は、デジタルアシスタント106への入力として提供される何かをユーザが言うか話すときなど、音声入力または音声形式であり得る。発話は通常、ユーザ108が話す言語で行われる。例えば、発話は英語または他の言語で行われ得る。発話が音声形式である場合、音声入力はその特定の言語のテキスト形式の発話に変換され、テキスト発話はデジタルアシスタント106によって処理される。さまざまな音声からテキストへの処理技術を使用して、音声または音声入力をテキスト発話に変換することができ、その後デジタルアシスタント106によって処理される。いくつかの実施形態では、音声からテキストへの変換は、デジタルアシスタント106自体によって行われてもよい。
【0032】
発話は、テキスト発話または音声発話であり得、断片、文、複数の文、1つまたは複数の単語、1つまたは複数の質問、前述のタイプの組み合わせなどであることができる。デジタルアシスタント106は、発話に自然言語理解(NLU)技術を適用して、ユーザ入力の意味を理解するように構成されている。発話に対するNLU処理の一環として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成されており、これには、発話に対応する1つまたは複数の意図と1つまたは複数のエンティティを識別することが含まれる。発話の意味を理解すると、デジタルアシスタント106は、理解した意味または意図に応じて1つまたは複数のアクションまたは動作を実行することができる。本開示の目的上、発話は、デジタルアシスタント106のユーザ108によって直接提供されるテキスト発話であるか、または入力音声発話をテキスト形式に変換した結果であると仮定する。しかし、これはいかなる形でも限定または制限することを意図したものではない。
【0033】
例えば、ユーザ108の入力は、「ピザを注文したい」などの発話を提供することによって、ピザの注文を要求することができる。このような発話を受信すると、デジタルアシスタント106は、発話の意味を理解し、適切なアクションを実行するように構成される。適切なアクションには、例えば、ユーザが注文したいピザのタイプ、ピザのサイズ、ピザのトッピングなどについてのユーザ入力を求める質問でユーザに応答することが含まれ得る。デジタルアシスタント106によって提供される応答はまた、自然言語形式であってもよく、通常は入力発話と同じ言語であってもよい。これらの応答を生成する一環として、デジタルアシスタント106は自然言語生成(NLG)を実行することができる。ピザを注文するユーザの場合、ユーザとデジタルアシスタント106との間の会話を介して、デジタルアシスタントは、ピザの注文に必要な情報をすべて提供するようにユーザを誘導し、その後、会話の終わりにピザを注文させることができる。デジタルアシスタント106は、ピザが注文されることを示す情報をユーザに出力することによって会話を終了することができる。
【0034】
概念的なレベルでは、デジタルアシスタント106は、ユーザから受信した発話に応じてさまざまな処理を実行する。いくつかの実施形態では、この処理には、一連の処理ステップまたはパイプラインの処理ステップが含まれ、例えば、入力発話の意味を理解(自然言語理解(NLU)とも呼ばれる)することと、発話に応じて実行されるアクションを決定することと、そこでアクションの実行を適切に引き起こすことと、ユーザの発話に応答してユーザに出力される応答を生成すること、応答をユーザに出力することなどを含む。NLU処理は、受信した入力発話を解析して発話の構造および意味を理解すること、発話を改良および再形成して発話のより理解しやすい形式(例えば、論理形式)または構造を開発することを含むことができる。応答の生成には、NLG技術の使用が含まれ得る。
【0035】
デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理には、文解析などのさまざまなNLP関連処理が含まれ得る(例えば、トークン化、見出語化、文の品詞タグの識別、文内の名前付きエンティティの識別、文構造を表す依存関係ツリーの生成、文を文節に分割、個々の文節の分析、照応の解決、チャンキングの実行、など)。とある実施形態では、NLU処理またはその一部はデジタルアシスタント106自体によって実行される。いくつかの他の実施形態では、デジタルアシスタント106は、他のリソースを使用してNLU処理の一部を実行することができる。例えば、入力発話文の構文および構造は、パーサ、品詞タガー、および/または名前付きエンティティ認識装置を使用して文を処理することによって識別され得る。一実装では、英語の場合、パーサ、品詞タガー、およびスタンフォード自然言語処理(NLP)グループによって提供されるものなどの名前付きエンティティ認識装置が、文の構造および構文を分析するために使用される。これらは、Stanford CoreNLPツールキットの一部として提供される。
【0036】
本開示で提供されるさまざまな例は英語での発話を示しているが、これは例としてのみ意味されている。とある実施形態では、デジタルアシスタント106は、英語以外の言語での発話を処理することもできる。デジタルアシスタント106は、異なる言語の処理を実行するように構成されるサブシステム(例えば、NLU機能を実装する構成要素)を提供することができる。これらのサブシステムは、NLUコアサーバからのサービス呼び出しを使用して呼び出すことができるプラグイン可能な装置として実装できる。これにより、異なる処理順序が可能になるなど、NLU処理が言語ごとに柔軟かつ拡張可能になる。言語パックは個別の言語に対して提供され得、言語パックはNLUコアサーバから提供できるサブシステムのリストを登録できる。
【0037】
図1に示すデジタルアシスタント106などのデジタルアシスタントは、さまざまな異なるチャネルを通じてそのユーザ108が利用可能またはアクセスできるようにすることができ、とあるアプリケーション経由、ソーシャルメディアプラットフォーム経由、さまざまなメッセージングサービスやアプリケーション経由、その他のアプリケーションやチャネル経由などであるが、これらに限定されない。1つのデジタルアシスタントに複数のチャネルを構成して、異なるサービス上で実行したり、同時にアクセスしたりできるようにすることができる。
【0038】
デジタルアシスタントまたはチャットボットシステムは、一般に、1つまたは複数のスキルを含むか、またはそれに関連付けられている。とある実施形態では、これらのスキルは、ユーザと対話し、特定のタイプのタスクを実行するように構成される個別のチャットボット(スキルボットと呼ばれる)であり、例えば、在庫の追跡、タイムカードの提出、経費報告書の作成、食品の注文、銀行口座の確認、予約、ウィジェットの購入などである。例えば、
図1に示される実施形態の場合、デジタルアシスタントまたはチャットボットシステム106は、スキル116-1、116-2などを含む。本開示の目的上、「スキル」および「スキル(複数)」という用語は、それぞれ「スキルボット」および「スキルボット(複数)」という用語と同義的に使用される。
【0039】
デジタルアシスタントに関連付けられる各スキルは、デジタルアシスタントのユーザがユーザとの会話を通じてタスクを完了するのに役立ち、その会話には、ユーザによって提供されるテキストまたは音声入力と、スキルボットによって提供される応答との組み合わせが含まれ得る。これらの応答は、ユーザへのテキストまたは音声メッセージの形式、および/またはユーザが選択できるようにユーザに提示される単純なユーザインターフェース要素(例えば、選択リスト)を使用し得る。
【0040】
スキルまたはスキルボットをデジタルアシスタントに関連付けたり追加したりできるさまざまな方法がある。場合によっては、スキルボットを企業が開発し、次いで、DABP102を使用してデジタルアシスタントに追加することができる。他の例では、スキルボットはDABP102を使用して開発および作成され、その後DABP102を使用して作成されるデジタルアシスタントに追加され得る。さらに他の例では、DABP102は、広範囲のタスクに向けられる複数のスキルを提供するオンラインデジタルストア(「スキルストア」と呼ばれる)を提供する。スキルストアを通じて提供されるスキルは、さまざまなクラウドサービスを公開することもできる。DABP102を使用して生成されているデジタルアシスタントにスキルを追加するには、DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択されるスキルがDABP102を使用して作成されるデジタルアシスタントに追加されることを示すことができる。スキルストアのスキルは、そのまままたは変更される形式でデジタルアシスタントに追加できる(例えば、DABP102のユーザは、スキルストアによって提供される特定のスキルボットを選択して複製し、選択されるスキルボットにカスタマイズまたは変更を加え、次いで、変更されるスキルボットを、DABP102を使用して作成されるデジタルアシスタントに追加することができる)。
【0041】
デジタルアシスタントまたはチャットボットシステムを実装するために、さまざまな異なるアーキテクチャを使用することができる。例えば、とある実施形態では、DABP102を使用して作成および展開されるデジタルアシスタントは、マスターボット/子(またはサブ)ボットのパラダイムまたはアーキテクチャを使用して実装され得る。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つまたは複数の子ボットと対話するマスターボットとして実装される。例えば、
図1に示される実施形態では、デジタルアシスタント106は、マスターボット114と、マスターボット114の子ボットであるスキルボット116-1、116-2などを備える。とある実施形態では、デジタルアシスタント106自体がマスターボットとして機能するとみなされる。
【0042】
マスター子ボットアーキテクチャに従って実装されるデジタルアシスタントにより、デジタルアシスタントのユーザは、統一されるユーザインターフェース、すなわち、マスターボットを介して複数のスキルと対話できるようになる。ユーザがデジタルアシスタントを動作すると、ユーザ入力はマスターボットによって受信される。次に、マスターボットは、ユーザ入力の発話の意味を決定する処理を実行する。次に、マスターボットは、発話内でユーザによって要求されるタスクがマスターボット自体で処理できるかどうかを決定する。そうでない場合、マスターボットは、ユーザの要求を処理するための適切なスキルボットを選択し、選択したスキルボットに会話をルーティングする。これにより、ユーザは共通の単一インターフェースを介してデジタルアシスタントと会話できるようになり、特定のタスクを実行するように構成される複数のスキルボットを使用する機能も提供される。例えば、企業向けに開発されるデジタルアシスタントの場合、デジタルアシスタントのマスターボットは、特定の機能を備えたスキルボットと連携することができ、例えば、顧客関係管理(CRM)に関連する機能を実行するCRMボット、企業リソースプランニング(ERP)に関連する機能を実行するERPボット、人的資本管理(HCM)に関連する機能を実行するHCMボットなどである。このようにして、デジタルアシスタントのエンドユーザまたは消費者は、共通のマスターボットインターフェースを介してデジタルアシスタントへアクセスする方法を知るだけで済み、ユーザの要求を処理するために陰で複数のスキルボットが提供される。
【0043】
とある実施形態では、マスターボット/子ボットのインフラストラクチャにおいて、マスターボットは、利用可能なスキルボットのリストを認識するように構成される。マスターボットは、利用可能なさまざまなスキルボットを識別するメタデータ、およびスキルボットごとに、スキルボットによって実行できるタスクを含むスキルボットの機能にアクセスできる。マスターボットは、発話の形式でユーザ要求を受信すると、複数の利用可能なスキルボットの中から、ユーザ要求に最もよく応えまたは処理することができる特定のスキルボットを特定または予測するように構成されている。次に、マスターボットは、発話(または発話の一部)をその特定のスキルボットにルーティングして、さらに処理する。したがって、制御はマスターボットからスキルボットに流れる。マスターボットは複数の入出力チャネルをサポートできる。とある実施形態では、ルーティングは、1つまたは複数の利用可能なスキルボットによって実行される処理を利用して実行され得る。例えば、以下で説明するように、スキルボットは、発話の意図を推測し、推測される意図がスキルボットに構成されている意図と一致するかどうかを決定するようにトレーニングできる。したがって、マスターボットによって実行されるルーティングには、スキルボットが発話の処理に適した意図を使用して構成されているかどうかの指示をマスターボットに通信することが含まれ得る。
【0044】
図1の実施形態は、マスターボット114とスキルボット116-1、116-2、および116-3を備えるデジタルアシスタント106を示しているが、これに限定されるものではない。デジタルアシスタントは、デジタルアシスタントの機能を提供する他のさまざまな構成要素(例えば、他のシステムおよびサブシステム)を含むことができる。これらのシステムおよびサブシステムは、ソフトウェア(例えば、コンピュータ可読媒体に記憶され、1つまたは複数のプロセッサによって実行可能なコード、命令)のみで、ハードウェアのみで、またはソフトウェアとハードウェアの組み合わせを使用する実装で実装され得る。
【0045】
DABP102は、DABP102のユーザがデジタルアシスタントに関連付けられる1つまたは複数のスキルボットを含むデジタルアシスタントを作成できるようにするインフラストラクチャおよびさまざまなサービスおよび機能を提供する。場合によっては、スキルボットは、既存のスキルボットを複製することによって、例えば、スキルストアによって提供されるスキルボットを複製することによって作成できる。前に示したように、DABP102は、さまざまなタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットを複製できる。必要に応じて、複製されるスキルボットに変更やカスタマイズを加えることができる。他の例では、DABP102のユーザが、DABP102が提供するツールとサービスを使用して、スキルボットをゼロから作成した。前に示したように、DABP102によって提供されるスキルストアまたはスキルカタログは、さまざまなタスクを実行するための複数のスキルボットを提供することができる。
【0046】
とある実施形態では、高レベルで、スキルボットの作成またはカスタマイズには次のステップが含まれる。
【0047】
(1)新しいスキルボットの設定の構成
(2)スキルボットの1つまたは複数の意図を構成する
(3)1つまたは複数の意図に対する1つまたは複数のエンティティの構成
(4)スキルボットのトレーニング
(5)スキルボットのダイアログフローの作成
(6)必要に応じてスキルボットにカスタム構成要素を追加する
(7)スキルボットのテストと展開
上記の各ステップについて、以下に簡単に説明する。
【0048】
(1)新しいスキルボットの設定の構成-スキルボットに対してさまざまな設定を構成することができる。例えば、スキルボットの設計者は、作成するスキルボットの1つまたは複数の呼び出し名を指定できる。これらの呼び出し名は、次いで、デジタルアシスタントのユーザがスキルボットを明示的に呼び出すために使用できる。例えば、ユーザはユーザの発話に呼び出し名を入力して、対応するスキルボットを明示的に呼び出すことができる。
【0049】
(2)スキルボットの1つまたは複数の意図および関連する発話例の構成-スキルボット設計者は、作成されるスキルボットの1つまたは複数の意図(ボットの意図とも呼ばれる)を指定する。次に、スキルボットは、これらの指定される意図に基づいてトレーニングされる。これらの意図は、スキルボットが入力発話を推測するようにトレーニングされるカテゴリまたはクラスを表す。発話を受信すると、トレーニングされるスキルボットは発話の意図を推測する。推測される意図は、スキルボットのトレーニングに使用される定義済みの意図のセットから選択される。次に、スキルボットは、発話に対して推定される意図に基づいて、発話に応じて適切なアクションを実行する。場合によっては、スキルボットの意図は、スキルボットがデジタルアシスタントのユーザに対して実行できるタスクを表す。各意図には、意図識別子または意図名が与えられる。例えば、銀行用にトレーニングされるスキルボットの場合、スキルボットに指定される意図には、「CheckBalance」、「TransferMoney」、「DepositCheck」などが含まれ得る。
【0050】
スキルボットに対して定義される各意図に対して、スキルボット設計者は、その意図を表し説明する1つまたは複数の発話例を提供することもできる。これらの発話例は、ユーザがその意図のためにスキルボットに入力できる発話を表すことを目的としている。例えば、CheckBalance意図の場合、発話の例には、「普通預金口座の残高はいくらであるか?」、「当座預金口座にはいくらあるか?」、「口座にはいくらお金があるか?」などが含まれ得る。したがって、典型的なユーザ発話のさまざまな並べ換えを、意図に対する発話例として指定することができる。
【0051】
意図とそれに関連する例の発話は、スキルボットをトレーニングするためのトレーニングデータとして使用される。さまざまな異なるトレーニング技術が使用されてもよい。このトレーニングの結果、発話を入力として受信し、予測モデルによって発話に対して推測される意図を出力するように構成される予測モデルが生成される。場合によっては、入力発話は意図分析エンジンに提供され、トレーニングされるモデルを使用して入力発話の意図を予測または推論するように構成される。スキルボットは、推測される意図に基づいて1つまたは複数のアクションを実行できる。
【0052】
(3)スキルボットの1つまたは複数の意図のためのエンティティの構成-場合によっては、スキルボットがユーザの発話に適切に応答できるようにするために追加のコンテキストが必要になることがある。例えば、ユーザ入力の発話がスキルボット内の同じ意図として解決される状況が考えられる。例えば、上記の例では、「私の普通預金口座の残高はいくらであるか?」、「私の当座預金口座にはいくらあるか?」という発話は、どちらも同じCheckBalance意図に解決されるが、これらの発話は異なるものを要求する異なる要求である。このような要求を明確にするために、1つまたは複数のエンティティが意図に追加される。銀行スキルボットの例を使用すると、「checking」および「saving」という値を定義するAccountTypeというエンティティにより、スキルボットがユーザ要求を解析し、適切に応答できるようになる。上の例では、発話は同じ意図に解決されるが、AccountTypeエンティティに関連付けられる値は2つの発話で異なる。これにより、スキルボットは、2つの発話が同じ意図を解決しているにもかかわらず、それらの発話に対して異なるアクションを実行できる可能性がある。スキルボット用に構成されるとある意図に対して1つまたは複数のエンティティを指定できる。したがって、エンティティは、意図自体にコンテキストを追加するために使用される。エンティティは、意図をより完全に記述するのに役立ち、スキルボットがユーザ要求を完了できるようにする。
【0053】
とある実施形態では、(a)DABP102によって提供される組み込みエンティティ、および(2)スキルボット設計者によって指定できるカスタムエンティティの2つのタイプのエンティティが存在する。組み込みエンティティは、さまざまなボットで使用できる汎用エンティティである。組み込みエンティティの例には、時間、日付、住所、番号、電子メールアドレス、期間、定期的な期間、通貨、電話番号、URLなどに関連するエンティティが含まれるが、これらに限定されない。カスタムエンティティは、よりカスタマイズされるアプリケーションに使用される。例えば、銀行スキルの場合、小切手、貯蓄、クレジットカードなどのキーワードに対するユーザ入力をチェックすることにより、さまざまな銀行取引を可能にするスキルボット設計者によってAccountTypeエンティティが定義され得る。
【0054】
(4)スキルボットのトレーニング-スキルボットは、発話の形式でユーザ入力を受信し、受信した入力を解析または処理し、受信したユーザ入力に関連する意図を識別または選択するように構成される。上で示したように、スキルボットはこのためにトレーニングされる必要がある。とある実施形態では、スキルボットは、スキルボット用に構成される意図およびその意図に関連付けられる発話例(集合的にトレーニングデータ)に基づいてトレーニングされるため、スキルボットは、ユーザ入力発話をその構成される意図の1つに解決できる。とある実施形態では、スキルボットは、トレーニングデータを使用してトレーニングされる予測モデルを使用し、スキルボットがユーザが何を言っているか(または、場合によっては言おうとしているか)を識別できるようにする。DABP102は、さまざまな機械学習ベースのトレーニング技術、ルールベースのトレーニング技術、および/またはそれらの組み合わせなど、スキルボット設計者がスキルボットをトレーニングするために使用できるさまざまなトレーニング技術を提供する。とある実施形態では、トレーニングデータの一部(例えば、80%)がスキルボットモデルのトレーニングに使用され、別の部分(例えば、残りの20%)がモデルのテストまたは検証に使用される。トレーニングが完了すると、トレーニングされるモデル(トレーニングされるスキルボットとも呼ばれる)を使用して、ユーザの発話を処理および応答できるようになる。とある場合、ユーザの発話が1つの回答のみを必要とし、それ以上の会話を必要としない質問である場合がある。このような状況に対処するために、スキルボットにQ&A(質問と回答)意図を定義することができる。これにより、スキルボットは、ダイアログ定義を更新せずに、ユーザの要求に対する応答を出力できるようになる。Q&A意図は、通常の意図と同様の方法で作成される。Q&A意図のダイアログフローは、通常の意図のダイアログフローとは異なる場合がある。
【0055】
(5)スキルボット用のダイアログフローの作成--スキルボット用に指定されるダイアログフローは、受信したユーザ入力に応じてスキルボットの異なる意図が解決されるときにスキルボットがどのように反応するかを記述する。ダイアログフローは、例えば、スキルボットがユーザの発話に応答する方法、スキルボットがユーザに入力を促す方法、スキルボットがデータを返す方法など、スキルボットが実行する動作またはアクションを定義する。ダイアログフローは、スキルボットが従うフローチャートのようなものである。スキルボット設計者は、マークダウン言語などの言語を使用してダイアログフローを指定する。とある実施形態では、OBotMLと呼ばれるYAMLのバージョンを使用して、スキルボットのダイアログフローを指定できる。スキルボットのダイアログフロー定義は、会話自体のモデルとして機能し、スキルボットの設計者がスキルボットと、スキルボットがサービスを提供するユーザとの間の対話を振り付けできるようにする。
【0056】
とある実施形態では、スキルボットのダイアログフロー定義には、次の3つのセクションが含まれる。
【0057】
(a)コンテキストセクション
(b)デフォルトの遷移セクション
(c)状態セクション
コンテキストセクション-スキルボット設計者は、コンテキストセクション内の会話フローで使用される変数を定義することができる。コンテキストセクションで名前を付けることができるその他の変数には、エラー処理用の変数、組み込みエンティティまたはカスタムエンティティ用の変数、スキルボットがユーザ設定を認識して保持できるようにするユーザ変数などが含まれるが、これらに限定されない。
【0058】
デフォルト遷移セクション-スキルボットの遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクションで定義することができる。デフォルト遷移セクションで定義される遷移はフォールバックとして機能し、状態内に定義される該当する遷移がない場合、または状態遷移をトリガーするために必要な条件が満たされない場合にトリガーされる。デフォルトの遷移セクションを使用すると、スキルボットが予期しないユーザクションを適切に処理できるようにするルーティングを定義できる。
【0059】
状態セクション-ダイアログフローおよびその関連動作は、ダイアログフロー内の論理を管理する一連の一時的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログのその時点で必要な機能を提供する構成要素に名前を付ける。したがって、状態は構成要素を中心に構築される。状態には構成要素固有のプロパティが含まれており、構成要素の実行後にトリガーされる他の状態への遷移を定義する。
【0060】
特殊な場合のシナリオは、状態セクションを使用して処理することができる。例えば、デジタルアシスタント内の第2のスキルで何かを行うために、使用している第1のスキルを一時的に離れる選択肢をユーザに提供したい場合がある。例えば、ユーザがショッピングスキルとの会話に参加している場合(例えば、ユーザが購入についていくつかの選択を行っている場合)、ユーザは銀行スキルにジャンプし(例えば、ユーザは購入に十分なお金があることを確認したい場合がある)、その後ショッピングスキルに戻ってユーザの注文を完了したい場合がある。これに対処するには、第1のスキルのアクションを構成して、同じデジタルアシスタント内の第2の異なるスキルとの対話を開始し、元のフローに戻ることができる。
【0061】
(6)カスタム構成要素をスキルボットに追加する-上述したように、スキルボットのダイアログフローで指定される状態は、その状態に対応して必要な機能を提供する構成要素に名前を付ける。構成要素を使用すると、スキルボットが機能を実行できるようになる。とある実施形態では、DABP102は、広範囲の機能を実行するための事前構成される構成要素のセットを提供する。スキルボット設計者は、これらの事前構成される構成要素を1つまたは複数選択し、それらをスキルボットのダイアログフローの状態に関連付けることができる。スキルボット設計者は、DABP102によって提供されるツールを使用してカスタム構成要素または新しい構成要素を作成し、そのカスタム構成要素をスキルボットのダイアログフロー内の1つまたは複数の状態に関連付けることもできる。
【0062】
(7)スキルボットのテストおよび展開-DABP102は、スキルボット設計者が開発中のスキルボットをテストできるようにするいくつかの機能を提供する。その後、スキルボットを展開してデジタルアシスタントに含めることができる。
【0063】
上記の説明はスキルボットの作成方法を説明しているが、同様の技術を使用してデジタルアシスタント(またはマスターボット)を作成することもできる。マスターボットまたはデジタルアシスタントレベルで、組み込みシステム意図をデジタルアシスタント用に構成できる。これらの組み込みシステム意図は、デジタルアシスタントに関連付けられるスキルボットを呼び出すことなくデジタルアシスタント自体(つまり、マスターボット)が処理できる一般的なタスクを識別するために使用される。マスターボットに対して定義されるシステム意図の例は次のとおりである。(1)終了:ユーザがデジタルアシスタントの現在の会話またはコンテキストを終了したいという信号を送ったときに適用される。(2)ヘルプ:ユーザがヘルプや方向性を求めた場合に適用される。(3)UnresolvedIntent:終了およびヘルプ意図とよく一致しないユーザ入力に適用される。デジタルアシスタントは、デジタルアシスタントに関連付けられる1つまたは複数のスキルボットに関する情報も記憶する。この情報により、マスターボットは発話を処理するための特定のスキルボットを選択できる。
【0064】
マスターボットまたはデジタルアシスタントレベルでは、ユーザがフレーズまたは発話をデジタルアシスタントに入力すると、デジタルアシスタントは、発話および関連する会話をルーティングする方法を決定する処理を実行するように構成される。デジタルアシスタントは、ルールベース、AIベース、またはそれらの組み合わせであり得るルーティングモデルを使用してこれを決定する。デジタルアシスタントはルーティングモデルを使用して、ユーザ入力発話に対応する会話が処理のために特定のスキルにルーティングされるべきか、組み込みシステム意図に従ってデジタルアシスタントまたはマスターボット自体によって処理されるべきか、あるいは現在の会話フローでは別の状態として扱われるべきかを決定する。
【0065】
とある実施形態では、この処理の一部として、デジタルアシスタントは、ユーザ入力発話がその呼び出し名を使用してスキルボットを明示的に識別するかどうかを決定する。ユーザ入力に呼び出し名が存在する場合、その呼び出し名に対応するスキルボットの明示的な呼び出しとして扱われる。このようなシナリオでは、デジタルアシスタントは、さらなる処理のために明示的に呼び出されるスキルボットにユーザ入力をルーティングし得る。特定のまたは明示的な呼び出しがない場合、とある実施形態では、デジタルアシスタントは、受信したユーザ入力発話を評価し、システム意図およびデジタルアシスタントに関連付けられるスキルボットの信頼スコアを計算する。スキルボットまたはシステム意図に対して計算されるスコアは、ユーザ入力がスキルボットが実行するように構成されているタスクを表す可能性、またはシステム意図を表す可能性を表す。関連する計算される信頼スコアが閾値(例えば、信頼閾値ルーティングパラメータ)を超えるシステム意図またはスキルボットが、さらなる評価の候補として選択される。次に、デジタルアシスタントは、識別される候補から、ユーザ入力発話をさらに処理するための特定のシステム意図またはスキルボットを選択する。とある実施形態では、1つまたは複数のスキルボットが候補として識別される後、それらの候補スキルに関連付けられる意図が(各スキルの意図モデルに従って)評価され、各意図について信頼スコアが決定される。一般に、信頼スコアが閾値(例えば70%)を超える意図は、候補意図として扱われる。特定のスキルボットが選択されている場合、ユーザの発話はさらなる処理のためにそのスキルボットにルーティングされる。システム意図が選択されている場合、選択されるシステム意図に従ってマスターボット自体によって1つまたは複数のアクションが実行される。
【0066】
図2は、とある実施形態によるマスターボット(MB)システム201の簡略化されるブロック図である。MBシステム201は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアの組み合わせで実装できる。MBシステム201は、前処理サブシステム210、マルチ意図サブシステム(MIS)220、明示的呼び出しサブシステム(EIS)230、スキルボット呼び出し部240、およびデータストア250を含む。
図2に示されるMBシステム201は、マスターボット内の構成要素の配置の一例にすぎない。当業者であれば、多くの可能な変形例、代替例、および修正例を認識するであろう。例えば、いくつかの実装では、MBシステム201は、
図2に示されるものよりも多いまたは少ないシステムまたは構成要素を有してもよく、2つ以上のサブシステムを組み合わせてもよく、またはサブシステムの異なる構成または配置を有してもよい。
【0067】
前処理サブシステム210は、ユーザからの発話「A」202を受信し、言語検出器212および言語パーサ214を介して発話を処理する。上で示したように、発話は音声やテキストなどのさまざまな方法で提供できる。発話202は、文の断片、完全な文、複数の文などであり得る。発話202には句読点を含めることができる。例えば、発話202が音声として提供される場合、前処理サブシステム210は、結果として得られるテキストに句読点(例えば、カンマ、セミコロン、ピリオドなど)を挿入する音声テキストコンバータ(図示せず)を使用して音声をテキストに変換することができる。
【0068】
言語検出器212は、発話202のテキストに基づいて発話202の言語を検出する。各言語は独自の文法および意味論を有するため、発話202が処理される方法は言語に依存する。発話の構文と構造を分析する際には、言語間の違いが考慮される。
【0069】
言語パーサ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に提供される。
【0070】
上で示したように、発話202は複数の文を含むことができる。複数の意図と明示的な呼び出しを検出する目的で、発話202は、複数の文が含まれている場合でも単一の単位として扱うことができる。しかし、とある実施形態では、例えば前処理サブシステム210によって前処理を実行して、複数の意図分析および明示的呼び出し分析のために複数の文の中から単一の文を識別することができる。一般に、MIS220およびEIS230によって生成される結果は、発話202が個々の文のレベルで処理されるか、または複数の文を含む単一の単位として処理されるかに関係なく、実質的に同じである。
【0071】
MIS220は、発話202が複数の意図を表すかどうかを決定する。MIS220は発話202内の複数の意図の存在を検出できるが、MIS220によって実行される処理には、発話202の意図がボット用に構成される任意の意図と一致するかどうかを決定することは含まれない。代わりに、発話202の意図がボットの意図と一致するかどうかを決定するための処理は、MBシステム201の意図分類器242によって、またはスキルボットの意図分類器によって実行され得る(例えば、
図3の実施形態に示されるように)。MIS220によって実行される処理では、発話202を処理できるボット(例えば、特定のスキルボットまたはマスターボット自体)が存在することを仮定している。したがって、MIS220によって実行される処理では、チャットボットシステム内のボットに関する知識(例えば、マスターボットに登録されているスキルボットのID)や、特定のボットに対して構成されている意図に関する知識は必要ない。
【0072】
発話202が複数の意図を含むことを決定するために、MIS220は、データストア250内のルールセット252から1つまたは複数のルールを適用する。発話202に適用されるルールは、発話202の言語に依存し、複数の意図の存在を示す文パターンを含み得る。例えば、文パターンは、文の2つの部分(例えば接続詞)を結合する等位接続詞を含むことができ、両方の部分は別個の意図に対応する。発話202が文パターンと一致する場合、発話202は複数の意図を表していると推測できる。複数の意図を含む発話は、必ずしも異なる意図を持っているわけではないことに留意されたい(例えば、異なるボットに向けられる意図、または同じボット内の異なる意図に向けられる意図)。代わりに、発話には同じ意図の個別のインスタンスが含まれ得る。例えば、「支払い口座Xを使用してピザを注文し、次に支払い口座Yを使用してピザを注文する」などである。
【0073】
発話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に送信することができる。
【0074】
EIS230は、受信した発話(例えば、発話206または発話208)がスキルボットの呼び出し名を含むかどうかを決定する。とある実施形態では、チャットボットシステム内の各スキルボットには、そのスキルボットをチャットボットシステム内の他のスキルボットから区別する固有の呼び出し名が割り当てられる。呼び出し名のリストは、データストア250内のスキルボット情報254の一部として維持することができる。発話に呼び出し名と一致する単語が含まれている場合、その発話は明示的な呼び出しであるとみなされる。ボットが明示的に呼び出されない場合、EIS230によって受信される発話は、非明示的に呼び出している発話234とみなされ、マスターボットの意図分類器(例えば、意図分類器242)に入力されて、発話を処理するためにどのボットを使用するかを決定する。場合によっては、意図分類器242は、マスターボットが非明示的に呼び出す発話を処理すべきであると決定することになる。他の例では、意図分類器242は、発話を処理のためにルーティングするスキルボットを決定する。
【0075】
EIS230によって提供される明示的呼び出し機能には、いくつかの利点がある。マスターボットが実行する必要がある処理の量を削減できる。例えば、明示的な呼び出しがある場合、マスターボットは、意図分類分析(例えば、意図分類器242を使用)を行う必要がない場合もあり、スキルボットを選択するために縮小される意図分類分析を行う必要がある場合もある。したがって、明示的呼び出し分析により、意図分類分析に頼ることなく、特定のスキルボットの選択が可能になる場合がある。
【0076】
また、複数のスキルボット間で機能が重複する状況もあり得る。これは、例えば2つのスキルボットによって処理される意図が重複している場合、または互いに非常に近い場合に発生し得る。このような状況では、マスターボットが意図分類分析のみに基づいて複数のスキルボットのうちどれを選択するかを識別することが困難な場合がある。このようなシナリオでは、明示的な呼び出しにより、使用される特定のスキルボットが明確になる。
【0077】
発話が明示的な呼び出しであることを決定することに加えて、EIS230は、発話のいずれかの部分が、明示的に呼び出されるスキルボットへの入力として使用されるべきかどうかを決定する役割を担う。特に、EIS230は、発話の一部が呼び出しに関連していないかどうかを決定することができる。EIS230は、発話の分析および/または抽出される情報205の分析を通じてこの決定を実行することができる。EIS230は、EIS230が受信した発話全体を送信する代わりに、呼び出しに関連付けられていない発話の一部を、呼び出されるスキルボットに送信できる。場合によっては、呼び出されるスキルボットへの入力は、呼び出しに関連付けられる発話の一部を削除するだけで形成される。例えば、「ピザボットを使用してピザを注文したい」は、「ピザボットの使用」はピザボットの呼び出しには関連するが、ピザボットによって実行される処理とは無関係であるため、「ピザを注文したいである」と短縮できる。場合によっては、EIS230は、例えば完全な文を形成するために、呼び出されるボットに送信される部分を再フォーマットしてもよい。したがって、EIS230は、明示的な呼び出しがあることを決定するだけでなく、明示的な呼び出しがあった場合にスキルボットに何を送信するかも決定する。場合によっては、呼び出されるボットに入力するテキストがない場合がある。例えば、発話が「ピザボット」であった場合、EIS230は、ピザボットが呼び出されていると決定することができるが、ピザボットによって処理されるテキストが存在しない。このようなシナリオでは、EIS230は、送信するものが何もないことをスキルボット呼び出し部240に示すことができる。
【0078】
スキルボット呼び出し部240は、さまざまな方法でスキルボットを呼び出す。例えば、スキルボット呼び出し部240は、明示的な呼び出しの結果として特定のスキルボットが選択されるという指示235の受信に応答して、ボットを呼び出すことができる。指示235は、明示的に呼び出されるスキルボットの入力とともにEIS230によって送信できる。このシナリオでは、スキルボット呼び出し部240は、会話の制御を明示的に呼び出されるスキルボットに引き渡す。明示的に呼び出されるスキルボットは、EIS230からの入力をスタンドアロンの発話として扱うことによって、入力に対する適切な応答を決定する。例えば、応答は、特定のアクションを実行すること、または特定の状態で新しい会話を開始することなどであり得、新しい会話の初期状態はEIS230から送信される入力に依存する。
【0079】
スキルボット呼び出し部240がスキルボットを呼び出すことができる別の方法は、意図分類子242を使用する暗黙的呼び出しを介することである。意図分類器242は、機械学習および/またはルールベースのトレーニング技術を使用してトレーニングされ、発話が特定のスキルボットが実行するように構成されるタスクを表す可能性を決定することができる。意図分類器242は、スキルボットごとに1つのクラス、異なるクラスでトレーニングされる。例えば、新しいスキルボットがマスターボットに登録されるたびに、新しいスキルボットに関連付けられる発話例のリストを使用して、意図分類器242をトレーニングして、特定の発話が新しいスキルボットが実行できるタスクを表す可能性を決定することができる。このトレーニングの結果として生成されるパラメータ(例えば、機械学習モデルのパラメータの値のセット)は、スキルボット情報254の一部として記憶することができる。
【0080】
とある実施形態では、意図分類器242は、本明細書でさらに詳細に説明するように、機械学習モデルを使用して実装される。機械学習モデルのトレーニングは、さまざまなスキルボットに関連付けられる発話例から発話の少なくともサブセットを入力して、機械学習モデルの出力として、どのボットが特定のトレーニング発話を処理するための正しいボットであるかについての推論を生成することを含んでもよい。各トレーニング発話について、トレーニング発話に使用する正しいボットの指示がグラウンドトゥルース情報として提供され得る。機械学習モデルの動作は、次いで、生成される推論とグランドトゥルース情報の間の差異を最小限に抑えるために(例えば、逆伝播を通じて)適応させることができる。
【0081】
とある実施形態では、意図分類器242は、マスターボットに登録されるスキルボットごとに、スキルボットが発話(例えば、EIS230から受信した非明示的に呼び出す発話234)を処理できる可能性を示す信頼スコアを決定する。意図分類器242はまた、構成される各システムレベルの意図(例えば、ヘルプ、終了)の信頼スコアを決定することもできる。特定の信頼スコアが1つまたは複数の条件を満たす場合、スキルボット呼び出し部240は、特定の信頼スコアに関連付けられるボットを呼び出す。例えば、信頼スコアの閾値を満たす必要がある場合がある。したがって、意図分類器242の出力245は、システム意図の識別または特定のスキルボットの識別のいずれかである。いくつかの実施形態では、信頼スコア閾値を満たすことに加えて、信頼スコアは、次に高い信頼スコアを一定の勝率だけ超えなければならない。このような条件を課すと、複数のスキルボットの信頼スコアが各々信頼スコア閾値を超えた場合に、特定のスキルボットにルーティングできるようになる。
【0082】
信頼スコアの評価に基づいてボットを識別した後、スキルボット呼び出し部240は、識別されるボットに処理を引き渡す。システム意図の場合、識別されるボットがマスターボットになる。それ以外の場合、識別されるボットはスキルボットである。さらに、スキルボット呼び出し部240は、識別されるボットに対する入力247として何を提供するかを決定する。上で示したように、明示的な呼び出しの場合、入力247は、呼び出しに関連付けられていない発話の一部に基づくか、または入力247が何もない(例えば、空の文字列)場合がある。暗黙的な呼び出しの場合、入力247は発話全体になる可能性がある。
【0083】
データストア250は、マスターボットシステム201のさまざまなサブシステムによって使用されるデータを記憶する1つまたは複数のコンピューティング装置を備える。上で説明したように、データストア250は、ルール252およびスキルボット情報254を含む。ルール252は、例えば、発話が複数の意図を表すとき、および複数の意図を表す発話をどのように分割するかをMIS220によって決定するためのルールを含む。ルール252はさらに、スキルボットを明示的に呼び出す発話のどの部分をスキルボットに送信するかをEIS230によって決定するためのルールを含む。スキルボット情報254は、チャットボットシステムにおけるスキルボットの呼び出し名、例えば、特定のマスターボットに登録されているすべてのスキルボットの呼び出し名のリストを含む。スキルボット情報254は、チャットボットシステム内の各スキルボットの信頼スコアを決定するために意図分類器242によって使用される情報、例えば機械学習モデルのパラメータを含むこともできる。
【0084】
図3は、とある実施形態によるスキルボットシステム300の簡略化されるブロック図である。スキルボットシステム300は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアの組み合わせで実装できるコンピューティングシステムである。
図1に示される実施形態などのとある実施形態では、スキルボットシステム300を使用して、デジタルアシスタント内に1つまたは複数のスキルボットを実装することができる。
【0085】
スキルボットシステム300は、MIS310、意図分類器320、および会話マネージャ330を含む。MIS310は、
図2のMIS220に類似しており、データストア350内のルール352を使用して以下を決定するように動作可能であることを含む同様の機能を提供する。(1)発話が複数の意図を表しているかどうか、またそうであれば、(2)複数の意図の各々に発話を別の発話に分割する方法。とある実施形態では、複数の意図を検出し、発話を分割するためにMIS310によって適用されるルールは、MIS220によって適用されるルールと同じである。MIS310は発話302と抽出される情報304を受信する。抽出される情報304は、
図1の抽出される情報205に類似しており、言語パーサ214またはスキルボットシステム300にローカルな言語パーサを使用して生成することができる。
【0086】
意図分類器320は、
図2の実施形態に関連して上述し、本明細書でさらに詳細に説明した意図分類器242と同様の方法でトレーニングすることができる。例えば、とある実施形態では、意図分類器320は、機械学習モデルを使用して実装される。意図分類器320の機械学習モデルは、特定のスキルボットに関連付けられる発話例の少なくともサブセットをトレーニング発話として使用して、特定のスキルボット用にトレーニングされる。各トレーニング発話のグラウンドトゥルースは、トレーニング発話に関連付けられる特定のボットの意図になる。
【0087】
発話302は、ユーザから直接受信することも、マスターボットを介して提供することもできる。例えば、
図2に示される実施形態におけるMIS220およびEIS230を介した処理の結果として、発話302がマスターボットを介して供給される場合、MIS220によってすでに実行される処理の繰り返しを避けるために、MIS310をバイパスすることができる。しかし、発話302が、例えば、スキルボットへのルーティング後に生じる会話中に、ユーザから直接受信される場合、MIS310は、発話302を処理して、発話302が複数の意図を表すかどうかを決定することができる。そうである場合、MIS310は1つまたは複数のルールを適用して、発話302を意図ごとに個別の発話、例えば発話「D」306と発話「E」308に分割する。発話302が複数の意図を表さない場合、MIS310は、発話302を分割することなく、意図分類のために発話302を意図分類器320に転送する。
【0088】
意図分類器320は、受信した発話(例えば、発話306または308)をスキルボットシステム300に関連付けられる意図と一致するように構成されている。上で説明したように、スキルボットは1つまたは複数の意図で構成でき、各意図には、その意図に関連付けられ、分類器のトレーニングに使用される少なくとも1つの発話例が含まれる。
図2の実施形態では、マスターボットシステム201の意図分類器242は、個々のスキルボットの信頼スコアおよびシステム意図に対する信頼スコアを決定するようにトレーニングされる。同様に、意図分類器320は、スキルボットシステム300に関連付けられる各意図の信頼スコアを決定するようにトレーニングすることができる。意図分類器242によって実行される分類はボットレベルであるのに対し、意図分類器320によって実行される分類は意図レベルであり、したがってより粒度が細かい。意図分類器320は、意図情報354にアクセスできる。意図情報354は、スキルボットシステム300に関連付けられる意図ごとに、その意図の意味を表し図示し、通常、その意図によって実行可能なタスクに関連付けられる発話のリストを含む。意図情報354は、この発話リストに関するトレーニングの結果として生成されるパラメータをさらに含むことができる。
【0089】
会話マネージャ330は、意図分類器320の出力として、意図分類器320に入力される発話に最もよく一致するものとして意図分類器320によって識別される特定の意図の指示322を受信する。場合によっては、意図分類器320は一致を決定できないことがある。例えば、発話がシステム意図または異なるスキルボットの意図に向けられている場合、意図分類器320によって計算される信頼スコアは信頼スコア閾値を下回る可能性がある。これが発生すると、スキルボットシステム300は、処理のために、例えば、別のスキルボットにルーティングするために、発話をマスターボットに参照することができる。しかし、意図分類器320がスキルボット内の意図を識別することに成功した場合、会話マネージャ330はユーザとの会話を開始することになる。
【0090】
会話マネージャ330によって開始される会話は、意図分類器320によって識別される意図に固有の会話である。例えば、会話マネージャ330は、識別される意図に対するダイアログフローを実行するように構成される状態機械を使用して実装され得る。状態機械には、デフォルトの開始状態(例えば、追加の入力なしで意図が呼び出される場合)と1つまたは複数の追加の状態を含めることができ、各状態には、スキルボットによって実行されるアクション(例えば、購入トランザクションの実行)および/またはユーザに提示されるダイアログ(例えば、質問、応答)が関連付けられている。したがって、会話マネージャ330は、意図を識別する指示322を受信するとアクション/ダイアログ335を決定することができ、会話中に受信した後続の発話に応じて追加のアクションまたはダイアログを決定することができる。
【0091】
データストア350は、スキルボットシステム300のさまざまなサブシステムによって使用されるデータを記憶する1つまたは複数のコンピューティング装置を備える。
図3に示すように、データストア350は、ルール352および意図情報354を含む。とある実施形態では、データストア350は、マスターボットまたはデジタルアシスタントのデータストア、例えば
図2のデータストア250に統合することができる。
【0092】
言語検出のためのモデルアーキテクチャ
図4は、さまざまな実施形態に従ったモデルアーキテクチャの一例400を示す。この例では、入力テキスト単位は単語レベルでnグラムに分割され、テキスト単位内の各単語も文字ベースのnグラムに分割され、テキスト単位のnグラムのシーケンスが生成される(例えば、入力テキスト単位内でnグラムが出現する順序に従って)。テキスト単位を単語レベルでnグラムに分割する演算と、テキスト単位を文字レベルでnグラムに分割する演算は、シリアル(例えば、単語レベルの分割の後に文字レベルの分割)または並列で実行できる。
【0093】
単語レベルのnグラムのnの値は、文字レベルのnグラムのnの値と同じであっても異なっていてもよい。
図4の例400では、単語レベルのnグラムのnの値は1(単語ベースのユニグラム)であり、文字レベルのnグラムのnの値は2(文字ベースのバイグラム)である。この方式を使用すると、テキスト単位「hello there」は(パーサ410で)nグラムのシーケンス[hello、_h、he、el、ll、lo、o_、there、_t、th、he、er、re、e_](または、nグラムのシーケンス[_h、he、el、ll、lo、o_、hello、_t、th、he、er、re、e_、there])に変換される。この例では、単語の境界を示すために、単語が文字レベルのnグラムに分割される前に、テキスト単位の各単語の先頭と末尾に特殊文字(例えば、アンダースコア文字「_」)が追加されていることに留意されたい。
【0094】
nグラムのシーケンス内の各nグラムは、埋め込み層420に送られ、nグラムに対応する表現(例えば、特徴ベクトルまたは「埋め込みベクトル」)を生成する。埋め込み層420には、トレーニングされる埋め込みモデル(例えば、各nグラムを対応する埋め込みベクトルに関連付ける埋め込み行列)が含まれる。注意機構430を備えたCNNは、nグラム特徴間の関係(例えば、シーケンス内のnグラムの相対的な順序および/または相対的な重みなどの側面によって示され得る)を捕捉して、テキスト単位の符号化ベクトルを生成するために使用される。符号化ベクトルは、フィードフォワードネットワーク(FFN)440とソフトマックス活性化関数を使用して分類され、出力予測(例えば、入力テキスト単位の予測される主要言語の識別)が生成される。
【0095】
図4を参照して上述した例400では、語彙サイズは13であり、単語レベルのユニグラムが2つ(「hello」、「there」)と、文字レベルのバイグラムが11個(「_h」、「he」、「el」、「ll」、「lo」、「o_」、「_t」、「th」、「er」、「re」、「e_」)である。実際には、言語検出タスクのトレーニングデータセットは大きく、100を超える利用可能な言語が表現され得るため、語彙は通常膨大になる(例えば、1億500万文の内部データセットの場合は3,000万以上)。例えば、語彙には、日本語または中国語の完全なnグラムセット、ベトナム語の別のnグラムセット、英語の別のnグラムセットなどが含まれ得る。埋め込みベクトル空間の次元が比較的小さい場合でも(例えば、数十または数百次元)、埋め込みモデル内のパラメータの数が非常に多くなり得、検索が非常に遅くなり得る。
【0096】
ハッシュ埋め込みは語彙のサイズを縮小し、それによって埋め込みモデル内のパラメータの数を減らすために使用することができる。
図5は、
図4のモデルアーキテクチャの実施形態500を示しており、埋め込み層520は、パーサ410からの各nグラムを(ハッシュ演算515で)対応するハッシュ識別子(ID)に変換することによってハッシュ埋め込みを採用し、その後、埋め込みモデル525に入力して、対応するnグラム表現(例えば、埋め込みベクトル)を取得する。この例のハッシュIDの範囲は0から9であるため、語彙のサイズは
図4の13から、この場合は固定数の10に削減される。
図4に示す例400のように、注意モデル530を備えたCNNを使用してnグラム特徴間の関係を捕捉し、テキスト単位の符号化ベクトルを生成することができ、符号化ベクトルはFFN540とソフトマックス活性化関数を使用して分類され、出力(言語)予測を生成することができる。
【0097】
一例では、ハッシュ関数の出力範囲のサイズは所望の語彙サイズに等しく、ハッシュ関数をnグラムに適用することにより、各ハッシュIDが対応するnグラムから直接取得される。つまり、nグラムのハッシュIDは、nグラムにハッシュ関数を適用して生成されるハッシュ値である。別の例では、ハッシュIDの各々は、ハッシュ関数をnグラムに適用し、次いで、結果のハッシュ値にモジュロB関数を適用することによって取得される。ここで、Bは語彙の必要なサイズである。例えば、
図5では、ハッシュ演算515は、MurmurHashアルゴリズムのバージョン(例えば、MurmurHash1、MurmurHash2、またはMurmurHash3)をnグラムに適用して対応するハッシュ値(例えば、32ビットハッシュ値)を取得し、次にハッシュ値にモジュロ10関数を適用して対応するハッシュIDを取得することにより、各ハッシュIDを取得することができる。
【0098】
語彙サイズが一意のnグラムの数よりも小さいため、ハッシュ埋め込みによって衝突が発生する。例えば、
図5に示すように、nグラム「hello」と「ll」は同じハッシュID1を有する。ブルーム埋め込みアルゴリズムを使用すると、衝突の発生率を大幅に減らすことができる。具体的には、nグラムを単一のハッシュIDにマッピングする代わりに、各nグラムを2つ(またはそれ以上)のハッシュIDにマッピングすることができる。任意の2つのnグラムの両方(またはすべて)のハッシュIDが同じになる確率は、2つのnグラムが同じハッシュIDにマッピングされる確率よりもはるかに低くなる。
【0099】
図6は、
図5のモデルアーキテクチャのハッシュ演算515の実装615がブルーム埋め込みを実行して各nグラムに対して2つのハッシュIDを生成する例600を示す。埋め込み層520のこの実装620には、2つのハッシュIDの各々に対して埋め込みベクトルを生成する埋め込みモデル525の実装625も含まれている。ハッシュIDの埋め込みベクトルを組み合わせてnグラムの埋め込みベクトルを取得し、これを深層学習エンコーダ630に入力する。
図5のように、語彙サイズは語彙の所望サイズB(この例では10)に設定されているが、この場合、ハッシュバケットに衝突は発生しない。
図4に示す例400のように、注意モデル630を備えたCNNを使用してnグラム特徴間の関係を捕捉し、テキスト単位の符号化ベクトルを生成することができ、符号化ベクトルはFFN640とソフトマックス活性化関数を使用して分類され、出力(言語)予測を生成することができる。
【0100】
図4~
図6を参照して上で説明したnグラムベースのワイドモデルは、文字ベースのワイドモデル(これもはるかに大きなCNNを必要とする)よりも優れた性能を発揮することがわかった。nグラムモデルは、深層ネットワーク430(530、630)への入力にルックアップ層(例えば、log(n)時間で実行)、次いで、その上に小さなCNN層を含めるように実装できる。その結果、深層ネットワーク430(530、630)の上に非常に大きなCNN層がある文字ベースのモデルよりも実行時間が大幅に短縮される。
【0101】
図5または
図6に示すモデルアーキテクチャには、いくつかの調整可能なハイパーパラメータが含まれ得る。例えば、単語ベースのnグラムのnの値を1(ユニグラム)に設定し、文字ベースのnグラムのnの値を2、3、4の3つに選択することが望ましい場合がある。ハッシュ埋め込みの場合、衝突の問題を処理するために、バケット数(B)を300万(3M)に設定し、ハッシュ数を2に設定することが望ましい場合がある。グリッド検索を実行して、CNNウィンドウサイズとドロップアウト確率の値を決定することができる。ハイパーパラメータ設定間の違いはそれほど大きくないことがわかり得る。トレーニングを高速化するために、各文のnグラムの最大数(例えば、512)を設定することが望ましい場合がある。
【0102】
トレーニング中に、入力文字のスクリプト情報(例えば、ラテン語、デーヴァナーガリー文字)を適用して、予測の候補を制限することができる。例えば、入力テキスト単位のコーディングがCJK(中国語、日本語、韓国語)スクリプトのみである場合(例えば、テキスト単位のUnicode符号化によって示される場合)、そのテキスト単位のラテン語ベースの言語の予測はすべてブロックされ得る。さらに、または代わりに、単語は多くの言語で使用され得るため(例えば、「estas」という単語はスペイン語とエスペラント語で使用され得る)、言語の相対的な人気をモデル予測に統合することが望ましい場合がある。例えば、より人気のある言語の予測には、より高い重みが適用され得る。
【0103】
比較のために、
図5および
図6を参照して上で説明したモデルアーキテクチャは、それぞれ「ODA単一API」および「ODA API」と指定される。これらのモデルアーキテクチャのデモンストレーションと評価のために、FastAPIウェブフレームワークを使用して、RESTfulなサービス提供アプリケーションプログラミングインターフェイス(API)(つまり、表現状態転送(REST)制約に準拠したAPI)を構築した。
図7はAPIへの要求の例を示し、
図8はAPIからの対応する応答の例を示す。
【0104】
トレーニングおよび評価
上述のモデルアーキテクチャのトレーニングデータは、Open Parallel Corpus Project(OPUS)、Common Crawlデータ、およびWikipediaからエクスポートされた。
図9は、OPUSソースデータセットを説明する表を示している。クリーンアップされるCommon Crawlデータから取得されたデータセットは、165言語の各々から1,000個を超える(1K+)トークン、127言語の各々から100万個を超える(1M+)トークン、40言語の各々から10億個を超える(1B+)トークンを含む、176言語のテキストを含む。
【0105】
モデルが短いテキスト単位でうまく機能するのであれば、長いテキスト単位でもうまく機能する傾向があると考えられる。トレーニング用に、最大1,000万の短い文(<15語)と最大100万の長い文(>=15語、<30語)を含む短いテキスト単位がOPUSデータセットから抽出された。Common Crawlデータセットが大きいため、最初に数字や特殊文字を含まないすべてのページタイトルを抽出し、次に本文から文章を抽出した。言語ごとに150万文という制限がある。結果として得られるトレーニングデータセットには、135の言語のテキストが含まれた。トレーニングデータが不足していたため、最終的に135言語のうち35言語が削除されたため、この例では合計100言語がサポートされた。
【0106】
比較のために以下のシステムを選択した。
1)FastTextは170以上の言語をサポートし、無料でアクセスでき、他の無料の言語検出ツールキット(例えば、langdetect、langid、Google’s Compact Language Detector 2(cld2)、Google’s Compact Language Detector 3(cld3))よりも優れた性能を発揮することが確認されていた。
2)Google言語検出API(109言語をサポートするバージョン)。
3)Microsoft言語検出API(92言語をサポートするバージョン)。
4)Amazon言語検出API(104言語をサポートするバージョン)。
【0107】
図6に示すモデルアーキテクチャの2つのバリアント(「ODA API」と指定)がベースラインとして使用された。第1のバリアント(「CNN API」と指定)は、注意機構なしでCNNのみを使用する。第2のバリアント(「AVG API」と指定)では、CNN層が省略され、代わりに平均プーリング層が使用される(例えば、fastTextの場合)。文字ベースのCNNモデル(「Char-CNN」)も、純粋な深層学習ベースラインとして使用された(例えば、幅広い特徴を有する深層ニューラルネットワーク(DNN)の組み合わせが純粋なDNNよりも優れているかどうかを決定するため)。幅広い特徴を模倣するために、マルチカーネルウィンドウサイズを有するCNNが使用された。すべての比較システム(fastText、Google API、およびMicrosoft APIを含む)でサポートされている69の重複言語のセットが選択された。
【0108】
図10は、検証および早期停止のためにODAデータセット(335051(335K)の発話を含む)を使用した言語検出テストの結果を示している。この実験はアブレーション研究(例えば、システムの構成要素が除去される研究)とみなされる。CNNおよびODA APIはAGV APIよりも優れた性能を達成することが判明しており、これはCNN層がモデルの成功に重要であることを示し得る。ODA API(注意層を有する)は、検証セットでCNN APIよりも高い性能を発揮することがわかった。ODA API(
図6に示すブルーム埋め込みを含む)は、ODA単一API(
図5に示す)よりも検証セットで優れた性能を発揮することがわかった。モデル間のパラメータ数に関しては大きな違いがないことに留意されたい。
【0109】
Chatterbotデータセットの結果では、APIの性能がGoogle、Microsoft、Amazon APIの性能に匹敵することが示された。また、EuroParlデータセット(欧州議会の議事録から抽出され、21のヨーロッパ言語の文が揃えられるテキストを含む)、wiLI-2018データセット(Wikipediaから抽出した短いテキストのデータセットで、235の言語の235,000段落を含む)、LanideNNデータセット、第1の簡単な英語テスト(ODA-10Kの例)、および第2の簡単な英語テスト(336の例)でも結果が得られた。fastTextは無料の言語検出ツールの中で最高の性能を発揮することがわかったが、公開されているデータセットではすべての商用APIよりも性能が劣ることがわかった。当社のAPI(ODA、CNN、AVG)の中で、CNNと注意層を組み合わせたODAは、単純な英語テストを除くすべてのデータセットで最高の性能を発揮する。Chatterbotデータセットおよび社内の簡単な英語テストでODA APIが生成した性能も、Google、Microsoft、Amazon APIが生成したものに匹敵する。その他のデータセット(例えば、LanideNN、EuroParl)については、当社のODA APIがGoogle APIやMicrosoft APIよりも優れた性能を発揮することがわかった。幅広い特徴とDNNを組み合わせると、純粋なDNNよりも優れた性能が得られることもわかった。
【0110】
言語検出の技術
図11は、さまざまな実施形態に従った装置1100のブロック図を示す。
図11に示されている要素は、それぞれのシステム、ハードウェア、またはそれらの組み合わせの処理回路(例えば、プロセッサやコアなどの1つまたは複数の処理装置)によって実行されるソフトウェア(例えば、コード、命令、モジュール、プログラム)で実装され、メモリに結合される(例えば、テキスト単位、nグラムのシーケンス、および/またはトレーニングされるネットワークのパラメータを記憶するため)。装置1100には、テキスト単位を入力として受信し、そのテキスト単位の対応するnグラムのシーケンスを生成するパーサ1110が含まれている(例えば、分割410を参照して上で説明したように)。対応するnグラムのシーケンスには、単語レベルのnグラムおよび/または文字レベルのnグラムが含まれ得、複数の文字レベルのnグラムのnの値は、複数の単語レベルのnグラムのnの値と同じでも異なっていてもよい。一例では、対応するnグラムのシーケンスには、単語レベルのユニグラムと文字レベルのバイグラムが含まれる。
【0111】
装置1100には、nグラムのシーケンスを受信し、nグラムのシーケンスに対応する順序付けられる複数の埋め込みベクトルを生成する埋め込み層1120も含まれる。順序付けられる複数の埋め込みベクトルは、複数の成分ベクトル(例えば、トレーニングされる埋め込み行列などの埋め込みモデル)に基づいていてもよい。順序付けられる複数の埋め込みベクトルの順序は、テキスト単位内の対応するnグラムの発生順序を示すか、またはそれに対応し得る。
【0112】
装置1100には、順序付けられる複数の埋め込みベクトルを受信し、テキスト単位の符号化ベクトルを生成する深層ネットワーク1130も含まれる。深層ネットワークは、入力層と出力層の間に少なくとも1つの隠し層を含み、トレーニングされるCNNを含み得る。深層ネットワークには、予測を実行するときに、例えば、どのnグラムにもっと注意を払う必要があるか(例えば、どのnグラムにもっと重み付けする必要があるか)を示す注意重みを生成する注意機構(例えば、1つまたは複数の注意層)が含まれ得る。
【0113】
図12は、注意機構を含む深層ネットワーク1130の別の例1210を示す。この機構には、CNN層1220の出力に注意重み(太い破線で示される)を割り当てるように構成される注意層1230が含まれる。入力テキストの最終的な符号化ベクトルは、CNN出力の加重合計である(例えば、注意重みを使用して重み付けされる)。
【0114】
装置1100には、符号化ベクトルを受信し、テキスト単位の言語予測を生成する分類器1140も含まれる。分類器にはフィードフォワードニューラルネットワークが含まれ得る。このような場合、分類器は、フィードフォワードニューラルネットワークの最終層の出力にソフトマックス関数を適用するように構成されてもよい(例えば、
図12を参照して説明したように、注意層を使用して重み付けされる)。
【0115】
上述のように、入力テキスト単位は、単語レベルのnグラムおよび/または文字レベルのnグラムを含み得るnグラムのシーケンスに解析され得、各ケースのnの値は調整可能なパラメータであり得る。
図13は、埋め込み層1120の実装1325によって実行され、nグラムのシーケンス内の各nグラムについて、順序付けられる複数の埋め込みベクトル内の対応する埋め込みベクトルを取得できる演算の例を示す。この例では、nグラムに対して第1のハッシュを実行して第1のハッシュ値を取得し、第1のハッシュ値にモジュロB演算を適用して第1のインデックスを取得する。ここで、Bはトレーニングされる複数の成分ベクトル(例えば、トレーニングされる埋め込みモデル)内の成分ベクトルの数である。同様に、nグラムに対して第2のハッシュを実行して第2のハッシュ値を取得し、第2のハッシュ値にモジュロB演算を適用して第2のインデックスを取得する。第1のインデックスと第2のインデックスで示される成分ベクトルは、nグラムの埋め込みベクトルを取得するために結合(例えば、連結、重み付け、および/または追加)される。結合演算の構成には、1つまたは複数の調整可能なパラメータ(例えば、成分ベクトルが連結/重み付け/追加されるかどうか、重みがどのように決定されるかなど)が含まれ得る。
【0116】
図14は、とある実施形態による言語検出のプロセス1400を示すフローチャートである。
図14に示される処理は、それぞれのシステムの1つまたは複数の処理装置(例えば、プロセッサ、コア)、ハードウェア、またはそれらの組み合わせによって実行されるソフトウェア(例えば、コード、命令、プログラム)で実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に記憶されてもよい。
図14に示され、以下で説明される方法は、例示を目的としており、限定するものではない。
図14は、特定のシーケンスまたは順序で行われるさまざまな処理ステップを示しているが、これに限定することを意図したものではない。とある代替実施形態では、ステップは何らかの異なる順序で実行されてもよいし、一部のステップは並行して実行されてもよい。
図1~
図3に示す実施形態のようなとある実施形態では、
図14に示す処理は、前処理サブシステム(例えば、言語検出器212)によって実行され、1つまたは複数の他のサブシステム(例えば、複数の意図サブシステム220または310および/または明示的な呼び出しサブシステム110または意図分類器320)によって使用される抽出される情報を生成することができる。
【0117】
ブロック1404では、データ処理システム(例えば、
図1~
図3に関してそれぞれ説明したチャットボットシステム106、201、および/または300)によって、テキスト単位のnグラムのシーケンスが取得される。nグラムのシーケンスを取得するには、テキスト単位を入力として受信し、テキスト単位を解析してnグラムのシーケンスを生成することが含まれ得る。nグラムのシーケンスには、単語レベルのnグラムおよび/または文字レベルのnグラムが含まれ得、複数の文字レベルのnグラムのnの値は、複数の単語レベルのnグラムのnの値と同じでも異なっていてもよい。一例では、nグラムのシーケンスには、単語レベルのユニグラムと文字レベルのバイグラムが含まれる。
【0118】
ブロック1408では、埋め込み層を使用して、nグラムのシーケンスの順序付けられる複数の埋め込みベクトルを取得する。埋め込み層には、複数の成分ベクトルを有するトレーニングされるモデルが含まれる。
【0119】
ブロック1412では、深層ネットワークを使用して、順序付けられる複数の埋め込みベクトルに基づく符号化ベクトルを取得する。深層ネットワークには、注意機構(例えば、1つまたは複数の注意層)が含まれる。さまざまな実施形態において、深層ネットワークはトレーニングされるCNNを含み得る。
【0120】
ブロック1416では、分類器を使用して、符号化ベクトルに基づいてテキスト単位の言語予測を取得する。さまざまな実施形態において、分類器はフィードフォワードニューラルネットワークを含むことができる。このような場合、分類器の使用には、フィードフォワードニューラルネットワークの最終層の出力にソフトマックス関数を適用することが含まれ得る。
【0121】
図15は、とある実施形態による言語検出のプロセス1500を示すフローチャートである。
図15に示されている処理は、それぞれのシステム、ハードウェア、またはそれらの組み合わせの1つまたは複数の処理装置(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)で実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に記憶され得る。
図15に示され、以下で説明される方法は、例示を目的としており、制限を意図したものではない。
図15は、特定のシーケンスまたは順序で発生するさまざまな処理ステップを示しているが、これは制限を意図したものではない。とある代替実施形態では、ステップは異なる順序で実行され得、または、一部のステップも並行して実行され得る。
図1~3に示す実施形態のようなとある実施形態では、
図15に示す処理は、前処理サブシステム(例えば、言語検出器212)によって実行され、1つまたは複数の他のサブシステム(例えば、複数の意図サブシステム220または310および/または明示的な呼び出しサブシステム110または意図分類器320)によって使用される抽出される情報を生成することができる。
【0122】
ブロック1504、1512、および1516は、
図14を参照して上記のブロック1404、1412、および1416の説明に従って実装することができる。ブロック1508では、埋め込み層を使用して、nグラムのシーケンスに対して順序付けられる複数の埋め込みベクトルを取得する。埋め込み層には、複数の成分ベクトルを有するトレーニングされるモデルが含まれる。ブロック1508には、nグラムのシーケンス内の各nグラムに対して順序付けられる複数の埋め込みベクトルのうち対応する1つを取得するために実行できるブロック1508a~1508dが含まれる。ブロック1508aでは、nグラムの第1のハッシュ値とnグラムの第2のハッシュ値が取得される。例えば、nグラムの第1のハッシュ値を取得するには、第1のシード値を有するハッシュ関数をnグラムに適用することが含まれ得、nグラムの第2のハッシュ値を取得するには、第1のシード値とは異なる第2のシード値を有するハッシュ関数をnグラムに適用することが含まれ得る。ブロック1508bでは、第1のハッシュ値に基づいて、複数の成分ベクトルの中から第1の成分ベクトルが選択される。ブロック1508cでは、第2のハッシュ値に基づいて、複数の成分ベクトルの中から第2の成分ベクトルが選択される。例えば、プロセス1500には、第1のハッシュ値にモジュロ関数を適用して第1のインデックスを取得し、第2のハッシュ値にモジュロ関数を適用して第2のインデックスを取得することが含まれ得、第1の成分ベクトルの選択は第1のインデックスに基づいて行われ得、第2の成分ベクトルの選択は第2のインデックスに基づいて行われ得る。ブロック1508dでは、第1の成分ベクトルと第2の成分ベクトルに基づくnグラムの埋め込みベクトルが取得される。例えば、埋め込みベクトルは、第1の成分ベクトルと第2の成分ベクトルの連結として取得され得る。さらに、または代替的に、nグラムの埋め込みベクトルを取得することは、第1の重み値を第1の成分ベクトルに適用して第1の重み付けベクトルを取得し、第2の重み値を第2の成分ベクトルに適用して第2の重み付けベクトルを取得することを含み得、埋め込みベクトルは第1の重み付けベクトルと第2の重み付けベクトルとに基づく。
【0123】
説明システム
図16は、分散システム1600の簡略図を示す。図示の例では、分散システム1600は、1つまたは複数の通信ネットワーク1610を介してサーバ1612に結合される1つまたは複数のクライアントコンピューティング装置1602、1604、1606、および1608を含む。クライアントコンピューティング装置1602、1604、1606、および1608は、1つまたは複数のアプリケーションを実行するように構成され得る。
【0124】
さまざまな例において、サーバ1612は、本開示で説明される1つまたは複数の実施形態を可能にする1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。とある例では、サーバ1612は、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションも提供することができる。いくつかの例では、これらのサービスは、クライアントコンピューティング装置1602、1604、1606、および/または1608のユーザに、サービスとしてのソフトウェア(SaaS)モデルなどの下で、ウェブベースまたはクラウドサービスとして提供され得る。クライアントコンピューティング装置1602、1604、1606、および/または1608を動作するユーザは、順に1つまたは複数のクライアントアプリケーションを利用してサーバ1612と対話し、これらの構成要素によって提供されるサービスを利用することができる。
【0125】
図16に示される構成では、サーバ1612は、サーバ1612によって実行される機能を実装する1つまたは複数の構成要素1618、1620、および1622を含み得る。これらの構成要素には、1つまたは複数のプロセッサ、ハードウェア構成要素、またはそれらの組み合わせによって実行できるソフトウェア構成要素が含まれ得る。分散システム1600とは異なり得る、さまざまな異なるシステム構成が可能であることを理解されたい。したがって、
図16に示される例は、例示的なシステムを実装するための分散システムの一例であり、限定することを意図したものではない。
【0126】
ユーザは、クライアントコンピューティング装置1602、1604、1606、および/または1608を使用して、1つまたは複数のアプリケーション、モデル、またはチャットボットを実行することができ、これは、本開示の教示に従って実装またはサービスされ得る1つまたは複数のイベントまたはモデルを生成し得る。クライアント装置は、クライアント装置のユーザがクライアント装置と対話できるようにするインターフェースを提供することができる。クライアント装置は、このインターフェースを介してユーザに情報を出力することもできる。
図16には4つのクライアントコンピューティング装置のみが示されているが、任意の数のクライアントコンピューティング装置がサポートされ得る。
【0127】
クライアント装置には、ポータブルハンドヘルド装置、パーソナルコンピュータやラップトップなどの汎用コンピュータ、ワークステーションコンピュータ、ウェアラブル装置、ゲームシステム、シンクライアント、さまざまなメッセージング装置、センサまたは他の感知装置などのさまざまなタイプのコンピューティングシステムなどが含まれ得る。これらのコンピューティング装置は、さまざまなタイプとバージョンのソフトウェアアプリケーションとオペレーティングシステムを実行し得(例えば、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)アプリケーション)などのさまざまな異なるアプリケーションを実行することができ、さまざまな通信プロトコルを使用することができる。
【0128】
ネットワーク1610は、当業者によく知られている任意のタイプのネットワークであり、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、Apple Talk(登録商標)などを含むがこれらに限定されない、さまざまな利用可能なプロトコルのいずれかを使用してデータ通信をサポートできる。単なる例として、ネットワーク1610は、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(例えば、電気電子学会(IEEE)1002.11プロトコルスイートのいずれかで動作するネットワーク)、Bluetooth(登録商標)、および/または他の無線プロトコル)、ならびに/またはこれらおよび/もしくは他のネットワークの任意の組み合わせであり得る。
【0129】
サーバ1612は、1つまたは複数の汎用コンピュータ、専用サーバコンピュータ(例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な配置および/または組み合わせから構成され得る。サーバ1612は、仮想オペレーティングシステムを実行する1つもしくは複数の仮想機械、またはサーバの仮想記憶装置を維持するために仮想化され得る論理記憶装置の1つもしくは複数の柔軟なプールなどの仮想化を伴う他のコンピューティングアーキテクチャを含み得る。さまざまな例において、サーバ1612は、前述の開示で説明される機能を提供する1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。
【0130】
サーバ1612のコンピューティングシステムは、上述したもののいずれかを含む1つまたは複数のオペレーティングシステム、ならびに任意の市販のサーバオペレーティングシステムを実行することができる。サーバ1612は、さまざまな追加のサーバプリケーションおよび/または中間層アプリケーションのいずれかを実行することもでき、これには、HTTP(ハイパーテキストトランスポートプロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(共通ゲートウェイインターフェース)サーバ、JAVA(登録商標)サーバ、データベースサーバなどが含まれる。例示的なデータベースサーバには、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものが含まれるが、これらに限定されない。
【0131】
いくつかの実装では、サーバ1612には、クライアントコンピューティング装置1602、1604、1606、および1608のユーザから受信したデータフィードおよび/またはイベント更新を分析および統合するための1つまたは複数のアプリケーションが含まれ得る。例として、データフィードおよび/またはイベント更新には、Twitter(登録商標)フィード、Facebook(登録商標)更新、または1つまたは複数のサードパーティ情報ソースおよび継続的なデータストリームから受信したリアルタイム更新が含まれ得るが、これらに限定されず、これには、センサーデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などに関連するリアルタイムイベントが含まれ得る。サーバ1612はまた、クライアントコンピューティング装置1602、1604、1606、および1608の1つまたは複数の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つまたは複数のアプリケーションを含み得る。
【0132】
分散システム1600には、1つまたは複数のデータリポジトリ1614、1616も含まれ得る。これらのデータリポジトリは、とある例ではデータやその他の情報を記憶するために使用され得る。例えば、データリポジトリ1614、1616の1つまたは複数は、さまざまな実施形態によるさまざまな機能を実行するときにサーバ1612によって使用されるチャットボットが使用するための、チャットボットの性能に関連する情報や生成されるモデルなどの情報を記憶するために使用できる。データリポジトリ1614、1616は、さまざまな場所に存在することができる。例えば、サーバ1612によって使用されるデータリポジトリは、サーバ1612に対してローカルであってもよいし、サーバ1612からリモートであってもよく、ネットワークベースまたは専用接続を介してサーバ1612と通信してもよい。データリポジトリ1614、1616は異なるタイプであってもよい。とある例では、サーバ1612によって使用されるデータリポジトリは、例えば、Oracle Corporation(登録商標)や他のベンダーによって提供されるデータベースなどのリレーショナルデータベースなどのデータベースである場合がある。これらのデータベースの1つまたは複数は、SQL形式のコマンドに応答してデータベース間のデータの記憶、更新、および取得を可能にするように適合させることができる。
【0133】
とある例では、データリポジトリ1614、1616のうちの1つまたは複数は、アプリケーションデータを記憶するためにアプリケーションによって使用されてもよい。アプリケーションによって使用されるデータリポジトリは、例えば、キー/値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムによってサポートされる一般的な記憶リポジトリなど、さまざまなタイプの場合がある。
【0134】
とある例では、本開示で説明される機能は、クラウド環境を介してサービスとして提供され得る。
図17は、とある例に従って、さまざまなサービスがクラウドサービスとして提供され得るクラウドベースのシステム環境の簡略化されるブロック図である。
図17に示される例では、クラウドインフラストラクチャシステム1702は、1つまたは複数のクライアントコンピューティング装置1704、1706、および1708を使用するユーザによって要求され得る1つまたは複数のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム1702は、サーバ1612について上述したものを含むことができる1つまたは複数のコンピュータおよび/またはサーバを備えることができる。クラウドインフラストラクチャシステム1702内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、または任意の他の適切な配置および/または組み合わせとして編成され得る。
【0135】
ネットワーク1710は、クライアント1704、1706、および1708とクラウドインフラストラクチャシステム1702との間のデータの通信および交換を容易にすることができる。ネットワーク1710は、1つまたは複数のネットワークを含むことができる。ネットワークは同じタイプであっても、異なるタイプであってもよい。ネットワーク1710は、通信を容易にするために、有線および/または無線プロトコルを含む1つまたは複数の通信プロトコルをサポートすることができる。
【0136】
図17に示す例は、クラウドインフラストラクチャシステムの一例にすぎず、限定することを意図したものではない。いくつかの他の例では、クラウドインフラストラクチャシステム1702は、
図17に示されるものより多いまたは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の異なる構成または配置を有してもよいことを理解されたい。例えば、
図17は3つのクライアントコンピューティング装置を示しているが、代替例では任意の数のクライアントコンピューティング装置がサポートされ得る。
【0137】
クラウドサービスという用語は、一般的に、サービスプロバイダのシステム(例えば、クラウドインフラストラクチャシステム1702)によって、インターネットなどの通信ネットワークを介して、オンデマンドでユーザに提供されるサービスを指すために使用される。通常、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバやシステムは、顧客自身のオンプレミスのサーバやシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。したがって、顧客は、サービス用のライセンス、サポート、またはハードウェアおよびソフトウェアリソースを別途購入することなく、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。例えば、クラウドサービスプロバイダのシステムがアプリケーションをホストでき、ユーザはアプリケーションを実行するためのインフラストラクチャリソースを購入することなく、インターネット経由でオンデマンドでアプリケーションを注文して使用できる。クラウドサービスは、アプリケーション、リソース、サービスへの簡単かつスケーラブルなアクセスを提供するように設計されている。いくつかのプロバイダがクラウドサービスを提供している。例えば、ミドルウェアサービス、データベースサービス、Javaクラウドサービスなど、いくつかのクラウドサービスがカリフォルニア州レッドウッドショアーズのOracle Corporation(登録商標)によって提供されている。
【0138】
とある例では、クラウドインフラストラクチャシステム1702は、異なるモデルを使用して1つまたは複数のクラウドサービスを提供することができ、例えば、Software as a Service(SaaS)モデル、Platform as a Service(PaaS)モデル、Infrastructure as a Service(IaaS)モデル、およびハイブリッドサービスモデルを含むその他のモデルなどである。クラウドインフラストラクチャシステム1702は、さまざまなクラウドサービスの提供を可能にする一連のアプリケーション、ミドルウェア、データベース、および他のリソースを含むことができる。
【0139】
SaaSモデルでは、顧客が基礎となるアプリケーションのハードウェアやソフトウェアを購入することなく、アプリケーションまたはソフトウェアをインターネットなどの通信ネットワークを介してサービスとして顧客に提供できる。例えば、SaaSモデルを使用して、クラウドインフラストラクチャシステム1702によってホストされるオンデマンドアプリケーションへのアクセスを顧客に提供できる。Oracle Corporation(登録商標)が提供するSaaSサービスの例には、人事/資本管理のためのさまざまなサービス、顧客関係管理(CRM)、企業リソースプランニング(ERP)、サプライチェーン管理(SCM)、企業性能管理(EPM)、分析サービス、ソーシャルアプリケーションなどが含まれるが、これらに限定されない。
【0140】
IaaSモデルは、一般に、インフラストラクチャリソース(例えば、サーバ、記憶装置、ハードウェアおよびネットワーキングリソース)をクラウドサービスとして顧客に提供し、弾性なコンピューティングおよび記憶機能を提供するために使用される。さまざまなIaaSサービスがOracle Corporation(登録商標)によって提供されている。
【0141】
PaaSモデルは、一般に、顧客がそのようなリソースを調達、構築、または維持する必要なく、顧客がアプリケーションおよびサービスを開発、実行、および管理できるようにするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例には、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、さまざまなアプリケーション開発ソリューションサービスなどが含まれるが、これらに限定されない。
【0142】
クラウドサービスは、一般に、オンデマンド自己サービスベース、サブスクリプションベース、弾力的に拡張可能、信頼性が高く、可用性が高く、安全な方法で提供される。例えば、顧客は、サブスクリプション注文を介して、クラウドインフラストラクチャシステム1702によって提供される1つまたは複数のサービスを注文することができる。次に、クラウドインフラストラクチャシステム1702は、顧客のサブスクリプション注文で要求されるサービスを提供するための処理を実行する。例えば、ユーザは、発話を使用して、上述したように、クラウドインフラストラクチャシステムにとあるアクション(例えば、意図)を実行するように要求し、および/または本明細書で説明するようにチャットボットシステムにサービスを提供することができる。クラウドインフラストラクチャシステム1702は、1つまたは複数のクラウドサービスを提供するように構成され得る。
【0143】
クラウドインフラストラクチャシステム1702は、異なる展開モデルを介してクラウドサービスを提供することができる。パブリッククラウドモデルでは、クラウドインフラストラクチャシステム1702はサードパーティのクラウドサービスプロバイダによって所有され得、クラウドサービスは個人または企業であり得る一般の顧客に提供される。とある他の例では、プライベートクラウドモデルの下で、クラウドインフラストラクチャシステム1702は組織内(例えば、企業組織内)で動作され、組織内の顧客にサービスが提供され得る。例えば、顧客は人事部、給与部などの企業のさまざまな部門、あるいは企業内の個人である場合もある。他のとある例では、コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム1702および提供されるサービスは、関連するコミュニティ内の複数の組織によって共有され得る。上記モデルのハイブリッドなど、他のさまざまなモデルも使用可能である。
【0144】
クライアントコンピューティング装置1704、1706、および1708は、異なるタイプ(例えば、
図16に示されるクライアントコンピューティング装置1602、1604、1606、および1608)であってもよく、1つまたは複数のクライアントアプリケーションを動作させることができてもよい。ユーザは、クライアント装置を使用して、クラウドインフラストラクチャシステム1702によって提供されるサービスを要求するなど、クラウドインフラストラクチャシステム1702と対話することができる。例えば、ユーザは、本開示で説明されるように、クライアント装置を使用して、チャットボットからの情報またはアクションを要求することができる。
【0145】
いくつかの例では、サービスを提供するためにクラウドインフラストラクチャシステム1702によって実行される処理には、モデルのトレーニングおよび展開が含まれ得る。この分析には、データセットの使用、分析、操作を行って、1つまたは複数のモデルをトレーニングおよび展開することが含まれ得る。この分析は、場合によってはデータを並行して処理したり、データを使用してシミュレーションを実行したりするなど、1つまたは複数のプロセッサによって実行することができる。例えば、ビッグデータ分析は、チャットボットシステム用の1つまたは複数のモデルを生成およびトレーニングするために、クラウドインフラストラクチャシステム1702によって実行され得る。この分析に使用されるデータには、構造化データ(例えば、データベースに記憶されているデータ、または構造化モデルに従って構造化されるデータ)および/または非構造化データ(例えば、データブロブ(バイナリラージオブジェクト))が含まれ得る。
【0146】
図17の例に示されるように、クラウドインフラストラクチャシステム1702は、クラウドインフラストラクチャシステム1702によって提供されるさまざまなクラウドサービスの提供を容易にするために利用されるインフラストラクチャリソース1730を含むことができる。インフラストラクチャリソース1730には、例えば、処理リソース、記憶またはメモリリソース、ネットワーキングリソースなどが含まれ得る。とある例では、アプリケーションから要求される記憶を提供するために利用可能な記憶仮想機械は、クラウドインフラストラクチャシステム1702の一部であってもよい。他の例では、記憶仮想機械は異なるシステムの一部であってもよい。
【0147】
とある例では、さまざまな顧客向けにクラウドインフラストラクチャシステム1702によって提供されるさまざまなクラウドサービスをサポートするためのこれらのリソースの効率的なプロビジョニングを促進するために、リソースは、リソースのセットまたはリソースモジュール(「ポッド」とも呼ばれる)にバンドルされ得る。各リソースモジュールまたはポッドは、1つまたは複数のタイプのリソースの事前に統合および最適化される組み合わせを含み得る。とある例では、異なるタイプのクラウドサービスに対して異なるポッドが事前にプロビジョニングされ得る。例えば、第1セットのポッドはデータベースサービス用にプロビジョニングでき、第2セットのポッドは、第1セットのポッド内のポッドとは異なるリソースの組み合わせを含むことができ、Javaサービスなど用にプロビジョニングできる。一部のサービスでは、サービスをプロビジョニングするために割り当てられるリソースがサービス間で共有され得る。
【0148】
クラウドインフラストラクチャシステム1702は、それ自体、クラウドインフラストラクチャシステム1702の異なる構成要素によって共有され、クラウドインフラストラクチャシステム1702によるサービスのプロビジョニングを容易にするサービス1732を内部的に使用することができる。これらの内部共有サービスには、セキュリティおよびIDサービス、統合サービス、企業リポジトリサービス、企業マネージャーサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするサービス、電子メールサービス、通知サービス、ファイル転送サービスなどが含まれ得るが、これらに限定されない。
【0149】
クラウドインフラストラクチャシステム1702は、複数のサブシステムを備えることができる。これらのサブシステムは、ソフトウェアやハードウェア、またはそれらの組み合わせで実装できる。
図17に示すように、サブシステムは、クラウドインフラストラクチャシステム1702のユーザまたは顧客がクラウドインフラストラクチャシステム1702と対話できるようにするユーザインターフェースサブシステム1712を含んでもよい。ユーザインターフェースサブシステム1712は、ウェブインターフェース1714、オンラインストアインターフェース1716などのさまざまな異なるインターフェースを含むことができ、クラウドインフラストラクチャシステム1702によって提供されるクラウドサービスは宣伝され、消費者および他のインターフェース1718によって購入可能である。例えば、顧客は、クライアント装置を使用して、インターフェース1714、1716、および1718の1つまたは複数を使用して、クラウドインフラストラクチャシステム1702によって提供される1つまたは複数のサービスを要求する(サービス要求1734)場合がある。例えば、顧客はオンラインストアにアクセスし、クラウドインフラストラクチャシステム1702によって提供されるクラウドサービスを閲覧し、顧客がサブスクライブを希望するクラウドインフラストラクチャシステム1702によって提供される1つまたは複数のサービスのサブスクリプション注文を行うことができる。サービス要求には、顧客を識別する情報と、顧客がサブスクリプションを希望する1つまたは複数のサービスが含まれ得る。例えば、顧客は、クラウドインフラストラクチャシステム1702によって提供されるサービスのサブスクリプション注文を行うことができる。注文の一部として、顧客は、サービスが提供されるチャットボットシステムを識別する情報と、任意でチャットボットシステムの1つまたは複数の資格情報を提供できる。
【0150】
図17に示される例などのとある例では、クラウドインフラストラクチャシステム1702は、新しい注文を処理するように構成される注文管理サブシステム(OMS)1720を備えることができる。この処理の一部として、まだ作成していない場合は、OMS1720は顧客の口座を作成し、要求されるサービスを顧客に提供するために顧客に請求するために使用される請求情報および/または会計情報を顧客から受信し、顧客情報を確認し、確認後、顧客の注文を予約する。さまざまなワークフローを調整して、プロビジョニングの注文を準備するように構成できる(まだ作成していない場合)。
【0151】
適切に検証されると、OMS1720は、処理、メモリ、およびネットワーキングリソースを含む注文のためのリソースをプロビジョニングするように構成される注文プロビジョニングサブシステム(OPS)1724を呼び出し得る。プロビジョニングには、注文に対してリソースを割り当て、顧客の注文によって要求されるサービスを容易にするためにリソースを構成することが含まれ得る。注文に対してリソースがプロビジョニングされる方法およびプロビジョニングされるリソースのタイプは、顧客が注文したクラウドサービスのタイプによって異なる場合がある。例えば、1つのワークフローによれば、OPS1724は、要求されている特定のクラウドサービスを決定し、その特定のクラウドサービスに対して事前構成されている可能性のあるポッドの数を識別するように構成され得る。注文に対して割り当てられるポッドの数は、要求されるサービスのサイズ/量/レベル/範囲によって異なる場合がある。例えば、割り当てられるポッドの数は、サービスによってサポートされるユーザの数、サービスが要求されている期間などに基づいて決定され得る。割り当てられるポッドは、次いで、要求されるサービスを提供するために、特定の要求顧客向けにカスタマイズできる。
【0152】
とある例では、セットアップフェーズ処理は、上で説明したように、プロビジョニングプロセスの一部としてクラウドインフラストラクチャシステム1702によって実行され得る。クラウドインフラストラクチャシステム1702はアプリケーションIDを生成し、クラウドインフラストラクチャシステム1702自体によって提供される記憶仮想機械の中から、またはクラウドインフラストラクチャシステム1702以外の他のシステムによって提供される記憶仮想機械の中から、アプリケーションのための記憶仮想機械を選択できる。
【0153】
クラウドインフラストラクチャシステム1702は、要求したサービスがいつ使用できるようになったかを示すために、要求している顧客に応答または通知1744を送信することができる。場合によっては、顧客が要求されるサービスの使用および利点の利用を開始できるようにする情報(例えば、リンク)が顧客に送信され得る。とある例では、サービスを要求する顧客の場合、応答は、クラウドインフラストラクチャシステム1702によって生成されるチャットボットシステムIDと、チャットボットシステムIDに対応するチャットボットシステムについてクラウドインフラストラクチャシステム1702によって選択されるチャットボットシステムを識別する情報とを含み得る。
【0154】
クラウドインフラストラクチャシステム1702は、複数の顧客にサービスを提供することができる。各顧客に対して、クラウドインフラストラクチャシステム1702は、顧客から受信した1つまたは複数のサブスクリプション注文に関連する情報を管理し、注文に関連する顧客データを維持し、要求されるサービスを顧客に提供する責任を負う。クラウドインフラストラクチャシステム1702はまた、顧客によるサブスクリプションサービスの使用に関する使用統計を収集することもできる。例えば、使用される記憶の量、転送されるデータの量、ユーザ数、システムの稼働時間と停止時間などの統計が収集され得る。この使用情報は、顧客への請求に使用され得る。請求は、例えば、月次サイクルで行うことができる。
【0155】
クラウドインフラストラクチャシステム1702は、複数の顧客に並行してサービスを提供することができる。クラウドインフラストラクチャシステム1702は、おそらく専有情報を含む、これらの顧客のための情報を記憶することができる。とある例では、クラウドインフラストラクチャシステム1702は、顧客情報を管理し、ある顧客に関連する情報が別の顧客によってアクセスできないように管理情報の分離を提供するように構成されるID管理サブシステム(IMS)1728を備える。IMS1728は、情報アクセス管理、認証および承認サービス、顧客IDとロールおよび関連機能の管理サービスなどのIDサービスなど、さまざまなセキュリティ関連サービスを提供するように構成できる。
【0156】
図18は、コンピュータシステム1800の一例を示す。いくつかの例では、コンピュータシステム1800は、分散環境内のデジタルアシスタントまたはチャットボットシステムのいずれか、および上述のさまざまなサーバおよびコンピュータシステムを実装するために使用され得る。
図18に示すように、コンピュータシステム1800は、バスサブシステム1802を介して他の多くのサブシステムと通信する処理サブシステム1804を含むさまざまなサブシステムを含む。これらの他のサブシステムには、処理加速装置1806、I/Oサブシステム1808、記憶サブシステム1818、および通信サブシステム1824が含まれ得る。記憶サブシステム1818は、記憶媒体1822およびシステムメモリ1810を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0157】
バスサブシステム1802は、コンピュータシステム1800のさまざまな構成要素およびサブシステムが意図したとおりに相互に通信できるようにする機構を提供する。バスサブシステム1802は単一のバスとして概略的に示されているが、バスサブシステムの代替例では複数のバスを利用することもできる。バスサブシステム1802は、メモリバスまたはメモリコントローラ、周辺バス、さまざまなバスアーキテクチャのいずれかを使用するローカルバスなどを含むいくつかのタイプのバス構造のいずれであってもよい。例えば、そのようなアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびPeripheral Component Interconnect(PCI)バスが含まれ得る。これは、IEEEP13156.1規格などに従って製造されるメザニンバスとして実装され得る。
【0158】
処理サブシステム1804は、コンピュータシステム1800の動作を制御し、1つまたは複数のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサには、単一コアまたはマルチコアプロセッサが含まれ得る。コンピュータシステム1800の処理リソースは、1つまたは複数の処理装置1832、1834などに編成され得る。処理装置には、1つもしくは複数のプロセッサ、同じもしくは異なるプロセッサからの1つもしくは複数のコア、コアとプロセッサの組み合わせ、またはコアとプロセッサのその他の組み合わせが含まれ得る。いくつかの例では、処理サブシステム1804は、グラフィックプロセッサ、デジタル信号プロセッサ(DSP)などの1つまたは複数の専用コプロセッサを含み得る。いくつかの例では、処理サブシステム1804の処理装置の一部またはすべてが、特定用途向け集積回路(ASIC)やフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされる回路を使用して実装され得る。
【0159】
いくつかの例では、処理サブシステム1804内の処理装置は、システムメモリ1810またはコンピュータ可読記憶媒体1822に記憶される命令を実行することができる。さまざまな例において、処理装置は、さまざまなプログラムまたはコード命令を実行し、複数の同時実行プログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、システムメモリ1810および/または潜在的に1つもしくは複数の記憶装置を含むコンピュータ可読記憶媒体1822に載置することができる。適切なプログラミングを通じて、処理サブシステム1804は、上述のさまざまな機能を提供することができる。コンピュータシステム1800が1つまたは複数の仮想機械を実行している場合、1つまたは複数の処理装置が各仮想機械に割り当てられ得る。
【0160】
とある例では、コンピュータシステム1800によって実行される全体の処理を加速するために、カスタマイズされる処理を実行するため、または処理サブシステム1804によって実行される処理の一部をオフロードするために、処理加速装置1806が任意で提供されてもよい。
【0161】
I/Oサブシステム1808は、コンピュータシステム1800に情報を入力するための、および/またはコンピュータシステム1800からもしくはコンピュータシステム1800を介して情報を出力するための装置および機構を含み得る。一般に、入力装置という用語の使用は、コンピュータシステム800に情報を入力するためのあらゆる可能なタイプの装置および機構を含むことを意図している。ユーザインターフェース入力装置には、例えば、キーボード、マウスやトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドやタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えた音声入力装置、マイク、およびその他のタイプの入力装置が含まれ得る。ユーザインターフェース入力装置には、モーションセンシング装置および/またはジェスチャ認識装置も含まれ得、例えば、ユーザが入力装置を制御および動作できるようにするMicrosoft Kinect(登録商標)モーションセンサー、Microsoft Xbox(登録商標)360ゲームコントローラー、ジェスチャや音声コマンドを使用して入力を受信するためのインターフェースを提供する装置などである。ユーザインターフェース入力装置には、ユーザの目の動き(例えば、写真を撮影しているときやメニューを選択しているときの「まばたき」)を検出し、その目のジェスチャを入力装置(例えば、Google Glass(登録商標))への入力として変換するGoogle Glass(登録商標)まばたき検出器などの目のジェスチャ認識装置も含まれ得る。さらに、ユーザインターフェース入力装置は、ユーザが音声コマンドを通じて音声認識システム(例えば、Siri(登録商標)ナビゲータ)と対話できるようにする音声認識センシング装置を含んでもよい。
【0162】
ユーザインターフェース入力装置の他の例には、限定されないが、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、およびスピーカー、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー距離計、視線追跡装置などの音声/ビジュアル装置が含まれ得る。さらに、ユーザインターフェース入力装置には、例えば、コンピュータ断層撮影法、磁気共鳴画像化、位置放射断層撮影法、および医療用超音波検査装置などの医療用画像化入力装置が含まれ得る。ユーザインターフェース入力装置には、例えば、MIDIキーボード、デジタル楽器などの音声入力装置も含まれ得る。
【0163】
一般に、出力装置という用語の使用は、コンピュータシステム1800からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置および機構を含むことを意図している。ユーザインターフェース出力装置には、ディスプレイサブシステム、インジケータライト、または音声出力装置などの非視覚的ディスプレイが含まれ得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。例えば、ユーザインターフェース出力装置には、モニター、プリンタ、スピーカー、ヘッドフォン、自動車ナビゲーションシステム、プロッター、音声出力装置、モデムなど、テキスト、グラフィック、音声/ビデオ情報を視覚的に伝えるさまざまなディスプレイ装置が含まれるが、これらに限定されない。
【0164】
記憶サブシステム1818は、コンピュータシステム1800によって使用される情報およびデータを記憶するためのリポジトリまたはデータストアを提供する。記憶サブシステム1818は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための、有形の非一時的なコンピュータ可読記憶媒体(例えば、非一時的なコンピュータ可読メモリ)を提供する。記憶サブシステム1818は、処理サブシステム1804によって実行されると上述の機能を提供するソフトウェア(例えば、プログラム、コードモジュール、命令)を記憶することができる。ソフトウェアは、処理サブシステム1804の1つまたは複数の処理装置によって実行され得る。記憶サブシステム1818は、本開示の教示に従って認証を提供することもできる。
【0165】
記憶サブシステム1818は、揮発性メモリ装置および不揮発性メモリ装置を含む、1つまたは複数の非一時的メモリ装置を含み得る。
図18に示されるように、記憶サブシステム1818は、システムメモリ1810およびコンピュータ可読記憶媒体1822を含む。システムメモリ1810には、プログラム実行中に命令とデータを記憶するための揮発性メインランダムアクセスメモリ(RAM)と、固定命令が記憶される不揮発性読み取り専用メモリ(ROM)またはフラッシュメモリを含む、複数のメモリが含まれ得る。いくつかの実装では、起動中など、コンピュータシステム1800内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)は、通常、ROMに記憶され得る。RAMは通常、処理サブシステム1804によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実装では、システムメモリ1810は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含み得る。
【0166】
限定ではなく一例として、
図18に示すように、システムメモリ1810は、実行中のアプリケーションプログラム1812をロードすることができ、これには、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのさまざまなアプリケーション、プログラムデータ1814、およびオペレーティングシステム1816が含まれ得る。一例として、オペレーティングシステム1816は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinuxオペレーティングシステム、さまざまな市販のUNIX(登録商標)またはUNIX類似オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがこれらに限定されない)、および/またはモバイルオペレーティングシステム、例えば、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムなどのさまざまなバージョンを含み得る。
【0167】
コンピュータ可読記憶媒体1822は、いくつかの例の機能を提供するプログラミングおよびデータ構造を記憶することができる。コンピュータ可読媒体1822は、コンピュータシステム1800用のコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶を提供し得る。処理サブシステム1804によって実行されると、上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1818に記憶され得る。一例として、コンピュータ可読記憶媒体1822は、ハードディスクドライブ、磁気ディスクドライブ、CDROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光媒体などの不揮発性メモリが含まれ得る。コンピュータ可読記憶媒体1822としては、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどが含まれ得る、これらに限定されない。コンピュータ可読記憶媒体822には、フラッシュメモリベースのSSDなどの不揮発性メモリに基づくソリッド状態ドライブ(SSD)、企業フラッシュドライブ、ソリッド状態ROMなど、ソリッド状態RAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、DRAMとフラッシュメモリベースのSSDを組み合わせて使用するハイブリッドSSDなどの揮発性メモリをベースとするSSDも含まれ得る。
【0168】
とある例では、記憶サブシステム1818はまた、コンピュータ可読記憶媒体1822にさらに接続され得るコンピュータ可読記憶媒体リーダ1820を含み得る。リーダ1820は、ディスク、フラッシュドライブなどのメモリ装置からデータを受信して読み取るように構成され得る。
【0169】
とある例では、コンピュータシステム1800は、処理リソースおよびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートすることができる。例えば、コンピュータシステム1800は、1つまたは複数の仮想機械を実行するためのサポートを提供することができる。とある例では、コンピュータシステム1800は、仮想機械の構成および管理を容易にするハイパーバイザなどのプログラムを実行することができる。各仮想機械には、メモリ、コンピューティング(例えば、プロセッサ、コア)、I/O、およびネットワークリソースが割り当てられ得る。各仮想機械は通常、他の仮想機械とは独立して実行される。仮想機械は通常、独自のオペレーティングシステムを実行し、それは、コンピュータシステム1800によって実行される他の仮想機械によって実行されるオペレーティングシステムと同じであっても、異なっていてもよい。したがって、複数のオペレーティングシステムがコンピュータシステム1800によって同時に潜在的に実行され得る。
【0170】
通信サブシステム1824は、他のコンピュータシステムおよびネットワークへのインターフェースを提供する。通信サブシステム1824は、コンピュータシステム1800から他のシステムとの間でデータを送受信するためのインターフェースとして機能する。例えば、通信サブシステム1824により、コンピュータシステム1800は、インターネットを介して1つまたは複数のクライアント装置との通信チャネルを確立し、クライアント装置との間で情報を送受信できるようになる。例えば、コンピュータシステム1800を使用して
図1に示すボットシステム120を実装する場合、通信サブシステムを使用して、アプリケーション用に選択されるチャットボットシステムと通信することができる。
【0171】
通信サブシステム1824は、有線通信プロトコルおよび/または無線通信プロトコルの両方をサポートすることができる。とある例では、通信サブシステム1824は、無線音声および/またはデータネットワーク(例えば、携帯電話技術、3G、4G、またはEDGE(世界的な進化のための強化されるデータ速度)などの高度なデータネットワーク技術の使用)へアクセスするための無線周波数(RF)トランシーバ構成要素、WiFi(IEEE1502.XXファミリ規格、その他のモバイル通信技術、またはそれらの組み合わせ)、全地球測位システム(GPS)受信機構成要素、および/または他の構成要素を含んでもよい。いくつかの例では、通信サブシステム1824は、無線インターフェースに加えて、または無線インターフェースの代わりに、有線ネットワーク接続(例えば、イーサネット)を提供することができる。
【0172】
通信サブシステム1824は、さまざまな形式でデータを送受信することができる。いくつかの例では、他の形式に加えて、通信サブシステム1824は、構造化および/または非構造化データフィード1826、イベントストリーム1828、イベント更新1830などの形式で入力通信を受信することができる。例えば、通信サブシステム1824は、ソーシャルメディアネットワークおよび/または他の通信サービスのユーザからリアルタイムでデータフィード1826を受信(または送信)するように構成され得、例えば、Twitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリー(RSS)フィードなどのWebフィード、および/または1つまたは複数のサードパーティ情報ソースからのリアルタイム更新などである。
【0173】
とある例では、通信サブシステム1824は、連続データストリームの形式でデータを受信するように構成され、これには、明示的な終了がなく、本質的に連続的または無制限である可能性がある、リアルタイムイベントおよび/またはイベント更新1830のイベントストリーム1828が含まれ得る。連続データを生成するアプリケーションの例としては、センサーデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などが挙げられ得る。
【0174】
通信サブシステム1824は、コンピュータシステム1800から他のコンピュータシステムまたはネットワークにデータを通信するように構成することもできる。データは、構造化データフィードおよび/または非構造化データフィード1826、イベントストリーム1828、イベント更新1830などのさまざまな形式で、コンピュータシステム1800に結合される1つまたは複数のストリーミングデータソースコンピュータと通信している可能性のある1つまたは複数のデータベースに通信され得る。
【0175】
コンピュータシステム1800は、さまざまなタイプのうちの1つであり得、これには、ハンドヘルドポータブル装置(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムが含まれる。コンピュータおよびネットワークの絶え間なく変化する性質のため、
図18に示されるコンピュータシステム1800の説明は、具体的な実施例としてのみ意図されている。
図18に示されるシステムよりも多いまたは少ない構成要素を有する他の多くの構成が可能である。本明細書で提供される開示および教示に基づいて、さまざまな例を実装するための他の方法および/または方法があることを理解されたい。
【0176】
具体的な実施例を説明したが、さまざまな修正、変更、代替構成、および均等物が可能である。例は、とある具体的なデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、特定の一連のトランザクションおよびステップを使用してとある例を説明したが、これが限定を意図するものではないことは当業者には明らかである。一部のフローチャートでは動作が逐次的なプロセスとして説明されているが、動作の多くは並列または同時に実行できる。さらに、動作の順序は並べ替えることができる。プロセスには、図に含まれていない追加のステップが含まれ得る。上記の例のさまざまな特徴および態様は、個別にまたは組み合わせて使用できる。
【0177】
さらに、ハードウェアとソフトウェアの特定の組み合わせを使用してとある例を説明したが、ハードウェアとソフトウェアの他の組み合わせも可能であることを認識されたい。とある例は、ハードウェアのみで、もしくはソフトウェアのみで、またはそれらの組み合わせを使用して実装することができる。本明細書で説明されるさまざまなプロセスは、同じプロセッサ上で実装されてもよいし、異なるプロセッサ上で任意の組み合わせで実装されてもよい。
【0178】
装置、システム、構成要素、またはモジュールがとある動作または機能を実行するように構成されていると説明されている場合、このような構成は、例えば、動作を実行する電子回路を設計することによって、コンピュータ命令もしくはコード、または非一時的メモリ媒体に記憶されるコードもしくは命令を実行するようにプログラムされるプロセッサもしくはコア、またはそれらの任意の組み合わせを実行することなどによって動作を実行するプログラマブル電子回路(例えば、マイクロプロセッサ)をプログラムすることによって達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、プロセスの異なる対が異なる技術を使用することも、同じプロセスの対が異なる時点で異なる技術を使用することもできる。
【0179】
実施例の完全な理解を提供するために、本開示では具体的な詳細が与えられる。しかし、これらの具体的な詳細なしで例を実施することもできる。例えば、よく知られている回路、プロセス、アルゴリズム、構造、および技術は、例を分かりにくくすることを避けるために不必要な詳細を省略して示されている。この説明は、例示的な例のみを提供するものであり、他の例の範囲、適用性、または構成を制限することを意図するものではない。むしろ、前述の例の説明は、当業者に、さまざまな例を実装するための有効な説明を提供するものである。要素の機能や配置にはさまざまな変更を加えることができる。
【0180】
したがって、本明細書および図面は、限定的な意味ではなく、例示的な意味としてみなされるべきである。しかし、特許請求の範囲に記載のより広い趣旨および範囲から逸脱することなく、追加、減算、削除、ならびにその他の修正および変更を行うことができることは明らかである。したがって、具体的な実施例を説明したが、これらは限定することを意図したものではない。さまざまな修正および均等物は、以下の特許請求の範囲内に含まれる。
【0181】
前述の明細書では、本開示の態様を具体的な実施例を参照して説明したが、当業者であれば、本開示はこれらに限定されないことは理解できるであろう。上述の開示のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。さらに、例は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書に記載されているものを超えて、任意の数の環境および用途で利用することができる。したがって、明細書および図面は、限定的なものではなく、例示的なものとみなされるべきである。
【0182】
前述の説明では、例示の目的で、方法を特定の順序で説明した。代替例では、方法は説明した順序とは異なる順序で実行されてもよいことを理解されたい。また、上述の方法は、ハードウェア構成要素によって実行されてもよいし、機械実行可能命令のシーケンスで具体化されてもよく、命令でプログラムされる汎用もしくは専用のプロセッサまたは論理回路などの機械に方法を実行させるために使用することができることを理解されたい。これらの機械実行可能命令は、CD-ROMまたはその他のタイプの光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気カードもしくは光カード、フラッシュメモリ、または電子命令を記憶するのに適したその他のタイプの機械可読媒体など、1つまたは複数の機械可読媒体に記憶され得る。あるいは、これらの方法は、ハードウェアとソフトウェアの組み合わせによって実行されてもよい。
【0183】
構成要素がとある動作を実行するように構成されていると説明されている場合、このような構成は、例えば、動作を実行する電子回路または他のハードウェアを設計することによって、動作を実行するプログラマブル電子回路(例えば、マイクロプロセッサまたは他の適切な電子回路)をプログラムすることによってまたはそれらの組み合わせによって達成され得る。
【0184】
本明細書では、本出願の例示的な実施例について詳細に説明したが、本発明の概念は、他のさまざまな形で具体化および採用され得ること、および、添付の請求項は、先行技術によって制限されない限り、そのような変形を含むように解釈されることが意図されていることを理解されたい。
【国際調査報告】