(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-25
(54)【発明の名称】固有表現認識モデルを用いたコンテキストタグ統合
(51)【国際特許分類】
G10L 15/22 20060101AFI20240118BHJP
G06F 16/90 20190101ALI20240118BHJP
G06N 3/0464 20230101ALI20240118BHJP
G06F 18/28 20230101ALI20240118BHJP
G10L 15/16 20060101ALI20240118BHJP
【FI】
G10L15/22 300Z
G06F16/90 100
G06N3/0464
G06F18/28
G10L15/16
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023543401
(86)(22)【出願日】2022-01-19
(85)【翻訳文提出日】2023-09-13
(86)【国際出願番号】 US2022012972
(87)【国際公開番号】W WO2022159485
(87)【国際公開日】2022-07-28
(32)【優先日】2021-01-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ブー,ズイ
(72)【発明者】
【氏名】ファム,トゥエン・クアン
(72)【発明者】
【氏名】ホアン,コン・ズイ・ブー
(72)【発明者】
【氏名】ガッデ,シュリニバーサ・ファニ・クマール
(72)【発明者】
【氏名】ドゥオング,タン・ロング
(72)【発明者】
【氏名】ジョンソン,マーク・エドワード
(72)【発明者】
【氏名】ビシュノイ,ビシャル
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA01
(57)【要約】
固有表現認識(NER)モデルにおいてコンテキストタグを使用するための技術が提供される。1つの特定の局面では、発話を受信することと、発話の単語に対して埋め込みを生成することと、発話に対して正規表現およびガゼッティア特徴ベクトルを生成することと、発話に対してコンテキストタグ分布特徴ベクトルを生成することと、特徴ベクトルのセットを生成するために、埋め込みを正規表現およびガゼッティア特徴ベクトルならびにコンテキストタグ分布特徴ベクトルと連結またはそれらで補間することと、特徴ベクトルのセットに基づいて発話の符号化された形態を生成することと、発話の符号化された形態に基づいて対数確率を生成することと、発話について1つ以上の制約を識別することとを含む方法が提供される。
【特許請求の範囲】
【請求項1】
方法であって、
プロセッサを含むチャットボットシステムにおいて、1つ以上の単語を含む少なくとも1つの発話を受信することと、
前記チャットボットシステムのトランスフォーマベースのモデルが、前記少なくとも1つの発話の前記1つ以上の単語に対して複数の埋め込みを生成することと、
前記チャットボットシステムの第1のベクトル化器が、前記少なくとも1つの発話に対して少なくとも1つの正規表現およびガゼッティア特徴ベクトルを生成することと、
前記チャットボットシステムの第2のベクトル化器が、前記少なくとも1つの発話に対して少なくとも1つのコンテキストタグ分布特徴ベクトルを生成することと、
前記複数の埋め込みを、前記少なくとも1つの正規表現およびガゼッティア特徴ベクトルならびに前記少なくとも1つのコンテキストタグ分布特徴ベクトルと連結するか、または前記少なくとも1つの正規表現およびガゼッティア特徴ベクトルならびに前記少なくとも1つのコンテキストタグ分布特徴ベクトルで補間して、特徴ベクトルの第1のセットを生成することと、
前記チャットボットシステムの主シーケンスモデルが、前記特徴ベクトルの第1のセットに基づいて、前記少なくとも1つの発話の符号化された形態を生成することと、
前記チャットボットシステムの弁別モデルが、前記少なくとも1つの発話の前記符号化された形態に基づいて、候補表現について複数の対数確率を生成することと、
前記複数の対数確率を使用して、前記候補表現に基づいて前記少なくとも1つの発話について1つ以上の制約を識別することとを含む、方法。
【請求項2】
前記少なくとも1つの発話は、前記チャットボットシステムの1つ以上のクエリ、ユーザによって前記チャットボットシステムに入力される1つ以上のクエリ、前記チャットボットシステムの前記1つ以上のクエリに応答して前記ユーザによって提供される1つ以上の応答、またはそれらの組合せのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項3】
前記チャットボットシステムの前記トランスフォーマベースのモデルは、トランスフォーマモデルからの双方向エンコーダ表現を含む、請求項1に記載の方法。
【請求項4】
前記第1のベクトル化器は、1つ以上の正規表現パターンおよび1つ以上のガゼッティアに基づいて、前記少なくとも1つの正規表現およびガゼッティア特徴ベクトルを生成する、請求項1に記載の方法。
【請求項5】
前記第2のベクトル化器は、前記チャットボットシステムの1つ以上のクエリ、ユーザによって前記チャットボットシステムに入力された1つ以上のクエリ、前記チャットボットシステムの前記1つ以上のクエリに応答して前記ユーザによって提供された1つ以上の応答、またはそれらの組合せのうちの少なくとも1つのコンテキストに基づいて、前記少なくとも1つのコンテキストタグ分布特徴ベクトルを生成する、請求項1に記載の方法。
【請求項6】
前記チャットボットシステムの前記主シーケンスモデルは、組み合わされた畳み込みニューラルネットワーク/双方向長短期記憶モデルを含む、請求項1に記載の方法。
【請求項7】
前記チャットボットシステムの前記弁別モデルは、条件付きランダムフィールドモデルを含む、請求項1に記載の方法。
【請求項8】
チャットボットシステムであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサに結合されたメモリとを備え、前記メモリは、前記1つ以上のプロセッサによって実行可能な複数の命令を記憶し、前記複数の命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、
前記チャットボットシステムにおいて、1つ以上の単語を含む少なくとも1つの発話を受信させ、
トランスフォーマベースのモデルを用いて、前記少なくとも1つの発話の前記1つ以上の単語に対して複数の埋め込みを生成させ、
第1のベクトル化器を用いて、前記少なくとも1つの発話に対して少なくとも1つの正規表現およびガゼッティア特徴ベクトルを生成させ、
第2のベクトル化器を用いて、前記少なくとも1つの発話に対して少なくとも1つのコンテキストタグ分布特徴ベクトルを生成させ、
前記複数の埋め込みを、前記少なくとも1つの正規表現およびガゼッティア特徴ベクトルならびに前記少なくとも1つのコンテキストタグ分布特徴ベクトルと連結させるか、または前記少なくとも1つの正規表現およびガゼッティア特徴ベクトルならびに前記少なくとも1つのコンテキストタグ分布特徴ベクトルで補間させて、特徴ベクトルの第1のセットを生成させ、
主シーケンスモデルを用いて、前記特徴ベクトルの第1のセットに基づいて、前記少なくとも1つの発話の符号化された形態を生成させ、
弁別モデルを用いて、前記少なくとも1つの発話の前記符号化された形態に基づいて、候補表現について複数の対数確率を生成させ、
前記複数の対数確率を使用して、前記候補表現に基づいて、前記少なくとも1つの発話について1つ以上の制約を識別させる、チャットボットシステム。
【請求項9】
前記少なくとも1つの発話は、前記チャットボットシステムの1つ以上のクエリ、ユーザによって前記チャットボットシステムに入力される1つ以上のクエリ、前記チャットボットシステムの前記1つ以上のクエリに応答して前記ユーザによって提供される1つ以上の応答、またはそれらの組合せのうちの少なくとも1つを含む、請求項8に記載のチャットボットシステム。
【請求項10】
前記トランスフォーマベースのモデルは、トランスフォーマモデルからの双方向エンコーダ表現を含む、請求項8に記載のチャットボットシステム。
【請求項11】
前記第1のベクトル化器は、1つ以上の正規表現パターンおよび1つ以上のガゼッティアに基づいて、前記少なくとも1つの正規表現およびガゼッティア特徴ベクトルを生成する、請求項8に記載のチャットボットシステム。
【請求項12】
前記第2のベクトル化器は、前記チャットボットシステムの1つ以上のクエリ、ユーザによって前記チャットボットシステムに入力された1つ以上のクエリ、前記チャットボットシステムの前記1つ以上のクエリに応答して前記ユーザによって提供された1つ以上の応答、またはそれらの組合せのうちの少なくとも1つのコンテキストに基づいて、前記少なくとも1つのコンテキストタグ分布特徴ベクトルを生成する、請求項8に記載のチャットボットシステム。
【請求項13】
前記主シーケンスモデルは、組み合わされた畳み込みニューラルネットワーク/双方向長短期記憶モデルを含む、請求項8に記載のチャットボットシステム。
【請求項14】
前記弁別モデルは、条件付きランダムフィールドモデルを含む、請求項8に記載のチャットボットシステム。
【請求項15】
1つ以上のプロセッサによって実行可能な複数の命令を記憶する非一時的なコンピュータ可読メモリであって、前記複数の命令は、命令を含み、前記命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、
チャットボットシステムにおいて、1つ以上の単語を含む少なくとも1つの発話を受信させ、
前記チャットボットシステムのトランスフォーマベースのモデルを用いて、前記少なくとも1つの発話の前記1つ以上の単語に対して複数の埋め込みを生成させ、
前記チャットボットシステムの第1のベクトル化器を用いて、前記少なくとも1つの発話に対して少なくとも1つの正規表現およびガゼッティア特徴ベクトルを生成させ、
前記チャットボットシステムの第2のベクトル化器を用いて、前記少なくとも1つの発話に対して少なくとも1つのコンテキストタグ分布特徴ベクトルを生成させ、
前記複数の埋め込みを、前記少なくとも1つの正規表現およびガゼッティア特徴ベクトルならびに前記少なくとも1つのコンテキストタグ分布特徴ベクトルと連結させるか、または前記少なくとも1つの正規表現およびガゼッティア特徴ベクトルならびに前記少なくとも1つのコンテキストタグ分布特徴ベクトルで補間させて、特徴ベクトルの第1のセットを生成させ、
前記チャットボットシステムの主シーケンスモデルを用いて、前記特徴ベクトルの第1のセットに基づいて、前記少なくとも1つの発話の符号化された形態を生成させ、
前記チャットボットシステムの弁別モデルを用いて、前記少なくとも1つの発話の前記符号化された形態に基づいて、候補表現について複数の対数確率を生成させ、
前記複数の対数確率を使用して、前記候補表現に基づいて、前記少なくとも1つの発話について1つ以上の制約を識別させる、非一時的なコンピュータ可読メモリ。
【請求項16】
前記チャットボットシステムの前記トランスフォーマベースのモデルは、トランスフォーマモデルからの双方向エンコーダ表現を含む、請求項15に記載の非一時的なコンピュータ可読メモリ。
【請求項17】
前記チャットボットシステムの前記第1のベクトル化器は、1つ以上の正規表現パターンおよび1つ以上のガゼッティアに基づいて、前記少なくとも1つの正規表現およびガゼッティア特徴ベクトルを生成する、請求項15に記載の非一時的なコンピュータ可読メモリ。
【請求項18】
前記チャットボットシステムの前記第2のベクトル化器は、前記チャットボットシステムの1つ以上のクエリ、ユーザによって前記チャットボットシステムに入力された1つ以上のクエリ、前記チャットボットシステムの前記1つ以上のクエリに応答して前記ユーザによって提供された1つ以上の応答、またはそれらの組合せのうちの少なくとも1つのコンテキストに基づいて、前記少なくとも1つのコンテキストタグ分布特徴ベクトルを生成する、請求項15に記載の非一時的なコンピュータ可読メモリ。
【請求項19】
前記チャットボットシステムの前記主シーケンスモデルは、組み合わされた畳み込みニューラルネットワーク/双方向長短期記憶モデルを含む、請求項15に記載の非一時的なコンピュータ可読メモリ。
【請求項20】
前記チャットボットシステムの前記弁別モデルは、条件付きランダムフィールドモデルを含む、請求項15に記載の非一時的なコンピュータ可読メモリ。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の参照
本出願は、2021年1月20日に提出された米国仮出願63/139,569の利益および優先権を主張し、その全内容は、あらゆる目的のために参照によりここに組み込まれる。
【0002】
分野
本開示は、概してチャットボットシステムに関し、より詳細には、固有表現認識(NER)モデルにコンテキストタグを追加するための技術に関する。
【背景技術】
【0003】
背景
世界中の人々は、即時反応を得るためにインスタントメッセージングまたはチャットプラットフォームを用いる。組織は、しばしば、これらのインスタントメッセージングまたはチャットプラットフォームを用いて、顧客(またはエンドユーザ)とライブ会話に携わる。しかしながら、顧客またはエンドユーザとのライブ通信に携わるためにサービス人員を雇用することは、組織にとって非常に費用がかかり得る。チャットボットまたはボットは、エンドユーザとの、特にインターネットを介した会話をシミュレートするために開発された。エンドユーザは、メッセージングアプリを介してそのようなボットと通信することができる。概して人工知能(AI)によって駆動されるボットであるインテリジェントボットは、エンドユーザとのライブ会話においてインテリジェントかつ文脈的に通信することができ、より自然な会話および改善された会話体験を可能にする。固定されたキーワードまたはコマンドのセットに依拠する代わりに、インテリジェントボットは、自然言語でエンドユーザの発話を受信し、そのインテントを理解し、それに応じて応答することが可能であり得る。
【0004】
しかしながら、チャットボットを構築することは困難であり、なぜならば、特定の分野における特定の知識と、専門開発者の能力内のみであり得る特定の技術の適用とを必要とするからである。これらのチャットボットを構築するために、開発者は、エンドユーザのニーズを理解し、そのニーズに合わせた機械学習(ML)モデルを構築しようとする。MLモデルを構築するタスクは、典型的には、教師なしおよび/または教師あり学習ベースのソリューションを使用して、複数のモデルを開発および試験することを伴う。場合によっては、MLモデルを構築することは、トレーニング段階、適用(すなわち、推論)段階、およびトレーニング段階と適用段階との間の反復ループを伴う。場合によっては、トレーニングされたMLモデルが所望の結果(例えば、発話からのインテントの推論)を予測することができるように、アルゴリズムが特定のパターンまたは特徴を理解および学習することを可能にするために、正確なトレーニングデータが必要とされる。
【発明の概要】
【課題を解決するための手段】
【0005】
概要
NERモデルにコンテキストタグを追加するための技術が開示される。
【0006】
様々な実施形態では、コンピュータにより実現される方法は、プロセッサを備えるチャットボットシステムにおいて、1つ以上の単語を含む少なくとも1つの発話を受信することと、チャットボットシステムのトランスフォーマベースのモデルが、少なくとも1つの発話の1つ以上の単語に対して、複数の埋め込みを生成することと、チャットボットシステムの第1のベクトル化器が、少なくとも1つの発話について、少なくとも1つの正規表現およびガゼッティア特徴ベクトルを生成することと、チャットボットシステムの第2のベクトル化器が、少なくとも1つの発話について、少なくとも1つのコンテキストタグ分布特徴ベクトルを生成することと、複数の埋め込みを、少なくとも1つの正規表現およびガゼッティア特徴ベクトルならびに少なくとも1つのコンテキストタグ分布特徴ベクトルと連結またはそれらで補間して、特徴ベクトルの第1のセットを生成することと、チャットボットシステムの主シーケンスモデルが、特徴ベクトルの第1のセットに基づいて少なくとも1つの発話の符号化された形態を生成することと、チャットボットシステムの弁別モデルが、少なくとも1つの発話の符号化された形態に基づいて、候補表現について複数の対数確率を生成することと、複数の対数確率を使用して、候補表現に基づいて、少なくとも1つの発話について、1つ以上の制約を識別することとを含む。
【0007】
いくつかの実施形態では、少なくとも1つの発話は、チャットボットシステムの1つ以上のクエリ、ユーザによってチャットボットシステムに入力される1つ以上のクエリ、チャットボットシステムの1つ以上のクエリに応答してユーザによって提供される1つ以上の応答、またはそれらの組み合わせのうちの少なくとも1つを含む。
【0008】
いくつかの実施形態では、チャットボットシステムのトランスフォーマベースのモデルは、トランスフォーマモデルからの双方向エンコーダ表現を含む。
【0009】
いくつかの実施形態では、第1のベクトル化器は、1つ以上の正規表現パターンおよび1つ以上のガゼッティアに基づいて、少なくとも1つの正規表現およびガゼッティア特徴ベクトルを生成する。
【0010】
いくつかの実施形態では、第2のベクトル化器は、チャットボットシステムの1つ以上のクエリ、ユーザによってチャットボットシステムに入力される1つ以上のクエリ、チャットボットシステムの1つ以上のクエリに応答してユーザによって提供される1つ以上の応答、またはそれらの組み合わせのうちの少なくとも1つのコンテキストに基づいて、少なくとも1つのコンテキストタグ分布特徴ベクトルを生成する。
【0011】
いくつかの実施形態では、チャットボットシステムの主シーケンスモデルは、組み合わされた畳み込みニューラルネットワーク/双方向長短期記憶モデルを含む。
【0012】
いくつかの実施形態では、チャットボットシステムの弁別モデルは、条件付きランダムフィールドモデルを含む。
【0013】
本開示のいくつかの実施形態は、1つ以上のデータプロセッサと、1つ以上のデータプロセッサ上で実行されると、1つ以上のデータプロセッサに、ここで開示される1つ以上の方法の一部もしくはすべて、および/または1つ以上のプロセスの一部もしくはすべてを実行させる命令を含む、非一時的コンピュータ可読記憶媒体とを含む、システムを含む。
【0014】
本開示のいくつかの実施形態は、1つ以上のデータプロセッサに、ここで開示される1つ以上の方法の一部もしくはすべておよび/または1つ以上のプロセスの一部もしくはすべてを実行させるように構成された命令を含む非一時的機械可読記憶媒体において有形に具現化されたコンピュータプログラム製品を含む。
【0015】
上記および以下で説明する技術は、いくつかの方法で、およびいくつかの状況で実現され得る。いくつかの例示的な実現例および状況が、以下でより詳細に説明されるように、以下の図面を参照して提供される。しかしながら、以下の実現例および状況は、多くのうちの少数にすぎない。
【図面の簡単な説明】
【0016】
【
図1】例示的な実施形態を組み込んだ分散環境の簡略化されたブロック図である。
【
図2】ある実施形態による、マスタボットを実現するコンピューティングシステムの簡略化されたブロック図である。
【
図3】ある実施形態による、スキルボットを実現するコンピューティングシステムの簡略化されたブロック図である。
【
図4A】様々な実施形態によるチャットボットトレーニングおよび展開システムの簡略化されたブロック図である。
【
図4B】様々な実施形態による固有表現認識(NER)アーキテクチャの簡略化されたブロック図である。
【
図5】様々な実施形態による、表現認識のためにコンテキストを考慮するためのプロセスフローを示す図である。
【
図6】様々な実施形態を実現するための分散型システムの簡略図である。
【
図7】様々な実施形態による、実施形態のシステムの1つ以上のコンポーネントによって提供されるサービスがクラウドサービスとして提供され得る、システム環境の1つ以上のコンポーネントの簡略化されたブロック図である。
【
図8】様々な実施形態を実現するために用いられ得る例示的なコンピュータシステムを示す。
【発明を実施するための形態】
【0017】
詳細な説明
以下の説明では、説明の目的のために、特定の詳細が、特定の実施形態の完全な理解を促すために記載される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実施され得ることは明らかであろう。図および記載は、限定することを意図したものではない。「例示的」という用語は、ここでは、「例、事例、または例示として供される」ことを意味するために用いられる。「例示的」としてここに記載される任意の実施形態または設計は、必ずしも、他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0018】
序
デジタルアシスタントは、ユーザが自然言語会話において様々なタスクを達成するのを助ける人工知能駆動型インターフェイスである。各デジタルアシスタントについて、顧客は、1つ以上のスキルをアセンブルすることができる。スキル(ここでは、チャットボット、ボット、またはスキルボットとしても記載される)は、在庫の追跡、タイムカードの提出、および経費報告の作成など、特定の種類のタスクに焦点を当てる個々のボットである。エンドユーザがデジタルアシスタントに携わると、デジタルアシスタントは、エンドユーザ入力を評価し、適切なチャットボットに会話をルーティングし、適切なチャットから会話をルーティングする。デジタルアシスタントは、FACEBOOK(登録商標)メッセンジャー、SKYPE MOBILE(登録商標)メッセンジャー、またはショートメッセージサービス(SMS)などの様々なチャネルを介してエンドユーザに利用可能にすることができる。チャネルは、様々なメッセージングプラットフォーム上でエンドユーザからデジタルアシスタントおよびその様々なボットへチャットを行き来させる。チャネルはまた、ユーザエージェント漸増、イベント起動型会話、およびテストをサポートしてもよい。
【0019】
インテントにより、チャットボットは、ユーザがチャットボットに何をして欲しいかを理解することができる。インテントは、発話とも称されるユーザ要求およびステートメント(例えば、口座残高を入手する、購入を行うなど)を介してチャットボットに通信されるユーザのインテントである。ここで用いられる場合、発話またはメッセージは、チャットボットとの会話の間に交換される単語のセット(たとえば、1つ以上の文)を指し得る。インテントは、何らかのユーザアクション(例えば、ピザを注文する)を示す名前を提供し、そのアクションをトリガすることに一般に関連付けられる実生活ユーザステートメントまたは発話のセットをコンパイルすることによって、作成されてもよい。チャットボットの認知は、これらのインテントから導き出されるので、各インテントは、ロバストな(1から二十数個の発話)であるデータセットから作成され、チャットボットがあいまいなユーザ入力を解釈できるように、変動してもよい。豊富な発話のセットは、チャットボットが、「この注文は無視して」または「配達は取りやめて!」のような、同じものを意味するが異なって表現されるメッセージを受信したときに、ユーザが何を望むかを理解することを可能にする。集合的に、インテントおよびそれらに属する発話は、チャット用のトレーニングコーパスを構成する。コーパスを用いてアルゴリズムをトレーニングすることによって、顧客は、そのアルゴリズムを、エンドユーザ入力を単一のインテントに解決するための参照ツールとして供されるモデルに変換する。顧客は、インテントテストおよびインテントトレーニングの循環を通じてチャットの認知の鋭敏さを改善することができる。
【0020】
しかしながら、エンドユーザの発話に基づいてエンドユーザのインテントを判断することができるチャットボットを構築することは、少なくとも自然言語の微妙さおよび曖昧さならびに入力/出力空間の次元(例えば、考えられるユーザ発話、インテントの数など)のため、困難なタスクである。この困難の例示的な例は、インテントを表現するために、婉曲語法、同義語、または非文法的言語運用を採用するといった、自然言語の特性から生じる。例えば、ある発話は、ピザ、注文、または配達という単語に明示的に言及することなく、ピザを注文するインテントを表す場合がある。自然言語のこれらの特性は、不確実性を生じさせ、チャットボットがユーザのインテントの予測のためのパラメータとして信頼度を使用する結果となる。したがって、チャットボットは、チャットボットの性能およびチャットボットによるユーザ体験を改善するために、トレーニング、監視、デバッグ、および再トレーニングされる必要があり得る。従来の音声言語理解(SLU)および自然言語処理(NLP)システムでは、デジタルアシスタントまたはそこに含まれるチャットボットの機械学習アルゴリズムをトレーニングおよび再トレーニングするためのトレーニング機構が提供される。従来、これらのアルゴリズムは、任意のインテントについて、「製造された」発話でトレーニングされる。例えば、「Do you do price changes?(価格変更をしますか?)」という発話を用いて、この種の発話を「Do you offer a price match.(プライスマッチを提供するか)」というインテントとして分類するようチャットボットシステムの分類アルゴリズムをトレーニングしてもよい。製造された発話によるアルゴリズムのトレーニングは、最初に、サービスを提供するためにチャットボットシステムをトレーニングし、一旦チャットボットシステムが展開され、ユーザから発話を受信すると、チャットボットシステムを再トレーニングするのに役立つ。
【0021】
ユーザ発話は、固有表現を含み得る。インテントに加えて、固有表現はさらに、チャットボットがユーザの発話の意味を理解することを可能にする。固有表現は、インテントを修正する。例えば、ユーザが「show me yesterday's financial news(昨日の金融ニュースを見せて)」とタイプする場合、固有表現「yesterday」および「financial」は、ユーザの要求を理解するのにチャットボットを支援する。表現は、それらが表すものに従って分類され得る。例えば、「yesterday」を「dateTime(日時)」と分類し、「金融」を「newsType(ニュースタイプ)」と分類してもよい。表現は、スロットと呼ばれることがある。固有表現認識(NER)は、表現を自動的に認識および抽出するためにチャットボットシステムによって使用されるツールである。NERは、典型的には、固有表現解決および固有表現曖昧性除去を伴う。固有表現解決は、単語のシーケンス内の固有表現を識別することを含み、固有表現曖昧性除去は、単語のシーケンス内の各固有表現の正確な参照対象を識別することを含む。例えば、地名「Paris(パリ)」に関して、フランスのパリの都市は広く知られているので、人々は概して、この表現の参照対象はフランスのパリの都市であると仮定する。しかし、地名「Paris」には、他の可能な参照対象がある(例えば、参照対象は、米国テキサス州のパリ、カナダのオンタリオ州のパリ、パナマのパリ、トーゴのパリなど)。加えて、参照対象は、パリと名付けられた人物、またはパリと名付けられた商業表現もしくは企業を含み得る。固有表現の参照対象は、必ずしも明白なまたは人気のある参照対象に対応するとは限らないので、意図された参照対象を識別することは困難である。
【0022】
これらの課題および他の課題を克服して、特定の固有表現の意図される参照対象を正確に識別するために、ここに記載されるアプローチは、意図される参照対象の文脈を考慮する。種々の実施形態では、ある方法が提供され、その方法は、少なくとも1つの発話を受信することと、少なくとも1つの発話の1つ以上の単語に対して埋め込みを生成することと、少なくとも1つの発話に対して少なくとも1つの正規表現およびガゼッティア特徴ベクトルを生成することと、少なくとも1つの発話に対して少なくとも1つのコンテキストタグ分布特徴ベクトルを生成することと、埋め込みを、少なくとも1つの正規表現およびガゼッティア特徴ベクトルならびに少なくとも1つのコンテキストタグ分布特徴ベクトルと連結またはそれらで補間して、特徴ベクトルの第1のセットを生成することと、特徴ベクトルの第1のセットに基づいて、少なくとも1つの発話の符号化された形態を生成することと、少なくとも1つの発話の符号化された形態に基づいて、候補表現について複数の対数確率を生成することと、複数の対数確率を使用して、候補表現に基づいて、少なくとも1つの発話について、1つ以上の制約を識別することとを含む。様々な実施形態の他の特徴および利点は、本開示を通して明らかである。
【0023】
ボットシステム
ボット(スキル、チャットボット、チャターボット、またはトークボットとも称される)は、エンドユーザとの会話を実行することができるコンピュータプログラムである。ボットは一般に、自然言語メッセージを用いるメッセージングアプリケーションを通じて自然言語メッセージ(例えば質問またはコメント)に応答することができる。企業は、1つ以上のボットを用いて、メッセージングアプリケーションを通じてエンドユーザと通信し得る。メッセージングアプリケーションは、例えば、オーバーザトップ(OTT)メッセージングチャネル(例えば、Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack,またはSMS)、バーチャルプライベートアシスタント(例えば、Amazon Dot, Echo,またはShow, Google(登録商標) Home, Apple HomePodなど)、チャット機能を有するネイティブもしくはハイブリッド/応答モバイルアプリもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリ拡張、または音声ベースの入力(例えば、Siri, Cortana, Google Voice、または対話のための他の音声入力を用いるインターフェイスを有するデバイスもしくはアプリ)を含むことができる。
【0024】
いくつかの例では、ボットは、統一資源識別子(URI)に関連付けられ得る。URIは、文字列を用いてボットを識別することができる。URIは、1つ以上のメッセージングアプリケーションシステムのためのウェブフックとして用いられ得る。URIは、例えば、統一資源位置指定子(URL)または統一資源名(URN)を含むことができる。ボットは、メッセージングアプリケーションシステムからメッセージ(例えば、ハイパーテキスト転送プロトコル(HTTP)ポストコールメッセージ)を受信するように設計されてもよい。HTTPポストコールメッセージは、メッセージングアプリケーションシステムからURIに向けられてもよい。いくつかの例では、メッセージはHTTPポストコールメッセージとは異なり得る。例えば、ボットは、ショートメッセージサービス(SMS)からメッセージを受信し得る。ここにおける議論は、ボットがメッセージとして受信する通信に言及するが、メッセージは、HTTPポストコールメッセージ、SMSメッセージ、または2つのシステム間の任意の他のタイプの通信であってもよいことを理解されたい。
【0025】
エンドユーザは、エンドユーザが他の人々と対話するのと同様に、会話対話(会話ユーザインターフェイス(UI)と呼ばれることがある)を通じてボットと対話する。場合によっては、会話対話は、エンドユーザがボットに「Hello」を言い、ボットが「Hi」で応答し、エンドユーザにどのように支援することができるかを尋ねることを含んでもよい。エンドユーザはまた、取引対話(例えば、ある口座から別の口座に送金するように少なくともトレーニングされた銀行業務ボットを用いる)、情報対話(例えば、少なくともトレーニングされた人材ボットを用いて、ユーザが有する残りの休暇時間をチェックする)、および/または小売対話(例えば、購入された商品を返品することを議論するかまたは技術的支援を求めるために少なくともトレーニングされた小売ボットを用いる)などの他のタイプの対話を通じてボットと対話する。
【0026】
いくつかの例では、ボットは、ボットの管理者または開発者による介入なしにエンドユーザ対話をインテリジェントに取り扱ってもよい。例えば、エンドユーザは、所望の目標を達成するためにボットに1つ以上のメッセージを送信してもよい。メッセージは、テキスト、絵文字、音声、画像、ビデオ、またはメッセージを伝える他の方法などの、特定のコンテンツを含むことができる。いくつかの例では、ボットは、コンテンツを標準化された形式に自動的に変換し、自然言語応答を生成し得る。ボットはまた、追加の入力パラメータをエンドユーザに自動的に促すか、または他の追加の情報を要求してもよい。いくつかの例では、ボットはまた、エンドユーザ発話に受動的に応答するのではなく、エンドユーザとの通信を開始してもよい。
【0027】
ボットとの会話は、複数の状態を含む特定の会話フローに従うことができる。フローは、入力に基づいて次に起こるものを定義することができる。いくつかの例では、ユーザが定義した状態(例えば、エンドユーザのインテント)と、状態において、または状態から状態にとるべきアクションとを含む状態機械を用いて、ボットを実現することができる。会話は、エンドユーザ入力に基づいて異なる経路をとることができ、これは、ボットがフローについて行う判断に影響を及ぼし得る。例えば、各状態において、エンドユーザ入力または発話に基づいて、ボットは、エンドユーザのインテントを判断して、次にとるべき適切なアクションを判断することができる。ここにおいて、および発話の文脈において、「インテント」という語は、発話を与えたユーザのインテントを指す。例えば、ユーザは、ピザを注文するために会話でボットに関わるつもりであり、ユーザのインテントは、「ピザを注文して」という発話によって表現されるであろう。ユーザのインテントは、ユーザがユーザに代わってボットに実行して欲しい特定のタスクに向けられ得る。したがって、ユーザのインテントを反映する発話は、質問、コマンド、要求などとして表現することができる。
【0028】
ボットの構成の文脈において、「インテント」という語は、ここでは、ユーザの発話を、ボットが実行できる特定のタスク/アクションまたはタスク/アクションのカテゴリにマッピングするための設定情報を指すためにも用いられる。発話のインテント(すなわち、ユーザのインテント)とボットのインテントとを区別するために、後者をここでは「ボットインテント」と呼ぶことがある。ボットインテントは、そのインテントに関連付けられる1つ以上発話のセットを含んでもよい。例えば、ピザを注文することに対するインテントは、ピザの注文を行う要望を表す発話の様々な順列を有することができる。これらの関連付けられた発話は、ボットのインテント分類器をトレーニングするために用いられ得、インテント分類器が、その後、ユーザからの入力発話がピザ注文インテントと一致するかどうかを判断することを可能にする。ボットインテントは、ユーザとある状態において会話を開始するための1つ以上のダイアログフローに関連付けられ得る。例えば、ピザ注文インテントに関する第1のメッセージは、「どの種類のピザがよろしいですか?」という質問であり得る。関連付けられた発話に加えて、ボットインテントは、さらに、そのインテントに関連する固有表現を含み得る。例えば、ピザ注文インテントは、ピザを注文するタスクを実行するために用いられる変数またはパラメータ、(例えば、トッピング1、トッピング2、ピザの種類、ピザサイズ、ピザ数量など)を含み得る。表現の値は、典型的には、ユーザとの会話を通じて取得される。
【0029】
図1は、特定の実施形態によるチャットボットシステムを組み込んだ環境100の簡略ブロック図である。環境100は、デジタルアシスタントビルダプラットフォーム(DABP)102を含み、DABP102のユーザ104がデジタルアシスタントまたはチャットボットシステムを作成および展開することを可能にする。DABP102は、1つ以上のデジタルアシスタント(またはDA)またはチャットボットシステムを作成するために使用することができる。例えば、
図1に示すように、特定の企業を表すユーザ104は、DABP102を使用して、特定の企業のユーザ用のデジタルアシスタント106を作成および展開することができる。例えば、銀行が、DABP102を使用して、銀行の顧客による使用のために1つ以上のデジタルアシスタントを作成することができる。複数の企業が、同じDABP102プラットフォームを使用して、デジタルアシスタントを作成することができる。別の例として、レストラン(例えば、ピザショップ)の所有者は、DABP102を用いて、レストランの顧客が食べ物を注文すること(例えば、ピザを注文すること)を可能にするデジタルアシスタントを作成および展開することができる。
【0030】
本開示の目的のために、「デジタルアシスタント」は、デジタルアシスタントのユーザが自然言語会話を通じて様々なタスクを達成するのに役立つツールである。デジタルアシスタントは、ソフトウェア(たとえば、デジタルアシスタントは、1つ以上のプロセッサによって実行可能なプログラム、コード、または命令を用いて実現されるデジタルツールである)のみを用いて、ハードウェアを用いて、またはハードウェアとソフトウェアとの組み合わせを用いて、実現されてもよい。デジタルアシスタントは、コンピュータ、携帯電話、腕時計、器具、車両など、様々な物理的システムもしくはデバイスにおいて具現化または実現されてもよい。デジタルアシスタントは、チャットボットシステムとも称されることもある。したがって、本開示の目的のために、デジタルアシスタントおよびチャットボットシステムという文言は交換可能である。
【0031】
DABP102を使用して構築されるデジタルアシスタント106等のデジタルアシスタントは、デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を介して、種々のタスクを行うために使用されることができる。会話の一部として、ユーザは、1つ以上のユーザ入力110をデジタルアシスタント106に提供し、デジタルアシスタント106から応答112を得てもよい。会話は、入力110および応答112のうちの1つ以上を含むことができる。これらの会話を介して、ユーザは、1つ以上のタスクがデジタルアシスタント106によって実行されるよう要求することができ、それに応答して、デジタルアシスタント106は、ユーザ要求タスクを実行し、ユーザに適切な応答で応答するよう構成される。
【0032】
ユーザ入力110は、概して自然言語形式であり、発話と呼ばれる。ユーザ発話110は、ユーザが文、質問、テキスト片、または単一の単語でさえタイプし、それを入力としてデジタルアシスタント106に提供するときなどの、テキスト形式であり得る。いくつかの例では、ユーザ発話110は、ユーザがデジタルアシスタント106に入力として提供される何かを言うかまたは話すときなどの、音声入力または発話形式であり得る。発話は、典型的には、ユーザによって話される言語である。たとえば、発話は、英語または何らかの他の言語であってもよい。発話が音声形式である場合、音声入力はその特定の言語のテキスト形式の発話に変換され、次いで、テキスト発話はデジタルアシスタント106によって処理される。様々な音声-テキスト処理技術を用いて、音声または聴覚的入力をテキスト発話に変換してもよく、テキスト発話は、その後、デジタルアシスタント106によって処理される。いくつかの例では、音声からテキストへの変換は、デジタルアシスタント106自体によって行われてもよい。
【0033】
テキスト発話または音声発話であってもよい発話は、断章、文、複数の文、1つ以上の単語、1つ以上の質問、前述のタイプの組合せなどであってもよい。デジタルアシスタント106は、ユーザ入力の意味を理解するために発話に自然言語理解(NLU)技術を適用するよう構成される。発話に対するNLU処理の一部として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成され、これは、発話に対応する1つ以上のインテントおよび1つ以上の表現を識別することを伴う。発話の意味を理解すると、デジタルアシスタント106は、理解された意味またはインテントに応答して1つ以上のアクションまたは動作を実行することができる。本開示の目的のために、発話は、デジタルアシスタント106のユーザによって直接提供されるテキスト発話であるか、または入力音声発話のテキスト形式への変換の結果であると仮定する。しかしながら、これは、いかなる態様においても限定的または制限的であることを意図するものではない。
【0034】
例えば、ユーザの入力は、「私はピザを注文したい」等の発話を提供することによって、ピザが注文されることを要求してもよい。そのような発話を受信すると、デジタルアシスタント106は、発話の意味を理解し、適切なアクションを取るよう構成される。適切なアクションは、例えば、ユーザが注文したいピザのタイプ、ピザのサイズ、ピザの任意のトッピングなどに関する、ユーザ入力を要求する質問で、ユーザに応答することを含んでもよい。デジタルアシスタント106によって提供される応答はまた、自然言語形式であってもよく、典型的には入力発話と同じ言語であってもよい。これらの応答を生成することの一部として、デジタルアシスタント106は、自然言語生成(NLG)を実行してもよい。ユーザがピザを注文するために、ユーザとデジタルアシスタント106との間の会話を介して、デジタルアシスタントは、ピザを注文するためのすべての必要な情報を提供するようにユーザを誘導してもよく、次いで、会話の終わりに、ピザを注文させてもよい。デジタルアシスタント106は、ピザが注文されたことを示す情報をユーザに出力することによって、会話を終了してもよい。
【0035】
概念レベルでは、デジタルアシスタント106は、ユーザから受信された発話に応答して、種々の処理を実行する。いくつかの例では、この処理は、例えば、入力発話の意味を理解すること、発話に応答して実行されるべきアクションを決定すること、適切な場合にはアクションが実行されることを引き起こすこと、ユーザ発話に応答してユーザに出力されるべき応答を生成すること、応答をユーザに出力することなどを含む、一連の処理ステップまたは処理ステップのパイプラインを伴う。NLU処理は、受信した入力発話を構文解析して発話の構造および意味を理解することと、発話を精緻化および再構成して、発話について、よりよく理解可能な形式(例えば、論理形式)または構造を展開することとを含むことができる。応答を生成することは、NLG技術を使用することを含んでもよい。
【0036】
デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理は、文解析(例えば、トークン化、並べ換え、文に対する品詞タグの識別、文における固有表現の識別、文構造を表すための依存関係ツリーの生成、文の節への分割、個々の節の分析、照応形の解決、チャンク化の実行など)などの様々なNLP関連タスクを含み得る。ある例では、NLU処理は、デジタルアシスタント106自体によって実行される。いくつかの他の例では、デジタルアシスタント106は、他のリソースを用いて、NLU処理の一部を実行することができる。例えば、入力発話文の構文および構造は、構文解析、品詞タグ付け、および/またはNERを用いて文を処理することによって識別されてもよい。一実現例では、英語の場合、文構造および構文を解析するために、Stanford NLP Groupによって提供されるもののような、構文解析、品詞タグ付け、および固有表現認識が用いられる。これらは、Stanford CoreNLPツールキットの一部として提供される。
【0037】
本開示で提供される様々な例は英語の発話を示すが、これは単なる例として意味される。特定の例では、デジタルアシスタント106は、英語以外の言語で発話を処理することもできる。デジタルアシスタント106は、異なる言語に対する処理を実行するよう構成されるサブシステム(例えば、NLU機能を実現するコンポーネント)を提供してもよい。これらのサブシステムは、NLUコアサーバからのサービスコールを用いて呼び出され得るプラグ可能ユニットとして実現されてもよい。これは、NLU処理を、異なる順序の処理を可能にすることを含めて、各言語に対して柔軟かつ拡張可能にする。言語パックは、個々の言語に対して提供されてもよく、言語パックは、NLUコアサーバからサービス提供され得るサブシステムのリストを登録することができる。
【0038】
図1に示されるデジタルアシスタント106等のデジタルアシスタントは、限定ではないが、あるアプリケーションを介して、ソーシャルメディアプラットフォームを介して、種々のメッセージングサービスおよびアプリケーションを介して、ならびに他のアプリケーションまたはチャネル等の種々の異なるチャネルを介して、そのユーザ108に利用可能またはアクセス可能にされることができる。単一のデジタルアシスタントは、それのためにいくつかのチャネルを構成することができるので、異なるサービス上で同時に実行され、異なるサービスによって同時にアクセスされることができる。
【0039】
デジタルアシスタントまたはチャットボットシステムは、一般に、1つ以上のスキルを含むか、または1つ以上のスキルに関連付けられる。ある実施形態では、これらのスキルは、ユーザと対話し、在庫の追跡、タイムカードの提出、経費報告の作成、食品の注文、銀行口座の確認、予約の作成、ウィジェットの購入などの特定の種類のタスクを満たすように構成された個々のチャットボット(スキルボットと呼ばれる)である。例えば、
図1に示される実施形態では、デジタルアシスタントまたはチャットボットシステム106は、スキル116-1、116-2、116-3等を含む。本開示の目的のために、「スキル」という語は、「スキルボット」という語と同義的に用いられる。
【0040】
デジタルアシスタントに関連付けられる各スキルは、ユーザとの会話を通じて、デジタルアシスタントのユーザがタスクを完了するのを助け、会話は、ユーザによって提供されるテキストまたは聴覚的入力と、スキルボットによって提供される応答との組み合わせを含むことができる。これらの応答は、ユーザへのテキストメッセージもしくは聴覚メッセージの形態、および/またはユーザが選択を行うようユーザに提示される単純なユーザインターフェイス要素(たとえば、選択リスト)を用いる形態であってもよい。
【0041】
スキルまたはスキルボットをデジタルアシスタントに関連付けるかまたは追加することができる様々な方法がある。ある例では、スキルボットは企業によって開発され、次いでDABP102を用いてデジタルアシスタントに追加され得る。他の例では、スキルボットは、DABP102を用いて開発および作成され、次いで、DABP102を用いて作成されたデジタルアシスタントに追加され得る。さらに他の例では、DABP102は、広範囲のタスクに向けられた複数のスキルを提供するオンラインデジタルストア(「スキルストア」と呼ばれる)を提供する。スキルストアを通じて提供されるスキルも、様々なクラウドサービスを公開してもよい。DABP102を使用して生成されるデジタルアシスタントにスキルを追加するために、DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択されたスキルがDABP102を使用して作成されるデジタルアシスタントに追加されることを示すことができる。スキルストアからのスキルは、そのまま、または修正された形態で、デジタルアシスタントに追加することができる(例えば、DABP102のユーザは、スキルストアによって提供される特定のスキルボットを選択してクローニングし、選択されたスキルボットをカスタマイズまたは修正し、次いで、修正されたスキルボットを、DABP102を用いて作成されたデジタルアシスタントに追加してもよい)。
【0042】
デジタルアシスタントまたはチャットボットシステムを実現するために、様々な異なるアーキテクチャが使用されてもよい。例えば、ある実施形態では、DABP102を用いて作成および展開されるデジタルアシスタントは、マスタボット/子(もしくはサブ)ボットパラダイムまたはアーキテクチャを用いて実現されてもよい。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つ以上の子ボットと対話するマスタボットとして実現される。例えば、
図1に示す実施形態では、デジタルアシスタント106は、マスタボット114と、マスタボット114の子ボットであるスキルボット116-1、116-2などとを含む。特定の例では、デジタルアシスタント106自体がマスタボットとして動作すると考えられる。
【0043】
マスタ・子ボットアーキテクチャに従って実現されるデジタルアシスタントは、デジタルアシスタントのユーザが、統合されたユーザインターフェイスを介して、すなわちマスタボットを介して、複数のスキルと対話することを可能にする。ユーザがデジタルアシスタントに関与すると、ユーザ入力はマスタボットによって受信される。次いで、マスタボットは、ユーザ入力発話の意味を判定するための処理を実行する。次いで、マスタボットは、発話においてユーザによって要求されたタスクがマスタボット自体によって処理され得るかどうかを判定し、そうでなければ、マスタボットは、ユーザ要求を処理するために適切なスキルボットを選択し、会話を選択されたスキルボットにルーティングする。これにより、ユーザは共通の単一のインターフェイスを介してデジタルアシスタントと会話することができ、特定のタスクを実行するよう構成されるいくつかのスキルボットを使用する能力を依然として提供することができる。例えば、企業用に開発されたデジタルアシスタントの場合、デジタルアシスタントのマスタボットは、顧客関係管理に関連する機能を実行するための顧客関係管理(CRM)ボット、企業資源計画に関連する機能を実行するための企業資源計画(ERP)ボット、人的資本管理に関連する機能を実行するための人的資本管理(HCM)ボットなどの特定の機能を有するスキルボットとインターフェイスすることができる。このように、デジタルアシスタントのエンドユーザまたは消費者は、共通のマスタボットインターフェイスを介してデジタルアシスタントにアクセスする方法を知るだけでよく、背後には、複数のスキルボットがユーザ要求を処理するために提供される。
【0044】
ある例では、マスタボット/子ボットインフラストラクチャにおいて、マスタボットは、スキルボットの利用可能なリストを認識するよう構成される。マスタボットは、様々な利用可能なスキルボット、および各スキルボットについて、各スキルボットによって実行され得るタスクを含む各スキルボットの能力を識別するメタデータへのアクセスを有してもよい。ユーザ要求を発話の形態で受信すると、マスタボットは、複数の利用可能なスキルボットから、ユーザ要求に最も良く対応できるかもしくはユーザ要求をもっとも良く処理することができる特定のスキルボットを識別または予測するよう構成される。次いで、マスタボットは、その発話(またはその発話の一部分)を、さらなる処理のために、その特定のスキルボットにルーティングする。従って、制御はマスタボットからスキルボットに流れる。マスタボットは、複数の入力および出力チャネルをサポートすることができる。いくつかの例では、ルーティングは、1つ以上の利用可能なスキルボットによって実行される処理の助けを借りて実行され得る。例えば、以下に論じられるように、スキルボットは、発話のインテントを推測し、推測されたインテントがスキルボットが構成されるインテントに合致するかどうかを判断するようにトレーニングされることができる。したがって、マスタボットによって実行されるルーティングは、スキルボットが発話を処理するのに適したインテントで構成されているかどうかの指示をマスタボットに通信することを含むことができる。
【0045】
図1の実施形態は、マスタボット114ならびにスキルボット116-1、116-2、および116-3を備えるデジタルアシスタント106を示すが、これは限定を意図するものではない。デジタルアシスタントは、デジタルアシスタントの機能を提供する様々な他のコンポーネント(例えば、他のシステムおよびサブシステム)を含むことができる。これらのシステムおよびサブシステムは、ソフトウェア(例えば、コンピュータ可読媒体上に記憶され、1つ以上のプロセッサによって実行可能なコード、命令)のみ、ハードウェアのみ、またはソフトウェアとハードウェアとの組み合わせを用いる実現例において実現されてもよい。
【0046】
DABP102は、DABP102のユーザが、デジタルアシスタントに関連付けられる1つ以上のスキルボットを含むデジタルアシスタントを作成することを可能にする、インフラストラクチャならびに種々のサービスおよび特徴を提供する。場合によっては、スキルボットは、既存のスキルボットをクローニングすることによって、例えば、スキルストアによって提供されるスキルボットをクローニングすることによって、作成することができる。前述のように、DABP102は、様々なタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットをクローニングすることができる。必要に応じて、クローニングされたスキルボットに修正またはカスタマイズを行ってもよい。いくつかの他の事例では、DABP102のユーザは、DABP102によって提供されるツールおよびサービスを使用して、スキルボットをゼロから作成した。前述のように、DABP102によって提供されるスキルストアまたはスキルカタログは、様々なタスクを実行するための複数のスキルボットを提供してもよい。
【0047】
特定の例では、ある高次レベルにおいて、スキルボットを作成またはカスタマイズすることは、以下のステップを含む:
(1)新たなスキルボットに対する設定を設定する
(2)スキルボットに対して1つ以上のインテントを設定する
(3)1つ以上のインテントに対して1つ以上の表現を設定する
(4)スキルボットをトレーニングする
(5)スキルボットのためのダイアログフローを作成する
(6)必要に応じてカスタムコンポーネントをスキルボットに追加する
(7)スキルボットをテストおよび展開する。
以下、各工程について簡単に説明する。
【0048】
(1)新たなスキルボットに対する設定を設定する-様々な設定がスキルボットのために設定されてもよい。例えば、スキルボット設計者は、作成されているスキルボットの1つ以上の呼出し名を指定することができる。これらの呼出し名は、次いで、スキルボットを明示的に呼び出すためにデジタルアシスタントのユーザによって使用されることができる。例えば、ユーザは、ユーザの発話に呼出し名を入力して、対応するスキルボットを明示的に呼び出すことができる。
【0049】
(2)スキルボットに対して1つ以上のインテントおよび関連付けられる例示的な発話を設定する-スキルボット設計者は、作成されているスキルボットに対して1つ以上のインテント(ボットインテントとも呼ばれる)を指定する。次いで、スキルボットは、これらの指定されたインテントに基づいてトレーニングされる。これらのインテントは、スキルボットが入力発話について推論するようにトレーニングされるカテゴリまたはクラスを表す。発話を受信すると、トレーニングされたスキルボットは、発話のインテントを推論し、推論されるインテントは、スキルボットをトレーニングするために使用されたインテントの事前定義されたセットから選択される。次いで、スキルボットは、発話に対して推論されたインテントに基づいて、その発話に応答する適切なアクションを取る。場合によっては、スキルボットのためのインテントは、スキルボットがデジタルアシスタントのユーザに対して実行することができるタスクを表す。各インテントには、インテント識別子またはインテント名が与えられる。例えば、銀行に対してトレーニングされたスキルボットの場合、そのスキルボットに対して指定されたインテントは、「CheckBalance(残高照会)」、「TransferMoney(送金)」、「DepositCheck(小切手を預け入れる)」などを含んでもよい。
【0050】
スキルボットに対して定義される各インテントについて、スキルボット設計者はまた、そのインテントを代表し示す1つ以上の例示的な発話も提供してもよい。これらの例示的な発話は、ユーザがそのインテントのためにスキルボットに入力してもよい発話を表すよう意味される。例えば、残高照会のインテントについては、例示的な発話は、「What's my savings account balance?(私の普通預金口座の残高は?)」、「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」、「How much money do I have in my account(私の口座にはいくらのお金がありますか?)」などを含んでもよい。したがって、典型的なユーザ発話の様々な順列が、インテントのための発話例として指定されてもよい。
【0051】
インテントおよびそれらの関連付けられる例示的発話は、スキルボットをトレーニングするためのトレーニングデータとして使用される。様々な異なるトレーニング技術が使用されてもよい。このトレーニングの結果として、予測モデルが生成され、それは、発話を入力として取り込み、予測モデルによって発話について推論されたインテントを出力するよう構成される。いくつかの事例では、入力発話は、トレーニングされたモデルを使用して入力発話に対するインテントを予測または推測するよう構成される、インテント分析エンジンに提供される。次いで、スキルボットは、推論されたインテントに基づいて1つ以上のアクションを取ってもよい。
【0052】
(3)1つ以上のインテントに対して1つ以上の表現を設定する-いくつかの例では、スキルボットがユーザ発話に適切に応答することを可能にするために追加のコンテキストが必要とされてもよい。例えば、ユーザ入力発話が、スキルボットにおいて同じインテントに解決する状況があり得る。例えば、上記の例では、発話「What's my savings account balance?(私の普通預金口座の残高は?)」および「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」は両方とも、同じ残高照会のインテントに解決しているが、これらの発話は、異なることを望む異なる要求である。そのような要求を明確にするために、1つ以上の表現がインテントに追加される。銀行業務スキルボットの例を用いると、「checking(当座)」および「saving(普通)」と呼ばれる値を定義するAccountType(口座種類)と呼ばれる表現は、スキルボットがユーザ要求を解析し、適切に応答することを可能にしてもよい。上記の例では、発話は同じインテントに解決するが、AccountType表現に関連付けられる値は、2つの発話について異なる。これにより、スキルボットは、2つの発話が同じインテントに解決するにもかかわらず、2つの発話に対して場合によっては異なるアクションを実行することができる。1つ以上の表現は、スキルボットに対して設定された特定のインテントのために指定され得る。したがって、表現は、コンテキストをインテント自体に追加するために用いられる。表現は、インテントをより充分に記述するのに役立ち、スキルボットがユーザ要求を完了できるようにする。
【0053】
ある例では、2つのタイプの表現、すなわち、(a)DABP102によって提供される組込み表現、および(2)スキルボット設計者によって指定され得るカスタム表現がある。組込み表現は、多種多様なボットとともに用いることができる汎用表現である。組込み表現の例は、限定はしないが、時間、日付、アドレス、番号、電子メールアドレス、持続時間、循環期間、通貨、電話番号、URLなどに関連する表現を含む。カスタム表現は、よりカスタマイズされた用途に用いられる。例えば、銀行業務スキルについては、AccountType表現は、スキルボット設計者によって、当座、普通およびクレジットカードなどのようなキーワードについてユーザ入力をチェックすることによって様々な銀行取引を可能にするよう定義されてもよい。
【0054】
(4)スキルボットをトレーニングする-スキルボットは、ユーザ入力を発話の形態で受信し、受信した入力を解析またはその他の方法で処理し、受信したユーザ入力に関連するインテントを識別または選択するように構成される。上述のように、スキルボットは、このためにトレーニングされなければならない。ある実施形態では、スキルボットは、そのスキルボットに対して設定されたインテント、およびそのインテントに関連付けられる例示的な発話(集合的にトレーニングデータ)に基づいてトレーニングされ、それにより、スキルボットは、ユーザ入力発話を、スキルボットの設定されたインテントの1つに解決することができる。特定の例では、スキルボットは、トレーニングデータを用いてトレーニングされ、ユーザが何を言っているか(または場合によっては、何を言おうとしているか)をスキルボットが識別することを可能にする予測モデルを使用する。DABP102は、様々な機械学習ベースのトレーニング技術、ルールベースのトレーニング技術、および/またはそれらの組み合わせを含む、スキルボットをトレーニングするためにスキルボット設計者によって用いられ得る様々な異なるトレーニング技術を提供する。ある例では、トレーニングデータの一部分(例えば80%)は、スキルボットモデルをトレーニングするために用いられ、別の部分(例えば残りの20%)は、モデルをテストまたは検証するために用いられる。トレーニングされると、トレーニングされたモデル(トレーニングされたスキルボットと呼ばれることもある)は、次いで、ユーザ発話を処理し、それに応答するよう使用されることができる。ある場合には、ユーザの発話は、単一の回答だけを必要とし、さらなる会話を必要としない質問であり得る。このような状況に対処するために、スキルボットに対してQ&A(質疑応答)インテントを定義してもよい。これは、スキルボットがダイアログ定義を更新する必要なしにユーザ要求に対する返答を出力することを可能にする。Q&Aインテントは、通常のインテントと同様に生成される。Q&Aインテントについてのダイアログフローは、通常のインテントについてのダイアログフローとは異なり得る。
【0055】
(5)スキルボットのためにダイアログフローを作成する-スキルボットに対して指定されるダイアログフローは、受信されたユーザ入力に応答してスキルボットに対する異なるインテントが解決される際にスキルボットがどのように反応するかを記述する。ダイアログフローは、例えば、スキルボットがどのようにユーザ発話に応答するか、スキルボットがどのようにユーザに入力を促すか、スキルボットがどのようにデータを返すかといった、スキルボットがとる動作またはアクションを定義する。ダイアログフローは、スキルボットが辿るフローチャートのようなものである。スキルボット設計者は、マークダウン言語などの言語を用いてダイアログフローを指定する。ある実施形態では、OBotMLと呼ばれるYAMLのバージョンを用いて、スキルボットのためのダイアログフローを指定することができる。スキルボットのためのダイアログフロー定義は、スキルボット設計者に、スキルボットとスキルボットが対応するユーザとの間の対話のコレオグラフィを行わせる、会話自体のモデルとして働く。
【0056】
ある例では、スキルボットのダイアログフロー定義は、3つのセクションを含む:
(a)コンテキストセクション
(b)デフォルト遷移セクション
(c)状態セクション。
【0057】
コンテキストセクション-スキルボット設計者は、コンテキストセクションにおいて、会話フローで用いられる変数を定義することができる。コンテキストセクションで指名され得る他の変数は、限定されないが、エラー処理のための変数、組込み表現またはカスタム表現のための変数、スキルボットがユーザ選好を認識および持続することを可能にするユーザ変数などを含む。
【0058】
デフォルト遷移セクション-スキルボットのための遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクションで定義することができる。デフォルト遷移セクションで定義される遷移は、フォールバックとして作用し、状態内に定義される適用可能な遷移がない場合または状態遷移をトリガするために必要な条件を満たせない場合にトリガされる。デフォルト遷移セクションは、スキルボットが予想外のユーザアクションをそつなく処理することを可能にするルーティングを定義するために用いられ得る。
【0059】
状態セクション-ダイアログフローおよびその関連動作は、ダイアログフロー内の論理を管理する一連の一時的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログのその点において必要とされる機能を提供するコンポーネントを指名する。このようにして、コンポーネントの周囲に状態を構築する。状態は、コンポーネント固有の特性を含み、コンポーネントが実行された後にトリガされる他の状態への遷移を定義する。
【0060】
特別なケースのシナリオは、状態セクションを用いて取り扱うことができる。例えば、ユーザが取りかかっている第1のスキルを一時的に出て、デジタルアシスタント内で第2のスキルにおいて何かを行うというオプションを、ユーザに与えたい場合があるかもしれない。例えば、ユーザがショッピングスキルとの会話に関わっている(例えば、ユーザは、購入のために何らかの選択を行った)場合、ユーザは、銀行業務スキルにジャンプし(例えば、ユーザは、その購入に十分な金額を有することを確かめたい場合がある)、その後、ユーザの注文を完了するためにショッピングスキルに戻ることを望む場合がある。これに対処するために、第1のスキルにおけるアクションは、同じデジタルアシスタントにおいて第2の異なるスキルとの対話を開始し、次いで元のフローに戻るように構成されることができる。
【0061】
(6)カスタムコンポーネントをスキルボットに追加する-上述のように、スキルボットのためにダイアログフローにおいて指定される状態は、その状態に対応する必要な機能を提供するコンポーネントを指名する。コンポーネントは、スキルボットが機能を実行することを可能にする。ある実施形態では、DABP102は、広範囲の機能を実行するための事前設定されたコンポーネントのセットを提供する。スキルボット設計者は、これらの事前設定されたコンポーネントのうちの1つ以上を選択し、それらをスキルボットのためのダイアログフロー内の状態と関連付けることができる。スキルボット設計者はまた、DABP102によって提供されるツールを用いてカスタムまたは新たなコンポーネントを作成し、カスタムコンポーネントをスキルボットのためのダイアログフロー内の1つ以上の状態と関連付けることができる。
【0062】
(7)スキルボットをテストおよび展開する-DABP102は、スキルボット設計者が開発中のスキルボットをテストすることを可能にするいくつかの特徴を提供する。次いで、スキルボットは、デジタルアシスタントにおいて展開され、それに含めることができる。
【0063】
上記の説明は、スキルボットをどのように作成するかについて説明しているが、同様の技術を用いて、デジタルアシスタント(またはマスタボット)を作成することもできる。マスタボットまたはデジタルアシスタントレベルでは、デジタルアシスタントのために組込みシステムインテントを設定することができる。これらの組込みシステムインテントは、デジタルアシスタント自体(すなわち、マスタボット)が、デジタルアシスタントに関連付けられるスキルボットを呼び出すことなく取り扱うことができる一般的なタスクを識別するために用いられる。マスタボットに対して定義されるシステムインテントの例は、以下を含む:(1)退出:ユーザがデジタルアシスタントにおいて現在の会話またはコンテキストを終了したい旨を知らせる場合に当てはまる;(2)ヘルプ:ユーザがヘルプまたは方向付けを求める場合に当てはまる;(3)未解決のインテント:退出インテントおよびヘルプインテントとうまく一致しないユーザ入力に当てはまる。デジタルアシスタントはまた、デジタルアシスタントに関連付けられる1つ以上のスキルボットに関する情報を記憶する。この情報は、マスタボットが、発話を処理するために、特定のスキルボットを選択することを可能にする。
【0064】
マスタボットまたはデジタルアシスタントレベルでは、ユーザがデジタルアシスタントに句または発話を入力すると、デジタルアシスタントは、発話および関連する会話をどのようにルーティングするかを判断する処理を行うように構成される。デジタルアシスタントは、ルールベース、AIベース、またはそれらの組み合わせとすることができるルーティングモデルを用いて、これを判断する。デジタルアシスタントは、ルーティングモデルを用いて、ユーザ入力発話に対応する会話が、処理のために特定のスキルにルーティングされるべきか、組込みシステムインテントに従ってデジタルアシスタントまたはマスタボット自体によって処理されるべきか、または現在の会話フローにおいて異なる状態として処理されるべきかを判断する。
【0065】
特定の実施形態では、この処理の一部として、デジタルアシスタントは、ユーザ入力発話が、スキルボットを、その呼出し名を用いて明示的に識別するかどうかを判断する。呼出し名がユーザ入力に存在する場合、それは、呼出し名に対応するスキルボットの明示的な呼出しとして扱われる。そのようなシナリオでは、デジタルアシスタントは、ユーザ入力を、さらなる処理のために、明示的に呼び出されたスキルボットにルーティングすることができる。特定の、または明示的な呼出しがない場合、ある実施形態では、デジタルアシスタントは、受信されたユーザ入力発話を評価し、デジタルアシスタントに関連付けられるシステムインテントおよびスキルボットについて信頼度スコアを計算する。スキルボットまたはシステムインテントについて計算されるスコアは、ユーザ入力が、スキルボットが実行するように構成されるタスクを表すかまたはシステムインテントを表す可能性を表す。関連付けられる計算された信頼度スコアが閾値(例えば、Confidence Threshold(信頼度閾値)ルーティングパラメータ)を超えるシステムインテントまたはスキルボットは、さらなる評価の候補として選択される。次いで、デジタルアシスタントは、識別された候補から、ユーザ入力発話のさらなる処理のために、特定のシステムインテントまたはスキルボットを選択する。特定の実施形態では、1つ以上のスキルボットが候補として識別された後、それらの候補スキルに関連付けられるインテントが(各スキルに対するインテントモデルに従って)評価され、信頼度スコアが各インテントについて判断される。一般に、閾値(例えば70%)を超える信頼度スコアを有するインテントは、候補インテントとして扱われる。特定のスキルボットが選択された場合、ユーザ発話は、さらなる処理のために、そのスキルボットにルーティングされる。システムインテントが選択された場合、選択されたシステムインテントに従って、マスタボット自体によって、1つ以上のアクションが実行される。
【0066】
図2は、ある実施形態による、マスタボット(MB)システム200の簡略化されたブロック図である。MBシステム200は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアとの組み合わせで実現することができる。MBシステム200は、前処理サブシステム210と、複数インテントサブシステム(MIS)220と、明示的呼出サブシステム(EIS)230と、スキルボット呼出部240と、データストア250とを含む。
図2に示すMBシステム200は、マスタボットにおける構成要素の構成の単なる例である。当業者は、多くの可能な変形、代替、および修正を認識するであろう。例えば、いくつかの実現例では、MBシステム200は、
図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のインテントがボットインテントと一致するかどうかを判断するための処理は、(例えば、
図3に示すように、)MBシステム200のインテント分類器242によって、またはスキルボットのインテント分類器によって実行され得る。MIS220によって実行される処理は、発話202を処理することができるボット(例えば、特定のスキルボットまたはマスタボット自体)が存在する、と仮定する。したがって、MIS220によって実行される処理は、どのようなボットがチャットボットシステム内にあるかについての知識(例えば、マスタボットに登録されたスキルボットのアイデンティティ)または特定のボットに対してどのようなインテントが設定されているかについての知識を必要としない。
【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によって受信された発話全体を送信する代わりに、呼出しに関連付けられていない発話の部分を呼び出されたスキルボットに送信することができる。いくつかの例では、呼び出されたスキルボットへの入力は、単に、呼出しに関連付けられる発話の任意の部分を除去することによって、形成される。例えば、「Pizza Botを使用してピザを注文したい」は、「ピザを注文したい」に短縮することができ、なぜならば、「Pizza Botを使用して」は、ピザボットの呼出しに関係するが、ピザボットによって実行されるいかなる処理にも関係しないからである。いくつかの例では、EIS230は、たとえば完全な文を形成するために、呼び出されたボットに送られるべき部分を再フォーマットしてもよい。したがって、EIS230は、明示的な呼出しがあることだけでなく、明示的な呼出しがあるときに何をスキルボットに送るべきかも判断する。いくつかの例においては、呼び出されるボットに入力するテキストがない場合がある。例えば、発話が「Pizza Bot」であった場合、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は、マスタボットシステム200の種々のサブシステムによって使用されるデータを記憶する、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に類似しており、(1)発話が複数のインテントを表すかどうか、およびそうである場合、(2)発話を複数のインテントの各インテントについてどのように別個の発話に分割するか、をデータストア350内のルール352を使用して判断するよう動作可能であることを含む、同様の機能を提供する。ある実施形態では、複数のインテントを検出し、発話を分割するために、MIS310によって適用されるルールは、MIS220によって適用されるルールと同じである。MIS310は、発話302および抽出された情報304を受信する。抽出された情報304は、
図1の抽出された情報205に類似しており、言語パーサ214またはスキルボットシステム300にローカルな言語パーサを使用して生成することができる。
【0086】
インテント分類器320は、
図2の実施形態に関連して上で論じられたインテント分類器242と同様の態様で、ここにおいてさらに詳細に説明されるように、トレーニングされ得る。例えば、特定の実施形態では、インテント分類器320は、機械学習モデルを使用して実現される。インテント分類器320の機械学習モデルは、トレーニング発話として特定のスキルボットに関連付けられる例示的な発話の少なくともサブセットを使用して、当該特定のスキルボットについてトレーニングされる。各トレーニング発話に対するグラウンドトゥルースは、そのトレーニング発話に関連付けられる特定のボットインテントであろう。
【0087】
発話302は、ユーザから直接受信され得るか、またはマスタボットを介して供給され得る。発話302が、例えば、
図2に示される実施形態におけるMIS220およびEIS230を通した処理の結果として、マスタボットを通して供給されるとき、MIS310は、MIS220によって既に行われている処理の反復を回避するようにバイパスされることができる。しかしながら、発話302が、例えば、スキルボットへのルーティング後に生じる会話中に、ユーザから直接受信される場合、MIS310は、発話302を処理して、発話302が複数のインテントを表すかどうかを判断することができる。発話302が複数のインテントを表す場合、MIS310は、1つ以上のルールを適用して、発話302を各インテントごとに別個の発話、例えば、発話「D」306および発話「E」308に分割する。発話302が複数のインテントを表さない場合、MIS310は、発話302を、分割することなく、インテント分類のために、インテント分類器320に転送する。
【0088】
インテント分類器320は、受信された発話(例えば、発話306または308)をスキルボットシステム300に関連付けられるインテントと照合するよう構成される。上記で説明したように、スキルボットは、1つ以上のインテントとともに構成されることができ、各インテントは、そのインテントに関連付けられ、分類器をトレーニングするために使用される、少なくとも1つの例示的な発話を含む。
図2の実施形態では、マスタボットシステム200のインテント分類器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】
コンテキストタグ統合
自然言語処理の2つの主要な構成要素であるインテント予測および表現抽出は、所与のサービスまたはサービスのセットのドメインに関してユーザクエリおよびユーザ発話をチャットボットシステムが理解するのに役立つ。インテント予測は、ユーザのクエリまたは発話の目的(すなわち、インテント)を判断する。表現抽出は、もしあれば、ユーザのクエリまたは発話の1つ以上の制約を判断する。例えば、「the weather on Wednesday in the Poconos(ポコノスの水曜日の天気)」に関するユーザ問い合わせの場合、インテント予測は、ユーザのインテントが「天気」について知ることである、と判断し、表現抽出は、「水曜日」および「Poconos」が、ユーザのインテントを特定の日および地理的位置に集中させる制約であると判断する。表現抽出は、マッチングを伴うことができ、ユーザのクエリの単語は、単語を、事前定義された表現のリストに照合することによって、表現として確認される。しかしながら、表現の主題は、必ずしも明白または人気のある参照対象に対応するとは限らないため、マッチングは、しばしば、ユーザによって意図される参照対象を識別することはできない。マッチングは、ユーザの発話が発話当たり1つまたは2つの単語に限定されるとき、またはユーザの発話が必要以上に多くの情報を含むとき、さらにより困難である。例えば、限定された発話の場合、単語「2020」だけを含むユーザ発話は、他のユーザ発話におけるコンテキストまたはユーザの発話に関連付けられるシステムクエリに応じて、特定の暦年、ある品目の特定の費用、ある品目の数量を指し得る。追加情報を伴うユーザ発話の場合、「2000人を費やす20人に対して2020である」というユーザ発話は、ユーザの発話のコンテキストに応じて、年表現、費用表現、または数量表現に対応するかもしれないし、しないかもしれない。上記の例から分かるように、文脈を考慮しなければ、発話においてユーザが意図する参照対象を正確に判断することはできない。本開示の特徴は、ここで説明されるように、システムクエリまたはユーザの発話と関連付けられる表現のグループ内のコンテキストタグの分布を評価することによって、これらの課題を克服する。
【0093】
図4Aは、インテント分類器(例えば、
図2のインテント分類器242または
図3のインテント分類器320)内でNERモデルをトレーニングおよび利用するよう構成されたチャットボットシステム400の態様を示すブロック図である。
図4Aに示されるように、チャットボットシステム400は、予測モデルトレーニング段階410と、発話が、特定のスキルボットが実行するよう構成されるタスクを表す尤度を判断するよう構成されるスキルボット呼出段階415と、発話を1つ以上のインテントとして分類するよう構成されるインテント予測段階420と、発話の1つ以上の制約480を判断するよう構成される表現検出段階422とを含み得る。予測モデルトレーニング段階410は、他の段階によって使用される1つ以上の予測モデル425a~425n(これは、ここでは、個々に予測モデルと呼ばれ得、集合的に予測モデルと呼ばれ得る)を構築およびトレーニングするよう構成され得る。いくつかの例では、予測モデルは、発話が、特定のスキルボットが実行するよう構成されているタスクを表す尤度を判断するためのモデルと、第1のタイプのスキルボットについて発話からインテントを予測するためのモデルと、第2のタイプのスキルボットについて発話からインテントを予測するためのモデルと、テキストにおける概念表現の言及を識別し、所与のカテゴリのセットに従ってそれらを分類するためのモデルとを含むことができる。さらに他のタイプの予測モデルが、本開示による他の例で実現され得る。
【0094】
予測モデルは、畳み込みニューラルネットワーク(CNN)、例えば、インセプションニューラルネットワーク、残差ニューラルネットワーク(Resnet)、または回帰型ニューラルネットワーク、例えば、長短期記憶(LSTM)モデル、双方向LSTM(BiLSTM)もしくはゲート付き回帰型ユニット(GRU)モデル、ディープニューラルネットワーク(DNN)の他の変形形態などの機械学習(ML)モデルであり得る。予測モデルはまた、トランスフォーマからの双方向エンコーダ表現(BERT)モデル、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、条件付きランダムフィールドモデル、ランダムフォレストモデル、ブースティングモデル、浅いニューラルネットワーク、またはそのような技術の1つ以上の組み合わせ(例えば、CNN-HMMまたはMCNN)等、自然言語処理のためにトレーニングされる任意の他の好適なMLモデルであることができる。チャットボットシステム400は、特定のスキルボットが実行するよう構成されるタスクの尤度を判断し、第1のタイプのスキルボットについて発話からインテントを予測し、第2のタイプのスキルボットについて発話からインテントを予測し、テキストにおいて概念表現の言及を識別し、それらを所与のカテゴリのセットに従って分類するために、同じタイプの予測モデルまたは異なるタイプの予測モデルを採用してもよい。さらに他のタイプの予測モデルが、本開示による他の例で実現されてもよい。
【0095】
図4Aにさらに示されるように、予測モデルトレーニング段階410は、データセット準備430、特徴エンジニアリング435、およびモデルトレーニング440を含み得る。データセット準備430は、各予測モデルについて入力データアセット445を別々のトレーニングおよび検証セット445a~nに処理するよう構成され得る。データアセット445は、様々なスキルボットに関連付けられる例示的な発話からの発話の少なくともサブセットを含み得る。上述したように、発話は、音声またはテキストを含む様々な方法で提供され得る。発話は、断章、完全な文、複数の文などであり得る。例えば、発話が音声として提供される場合、データ準備430は、結果として生じるテキストに句読点、(例えば、カンマ、セミコロン、ピリオド等)を挿入する、音声テキスト変換器(図示せず)を使用して、音声をテキストに変換してもよい。いくつかの例では、例示的な発話は、クライアントまたは顧客によって提供される。他の例では、例示的な発話は、以前の発話のライブラリから自動的に生成される(例えば、ライブラリから、チャットボットが学習するスキルに特定の発話を識別する)。ある例では、予測モデルのためのデータアセット445は、入力テキストもしくは音声(またはテキストもしくは音声フレームの入力特徴)と、値の行列またはテーブルとして入力テキストもしくは音声(または入力特徴)のための対応するラベル450とを含むことができる。例えば、トレーニング発話ごとに、そのトレーニング発話に使用すべき正しいボットの指示が、ラベル450のためのグラウンドトゥルース情報として提供されてもよい。それぞれの予測モデルの挙動は、次いで、生成された推論とグラウンドトゥルース情報との間の差を最小にするように(例えば、逆伝搬を通して)適合させることができる。代替的に、予測モデルは、特定のスキルボットに関連付けられる例示的な発話の少なくともサブセットをトレーニング発話として使用して、当該特定のスキルボットについてトレーニングされてもよい。各トレーニング発話に対するラベル450のためのグラウンドトゥルースは、そのトレーニング発話に関連付けられる特定のボットインテントであろう。あるいは、特定のスキルボットに関連付けられた例示的な発話の少なくともサブセットをトレーニング発話として使用して、その特定のスキルボットについて予測モデルをトレーニングすることができる。各トレーニング発話に対するラベル450のグラウンドトゥルース情報は、トレーニング発話に関連付けられる特定のボットインテントであろう。
【0096】
いくつかの事例では、拡張がデータアセット445に適用されてもよい。例えば、Easy Data Augmentation(EDA)技術は、テキスト分類タスクにおけるパフォーマンスを高めるために使用され得る。EDAは4つの動作、すなわち、同義語置換、ランダム挿入、ランダムスワップ、およびランダム削除を含み、過剰適合を防止し、よりロバストなモデルのトレーニングを助ける。概して、EDA操作は、(i)元のテキストから単語を取得し、(ii)元のテキストに対して各データアセット445内にそれらの単語を組み込むことに留意されたい。例えば、同義語置換操作は、元の文(例えば発話)から停止単語ではないn個の単語をランダムに選択し、これらの単語の各々を、ランダムに選択されたその同義語の1つで置換することを含む。ランダム挿入操作は、-n回-原文中において停止単語ではないランダムな単語のランダムな同義語を見つけて、その同義語を文中のランダムな位置に挿入することを含む。ランダムスワップ操作は、-n回-文中において2つの単語をランダムに選択し、それらの位置をスワップすることを含む。ランダム削除操作は、文中の各単語を確率pでランダムに除去することを含む。
【0097】
いくつかの例では、特徴エンジニアリング435は、データアセット445を特徴ベクトルに変換することを含んでもよく、および/または新たな特徴を作成することはデータアセット445を使用して作成されることになる。特徴ベクトルは、特徴としてのカウントベクトル、単語レベル、nグラムレベルもしくは文字レベルなどの特徴としてのTF-IDFベクトル、特徴としての単語埋め込み、特徴としてのテキスト/NLP、特徴としてのトピックモデル、またはそれらの組合せを含んでもよい。カウントベクトルは、各行が発話を表し、各列が発話からの語を表し、各セルが発話内の特定の語の頻度カウントを表す、データアセット445の行列表記である。TF-IDFスコアは、発話における語の相対的重要度を表す。単語埋め込みは、密なベクトル表現を用いて単語および発話を表す形式である。ベクトル空間内の単語の位置は、テキストから学習され、その単語が使用されるときにその単語を取り囲む単語に基づく。テキスト/NLPベースの特徴は、発話内の単語数、発話内の文字数、平均単語密度、句読点数、大文字数、見出し語数、品詞タグ(たとえば、名詞および動詞)の頻度分布、またはそれらの任意の組合せを含んでもよい。トピックモデリングは、発話の集まりから、当該集まりにおいて最良の情報を含む、(トピックと呼ばれる)単語のグループを識別する技術である。
【0098】
いくつかの例では、モデルトレーニング440は、特徴エンジニアリング435において作成された特徴ベクトルおよび/または新たな特徴を使用して分類器をトレーニングすることを含んでもよい。いくつかの例では、トレーニングプロセスは、予測モデルについて損失関数または誤差関数を最小化する、予測モデルのためのパラメータのセットを見つけるための反復動作を含む。各反復は、予測モデルのためのパラメータのセットを使用する損失関数または誤差関数の値が、前の反復において別のパラメータのセットを使用する損失関数または誤差関数の値よりも小さくなるように、予測モデルのためのパラメータのセットを見つけることを伴い得る。損失関数または誤差関数は、予測モデルを使用して予測される出力とデータアセット445に含まれるラベル450との間の差を測定するように構築することができる。パラメータのセットが識別されると、予測モデルはトレーニングされ、設計通りに予測に利用することができる。
【0099】
データアセット445、ラベル450、特徴ベクトルおよび/または新たな特徴に加えて、他の技術および情報も、予測モデルのトレーニングプロセスを改良するために採用されることができる。たとえば、特徴ベクトルおよび/または新たな特徴は、分類器またはモデルの精度を改善するのに役立つよう、互いに組み合わされてもよい。加えて、または代替として、ハイパーパラメータが、調整または最適化されてもよく、例えば、ツリー長、リーフ、ネットワークパラメータ等のいくつかのパラメータが、最良適合モデルを得るように微調整されることができる。ここに記載のトレーニング機構は、主に予測モデルのトレーニングに焦点を当てるが、これらのトレーニング機構は、他のデータアセットからトレーニングされた既存の予測モデルを微調整するためにも利用され得る。例えば、場合によっては、予測モデルは、別のスキルボットに特有の発話を使用して事前にトレーニングされているかもしれない。そのような場合、予測モデルは、ここで論じられるように、データアセット445を使用して再トレーニングされることができる。
【0100】
いくつかの例では、予測モデルトレーニング段階410は、タスク予測モデル460、インテント予測モデル465、および表現抽出モデル467を含むトレーニングされた予測モデルを出力し得る。タスク予測モデル460は、発話が、特定のスキルボットが実行するよう構成されるタスク470を表す尤度を判断するために、スキルボット呼出段階415において使用され得、インテント予測モデル465は、1つ以上のインテント475として発話を分類するために、インテント予測段階420において使用され得、表現抽出モデル467は、表現を1つ以上の制約480として抽出および分類するために、表現検出段階422において使用され得る。いくつかの例では、スキルボット呼出段階415、インテント予測段階420、および表現検出段階422は、いくつかの例では、別個のモデルを用いて独立して進行し得る。例えば、トレーニングされたインテント予測モデル465は、インテント予測段階420において、スキルボットのためにインテントを予測するために使用されてもよく、および/またはトレーニングされた表現抽出モデル467は、表現検出段階422において、スキルボット呼出段階415においてスキルボットを最初に識別することなく、スキルボットのために表現を抽出および分類するために使用されてもよい。同様に、タスク予測モデル460は、インテント予測段階420および/または表現検出段階422において発話のインテントおよび/または表現を識別することなく、発話のために使用されるべきタスクまたはスキルボットを予測するために、スキルボット呼出段階415において使用され得る。
【0101】
代替として、スキルボット呼出段階415、インテント予測段階420および表現検出段階422は、一方の段階が他方の段階の出力を入力として用いるか、または一方の段階が他方の段階の出力に基づいて特定のスキルボットについて特定の態様で呼び出される状態で、連続的に行われてもよい。例えば、所与のテキストデータ405について、スキルボット呼出部は、スキルボット呼出段階415およびタスク予測モデル460を使用して暗黙の呼出しを通じてスキルボットを呼び出すことができる。タスク予測モデル460は、機械学習および/またはルールベースのトレーニング技術を使用してトレーニングされて、ある発話が、ある特定のスキルボット470が実行するよう構成されるあるタスクを表す尤度を判断することができる。次いで、識別または呼び出されたスキルボットおよび所与のテキストデータ405について、インテント予測段階420およびインテント予測モデル465ならびに/または表現検出段階422および表現抽出モデル467を使用して、受信された発話(例えば、所与のデータアセット445内の発話)を、スキルボットに関連付けられるインテント475にマッチさせることができる。ここで説明するように、スキルボットは、1つ以上のインテントを用いて構成することができ、各インテントは、そのインテントに関連付けられ、分類器をトレーニングするために使用される、少なくとも1つの例示的な発話を含む。いくつかの実施形態では、マスタボットシステムのためのスキルボット呼出段階415、タスク予測モデル460および表現抽出モデル467は、個々のスキルボットについての信頼度スコアおよびシステムインテントについての信頼度スコアを判定するようトレーニングされる。同様に、インテント予測段階420およびインテント予測モデル465ならびに/または表現検出段階422および表現抽出モデル467は、スキルボットシステムに関連付けられる各インテントについて信頼度スコアを判定するようトレーニングされ得る。スキルボット呼出段階415、タスク予測モデル460および表現抽出モデル467によって実行される分類はボットレベルであるが、インテント予測段階420およびインテント予測モデル465ならびに/または表現検出段階422および表現抽出モデル467によって実行される分類はインテントレベルであり、したがってより細かい粒度である。
【0102】
いくつかの例では、表現抽出モデル467に関連付けられる表現は、ガゼッティアによって定義された表現のグループに含まれる。特定のスキルでトレーニングされたボットの場合、そのスキルのガゼッティアは、そのスキルに関連する表現のグループを含む。例えば、銀行業務スキルでトレーニングされたボットの場合、そのスキルのガゼッティアは、番号表現(番号タグ)、日時表現(日時タグ)、通貨表現(通貨タグ)、人物表現(人物タグ)、および位置表現(位置タグ)を含む表現のグループを含んでもよい。別の例では、食品注文スキルでトレーニングされたボットの場合、そのスキルのガゼッティアは、数量表現(数量タグ)、食品表現のタイプ(食品タイプタグ)、時間表現(時間タグ)、人物表現(人物タグ)、および位置表現(位置タグ)を含む表現のグループを含む。いくつかの実施形態では、表現検出段階422は、ボットの特定のスキルを識別し、その特定のスキルに関連する表現の1つ以上のグループを1つ以上のガゼッティアから抽出し、1つ以上のシステムクエリおよび/または1つ以上のユーザ発話内において表現の1つ以上のグループ内の表現を検出し、検出された表現を1つ以上のコンテキストタグでラベル付けし、各コンテキストタグについて信頼度スコア(コンテキストタグ分布)を判断し、表現の1つ以上のグループについてコンテキストタグ分布に基づいて1つ以上の制約480を識別する。
【0103】
いくつかの例では、コンテキストタグ分布は、1つ以上のシステムクエリ、1つ以上のユーザ発話、および/またはシステムとユーザとの間の対話全体のコンテキストに基づいて判断される。いくつかの例では、検出された表現のためのコンテキストタグは、1つ以上のシステムクエリ、1つ以上のユーザ発話、および/またはシステムとユーザとの間の対話全体のコンテキストに基づいて、表現のグループ内の他の表現に対して高い信頼度スコア、または表現のグループ内の他の表現に対して低い信頼度スコアが与えられ得る。いくつかの例では、ボットが1つ以上の特定の表現についてユーザに問い合わせする場合、ボットによって問い合わせされた1つ以上の特定の表現に関するユーザの応答発話における1つ以上の表現には、ユーザの応答発話において検出された他の表現に対して高い信頼度スコアが与えられる。例えば、特定のスキル(例えば、銀行業務)に関連するボットは、その特定のスキルに対応する表現(例えば、数量、日時、場所、人物、および取引タイプ)のグループ内の特定の表現(例えば、数量)についてユーザに問い合わせることができる。ユーザの応答発話は、特定の表現を含む1つ以上の検出された表現を含み得る。この場合、ユーザの応答発話における検出された数量表現(すなわち、数量タグ)には高い信頼度スコアが与えられ、特定のスキルに関する表現のグループ内の他の検出された表現(例えば、日時、場所、人物、および取引タイプ)には低い信頼度スコアが与えられる。同様に、同じ表現の複数の発生が、ボットのクエリおよび/またはユーザの発話において検出される場合、その表現は、他の検出された表現(すなわち、より少ない頻度で生じる表現)に対して与えられる信頼度スコアと比較して、高い信頼度スコアを与えられることになる。
【0104】
場合によっては、すべての検出された表現に同じ信頼度スコアが与えられることになる。例えば、ボットが特定の表現についてユーザに問い合わせせず、ユーザの応答発話が異なる表現を含む場合、ユーザの応答発話内の各検出された表現は、同じ信頼度スコアを与えられてもよい。同様に、ボットのクエリおよび/またはユーザの応答発話が同じ表現の複数の発生を含まない場合、各検出された表現は、同じ信頼度スコアを与えられてもよい。場合によっては、表現のグループのうちの1つ以上の検出された表現に第1の信頼度スコアを与えることができ、表現のグループのうちの1つ以上の検出された表現に、第1の信頼度スコアとは異なる第2の信頼度スコアを与えることができ、表現のグループのうちの1つ以上の検出された表現に、第1および第2の信頼度スコアとは異なる第3の信頼度スコアを与えることができる。前述の議論は、単なる例示であり、特定の表現の包含および表現の発生頻度に基づいて信頼度スコアを判断することに限定されない。表現のグループ内のどの検出された表現が文脈的に関連するかを判断するための他のメトリック。例えば、表現のグループのうちの1つ以上の検出された表現は、表現のグループのうちの1つ以上の他の検出された表現よりも文脈的に関連する、とボットによって考慮されてもよい。
【0105】
いくつかの例では、ボットのクエリおよび/またはユーザの発話における検出された表現の信頼度スコアは、コンテキストタグ分布を形成する。いくつかの例では、コンテキストタグ分布は、ボットのクエリおよび/またはユーザの発話についての表現のグループ内のすべての検出された表現の信頼度スコアのベクトルである。したがって、1つ以上のシステムクエリ、1つ以上のユーザ発話、および/またはシステムとユーザとの間の対話全体のコンテキストを考慮することによって、本開示の特徴は、表現のグループ内の1つ以上の検出された表現がシステムクエリおよび/またはユーザの発話にどのようにコンテキスト的に関連するかを判断する。
【0106】
いくつかの例では、表現検出段階422は、コンテキストタグ分布に基づいて1つ以上の制約480を予測するためにベースラインモデルを含む。いくつかの例では、ベースラインモデルは予めトレーニングされていてもよい。代替として、いくつかの例では、ベースラインモデルは、最初にトレーニングされ、更新されてもよい。いくつかの例では、ベースラインモデルは、クラウドソーシングされたデータセットに基づいてトレーニングされ得る。いくつかの例では、ベースラインモデルは、Conference on Computational Natural Language Learning(CoNLL)データセットに基づいてトレーニングされ得る。いくつかの例では、ベースラインモデル4000は、
図4Bに示すように構成される。
図4Bに示されるように、ベースラインモデル4000は、トランスフォーマからの双方向エンコーダ表現(BERT)モデル4400、正規表現(RX)/ガゼッティア(GZ)ベクトル化器(vectorizer)4500、コンテキストタグベクトル化器4600、シーケンス処理モデルなどのトランスフォーマベースのモデル、組み合わされた畳み込みニューラルネットワーク/双方向長短期記憶(CNN/BiLSTM)モデル4700などのシーケンス処理モデル、および条件付きランダムフィールド(CRF)モデル4800等の弁別モデル等を用いて構成される。
【0107】
BERTモデル4400は、ユーザ発話またはシステムクエリから1つ以上の単語のシーケンスを入力として受け取り、1つ以上の単語のシーケンスの1つ以上の単語の各々について1つ以上の特徴ベクトル(単語埋め込み)を生成する、事前トレーニングされたアルゴリズムである。例えば、
図4Bに示されるように、「I would like to pay Merchant $10(私は買い手に$10を支払いたい)」という単語の入力シーケンスに対して、BERTモデル4400は、シーケンスの各個々の単語("I," "would," "like," "to," "pay," "Merchant," および"$10")に対して、別個の単語埋め込みを生成する。いくつかの例では、BERTモデル4400は、単語の入力シーケンスを受信するための少なくとも1つのトランスフォーマ層を含む。いくつかの例では、少なくとも1つのトランスフォーマ層は複数のエンコーダを含む。いくつかの例では、各エンコーダは、複数の注意機構と複数のフィードフォワードネットワークとを含む。いくつかの例では、単語の入力シーケンスは、複数の単語トークンを生成するためにトークン化される。いくつかの例では、複数の注意機構は、単語のシーケンスの入力の単語上で直接動作する。いくつかの例では、複数の注意機構は、複数の単語トークン上で動作する。いくつかの例では、複数の注意機構は、単語の入力シーケンスの各単語または複数の単語トークンの各トークンについて注意スコアを生成する。いくつかの例では、単語(または複数の単語トークン)の入力シーケンスおよび注意スコアは、複数のフィードフォワードネットワークに入力される。いくつかの例では、複数のフィードフォワードネットワークは、単語の入力シーケンス(または複数の単語トークン)を複数の単語埋め込みに符号化する。
【0108】
RX/GZベクトル化器4500は、1つ以上の既知のガゼッティアにおける1つ以上の既知の正規表現パターンにマッチする、単語の入力シーケンスのうちの1つ以上の単語に基づいて、1つ以上の特徴ベクトルを生成する。例えば、
図4Bに示すように、単語の入力シーケンス「I would like to pay Merchant $10」について、RX/GZベクトル化器4500は、単語の入力シーケンスのうち、1つ以上のガゼッティアに列挙された単語の1つ以上の正規表現パターン(例えば、Merchants, 10ドル)にマッチする1つ以上の単語(「Merchant」、「$10」)を判断し、1つ以上のマッチした単語の各々について、予め定義されたベクトルを抽出する。いくつかの例では、1つ以上のガゼッティアは、チャットボットのスキルに基づいて自動的に選択される。いくつかの例では、1つ以上のガゼッティアは、チャットボットのユーザによって選択される。いくつかの例では、1つ以上のガゼッティアは、チャットボットを含むデジタルアシスタントのユーザによって選択される。いくつかの例では、複数のチャットボットスキルの各スキルに対する表現のグループが、1つ以上のガゼッティアによって定義される。例えば、銀行業務スキルでトレーニングされたチャットボットの場合、そのチャットボットスキルのガゼッティアは、番号表現(番号タグ)、日時表現(日時タグ)、通貨表現(通貨タグ)、人物表現(人物タグ)、および位置表現(位置タグ)を含む表現のグループを含む。別の例では、ピザ注文スキルでトレーニングされたチャットボットの場合、そのチャットボットスキルのガゼッティアは、数量表現(数量タグ)、タイプ表現(タイプタグ)、トッピング表現(トッピングタグ)、住所表現(住所タグ)、および費用表現(費用タグ)を含む表現のグループを含む。いくつかの例では、チャットボットの特定のスキルに関係する、1つ以上のガゼッティアによって定義される表現のグループ内の表現が、単語の入力シーケンスのうちの1つ以上の単語に照合される。いくつかの例では、正規表現アルゴリズムが、単語の入力シーケンスの単語のうちの1つ以上の単語の正規パターンを、1つ以上のガゼッティアに列挙された表現の1つ以上のグループ内の1つ以上の表現の正規表現パターンに照合する。いくつかの例では、1つ以上のガゼッティアは、各表現の事前定義されたベクトルと、各表現に関連付けられた正規表現パターンとを含む。いくつかの例では、あらゆるマッチした表現およびマッチした正規表現パターンについて、あらかじめ定義されたベクトルが抽出される。例えば、「I would like to pay Merchant $10」という入力シーケンスに対して、RX/GZベクトル化器4500は、Merchant表現に対する事前定義されたベクトルおよび$10表現に対する事前定義されたベクトルを抽出する。いくつかの例では、BERTモデル4400から出力された複数の単語埋め込みは、ベクトルの連結および/または補間されたセットを生成するために、RX/GZベクトル化器4500から抽出される事前定義されたベクトルのうちの1つ以上と連結および/またはそれで補間される。
【0109】
コンテキストタグベクトル化器4600は、単語の入力シーケンスについてコンテキストタグ分布に基づいて1つ以上のベクトルを生成する。1つ以上のシステムクエリおよび/または1つ以上のユーザ発話についてコンテキストタグ分布を判断するためのプロセスは、上記で説明され、ここでは繰り返されない。しかしながら、例示すると、
図4Bに示されるように、「I would like to pay Merchant $10」という単語の入力シーケンスについて、コンテキストタグ分布は、チャットボットの特定のスキルについてガゼッティアに列挙された表現のグループ内の検出された表現について、0.5、0.0、0.0、0.0、0.0、0.8、0.8、0.8である、と判断され得る。いくつかの例では、コンテキストタグベクトル化器4600は、コンテキストタグ分布を1つ以上のベクトルに変換する。いくつかの例では、コンテキストタグベクトル化器4600によって生成された1つ以上のベクトルは、ベクトル表現の第1のセットを生成するために、ベクトルの連結および/または補間されたセットと連結および/またはそれで補間される。いくつかの実施形態では、以下で説明するように、コンテキストタグベクトル化器4600によって生成された1つ以上のベクトルは、CNN/BiLSTMモデル4700によって生成された1つ以上の文レベルベクトル表現と連結および/またはそれで補間される。
【0110】
いくつかの例では、ベクトル表現の第1のセットは、CNN/BiLSTMモデル4700に入力される。ベクトル表現の第1のセットに基づいて、CNN/BiLSTMモデル4700のCNNは、単語の入力シーケンスの各単語の各文字について1つ以上の文字レベルベクトル表現を生成する。1つ以上の文字レベルベクトル表現は、次いで、ベクトル表現の第1のセットと連結および/またはそれで補間され、BiLSTMネットワークに入力されて、入力単語シーケンスについて1つ以上の文レベルベクトル表現を生成する。いくつかの例では、1つ以上の文レベルベクトル表現は、固有表現タグスコアを表す。いくつかの例では、コンテキストタグベクトル化器4600によって生成された1つ以上のベクトルは、ベクトル表現の第2のセットを生成するために、CNN/BiLSTMモデル4700によって生成された1つ以上の文レベルベクトル表現と連結および/またはそれで補間される。いくつかの例では、ベクトル表現の第2のセットは、固有表現タグスコアを表す。いくつかの例では、固有表現タグスコアは、CRFモデル4800を使用して固有表現に復号される。例えば、
図4Bに示されるように、CRFモデル4800は、入力シーケンス単語に対する1つ以上の文レベルのベクトル表現および/またはベクトル表現の第2のセットに基づいて、単語の入力シーケンス「I would like to pay Merchant $10」について2つの固有表現として「Business(商取引)」および「Currency(通貨)」を識別する。
【0111】
図5は、いくつかの実施形態による、表現認識(表現抽出および分類)のためにコンテキストを考慮するためのプロセス500を示すフローチャートである。
図5に示す処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組合せで実現され得る。ソフトウェアは、非一時的記憶媒体上に(例えば、メモリデバイス上に)記憶され得る。
図5に提示され、以下に記載される方法は、例示的であり、非限定的であることが意図される。
図5は、特定のシーケンスまたは順序で発生する様々な処理ステップを示すが、これは限定することを意図するものではない。ある代替実施形態では、ステップは、いくつかの異なる順序で行われてもよく、またはいくつかのステップは、並行して行われてもよい。
図1~
図4Bに示される実施形態等のある実施形態では、
図5に示される処理は、前処理サブシステム(例えば、前処理サブシステム210または予測モデルトレーニング段階410)によって実行され、1つ以上の予測モデル(例えば、表現抽出モデル467)によるトレーニングのためにコンテキストラベルを伴うトレーニングセットを生成してもよい。
【0112】
ステップ505において、チャットボットシステム400(
図4)によって発話が受信される。いくつかの例では、発話は、システムクエリに応答して受信され得る。いくつかの例では、発話は、1つ以上のシステムクエリに応答しての1つ以上のユーザ発話に対応する。いくつかの例では、発話は、チャットボットとの1つ以上のユーザ対話に対応する。いくつかの例では、発話は、単語の入力シーケンスに対応する。
【0113】
ステップ510において、発話の単語に対する埋め込みが生成される。いくつかの例では、埋め込みは、発話の各単語に対して生成される。いくつかの例では、埋め込みは、
図4BのBERTモデル4400などのトランスフォーマベースのモデルを使用して生成される。BERTモデル4400の特徴および動作は、上記で説明されており、ここでは繰り返さない。
【0114】
ステップ515において、RX/GZ特徴ベクトルが生成され、ベクトルの連結および/または補間されたセットを生成するために、埋め込みと連結および/またはそれで補間される。いくつかの例では、RX/GZ特徴ベクトルは、
図4BのRX/GZベクトル化器4500を使用して生成される。いくつかの例では、RX/GZベクトル化器4500は、1つ以上の既知のガゼッティアにおける1つ以上の既知の正規表現パターンに一致する、単語の入力シーケンスのうちの1つ以上の単語に基づいて、1つ以上の特徴ベクトルを生成する。いくつかの例では、1つ以上のガゼッティアは、チャットボットのスキルに基づいて自動的に選択される。いくつかの例では、1つ以上のガゼッティアは、チャットボットのユーザによって選択される。いくつかの例では、1つ以上のガゼッティアは、チャットボットを含むデジタルアシスタントのユーザによって選択される。いくつかの例では、複数のチャットボットスキルの各スキルに対する表現のグループが、1つ以上のガゼッティアによって定義される。いくつかの例では、チャットボットの特定のスキルに関係する、1つ以上のガゼッティアによって定義される表現のグループ内の表現が、単語の入力シーケンスのうちの1つ以上の単語に照合される。いくつかの例では、正規表現アルゴリズムが、単語の入力シーケンスの単語のうちの1つ以上の単語の正規パターンを、1つ以上のガゼッティアに列挙された表現の1つ以上のグループ内の1つ以上の表現の正規表現パターンに照合する。いくつかの例では、1つ以上のガゼッティアは、各表現の事前定義されたベクトルと、各表現に関連付けられた正規表現パターンとを含む。いくつかの例では、あらゆるマッチした表現およびマッチした正規表現パターンについて、あらかじめ定義されたベクトルが抽出される。RX/GZベクトル化器4500の他の特徴および動作は、上記で説明されており、ここでは繰り返さない。いくつかの例では、BERTモデル4400から出力された複数の単語埋め込みは、ベクトルの連結および/または補間されたセットを生成するために、RX/GZベクトル化器4500から抽出されたRXGZ特徴ベクトルと連結および/またはそれで補間される。
【0115】
任意選択のステップ520において、受信された発話に対してコンテキストタグ分布特徴ベクトルが生成され、連結および/または補間されたRX/GZ特徴ベクトルならびに埋め込みと連結および/またはそれで補間されて、特徴ベクトルの第1のセットを形成する。いくつかの例では、コンテキストタグ分布特徴ベクトルは、
図4Bのコンテキストタグベクトル化器4600を使用して生成される。いくつかの例では、コンテキストタグ分布は、1つ以上のシステムクエリ、1つ以上のユーザ発話、および/またはシステムとユーザとの間の対話全体のコンテキストに基づいて判断される。いくつかの例では、検出された表現に対するコンテキストタグは、1つ以上のシステムクエリ、1つ以上のユーザ発話、および/またはシステムとユーザとの間の対話全体のコンテキストに基づいて、表現のグループ内の他の表現に対して高い信頼度スコア、または表現のグループ内の他の表現に対して低い信頼度スコアが与えられ得る。いくつかの例では、ボットが1つ以上の特定の表現についてユーザに問い合わせする場合、ボットによって問い合わせされた1つ以上の特定の表現に関するユーザの応答発話における1つ以上の表現には、ユーザの応答発話において検出された他の表現に対して高い信頼度スコアが与えられる。同様に、同じ表現の複数の発生が、ボットのクエリおよび/またはユーザの発話において検出される場合、その表現は、他の検出された表現(すなわち、より少ない頻度で生じる表現)に対して与えられる信頼度スコアと比較して、高い信頼度スコアを与えられることになる。場合によっては、すべての検出された表現に同じ信頼度スコアが与えられることになる。例えば、ボットが特定の表現についてユーザに問い合わせせず、ユーザの応答発話が異なる表現を含む場合、ユーザの応答発話内の各検出された表現は、同じ信頼度スコアを与えられてもよい。同様に、ボットのクエリおよび/またはユーザの応答発話が同じ表現の複数の発生を含まない場合、各検出された表現は、同じ信頼度スコアを与えられてもよい。場合によっては、表現のグループのうちの1つ以上の検出された表現に第1の信頼度スコアを与えることができ、表現のグループのうちの1つ以上の検出された表現に、第1の信頼度スコアとは異なる第2の信頼度スコアを与えることができ、表現のグループのうちの1つ以上の検出された表現に、第1および第2の信頼度スコアとは異なる第3の信頼度スコアを与えることができる。
【0116】
前述の議論は、単なる例示であり、特定の表現の包含および表現の発生頻度に基づいて信頼度スコアを判断することに限定されない。表現のグループ内のどの検出された表現が文脈的に関連するかを判断するための他のメトリック。例えば、表現のグループのうちの1つ以上の検出された表現は、表現のグループのうちの1つ以上の他の検出された表現よりも文脈的に関連する、とボットによって考慮されてもよい。いくつかの例では、ボットのクエリおよび/またはユーザの発話における検出された表現の信頼度スコアは、コンテキストタグ分布を形成する。いくつかの例では、コンテキストタグ分布は、ボットのクエリおよび/またはユーザの発話についての表現のグループ内のすべての検出された表現の信頼度スコアのベクトルである。いくつかの例では、コンテキストタグベクトル化器4600は、コンテキストタグ分布に基づいて1つ以上のベクトルを生成する。いくつかの例では、コンテキストタグベクトル化器4600は、コンテキストタグ分布を1つ以上のコンテキストタグ分布ベクトルに変換する。いくつかの例では、コンテキストタグベクトル化器4600によって生成されたコンテキストタグ分布ベクトルは、特徴ベクトルの第1のセットを生成するために、ベクトルの連結および/または補間されたセットと連結および/またはそれで補間される。いくつかの実施形態では、以下で説明するように、コンテキストタグベクトル化器4600によって生成されたコンテキストタグ分布ベクトルは、CNN/BiLSTMモデル4700によって生成された発話の符号化された形態と連結および/またはそれで補間される。
【0117】
ステップ525において、連結および/または補間されたベクトルのセットに基づいて、発話の符号化された形態が生成される。いくつかの例では、任意選択のステップ520が含まれる場合、発話の符号化された形態が、特徴ベクトルの第1のセットに基づいて生成される。発話の符号化された形態は、
図4BのCNN/BiLSTMモデル4700などのシーケンス処理モデルを使用して生成される。いくつかの例では、ベクトルの連結および/もしくは補間されたセットならびに/または特徴ベクトルの第1のセットは、CNN/BiLSTMモデル4700に入力される。入力されたベクトルに基づいて、CNN/BiLSTMモデル4700のCNNは、発話の各単語の各文字に対して、1つ以上の文字レベルベクトル表現を生成する。次いで、1つ以上の文字レベルベクトル表現は、ベクトルの連結および/もしくはそれで補間されたセットならびに/または特徴ベクトルの第1のセットと連結および/もしくはそれで補間され、発話について1つ以上の文レベルベクトル表現を生成するためにBiLSTMネットワークに入力される。いくつかの例では、発話の符号化された形態は、1つ以上の文レベルベクトル表現を含む。いくつかの例では、発話の符号化された形態は、固有表現タグスコアを表す。
【0118】
任意選択のステップ530において、コンテキストタグ分布特徴ベクトルが、受信された発話について生成され、発話の符号化された形態と連結および/またはそれで補間される。いくつかの例では、コンテキストタグ分布特徴ベクトルは、
図4Bのコンテキストタグベクトル化器4600を使用して生成される。コンテキストタグベクトル化器4600およびコンテキストタグ分布特徴ベクトル生成の特徴ならびに動作は、上記で説明されており、ここでは繰り返されない。いくつかの例では、コンテキストタグ分布特徴ベクトルと連結および/またはそれで補間された発話の符号化された形態は、固有表現タグスコアを表す。
【0119】
ステップ535において、候補表現の対数確率が、発話の符号化された形態に基づいて生成される。候補表現の対数確率は、
図4BのCRFモデル4800などの弁別モデルを使用して生成され得る。いくつかの例では、対数確率は、CRFモデル4800によって固有表現に復号される。
【0120】
ステップ540において、対数確率は、受信された発話について1つ以上の制約480を識別するために使用される。いくつかの例では、表現検出段階422(
図4A)は、受信された発話について1つ以上の制約480を識別するために、復号された固有表現を使用する。
【0121】
任意選択のステップ545において、1つ以上の制約480と、受信された発話についてインテント予測段階420(
図4A)によって生成された1つ以上のインテント予測とが、スキルボットに関連付けられるインテント475(
図4A)に照合される。
【0122】
本開示の特徴は、デジタルアシスタントおよび/またはチャットボットシステムとのユーザ対話を改善する。例えば、ユーザは、
図1に示されるように、デジタルアシスタント/チャットボットシステム106と対話して、銀行業務取引を行うように注文してもよい。
図1に示すようなスキルボット#1 116-1などの銀行取引に関するスキルボットは、スキルボット呼出段階415で呼び出され得る。対話は、1つ以上のユーザ発話および1つ以上のシステムクエリを含む。銀行業務取引の場合、スキルボットは、ユーザがスキルボットおよび/またはデジタルアシスタントによって実行されることを望む、残高確認、預金確認、送金等の特定の銀行業務タスクについてユーザに問い合わせてもよい。それに応答して、ユーザは、ユーザの銀行業務インテントに関する1つ以上の発話を発話してもよい。一例では、ユーザは、「please deposit 20 in my account 20.」と話してもよい。ここに提供されるシステム、方法、および例に基づいて、
図1~
図5に示され、全体を通して説明されるように、デジタルアシスタントおよび/またはチャットボットシステムは、ユーザの口座に預金するというユーザのインテントに合わせて、「deposit 20」を、ユーザが預金したい額に関係するものとして、および「account 20」を、ユーザが預金したい口座に関係するものとして、正確に識別できることになる。全体にわたって論じられるように、1つ以上のシステムクエリ、1つ以上のユーザ発話、および/またはシステムとユーザとの間の対話全体のコンテキストを考慮することによって、本開示の特徴は、表現のグループ内の文脈的に関連する1つ以上の検出された表現が、システムクエリおよび/またはユーザの発話にどのように関係し得るかを判断し、本開示の特徴は、特定の固有表現について意図された参照対象を正確に識別し、デジタルアシスタントおよび/またはチャットボットシステムとのユーザの対話を改善することができる。
【0123】
例示的なシステム
図6は、分散型システム600の簡略図を示す。図示される例において、分散型システム600は、1つ以上の通信ネットワーク610を介してサーバ612に結合された1つ以上のクライアントコンピューティングデバイス602、604、606、および608を含む。クライアントコンピューティングデバイス602、604、606、および608は、1つ以上のアプリケーションを実行するように構成され得る。
【0124】
さまざまな例において、サーバ612は、本開示に記載される1つ以上の実施形態を可能にする1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。ある例では、サーバ612はまた、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの例では、これらのサービスは、クライアントコンピューティングデバイス602、604、606および/または608のユーザに対して、サービスとしてのソフトウェア(Software as a Service:SaaS)モデル下のように、ウェブベースのサービスまたはクラウドサービスとして提供され得る。クライアントコンピューティングデバイス602、604、606および/または608を操作するユーザは、1つ以上のクライアントアプリケーションを利用してサーバ612とやり取りすることで、これらのコンポーネントによって提供されるサービスを利用し得る。
【0125】
図6に示される構成では、サーバ612は、サーバ612によって実行される機能を実現する1つ以上のコンポーネント618、620および622を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはそれらの組合わせによって実行され得るソフトウェアコンポーネントを含み得る。分散型システム600とは異なり得る多種多様なシステム構成が可能であることが認識されるはずである。したがって、
図6に示される例は、例のシステムを実現するための分散型システムの一例であり、限定するよう意図されたものではない。
【0126】
ユーザは、クライアントコンピューティングデバイス602、604、606および/または608を用いて、1つ以上のアプリケーション、モデルまたはチャットボットを実行し、それは、1つ以上のイベントまたはモデルを生成してもよく、それは次いで本開示の教示に従って実現または処理されてもよい。クライアントデバイスは、当該クライアントデバイスのユーザが当該クライアントデバイスと対話することを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介してユーザに情報を出力してもよい。
図6は4つのクライアントコンピューティングデバイスだけを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0127】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどの、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、さまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえばMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、Linux(登録商標)またはLinux系オペレーティングシステム、たとえば、各種モバイルオペレーティングシステム(たとえばMicrosoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含むGoogle Chrome(登録商標)OS)を含み得る。ポータブルハンドヘルドデバイスは、セルラーフォン、スマートフォン(たとえばiPhone(登録商標))、タブレット(たとえばiPad(登録商標))、携帯情報端末(PDA)などを含み得る。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイおよびその他のデバイスを含み得る。ゲームシステムは、各種ハンドヘルドゲームデバイス、インターネット接続可能なゲームデバイス(たとえばKinect(登録商標)ジェスチャ入力デバイス付き/無しのMicrosoft Xbox(登録商標)ゲーム機、Sony PlayStation(登録商標)システム、Nintendo(登録商標)が提供する各種ゲームシステムなど)を含み得る。クライアントデバイスは、各種インターネット関連アプリケーション、通信アプリケーション(たとえばEメールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)のような多種多様なアプリケーションを実行可能であってもよく、各種通信プロトコルを使用してもよい。
【0128】
ネットワーク610は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当該技術の当業者には周知のいずれかの種類のネットワークであればよく、上記プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない。単に一例として、ネットワーク610は、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば電気電子学会(IEEE)1002.11プロトコルスイートのいずれかの下で動作する無線ネットワーク、Bluetooth(登録商標)および/または任意の他の無線プロトコル)、および/またはこれらおよび/または他のネットワークの任意の組み合わせを含み得る。
【0129】
サーバ612は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組み合わせで構成されてもよい。サーバ612は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。これはたとえば、サーバに対して仮想記憶装置を維持するように仮想化できる論理記憶装置の1つ以上のフレキシブルプールなどである。様々な例において、サーバ612を、上記開示に記載の機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合させてもよい。
【0130】
サーバ612内のコンピューティングシステムは、上記オペレーティングシステムのうちのいずれかを含む1つ以上のオペレーティングシステム、および、市販されているサーバオペレーティングシステムを実行し得る。また、サーバ612は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらに他のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものを含むが、それらに限定されない。
【0131】
いくつかの実現例において、サーバ612は、クライアントコンピューティングデバイス602、604、606および608のユーザから受信したデータフィードおよび/またはイベントアップデートを解析および整理統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどに関連するリアルタイムのイベントを含んでもよい、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムのアップデートを含み得るが、それらに限定されない。サーバ612は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス602、604、606および608の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションも含み得る。
【0132】
分散型システム600はまた、1つ以上のデータリポジトリ614、616を含み得る。特定の例において、これらのデータリポジトリを用いてデータおよびその他の情報を格納することができる。たとえば、データリポジトリ614、616のうちの1つ以上を用いて、様々な実施形態による様々な機能を実行するときにチャットボット性能またはサーバ612によって使用されるチャットボットによる使用のための生成されたモデルに関連する情報のような情報を格納することができる。データリポジトリ614、616は、さまざまな場所に存在し得る。たとえば、サーバ612が使用するデータリポジトリは、サーバ612のローカル位置にあってもよく、またはサーバ612から遠隔の位置にあってもよく、ネットワークベースの接続または専用接続を介してサーバ612と通信する。データリポジトリ614、616は、異なる種類であってもよい。特定の例において、サーバ612が使用するデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および他の製造業者が提供するデータベースのようなリレーショナルデータベースであってもよい。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするように適合させてもよい。
【0133】
特定の例では、データリポジトリ614、616のうちの1つ以上は、アプリケーションデータを格納するためにアプリケーションによって用いられてもよい。アプリケーションが使用するデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリのようなさまざまな種類のものであってもよい。
【0134】
特定の例において、本開示に記載される機能は、クラウド環境を介してサービスとして提供され得る。
図7は、特定の例に係る、各種サービスをクラウドサービスとして提供し得るクラウドベースのシステム環境の簡略化されたブロック図である。
図7に示される例において、クラウドインフラストラクチャシステム702は、ユーザが1つ以上のクライアントコンピューティングデバイス704、706および708を用いて要求し得る1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム702は、サーバ612に関して先に述べたものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。クラウドインフラストラクチャシステム702内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および/または組み合わせとして編成され得る。
【0135】
ネットワーク710は、クライアント704、706、および708と、クラウドインフラストラクチャシステム702との間におけるデータの通信および交換を容易にし得る。ネットワーク710は、1つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク710は、通信を容易にするために、有線および/または無線プロトコルを含む、1つ以上の通信プロトコルをサポートし得る。
【0136】
図7に示される例は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの例において、クラウドインフラストラクチャシステム702が、
図7に示されるものよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、または、異なる構成または配置のコンポーネントを有していてもよいことが、理解されるはずである。たとえば、
図7は3つのクライアントコンピューティングデバイスを示しているが、代替例においては、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0137】
クラウドサービスという用語は一般に、サービスプロバイダのシステム(たとえばクラウドインフラストラクチャシステム702)により、インターネット等の通信ネットワークを介してオンデマンドでユーザにとって利用可能にされるサービスを指すのに使用される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストし得るとともに、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介してオンデマンドでアプリケーションをオーダーして使用し得る。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。たとえば、ミドルウェアサービス、データベースサービス、Java(登録商標)クラウドサービスなどのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)から提供される。
【0138】
特定の例において、クラウドインフラストラクチャシステム702は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデルなどのさまざまなモデルを使用して、1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム702は、各種クラウドサービスのプロビジョンを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースのスイートを含み得る。
【0139】
SaaSモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。たとえば、SaaSモデルを用いることにより、クラウドインフラストラクチャシステム702がホストするオンデマンドアプリケーションに顧客がアクセスできるようにし得る。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】
クラウドサービスは一般に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。たとえば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム702が提供する1つ以上のサービスをオーダーしてもよい。次いで、クラウドインフラストラクチャシステム702は、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。例えば、ユーザは、発話を用いて、クラウドインフラストラクチャシステムに、上記のように特定のアクション(例えばインテント)をとらせ、および/または本明細書で説明するようにチャットボットシステムのためのサービスを提供させるように要求することができる。クラウドインフラストラクチャシステム702を、1つのクラウドサービスまたは複数のクラウドサービスであっても提供するように構成してもよい。
【0143】
クラウドインフラストラクチャシステム702は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム702は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。このカスタマーは個人または企業であってもよい。ある他の例では、プライベートクラウドモデル下において、クラウドインフラストラクチャシステム702がある組織内で(たとえば企業組織内で)機能してもよく、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部などの企業のさまざまな部署であってもよく、企業内の個人であってもよい。ある他の例では、コミュニティクラウドモデル下において、クラウドインフラストラクチャシステム702および提供されるサービスは、関連コミュニティ内のさまざまな組織で共有されてもよい。上記モデルの混成モデルなどのその他各種モデルが用いられてもよい。
【0144】
クライアントコンピューティングデバイス704、706、および708は、異なるタイプであってもよく(たとえば
図6に示されるクライアントコンピューティングデバイス602、604、606および608)、1つ以上のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム702が提供するサービスを要求することなど、クラウドインフラストラクチャシステム702とのやり取りを行い得る。例えば、ユーザは、本開示に記載されているように、クライアントデバイスを使用してチャットボットから情報またはアクションを要求することができる。
【0145】
いくつかの例において、クラウドインフラストラクチャシステム702が、サービスを提供するために実行する処理は、モデルトレーニングおよび展開を含み得る。この解析は、データセットを使用し、解析し、処理することにより、1つ以上のモデルをトレーニングおよび展開することを含み得る。この解析は、1つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行してもよい。たとえば、チャットボットシステムのために1つ以上のモデルを生成およびトレーニングするために、ビッグデータ解析がクラウドインフラストラクチャシステム702によって実行されてもよい。この解析に使用されるデータは、構造化データ(たとえばデータベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含み得る。
【0146】
図7の例に示されるように、クラウドインフラストラクチャシステム702は、クラウドインフラストラクチャシステム702が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース730を含み得る。インフラストラクチャリソース730は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。特定の例では、アプリケーションから要求されたストレージを処理するために利用可能なストレージ仮想マシンは、クラウドインフラストラクチャシステム702の一部である場合がある。他の例では、ストレージ仮想マシンは、異なるシステムの一部である場合がある。
【0147】
特定の例において、異なる顧客に対しクラウドインフラストラクチャシステム702が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースのセットまたはリソースモジュール(「ポッド」とも処される)にまとめてもよい。各リソースモジュールまたはポッドは、1種類以上のリソースを予め一体化し最適化した組み合わせを含み得る。特定の例において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングしてもよい。たとえば、第1のポッドセットをデータベースサービスのためにプロビジョニングしてもよく、第1のポッドセット内のポッドと異なるリソースの組み合わせを含み得る第2のポッドセットをJavaサービスなどのためにプロビジョニングしてもよい。いくつかのサービスについて、これらのサービスをプロビジョニングするために割り当てられたリソースをサービス間で共有してもよい。
【0148】
クラウドインフラストラクチャシステム702自体が、クラウドインフラストラクチャシステム702の異なるコンポーネントによって共有されるとともにクラウドインフラストラクチャシステム702によるサービスのプロビジョニングを容易にするサービス732を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性、バックアップリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【0149】
クラウドインフラストラクチャシステム702は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組み合わせで実現され得る。
図7に示されるように、サブシステムは、クラウドインフラストラクチャシステム702のユーザまたは顧客がクラウドインフラストラクチャシステム702とやり取りすることを可能にするユーザインターフェイスサブシステム712を含み得る。ユーザインターフェイスサブシステム712は、ウェブインターフェイス714、クラウドインフラストラクチャシステム702が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス716、およびその他のインターフェイス718などの、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用いて、クラウドインフラストラクチャシステム702がインターフェイス714、716、および718のうちの1つ以上を用いて提供する1つ以上のサービスを要求(サービス要求734)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム702が提供するクラウドサービスをブラウズし、クラウドインフラストラクチャシステム702が提供するとともに顧客が申し込むことを所望する1つ以上のサービスについてサブスクリプションオーダーを行い得る。このサービス要求は、顧客と、顧客が申しむことを所望する1つ以上のサービスを識別する情報を含んでいてもよい。たとえば、顧客は、クラウドインフラストラクチャシステム702によって提供されるサービスの申し込み注文を出すことができる。注文の一部として、顧客は、サービスが提供されるチャットボットシステムを識別する情報と、任意選択でチャットボットシステムの1つ以上の資格情報を提供することができる。
【0150】
図7に示される例のような特定の例において、クラウドインフラストラクチャシステム702は、新しいオーダーを処理するように構成されたオーダー管理サブシステム(order management subsystem:OMS)720を含み得る。この処理の一部として、OMS720は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。
【0151】
適切に妥当性確認がなされると、OMS720は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(OPS)724を呼び出し得る。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。たとえば、あるワークフローに従うと、OPS724を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
【0152】
特定の例では、セットアップ段階処理は、上記のように、クラウドインフラストラクチャシステム702によって、プロビジョニングプロセスの一部として実行され得る。クラウドインフラシステム702は、アプリケーションIDを生成し、クラウドインフラシステム702自体によって提供されるストレージ仮想マシンの中から、またはクラウドインフラシステム702以外の他のシステムによって提供されるストレージ仮想マシンから、アプリケーション用のストレージ仮想マシンを選択することができる。
【0153】
クラウドインフラストラクチャシステム702は、要求されたサービスがいつ使用できるようになるかを示すために、応答または通知744を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(たとえばリンク)を顧客に送信してもよい。特定の例では、サービスを要求する顧客に対して、応答は、クラウドインフラストラクチャシステム702によって生成されたチャットボットシステムID、およびチャットボットシステムIDに対応するチャットボットシステムのためにクラウドインフラストラクチャシステム702によって選択されたチャットボットシステムを識別する情報を含み得る。
【0154】
クラウドインフラストラクチャシステム702はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム702は、顧客から受けた1つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を果たす。また、クラウドインフラストラクチャシステム702は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金はたとえば月ごとに行ってもよい。
【0155】
クラウドインフラストラクチャシステム702は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム702は、場合によっては著作権情報を含む、これらの顧客についての情報を格納してもよい。特定の例において、クラウドインフラストラクチャシステム702は、顧客の情報を管理するとともに管理される情報を分離することで、ある顧客に関する情報が別の顧客に関する情報からアクセスされないようにするように構成された、アイデンティティ管理サブシステム(IMS)728を含む。IMS728は、情報アクセス管理などのアイデンティティサービス、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスなどの、各種セキュリティ関連サービスを提供するように構成されてもよい。
【0156】
図8は、コンピュータシステム800の例を示す。いくつかの例では、コンピュータシステム800は、分散環境内の任意のデジタルアシスタントまたはチャットボットシステムのいずれか、ならびに上記の様々なサーバおよびコンピュータシステムを実現するために用いられ得る。
図8に示されるように、コンピュータシステム800は、バスサブシステム802を介して他のいくつかのサブシステムと通信する処理サブシステム804を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット806、I/Oサブシステム808、ストレージサブシステム818、および通信サブシステム824を含み得る。ストレージサブシステム818は、記憶媒体822およびシステムメモリ810を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0157】
バスサブシステム802は、コンピュータシステム800のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム802は単一のバスとして概略的に示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム802は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスなどを含み得る。
【0158】
処理サブシステム804は、コンピュータシステム800の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム800の処理リソースを、1つ以上の処理ユニット832、834などに組織することができる。処理ユニットは、1つ以上のプロセッサ、同一のまたは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの例において、処理サブシステム804は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)などのような1つ以上の専用コプロセッサを含み得る。いくつかの例では、処理サブシステム804の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を使用し得る。
【0159】
いくつかの例において、処理サブシステム804内の処理ユニットは、システムメモリ810またはコンピュータ可読記憶媒体822に格納された命令を実行し得る。さまざまな例において、処理ユニットはさまざまなプログラムまたはコード命令を実行するとともに、同時に実行する複数のプログラムまたはプロセスを維持し得る。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ810および/または潜在的に1つ以上の記憶装置を含むコンピュータ可読記憶媒体822に常駐していてもよい。適切なプログラミングを介して、処理サブシステム804は、上述のさまざまな機能を提供し得る。コンピュータシステム800が1つ以上の仮想マシンを実行している例において、1つ以上の処理ユニットが各仮想マシンに割り当ててもよい。
【0160】
特定の例において、コンピュータシステム800によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム804によって実行される処理の一部をオフロードするために、処理加速ユニット806を任意に設けることができる。
【0161】
I/Oサブシステム808は、コンピュータシステム800に情報を入力するための、および/またはコンピュータシステム800から、もしくはコンピュータシステム800を介して、情報を出力するための、デバイスおよび機構を含むことができる。一般に、「入力デバイス」という語の使用は、コンピュータシステム800に情報を入力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを提供するデバイスなど、モーションセンシングおよび/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
【0162】
ユーザインターフェイス入力デバイスの他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含んでもよいが、それらに限定されない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【0163】
一般に、出力デバイスという語の使用は、コンピュータシステム800からユーザまたは他のコンピュータに情報を出力するための考えられるすべてのタイプのデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、計画デバイス、タッチスクリーンなどであってもよい。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されない。
【0164】
ストレージサブシステム818は、コンピュータシステム800によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム818は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ可読記憶媒体を提供する。処理サブシステム804によって実行されると上述の機能を提供するソフトウェア(たとえばプログラム、コードモジュール、命令)が、ストレージサブシステム818に格納されてもよい。ソフトウェアは、処理サブシステム804の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム818はまた、本開示の教示に従って認証を提供してもよい。
【0165】
ストレージサブシステム818は、揮発性および不揮発性メモリデバイスを含む1つ以上の非一時的メモリデバイスを含み得る。
図8に示すように、ストレージサブシステム818は、システムメモリ810およびコンピュータ可読記憶媒体822を含む。システムメモリ810は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ(RAM)と、固定命令が格納される不揮発性読取り専用メモリ(ROM)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実現例において、起動中などにコンピュータシステム800内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)は、典型的には、ROMに格納されてもよい。典型的に、RAMは、処理サブシステム804によって現在操作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ810は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なるタイプのメモリを含み得る。
【0166】
一例として、限定を伴うことなく、
図8に示されるように、システムメモリ810は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム812、プログラムデータ814、およびオペレーティングシステム816を、ロードしてもよい。一例として、オペレーティングシステム816は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステム、市販されているさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、および/または、iOS(登録商標)、Windows Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムのようなさまざまなバージョンのモバイルオペレーティングシステムなどを、含み得る。
【0167】
コンピュータ可読記憶媒体822は、いくつかの例の機能を提供するプログラミングおよびデータ構成を格納することができる。コンピュータ可読記憶媒体822は、コンピュータシステム800のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供することができる。処理サブシステム804によって実行されると上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム818に格納されてもよい。一例として、コンピュータ可読記憶媒体822は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ可読記憶媒体822は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されない。コンピュータ可読記憶媒体822は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMのような揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含み得る。
【0168】
特定の例において、ストレージサブシステム818は、コンピュータ可読記憶媒体822にさらに接続可能なコンピュータ可読記憶媒体リーダ820も含み得る。リーダ820は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。
【0169】
特定の例において、コンピュータシステム800は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム800は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。特定の例において、コンピュータシステム800は、仮想マシンの構成および管理を容易にするハイパーバイザなどのプログラムを実行し得る。各仮想マシンには、メモリ、演算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースを割り当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的には、コンピュータシステム800によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るかまたは異なり得るそれ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム800によって同時に実行され得る。
【0170】
通信サブシステム824は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム824は、他のシステムとコンピュータシステム800との間のデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム824は、コンピュータシステム800が、1つ以上のクライアントデバイスとの間で情報を送受信するために、インターネットを介して1つ以上のクライアントデバイスへの通信チャネルを確立することを可能にし得る。例えば、コンピュータシステム800が、
図1に示されるボットシステム120を実現するために使用される場合、通信サブシステムは、アプリケーション用に選択されたチャットボットシステムと通信するために使用され得る。
【0171】
通信サブシステム824は、有線および/または無線通信プロトコルの両方をサポートし得る。ある例において、通信サブシステム824は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.XXファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの例において、通信サブシステム824は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続(たとえばEthernet(登録商標))を提供し得る。
【0172】
通信サブシステム824は、さまざまな形式でデータを受信および送信し得る。いくつかの例において、通信サブシステム824は、他の形式に加えて、構造化データフィードおよび/または非構造化データフィード826、イベントストリーム828、イベントアップデート830などの形式で入力通信を受信してもよい。たとえば、通信サブシステム824は、ソーシャルメディアネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード826を受信(または送信)するように構成されてもよい。
【0173】
特定の例において、通信サブシステム824は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム828および/またはイベントアップデート830を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどを挙げることができる。
【0174】
通信サブシステム824は、コンピュータシステム800からのデータを他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード826、イベントストリーム828、イベントアップデート830などのような各種異なる形式で、コンピュータシステム800に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに、伝えられてもよい。
【0175】
コンピュータシステム800は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのうちの1つであればよい。コンピュータおよびネットワークの性質が常に変化しているため、
図8に示されるコンピュータシステム800の記載は、具体的な例として意図されているに過ぎない。
図8に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が可能である。本明細書における開示および教示に基づいて、さまざまな例を実現するための他の態様および/または方法があることが認識されるはずである。
【0176】
特定の例について説明したが、さまざまな変形、変更、代替構成、および均等物が可能である。例は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作させることができる。さらに、例を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行されてもよい。加えて、動作の順序を再指定してもよい。プロセスは図に含まれない追加のステップを有し得る。上記の例の各種特徴および局面は、個別に使用されてもよく、またはともに使用されてもよい。
【0177】
さらに、特定の例をハードウェアとソフトウェアとの特定の組み合わせを用いて説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。特定の例は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現されてもよい。
【0178】
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計することにより、動作を実行するようにプログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、たとえば、非一時的なメモリ媒体に格納されたコードもしくは命令またはそれらの任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどにより、達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。
【0179】
本開示では具体的な詳細を示すことにより例が十分に理解されるようにしている。しかしながら、例はこれらの具体的な詳細がなくとも実施し得るものである。たとえば、周知の回路、プロセス、アルゴリズム、構造、および技術は、例が曖昧にならないようにするために不必要な詳細事項なしで示している。本明細書は例示的な例のみを提供し、他の例の範囲、適用可能性、または構成を限定するよう意図されたものではない。むしろ、例の上記説明は、各種例を実現することを可能にする説明を当業者に提供する。要素の機能および構成の範囲内でさまざまな変更が可能である。
【0180】
したがって、明細書および図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされ得ることは明らかであろう。このように、具体的な例を説明してきたが、これらは限定を意図するものではない。さまざまな変形例および同等例は添付の特許請求の範囲内にある。
【0181】
上記の明細書では、本開示の局面についてその具体的な例を参照して説明しているが、本開示はそれに限定されるものではないということを当業者は認識するであろう。上記の開示のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、例は、明細書のさらに広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境および用途で利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
【0182】
上記の説明では、例示の目的で、方法を特定の順序で記載した。代替の例では、方法は記載された順序とは異なる順序で実行されてもよいことを理解されたい。また、上記の方法は、ハードウェアコンポーネントによって実行されてもよいし、マシン実行可能命令であって、用いられると、そのような命令でプログラムされた汎用もしくは専用のプロセッサまたは論理回路などのマシンに方法を実行させてもよいマシン実行可能命令のシーケンスで具体化されてもよいことも理解されたい。これらのマシン実行可能命令は、CD-ROMもしくは他の種類の光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気もしくは光学カード、フラッシュメモリのような、1つ以上の機械可読媒体、または電子命令を記憶するのに適した他の種類の機械可読媒体に保存できる。代替的に、これらの方法は、ハードウェアとソフトウェアとの組み合わせによって実行されてもよい。
【0183】
構成要素が特定の動作を実行するように構成されるとして記載されている場合、そのような構成は、たとえば、特定の動作を実行するよう電子回路もしくは他のハードウェアを設計すること、特定の動作を実行するようプログラミング可能な電子回路(たとえばマイクロプロセッサもしくは他の好適な電子回路)をプログラミングすること、またはそれらの任意の組み合わせによって達成されてもよい。
【0184】
本願の説明のための例をここに詳細に記載したが、本発明の概念は、他の態様で様々に具現化および採用され得ること、および特許請求の範囲は、先行技術によって制限される場合を除き、そのような変形を含むように解釈されるよう意図されることを理解されたい。
【国際調査報告】