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

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

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

特表2024-541762事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術
<>
  • 特表-事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術 図1
  • 特表-事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術 図2
  • 特表-事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術 図3
  • 特表-事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術 図4
  • 特表-事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術 図5
  • 特表-事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術 図6
  • 特表-事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術 図7
  • 特表-事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術 図8
  • 特表-事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術 図9
  • 特表-事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-12
(54)【発明の名称】事前トレーニングされた言語モデルのための長いテキストを処理するシステムおよび技術
(51)【国際特許分類】
   G06F 16/68 20190101AFI20241105BHJP
【FI】
G06F16/68
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024530007
(86)(22)【出願日】2022-11-16
(85)【翻訳文提出日】2024-06-20
(86)【国際出願番号】 US2022050024
(87)【国際公開番号】W WO2023091436
(87)【国際公開日】2023-05-25
(31)【優先権主張番号】63/282,146
(32)【優先日】2021-11-22
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/750,240
(32)【優先日】2022-05-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ブー,タン・ティエン
(72)【発明者】
【氏名】ファム,トゥエン・クアン
(72)【発明者】
【氏名】ジョンソン,マーク・エドワード
(72)【発明者】
【氏名】ドゥオング,タン・ロング
(72)【発明者】
【氏名】シュ,イン
(72)【発明者】
【氏名】ザレムーディ,ポーヤ
(72)【発明者】
【氏名】ネザミ,オミッド・モハマド
(72)【発明者】
【氏名】サハ,ブッダディティヤ
(72)【発明者】
【氏名】ホアン,コン・ズイ・ブー
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA05
5B175FB02
(57)【要約】
いくつかの態様では、コンピューティング装置は、データ処理システムで発話のセットを受信し、名前付きエンティティ認識装置を使用してトレーニングまたは推論し、発話のセットからの各トークンピースにラベルを割り当てることができる。コンピューティング装置は、セット内の各発話の長さを決定し、発話の長さがトークンピースの所定の閾値を超えると、発話をトークンピースの複数の重複チャンクに分割し、チャンク内の各トークンピースに信頼スコアとともにラベルを割り当て、2つの信頼スコアを統合することによってトークンピースのチャンクごとに最終ラベルおよび関連する信頼スコアを決定し、少なくとも2つの信頼スコアの統合に基づいて発話の最終的な注釈付きラベルを決定し、最終的な注釈付きラベルをメモリに記憶できる。
【特許請求の範囲】
【請求項1】
データ処理システムで、発話のセットを受信し、名前付きエンティティ認識装置を使用してトレーニングまたはインターフェースして、発話の前記セットからの各トークンピースにラベルを割り当てることと、
発話の前記セットの長さを決定することと、
発話の前記セットの前記長さがトークンピースの所定の閾値を超えた場合
発話の前記セットをトークンピースの複数の重複チャンクに分割することと、
チャンク内の各トークンピースに信頼スコアとともにラベルを割り当てることと、
第1のチャンクからの信頼スコアと第2のチャンクからの信頼スコアの2つの信頼スコアを統合することによって、トークンピースの前記複数の重複チャンクの各チャンクの最終ラベルおよび関連する信頼スコアを決定することと、
少なくとも前記2つの信頼スコアの前記統合に基づいて発話の前記セットの最終的な注釈付きラベルを決定することと、
前記最終的な注釈付きラベルをメモリに記憶することと、を含む、方法。
【請求項2】
各チャンクおよびそれに対応するラベルのシーケンスは、トレーニング時に別個の例として扱われる、請求項1に記載の方法。
【請求項3】
サイズNの発話の前記セットを前記分割することは、前記サイズNの発話の前記セットを(NL)/(KL)の重複チャンクに分割することであり、Kはチャンクサイズであり、Lは重複サイズである、請求項1および請求項2のいずれか1項に記載の方法。
【請求項4】
トークンピースの全体のスコアおよび最終的な注釈付きラベルを前記決定することは、前記複数の重複チャンクのうち最初に選択されるチャンクからの信頼スコアに少なくとも部分的に基づく、請求項1~3のいずれか1項に記載の方法。
【請求項5】
トークンピースの全体のスコアの前記決定は、トークンピースの前記複数の重複チャンクにおける前記トークンピースの位置に基づいて行われ、前記全体のスコアは、第1のチャンクがトークンピースの前記複数の重複チャンクの前半にある場合は前記第1のチャンクからの第1の信頼スコアであり、第2のチャンクがトークンピースの前記複数の重複チャンクの後半にある場合は前記第2のチャンクからの第2の信頼スコアである、請求項1~3のいずれか1項に記載の方法。
【請求項6】
全体のスコアの前記決定は、前記複数の重複チャンクの最大信頼スコアに基づいて行われる、請求項1~3のいずれか1項に記載の方法。
【請求項7】
トークンピースの前記所定の閾値は512個のトークンであり、重複トークンピースの所定の数は128個のトークンである、請求項1~6のいずれか1項に記載の方法。
【請求項8】
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに結合されるメモリと、を含み、前記メモリには前記1つまたは複数のプロセッサによって実行可能な複数の命令が記憶され、前記複数の命令は、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
データ処理システムで、発話のセットを受信し、名前付きエンティティ認識装置を使用してトレーニングまたはインターフェースして、発話の前記セットからの各トークンピースにラベルを割り当てることと、
発話の前記セットの長さを決定することと、
発話の前記セットの前記長さがトークンピースの所定の閾値を超えた場合、
発話の前記セットをトークンピースの複数の重複チャンクに分割することと、
チャンク内の各トークンピースに信頼スコアとともにラベルを割り当てることと、
第1のチャンクからの信頼スコアと第2のチャンクからの信頼スコアの2つの信頼スコアを統合することによって、トークンピースの前記重複チャンクの各チャンクの最終ラベルおよび関連する信頼スコアを決定することと、
少なくとも前記2つの信頼スコアの前記統合に基づいて発話の前記セットの最終的な注釈付きラベルを決定することと、
前記最終的な注釈付きラベルをメモリに記憶することと、を含む動作を実行させる、システム。
【請求項9】
各チャンクおよびそれに対応するラベルのシーケンスは、トレーニング時に別個の例として扱われる、請求項8に記載のシステム。
【請求項10】
サイズNの発話の前記セットを前記分割することは、前記サイズNの発話の前記セット(NL)/(KL)の重複チャンクに分割することであり、Kはチャンクサイズであり、Lは重複サイズである、請求項8および9のいずれか1項に記載のシステム。
【請求項11】
トークンピースの全体のスコアおよび最終的な注釈付きラベルを前記決定することは、前記複数の重複チャンクのうち最初に選択されるチャンクからの信頼スコアに少なくとも部分的に基づく、請求項8~10のいずれか1項に記載のシステム。
【請求項12】
トークンピースの全体のスコアの前記決定は、トークンピースの前記重複チャンクにおける前記トークンピースの位置に基づいて行われ、前記全体のスコアは、第1のチャンクがトークンピースの前記重複チャンクの前半にある場合は前記第1のチャンクからの第1の信頼スコアであり、第2のチャンクがトークンピースの前記重複チャンクの後半にある場合は前記第2のチャンクから第2の信頼スコアである、請求項8~10のいずれか1項に記載のシステム。
【請求項13】
全体のスコアの前記決定は、前記複数の重複チャンクの最大信頼スコアに基づいて行われる、請求項8~10のいずれか1項に記載のシステム。
【請求項14】
トークンピースの前記所定の閾値は512個のトークンであり、重複トークンピースの所定の数は128個のトークンである、請求項8~12のいずれか1項に記載のシステム。
【請求項15】
1つまたは複数のプロセッサによって実行可能であり、前記1つまたは複数のプロセッサに、
データ処理システムで、発話のセットを受信し、名前付きエンティティ認識装置を使用してトレーニングまたはインターフェースして、発話の前記セットからの各トークンピースにラベルを割り当てることと、
発話の前記セットの長さを決定することと、
発話の前記セットの前記長さがトークンピースの所定の閾値を超えた場合、
発話の前記セットをトークンピースの複数の重複チャンクに分割することと、
チャンク内の各トークンピースに信頼スコアとともにラベルを割り当てることと、
第1のチャンクからの信頼スコアと第2のチャンクからの信頼スコアの2つの信頼スコアを統合することによって、トークンピースの前記重複チャンクの各チャンクの最終ラベルおよび関連する信頼スコアを決定することと、
少なくとも前記2つの信頼スコアの前記統合に基づいて発話の前記セットの最終的な注釈付きラベルを決定することと、
前記最終的な注釈付きラベルをメモリに記憶することと、を含む、動作を実行させる複数の命令を記憶する非一時的なコンピュータ可読媒体。
【請求項16】
各チャンクおよびそれに対応するラベルのシーケンスは、トレーニング時に別個の例として扱われる、請求項15に記載の非一時的なコンピュータ可読媒体。
【請求項17】
サイズNの発話の前記セットを前記分割することは、前記サイズNの発話の前記セットを(NL)/(KL)個の重複チャンクに分割することであり、Kはチャンクサイズ、Lは重複サイズである、請求項15~16のいずれか1項に記載の非一時的なコンピュータ可読媒体。
【請求項18】
トークンピースの全体のスコアおよび最終的な注釈付きラベルを前記決定することは、前記複数の重複チャンクのうち最初に選択されるチャンクからの信頼スコアに少なくとも部分的に基づく、請求項15~17のいずれか1項に記載の非一時的なコンピュータ可読媒体。
【請求項19】
トークンピースの全体のスコアの前記決定は、トークンピースの前記重複チャンクにおける前記トークンピースの位置に基づいて行われ、前記全体のスコアは、第1のチャンクがトークンピースの前記重複チャンクの前半にある場合は前記第1のチャンクからの第1の信頼スコアであり、第2のチャンクがトークンピースの前記重複チャンクの後半にある場合は前記第2のチャンクからの第2の信頼スコアである、請求項15~17のいずれか1項に記載の非一時的なコンピュータ可読媒体。
【請求項20】
全体のスコアの前記決定は、前記複数の重複チャンクの最大信頼スコアに基づいて行われる、請求項15~17のいずれか1項に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2022年5月20日に出願された「SYSTEM AND TECHNIQUES FOR HANDLING LONG TEXT FOR PRE-TRAINED LANGUAGE MODELS」と題される米国特許出願第17/750,240号の優先権を主張し、その出願は2021年11月22日に出願された「SYSTEM AND TECHNIQUES FOR HANDLING LONG TEXT FOR PRE-TRAINED LANGUAGE MODELS」と題される本願の譲受人が所有する米国仮特許出願第63/282,146号の優先権を主張し、その全体およびすべての目的において、参照により組み込む。
【0002】
発明の分野
本開示は、一般的にはチャボットシステムに関し、より具体的には、自然言語処理におけるチャボットシステム用の事前トレーニングされた言語モデルの長いテキストを処理する技術に関する。
【背景技術】
【0003】
背景
世界中の多くのユーザが、即座に反応を得るためにインスタントメッセージングやチャットプラットフォームを利用している。組織は多くの場合、これらのインスタントメッセージングプラットフォームやチャットプラットフォームを使用して、顧客(またはエンドユーザ)とライブの会話を交わす。しかし、組織が顧客やエンドユーザとのライブ通信に従事するサービス担当者を雇用すると、非常にコストがかかる可能性がある。特にインターネット上でエンドユーザとの会話をシミュレートするために、チャットボットまたはボットの開発が始まっている。エンドユーザは、すでにインストールして使用しているメッセージングアプリを通じてボットと通信できる。インテリジェントボットは一般に人工知能(AI)を活用しており、ライブ会話においてよりインテリジェントかつコンテキストに応じた通信を行うことができるため、ボットとエンドユーザの間でより自然な会話が可能になり、会話エクスペリエンスが向上し得る。エンドユーザが、ボットが応答方法を知っている固定のキーワードやコマンドのセットを学習する代わりに、インテリジェントボットは、自然言語でのユーザの発話に基づいてエンドユーザの意図を理解し、それに応じて応答できる可能性がある。
【0004】
自然言語処理で使用される事前トレーニングされた言語モデルは、テキストの最大長をサポートするように設計することができる。例えば、さまざまなモデルでは、テキストの最大長を512個のトークンピース(例えば、512個のサブワード)に制限できる。以前のソリューションでは、テキストの最大長を超えたチャボットエントリは、テキストの最大長未満に切り捨てられていた。このソリューションでは、切り捨てられるデータからの情報が失われ、結果の精度が低下し得る。これにより、チャボットの性能が低下し、顧客エクスペリエンスが悪くなる。
【発明の概要】
【0005】
概要
本明細書に開示される技術は、一般的にはキャットボートに関する。より具体的には、限定するものではないが、本明細書に開示される技術は、事前トレーニングされた言語モデル用の長いテキストを処理する技術に関する。さまざまな態様において、事前トレーニングされた言語モデルは通常、所定の最大数のトークンピースをサポートする。長いテキストは、事前に定義されるチャンクサイズと重複トークンピースの数を使用して、重複チャンクに分割できる。チャンクは、名前付きエンティティ認識(NER)によって個別にタグ付けできる。重複トークンピースごとに注釈付きラベルの2つのスコア(1つは第1のチャンクから、もう1つは第2のチャンクから)を組み合わせて、長いテキスト内の各トークンピースの最終的なラベルを決定できる。これにより、チャットボットの高い性能を維持しながら、トレーニングと推論の時間を短縮できる。
【0006】
いくつかの態様では、方法は、データ処理システムで、発話のセットを受信し、名前付きエンティティ認識装置を使用してトレーニングまたはインターフェースして、1つまたは複数の発話からの各トークンピースにラベルを割り当てることと、発話のセットの長さを決定することと、発話のセットの長さがトークンピースの所定の閾値(すなわち、チャンクサイズ)を超える場合、発話のセットをトークンピースの複数の重複チャンクに分割することと、チャンク内の各トークンピースに信頼スコアとともにラベルを割り当てることと、第1のチャンクからの信頼スコアと第2のチャンクからの信頼スコアの2つの信頼スコアを統合することによって、重複トークンピースの最終的なラベルおよび関連する信頼スコアを決定することと、元のテキスト入力の最終的な注釈付きラベルを決定することと、ラベルをメモリに記憶することと、を含む。
【0007】
いくつかの態様では、各チャンクおよびそれに対応するラベルのシーケンスは、トレーニングおよび推論の際に別個の例として扱われる。
【0008】
いくつかの態様では、サイズNの発話のセットを分割することは、サイズNの発話のセットを(NL)/(KL)の重複チャンクに分割することである。ここで、Kはチャンクサイズ、Lは重複サイズである(K>L)。
【0009】
いくつかの態様では、トークンピースの全体的なスコアおよびラベルの決定は、複数のチャンクのうち最初に選択されるチャンクからの信頼スコアに基づく。
【0010】
いくつかの態様では、トークンピースの全体のスコアの決定は、重複テキスト内のトークンピースの位置に基づいて行われる。重複スコアは、重複テキストの前半にある場合は第1のチャンクからの第1の信頼スコアであり、重複テキストの後半にある場合は第2のチャンクから第2の信頼スコアである。
【0011】
いくつかの態様では、全体のスコアの決定は、複数のチャンクの最大信頼スコアに基づいて行われる。
【0012】
いくつかの態様では、トークンピースの所定数(すなわち、チャンクサイズ)は512個のトークンであり、重複トークンの所定数は128である。いくつかの態様では、トークンピースの所定数は32であり、重複トークンの所定数は8である。
【0013】
さまざまな態様において、1つまたは複数のデータプロセッサと、1つまたは複数のデータプロセッサ上で実行されると、1つまたは複数のデータプロセッサに本明細書に開示される1つまたは複数の方法の一部または全部を実行させる命令を含む非一時的なコンピュータ可読記憶媒体とを含むシステムが提供される。
【0014】
さまざまな態様において、非一時的な機械可読記憶媒体に有形に具体化され、1つまたは複数のデータプロセッサに本明細書に開示される1つまたは複数の方法の一部または全部を実行させるように構成される命令を含むコンピュータプログラム製品が提供される。
【0015】
上記および下記に説明する技術は、多くの方法および多くのコンテキストで実装することができる。下記により詳細に説明するように、いくつかの実装例およびコンテキストが、以下の図を参照して提供される。しかし、次に挙げる実装とコンテキストは、数多くある実装とコンテキストのほんの一部にすぎない。
【図面の簡単な説明】
【0016】
図1】ある態様によるチャボットシステムの例示的な実施形態を組み込んだ環境の簡略化されるブロック図である。
図2】ある態様に従ってマスターボットを実装するコンピューティングシステムの簡略化されるブロック図である。
図3】ある態様に従ってスキルボットを実装するコンピューティングシステムの簡略化されるブロック図である。
図4】事前トレーニングされた言語モデル用の長いテキストを処理するシステムを示す図である。
図5】例示的な発話を複数のチャンクに変換することを示す図である。
図6】予測を統合する技術を示す図である。
図7】事前トレーニングされた言語モデル用の長いテキストを処理する技術のフロー図である。
図8】ある態様を実装するための分散システムの簡略化される図を示す図である。
図9】実施形態のシステムの1つまたは複数の構成要素によって提供されるサービスが、ある態様に従ってクラウドサービスとして提供され得るシステム環境の1つまたは複数の構成要素の簡略化されるブロック図である。
図10】ある態様を実装するために使用できる例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0017】
詳細な説明
以下の説明では、説明の目的で、ある態様を完全に理解できるように具体的な詳細が記載されている。しかし、これらの具体的な詳細がなくても、さまざまな態様を実践できることは明らかである。図および説明は制限的なものではない。本明細書で使用されている「例示的な」という語は、「例、事例、または説明として役立つ」という意味である。本明細書で「例示的」として説明される実施形態または設計は、必ずしも他の態様または設計よりも好ましいまたは有利であると解釈されるものではない。
【0018】
ボットと分析システム
ボット(スキル、チャボット、チャッターボット、またはトークボットとも呼ばれる)は、エンドユーザとの会話を実行できるコンピュータプログラムである。ボットは通常、自然言語メッセージを使用するメッセージングアプリケーションを通じて自然言語メッセージ(例えば、質問やコメント)に応答できる。企業は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、またはその他の音声入力を使用するインターフェースを備えた装置やアプリ)が含まれ得る。
【0019】
いくつかの例では、ボットシステムは、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つのシステム間の他の任意のタイプの通信であり得ることを理解されたい。
【0020】
エンドユーザは、ちょうど人間間の対話と同様に、会話型対話(会話型ユーザインターフェース(UI)と呼ばれることもある)を通じてボットシステムと対話することができる。場合によっては、対話には、エンドユーザがボットに「こんにちは」と言うと、ボットが「こんにちは」と応答して、どのように役立ち得るかをエンドユーザに尋ねることが含まれ得る。場合によっては、この対話は、例えば、ある口座から別の口座への送金など、銀行ボットとの取引上の対話、例えば、休暇残日数の確認など、人事ボットとの情報対話、または、例えば、購入した商品の返品について話し合ったり、技術サポートを求めたりするなど、小売ボットとの対話である場合もある。
【0021】
いくつかの態様では、ボットシステムは、ボットシステムの管理者または開発者と対話することなく、エンドユーザの対話をインテリジェントに処理することができる。例えば、エンドユーザは、所望の目標を達成するために、ボットシステムに1つまたは複数のメッセージを送信し得る。メッセージには、テキスト、絵文字、音声、画像、ビデオ、またはその他のメッセージ伝達方法などのあるコンテンツが含まれ得る。いくつかの態様では、ボットシステムは、コンテンツを標準化される形式(例えば、適切なパラメータを備えた企業サービスに対する表現状態転送(REST)呼び出し)に変換し、自然言語応答を生成することができる。ボットシステムは、エンドユーザに追加の入力パラメータを促したり、他の追加情報を要求したりすることもできる。いくつかの態様では、ボットシステムは、エンドユーザの発話に受動的に応答するのではなく、エンドユーザとの通信を開始することもできる。本明細書では、ボットシステムの明示的な呼び出しを識別し、呼び出されるボットシステムへの入力を決定するためのさまざまな技術について説明する。ある態様では、明示的な呼び出し分析は、発話内の呼び出し名の検出に基づいてマスターボットによって実行される。呼び出し名の検出に応答して、その呼び出し名に関連付けられるスキルボットへの入力のために発話を改良することができる。
【0022】
ボットとの会話は、複数の状態を含む特定の会話フローに従うことができる。フローは、入力に基づいて次に何が起こるかを定義できる。いくつかの態様では、ユーザ定義の状態(例えば、エンドユーザの意図)と、その状態において、または状態から状態へと実行するアクションを含む状態機械を使用して、ボットシステムを実装することができる。会話はエンドユーザの入力に基づいて異なるパスをたどる場合があり、それがボットによるフローの決定に影響を与える可能性がある。例えば、各状態で、エンドユーザの入力または発話に基づいて、ボットはエンドユーザの意図を決定し、次に実行する適切なアクションを決定できる。本明細書および発話のコンテキストにおいて使用される場合、「意図」という用語は、発話を提供したユーザの意図を指す。例えば、ユーザはピザを注文するためにボットと会話することを意図している場合があり、その結果、ユーザの意図は「ピザを注文する」という発話を通じて表現され得る。ユーザの意図は、ユーザが代わりにチャボットに実行してほしい特定のタスクに向けることができる。したがって、発話は、ユーザの意図を反映した質問、コマンド、要求などの表現にすることができる。意図には、エンドユーザが達成したい目標が含まれ得る。
【0023】
チャボットの構成に関連して、「意図」という用語は、本明細書では、ユーザの発話を、チャボットが実行できる特定のタスク/アクション、またはタスク/アクションのカテゴリにマッピングするための構成情報を指すために使用される。発話の意図(つまり、ユーザの意図)とチャボットの意図を区別するために、後者を本明細書では「ボットの意図」と呼ぶことがある。ボットの意図には、その意図に関連付けられる1つまたは複数の発話のセットが含まれ得る。例えば、ピザを注文するという意図には、ピザを注文したいという願望を表す発話のさまざまな並べ換えが含まれ得る。これらの関連する発話を使用して、チャボットの意図分類子をトレーニングし、その後、ユーザからの入力発話がピザの注文の意図と一致するかどうかを意図分類子が決定できるようにすることができる。ボットの意図は、ユーザとある状態で会話を開始するための1つまたは複数のダイアログフローに関連付けることができる。例えば、ピザの注文意図の第1のメッセージは、「どのような種類のピザが好きであるか?」という質問にすることができる。関連する発話に加えて、ボットの意図には、意図に関連する名前付きエンティティがさらに含まれ得る。例えば、ピザの注文意図には、ピザを注文するタスクを実行するために使用される変数またはパラメータ、例えば、トッピング1、トッピング2、ピザのタイプ、ピザのサイズ、ピザの量などを含めることができる。エンティティの値は通常、ユーザとの会話を通じて取得される。
【0024】
図1は、ある態様によるチャボットシステムを組み込んだ環境100の簡略化されるブロック図である。環境100は、DABP102のユーザがデジタルアシスタントまたはチャボットシステムを作成および展開できるようにするデジタルアシスタントビルダプラットフォーム(DABP)102を備える。DABP102を使用して、1つまたは複数のデジタルアシスタント(またはDA)またはチャボットシステムを作成できる。例えば、図1に示されるように、特定の企業を代表するユーザ104は、DABP102を使用して、特定の企業のユーザのためにデジタルアシスタント106を作成し展開することができる。例えば、銀行はDABP102を使用して、銀行の顧客が使用する1つまたは複数のデジタルアシスタントを作成できる。同じDABP102プラットフォームを複数の企業が使用してデジタルアシスタントを作成できる。別の例として、レストラン(例えば、ピザ店)のオーナーは、DABP102を使用して、レストランの顧客が食べ物を注文(例えば、ピザを注文)できるようにするデジタルアシスタントを作成して展開することができる。
【0025】
本開示の目的上、「デジタルアシスタント」は、デジタルアシスタントのユーザが自然言語会話を通じてさまざまなタスクを達成するのを支援するエンティティである。デジタルアシスタントは、ソフトウェアのみを使用して(例えば、デジタルアシスタントは、1つまたは複数のプロセッサによって実行可能なプログラム、コード、または命令を使用して実装されるデジタルエンティティである)、ハードウェアを使用して、またはハードウェアとソフトウェアの組み合わせを使用して実装することができる。デジタルアシスタントは、コンピュータ、携帯電話、時計、電化製品、車両などのさまざまな物理システムまたは装置で具体化または実装することができる。デジタルアシスタントは、チャボットシステムと呼ばれることもある。したがって、本開示の目的上、デジタルアシスタントとチャボットシステムという用語は交換可能である。
【0026】
DABP102を使用して構築されるデジタルアシスタント106などのデジタルアシスタントを使用して、デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を介してさまざまなタスクを実行することができる。会話の一部として、ユーザは、デジタルアシスタント106に1つまたは複数のユーザ入力110を提供し、デジタルアシスタント106から応答112を得ることができる。会話には、入力110と応答112の1つまたは複数を含めることができる。これらの会話を介して、ユーザは、デジタルアシスタントによって実行される1つまたは複数のタスクを要求することができ、これに応じて、デジタルアシスタントは、ユーザが要求したタスクを実行し、ユーザに適切な応答で応答するように構成される。
【0027】
ユーザ入力は、一般に自然言語形式であり、発話と呼ばれる。ユーザ発話110は、ユーザが文、質問、テキストの断片、または単一の単語を入力し、それを入力としてデジタルアシスタント106に提供する場合など、テキスト形式とすることができる。いくつかの態様では、ユーザ発話110は、デジタルアシスタント106への入力として提供される何かをユーザが言うか話すときなど、音声入力または音声形式であり得る。発話は通常、ユーザ108が話す言語で行われる。例えば、発話は英語または他の言語で行われ得る。発話が音声形式である場合、音声入力はその特定の言語のテキスト形式の発話に変換され、テキスト発話はデジタルアシスタント106によって処理される。さまざまな音声からテキストへの処理技術を使用して、音声または音声入力をテキスト発話に変換することができ、その後デジタルアシスタント106によって処理される。いくつかの態様では、音声からテキストへの変換は、デジタルアシスタント106自体によって行われてもよい。
【0028】
発話は、テキスト発話または音声発話であり得、断片、文、複数の文、1つまたは複数の単語、1つまたは複数の質問、前述のタイプの組み合わせなどであることができる。デジタルアシスタント106は、発話に自然言語理解(NLU)技術を適用して、ユーザ入力の意味を理解するように構成されている。発話に対するNLU処理の一環として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成されており、これには、発話に対応する1つまたは複数の意図と1つまたは複数のエンティティを識別することが含まれる。発話の意味を理解すると、デジタルアシスタント106は、理解した意味または意図に応じて1つまたは複数のアクションまたは動作を実行することができる。本開示の目的上、発話は、デジタルアシスタント106のユーザ108によって直接提供されるテキスト発話であるか、または入力音声発話をテキスト形式に変換した結果であると仮定する。しかし、これはいかなる形でも限定または制限することを意図したものではない。
【0029】
例えば、ユーザ108の入力は、「ピザを注文したい」などの発話を提供することによって、ピザの注文を要求することができる。このような発話を受信すると、デジタルアシスタント106は、発話の意味を理解し、適切なアクションを実行するように構成される。適切なアクションには、例えば、ユーザが注文したいピザのタイプ、ピザのサイズ、ピザのトッピングなどについてのユーザ入力を求める質問でユーザに応答することが含まれ得る。デジタルアシスタント106によって提供される応答はまた、自然言語形式であってもよく、通常は入力発話と同じ言語であってもよい。これらの応答を生成する一環として、デジタルアシスタント106は自然言語生成(NLG)を実行することができる。ピザを注文するユーザの場合、ユーザとデジタルアシスタント106との間の会話を介して、デジタルアシスタントは、ピザの注文に必要な情報をすべて提供するようにユーザを誘導し、その後、会話の終わりにピザを注文させることができる。デジタルアシスタント106は、ピザが注文されることを示す情報をユーザに出力することによって会話を終了することができる。
【0030】
概念的なレベルでは、デジタルアシスタント106は、ユーザから受信した発話に応じてさまざまな処理を実行する。いくつかの態様では、この処理には、一連の処理ステップまたはパイプラインの処理ステップが含まれ、例えば、入力発話の意味を理解(自然言語理解(NLU)とも呼ばれる)することと、発話に応じて実行されるアクションを決定することと、そこでアクションの実行を適切に引き起こすことと、ユーザの発話に応答してユーザに出力される応答を生成すること、応答をユーザに出力することなどを含む。NLU処理は、受信した入力発話を解析して発話の構造および意味を理解すること、発話を改良および再形成して発話のより理解しやすい形式(例えば、論理形式)または構造を開発することを含むことができる。応答の生成には、NLG技術の使用が含まれ得る。
【0031】
デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理には、文解析などのさまざまなNLP関連処理が含まれ得る(例えば、トークン化、見出し語化、文の品詞タグの識別、文内の名前付きエンティティの識別、文構造を表す依存関係ツリーの生成、文を文節に分割、個々の文節の分析、照応の解決、チャンキングの実行、など)。ある態様では、NLU処理またはその一部はデジタルアシスタント106自体によって実行される。いくつかの他の態様では、デジタルアシスタント106は、他のリソースを使用してNLU処理の一部を実行することができる。例えば、入力発話文の構文および構造は、パーサ、品詞タガー、および/または名前付きエンティティ認識装置を使用して文を処理することによって識別され得る。一実装では、英語の場合、パーサ、品詞タガー、およびスタンフォード自然言語処理(NLP)グループによって提供されるものなどの名前付きエンティティ認識装置が、文の構造および構文を分析するために使用される。これらは、Stanford CoreNLPツールキットの一部として提供される。
【0032】
本開示で提供されるさまざまな例は英語での発話を示しているが、これは例としてのみ意味されている。ある態様では、デジタルアシスタント106は、英語以外の言語での発話を処理することもできる。デジタルアシスタント106は、異なる言語の処理を実行するように構成されるサブシステム(例えば、NLU機能を実装する構成要素)を提供することができる。これらのサブシステムは、NLUコアサーバからのサービス呼び出しを使用して呼び出すことができるプラグイン可能な装置として実装できる。これにより、異なる処理順序が可能になるなど、NLU処理が言語ごとに柔軟かつ拡張可能になる。言語パックは個別の言語に対して提供され得、言語パックはNLUコアサーバから提供できるサブシステムのリストを登録できる。
【0033】
図1に示すデジタルアシスタント106などのデジタルアシスタントは、さまざまな異なるチャネルを通じてそのユーザ108が利用可能またはアクセスできるようにすることができ、あるアプリケーション経由、ソーシャルメディアプラットフォーム経由、さまざまなメッセージングサービスやアプリケーション経由、その他のアプリケーションやチャネル経由などであるが、これらに限定されない。1つのデジタルアシスタントに複数のチャネルを構成して、異なるサービス上で実行したり、同時にアクセスしたりできるようにすることができる。
【0034】
デジタルアシスタントまたはチャボットシステムは、一般に、1つまたは複数のスキルを含むか、またはそれに関連付けられている。ある態様では、これらのスキルは、ユーザと対話し、特定のタイプのタスクを実行するように構成される個別のキャットボート(スキルボットと呼ばれる)であり、例えば、在庫の追跡、タイムカードの提出、経費報告書の作成、食品の注文、銀行口座の確認、予約、ウィジェットの購入などである。例えば、図1に示す実施形態では、デジタルアシスタント106またはチャボットシステムには、第1のスキルボット116-1、第2のスキルボット116-2などが含まれる。この開示の目的上、「スキル(skill)」および「スキル(skills)」という用語は、それぞれ「スキルボット(skill bot)」および「スキルボット(skill bots)」という用語と同義語として使用される。
【0035】
デジタルアシスタントに関連付けられる各スキルは、デジタルアシスタントのユーザがユーザとの会話を通じてタスクを完了するのに役立ち、その会話には、ユーザによって提供されるテキストまたは音声入力と、スキルボットによって提供される応答との組み合わせが含まれ得る。これらの応答は、ユーザへのテキストまたは音声メッセージの形式、および/またはユーザが選択できるようにユーザに提示される単純なユーザインターフェース要素(例えば、選択リスト)を使用し得る。
【0036】
スキルまたはスキルボットをデジタルアシスタントに関連付けたり追加したりできるさまざまな方法がある。場合によっては、スキルボットを企業が開発し、次いで、DABP102を使用してデジタルアシスタントに追加することができる。他の例では、スキルボットはDABP102を使用して開発および作成され、その後DABP102を使用して作成されるデジタルアシスタントに追加され得る。さらに他の例では、DABP102は、広範囲のタスクに向けられる複数のスキルを提供するオンラインデジタルストア(「スキルストア」と呼ばれる)を提供する。スキルストアを通じて提供されるスキルは、さまざまなクラウドサービスを公開することもできる。DABP102を使用して生成されているデジタルアシスタントにスキルを追加するには、DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択されるスキルがDABP102を使用して作成されるデジタルアシスタントに追加されることを示すことができる。スキルストアのスキルは、そのまままたは変更される形式でデジタルアシスタントに追加できる(例えば、DABP102のユーザは、スキルストアによって提供される特定のスキルボットを選択して複製し、選択されるスキルボットにカスタマイズまたは変更を加え、次いで、変更されるスキルボットを、DABP102を使用して作成されるデジタルアシスタントに追加することができる)。
【0037】
デジタルアシスタントまたはチャボットシステムを実装するために、さまざまな異なるアーキテクチャを使用することができる。例えば、ある態様では、DABP102を使用して作成および展開されるデジタルアシスタントは、マスターボット/子(またはサブ)ボットのパラダイムまたはアーキテクチャを使用して実装され得る。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つまたは複数の子ボットと対話するマスターボットとして実装される。例えば、図1に示す実施形態では、デジタルアシスタント106は、マスターボット114と、マスターボット114の子ボットである第1のスキルボット116-1、第2のスキルボット116-2などを含む。ある態様では、デジタルアシスタント106自体がマスターボットとして機能するとみなされる。
【0038】
マスター子ボットアーキテクチャに従って実装されるデジタルアシスタントにより、デジタルアシスタントのユーザは、統一されるユーザインターフェース、すなわち、マスターボットを介して複数のスキルと対話できるようになる。ユーザがデジタルアシスタントを動作すると、ユーザ入力はマスターボットによって受信される。次に、マスターボットは、ユーザ入力の発話の意味を決定する処理を実行する。次に、マスターボットは、発話内でユーザによって要求されるタスクがマスターボット自体で処理できるかどうかを決定する。そうでない場合、マスターボットは、ユーザの要求を処理するための適切なスキルボットを選択し、選択したスキルボットに会話をルーティングする。これにより、ユーザは共通の単一インターフェースを介してデジタルアシスタントと会話できるようになり、特定のタスクを実行するように構成される複数のスキルボットを使用する機能も提供される。例えば、企業向けに開発されるデジタルアシスタントの場合、デジタルアシスタントのマスターボットは、特定の機能を備えたスキルボットと連携することができ、例えば、顧客関係管理(CRM)に関連する機能を実行するCRMボット、企業リソースプランニング(ERP)に関連する機能を実行するERPボット、人的資本管理(HCM)に関連する機能を実行するHCMボットなどである。このようにして、デジタルアシスタントのエンドユーザまたは消費者は、共通のマスターボットインターフェースを介してデジタルアシスタントへアクセスする方法を知るだけで済み、ユーザの要求を処理するために陰で複数のスキルボットが提供される。
【0039】
ある態様では、マスターボット/子ボットのインフラストラクチャにおいて、マスターボットは、利用可能なスキルボットのリストを認識するように構成される。マスターボットは、利用可能なさまざまなスキルボットを識別するメタデータ、およびスキルボットごとに、スキルボットによって実行できるタスクを含むスキルボットの機能にアクセスできる。マスターボットは、発話の形式でユーザ要求を受信すると、複数の利用可能なスキルボットの中から、ユーザ要求に最もよく応えまたは処理することができる特定のスキルボットを特定または予測するように構成されている。次に、マスターボットは、発話(または発話の一部)をその特定のスキルボットにルーティングして、さらに処理する。したがって、制御はマスターボットからスキルボットに流れる。マスターボットは複数の入出力チャネルをサポートできる。ある態様では、ルーティングは、1つまたは複数の利用可能なスキルボットによって実行される処理を利用して実行され得る。例えば、以下で説明するように、スキルボットは、発話の意図を推測し、推測される意図がスキルボットに構成されている意図と一致するかどうかを決定するようにトレーニングできる。したがって、マスターボットによって実行されるルーティングには、スキルボットが発話の処理に適した意図を使用して構成されているかどうかの指示をマスターボットに通信することが含まれ得る。
【0040】
図1の実施形態では、マスターボット114と、第1のスキルボット116-1、第2のスキルボット116-2、および第3のスキルボット116-3とを含むデジタルアシスタント106が示されているが、これは限定を意図するものではない。デジタルアシスタントは、デジタルアシスタントの機能を提供する他のさまざまな構成要素(例えば、他のシステムおよびサブシステム)を含むことができる。これらのシステムおよびサブシステムは、ソフトウェア(例えば、コンピュータ可読媒体に記憶され、1つまたは複数のプロセッサによって実行可能なコード、命令)のみで、ハードウェアのみで、またはソフトウェアとハードウェアの組み合わせを使用する実装で実装され得る。
【0041】
DABP102は、DABP102のユーザがデジタルアシスタントに関連付けられる1つまたは複数のスキルボットを含むデジタルアシスタントを作成できるようにするインフラストラクチャおよびさまざまなサービスおよび機能を提供する。場合によっては、スキルボットは、既存のスキルボットを複製することによって、例えば、スキルストアによって提供されるスキルボットを複製することによって作成できる。前に示したように、DABP102は、さまざまなタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットを複製できる。必要に応じて、複製されるスキルボットに変更やカスタマイズを加えることができる。他の例では、DABP102のユーザが、DABP102が提供するツールとサービスを使用して、スキルボットをゼロから作成した。前に示したように、DABP102によって提供されるスキルストアまたはスキルカタログは、さまざまなタスクを実行するための複数のスキルボットを提供することができる。
【0042】
ある態様では、高レベルで、スキルボットの作成またはカスタマイズには次のステップが含まれる。
【0043】
(1)新しいスキルボットの設定の構成
(2)スキルボットの1つまたは複数の意図を構成する
(3)1つまたは複数の意図に対する1つまたは複数のエンティティの構成
(4)スキルボットのトレーニング
(5)スキルボットのダイアログフローの作成
(6)必要に応じてスキルボットにカスタム構成要素を追加する
(7)スキルボットのテストと展開
上記の各ステップについて、以下に簡単に説明する。
【0044】
(1)新しいスキルボットの設定の構成-スキルボットに対してさまざまな設定を構成することができる。例えば、スキルボットの設計者は、作成するスキルボットの1つまたは複数の呼び出し名を指定できる。これらの呼び出し名は、次いで、デジタルアシスタントのユーザがスキルボットを明示的に呼び出すために使用できる。例えば、ユーザはユーザの発話に呼び出し名を入力して、対応するスキルボットを明示的に呼び出すことができる。
【0045】
(2)スキルボットの1つまたは複数の意図および関連する発話例の構成-スキルボット設計者は、作成されるスキルボットの1つまたは複数の意図(ボットの意図とも呼ばれる)を指定する。次に、スキルボットは、これらの指定される意図に基づいてトレーニングされる。これらの意図は、スキルボットが入力発話を推測するようにトレーニングされるカテゴリまたはクラスを表す。発話を受信すると、トレーニングされるスキルボットは発話の意図を推測する。推測される意図は、スキルボットのトレーニングに使用される定義済みの意図のセットから選択される。次に、スキルボットは、発話に対して推定される意図に基づいて、発話に応じて適切なアクションを実行する。場合によっては、スキルボットの意図は、スキルボットがデジタルアシスタントのユーザに対して実行できるタスクを表す。各意図には、意図識別子または意図名が与えられる。例えば、銀行用にトレーニングされるスキルボットの場合、スキルボットに指定される意図には、「CheckBalance」、「TransferMoney」、「DepositCheck」などが含まれ得る。
【0046】
スキルボットに対して定義される各意図に対して、スキルボット設計者は、その意図を表し説明する1つまたは複数の発話例を提供することもできる。これらの発話例は、ユーザがその意図のためにスキルボットに入力できる発話を表すことを目的としている。例えば、CheckBalance意図の場合、発話の例には、「普通預金口座の残高はいくらであるか?」、「当座預金口座にはいくらあるか?」、「口座にはいくらお金があるか?」などが含まれ得る。したがって、典型的なユーザ発話のさまざまな並べ換えを、意図に対する発話例として指定することができる。
【0047】
意図とそれに関連する例の発話は、スキルボットをトレーニングするためのトレーニングデータとして使用される。さまざまな異なるトレーニング技術が使用されてもよい。このトレーニングの結果、発話を入力として受信し、予測モデルによって発話に対して推測される意図を出力するように構成される予測モデルが生成される。場合によっては、入力発話は意図分析エンジンに提供され、トレーニングされるモデルを使用して入力発話の意図を予測または推論するように構成される。スキルボットは、推測される意図に基づいて1つまたは複数のアクションを実行できる。
【0048】
(3)スキルボットの1つまたは複数の意図のためのエンティティの構成-場合によっては、スキルボットがユーザの発話に適切に応答できるようにするために追加のコンテキストが必要になることがある。例えば、ユーザ入力の発話がスキルボット内の同じ意図として解決される状況が考えられる。例えば、上記の例では、「私の普通預金口座の残高はいくらであるか?」、「私の当座預金口座にはいくらあるか?」という発話は、どちらも同じCheckBalance意図に解決されるが、これらの発話は異なるものを要求する異なる要求である。このような要求を明確にするために、1つまたは複数のエンティティが意図に追加される。銀行スキルボットの例を使用すると、「checking」および「saving」という値を定義するAccountTypeというエンティティにより、スキルボットがユーザ要求を解析し、適切に応答できるようになる。上の例では、発話は同じ意図に解決されるが、AccountTypeエンティティに関連付けられる値は2つの発話で異なる。これにより、スキルボットは、2つの発話が同じ意図を解決しているにもかかわらず、それらの発話に対して異なるアクションを実行できる可能性がある。スキルボット用に構成されるある意図に対して1つまたは複数のエンティティを指定できる。したがって、エンティティは、意図自体にコンテキストを追加するために使用される。エンティティは、意図をより完全に記述するのに役立ち、スキルボットがユーザ要求を完了できるようにする。
【0049】
ある態様では、(a)DABP102によって提供される組み込みエンティティ、および(2)スキルボット設計者によって指定できるカスタムエンティティの2つのタイプのエンティティが存在する。組み込みエンティティは、さまざまなボットで使用できる汎用エンティティである。組み込みエンティティの例には、時間、日付、住所、番号、電子メールアドレス、期間、定期的な期間、通貨、電話番号、URLなどに関連するエンティティが含まれるが、これらに限定されない。カスタムエンティティは、よりカスタマイズされるアプリケーションに使用される。例えば、銀行スキルの場合、小切手、貯蓄、クレジットカードなどのキーワードに対するユーザ入力をチェックすることにより、さまざまな銀行取引を可能にするスキルボット設計者によってAccountTypeエンティティが定義され得る。
【0050】
(4)スキルボットのトレーニング-スキルボットは、発話の形式でユーザ入力を受信し、受信した入力を解析または処理し、受信したユーザ入力に関連する意図を識別または選択するように構成される。上で示したように、スキルボットはこのためにトレーニングされる必要がある。ある態様では、スキルボットは、スキルボット用に構成される意図およびその意図に関連付けられる発話例(集合的にトレーニングデータ)に基づいてトレーニングされるため、スキルボットは、ユーザ入力発話をその構成される意図の1つに解決できる。ある態様では、スキルボットは、トレーニングデータを使用してトレーニングされる予測モデルを使用し、スキルボットがユーザは何を言っているか(または、場合によっては言おうとしているか)を識別できるようにする。DABP102は、さまざまな機械学習ベースのトレーニング技術、ルールベースのトレーニング技術、および/またはそれらの組み合わせなど、スキルボット設計者がスキルボットをトレーニングするために使用できるさまざまなトレーニング技術を提供する。ある態様では、トレーニングデータの一部(例えば、80%)がスキルボットモデルのトレーニングに使用され、別の部分(例えば、残りの20%)がモデルのテストまたは検証に使用される。トレーニングが完了すると、トレーニングされるモデル(トレーニングされるスキルボットとも呼ばれる)を使用して、ユーザの発話を処理および応答できるようになる。ある場合、ユーザの発話が1つの回答のみを必要とし、それ以上の会話を必要としない質問である場合がある。このような状況に対処するために、スキルボットにQ&A(質問と回答)意図を定義することができる。これにより、スキルボットは、ダイアログ定義を更新せずに、ユーザの要求に対する応答を出力できるようになる。Q&A意図は、通常の意図と同様の方法で作成される。Q&A意図のダイアログフローは、通常の意図のダイアログフローとは異なる場合がある。
【0051】
(5)スキルボット用のダイアログフローの作成--スキルボット用に指定されるダイアログフローは、受信したユーザ入力に応じてスキルボットの異なる意図が解決されるときにスキルボットがどのように反応するかを記述する。ダイアログフローは、例えば、スキルボットがユーザの発話に応答する方法、スキルボットがユーザに入力を促す方法、スキルボットがデータを返す方法など、スキルボットが実行する動作またはアクションを定義する。ダイアログフローは、スキルボットが従うフローチャートのようなものである。スキルボット設計者は、マークダウン言語などの言語を使用してダイアログフローを指定する。ある態様では、OBotMLと呼ばれるYAMLのバージョンを使用して、スキルボットのダイアログフローを指定できる。スキルボットのダイアログフロー定義は、会話自体のモデルとして機能し、スキルボットの設計者がスキルボットと、スキルボットがサービスを提供するユーザとの間の対話を振り付けできるようにする。
【0052】
ある態様では、スキルボットのダイアログフロー定義には、次の3つのセクションが含まれる。
【0053】
(a)コンテキストセクション
(b)デフォルトの遷移セクション
(c)状態のセクション
コンテキストセクション-スキルボット設計者は、コンテキストセクション内の会話フローで使用される変数を定義することができる。コンテキストセクションで名前を付けることができるその他の変数には、エラー処理用の変数、組み込みエンティティまたはカスタムエンティティ用の変数、スキルボットがユーザ設定を認識して保持できるようにするユーザ変数などが含まれるが、これらに限定されない。
【0054】
デフォルト遷移セクション-スキルボットの遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクションで定義することができる。デフォルト遷移セクションで定義される遷移はフォールバックとして機能し、状態内に定義される該当する遷移がない場合、または状態遷移をトリガーするために必要な条件が満たされない場合にトリガーされる。デフォルトの遷移セクションを使用すると、スキルボットが予期しないユーザクションを適切に処理できるようにするルーティングを定義できる。
【0055】
状態セクション-ダイアログフローおよびその関連動作は、ダイアログフロー内の論理を管理する一連の一時的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログのその時点で必要な機能を提供する構成要素に名前を付ける。したがって、状態は構成要素を中心に構築される。状態には構成要素固有のプロパティが含まれており、構成要素の実行後にトリガーされる他の状態への遷移を定義する。
【0056】
特殊な場合のシナリオは、状態セクションを使用して処理することができる。例えば、デジタルアシスタント内の第2のスキルで何かを行うために、使用している第1のスキルを一時的に離れる選択肢をユーザに提供したい場合がある。例えば、ユーザがショッピングスキルとの会話に参加している場合(例えば、ユーザが購入についていくつかの選択を行っている場合)、ユーザは銀行スキルにジャンプし(例えば、ユーザは購入に十分なお金があることを確認したい場合がある)、その後ショッピングスキルに戻ってユーザの注文を完了したい場合がある。これに対処するには、第1のスキルのアクションを構成して、同じデジタルアシスタント内の第2の異なるスキルとの対話を開始し、元のフローに戻ることができる。
【0057】
(6)カスタム構成要素をスキルボットに追加する-上述したように、スキルボットのダイアログフローで指定される状態は、その状態に対応して必要な機能を提供する構成要素に名前を付ける。構成要素を使用すると、スキルボットが機能を実行できるようになる。ある態様では、DABP102は、広範囲の機能を実行するための事前構成される構成要素のセットを提供する。スキルボット設計者は、これらの事前構成される構成要素を1つまたは複数選択し、それらをスキルボットのダイアログフローの状態に関連付けることができる。スキルボット設計者は、DABP102によって提供されるツールを使用してカスタム構成要素または新しい構成要素を作成し、そのカスタム構成要素をスキルボットのダイアログフロー内の1つまたは複数の状態に関連付けることもできる。
【0058】
(7)スキルボットのテストおよび展開-DABP102は、スキルボット設計者が開発中のスキルボットをテストできるようにするいくつかの機能を提供する。その後、スキルボットを展開してデジタルアシスタントに含めることができる。
【0059】
上記の説明はスキルボットの作成方法を説明しているが、同様の技術を使用してデジタルアシスタント(またはマスターボット)を作成することもできる。マスターボットまたはデジタルアシスタントレベルで、組み込みシステム意図をデジタルアシスタント用に構成できる。これらの組み込みシステム意図は、デジタルアシスタントに関連付けられるスキルボットを呼び出すことなくデジタルアシスタント自体(つまり、マスターボット)が処理できる一般的なタスクを識別するために使用される。マスターボットに対して定義されるシステム意図の例は次のとおりである。(1)終了:ユーザがデジタルアシスタントの現在の会話またはコンテキストを終了したいという信号を送ったときに適用される。(2)ヘルプ:ユーザがヘルプや方向性を求めた場合に適用される。(3)UnresolvedIntent:終了およびヘルプ意図とよく一致しないユーザ入力に適用される。デジタルアシスタントは、デジタルアシスタントに関連付けられる1つまたは複数のスキルボットに関する情報も記憶する。この情報により、マスターボットは発話を処理するための特定のスキルボットを選択できる。
【0060】
マスターボットまたはデジタルアシスタントレベルでは、ユーザがフレーズまたは発話をデジタルアシスタントに入力すると、デジタルアシスタントは、発話および関連する会話をルーティングする方法を決定する処理を実行するように構成される。デジタルアシスタントは、ルールベース、AIベース、またはそれらの組み合わせであり得るルーティングモデルを使用してこれを決定する。デジタルアシスタントはルーティングモデルを使用して、ユーザ入力発話に対応する会話が処理のために特定のスキルにルーティングされるべきか、組み込みシステム意図に従ってデジタルアシスタントまたはマスターボット自体によって処理されるべきか、あるいは現在の会話フローでは別の状態として扱われるべきかを決定する。
【0061】
ある態様では、この処理の一部として、デジタルアシスタントは、ユーザ入力発話がその呼び出し名を使用してスキルボットを明示的に識別するかどうかを決定する。ユーザ入力に呼び出し名が存在する場合、その呼び出し名に対応するスキルボットの明示的な呼び出しとして扱われる。このようなシナリオでは、デジタルアシスタントは、さらなる処理のために明示的に呼び出されるスキルボットにユーザ入力をルーティングし得る。特定のまたは明示的な呼び出しがない場合、ある態様では、デジタルアシスタントは、受信したユーザ入力発話を評価し、システム意図およびデジタルアシスタントに関連付けられるスキルボットの信頼スコアを計算する。スキルボットまたはシステム意図に対して計算されるスコアは、ユーザ入力はスキルボットが実行するように構成されているタスクを表している可能性、または、ユーザ入力はシステム意図を表している可能性を示す。関連する計算される信頼スコアが閾値(例えば、信頼閾値ルーティングパラメータ)を超えるシステム意図またはスキルボットが、さらなる評価の候補として選択される。次に、デジタルアシスタントは、識別される候補から、ユーザ入力発話をさらに処理するための特定のシステム意図またはスキルボットを選択する。ある態様では、1つまたは複数のスキルボットが候補として識別される後、それらの候補スキルに関連付けられる意図が(各スキルの意図モデルに従って)評価され、各意図について信頼スコアが決定される。一般に、信頼スコアが閾値(例えば70%)を超える意図は、候補意図として扱われる。特定のスキルボットが選択されている場合、ユーザの発話はさらなる処理のためにそのスキルボットにルーティングされる。システム意図が選択されている場合、選択されるシステム意図に従ってマスターボット自体によって1つまたは複数のアクションが実行される。
【0062】
図2は、ある態様によるマスターボット(MB)システム200の簡略化されるブロック図である。MBシステム200は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアの組み合わせで実装できる。MBシステム200は、前処理サブシステム210、マルチ意図サブシステム(MIS)220、明示的呼び出しサブシステム(EIS)230、スキルボット呼び出し部240、およびデータストア250を含む。図2に示されるMBシステム200は、マスターボット内の構成要素の配置の一例にすぎない。当業者であれば、多くの可能な変形例、代替例、および修正例を認識するであろう。例えば、いくつかの実装では、MBシステム200は、図2に示されるものよりも多いまたは少ないシステムまたは構成要素を有してもよく、2つ以上のサブシステムを組み合わせてもよく、またはサブシステムの異なる構成または配置を有してもよい。
【0063】
前処理サブシステム210は、ユーザからの発話「A」202を受信し、言語検出器212および言語パーサ214を介して発話を処理する。上で示したように、発話は音声やテキストなどのさまざまな方法で提供できる。発話202は、文の断片、完全な文、複数の文などであり得る。発話202には句読点を含めることができる。例えば、発話202が音声として提供される場合、前処理サブシステム210は、結果として得られるテキストに句読点(例えば、カンマ、セミコロン、ピリオドなど)を挿入する音声テキストコンバータ(図示せず)を使用して音声をテキストに変換することができる。
【0064】
言語検出器212は、発話202のテキストに基づいて発話202の言語を検出する。各言語は独自の文法および意味論を有するため、発話202が処理される方法は言語に依存する。発話の構文と構造を分析する際には、言語間の違いが考慮される。
【0065】
言語パーサ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に提供される。前処理システム210には、ある発話202またはその一部を認識するために使用できる名前付きエンティティ認識装置216が含まれ得る。
【0066】
上で示したように、発話202は複数の文を含むことができる。複数の意図と明示的な呼び出しを検出する目的で、発話202は、複数の文が含まれている場合でも単一の単位として扱うことができる。しかし、ある態様では、例えば前処理サブシステム210によって前処理を実行して、複数の意図分析および明示的呼び出し分析のために複数の文の中から単一の文を識別することができる。一般に、MIS220およびEIS230によって生成される結果は、発話202が個々の文のレベルで処理されるか、または複数の文を含む単一の単位として処理されるかに関係なく、実質的に同じである。
【0067】
MIS220は、発話202が複数の意図を表すかどうかを決定する。MIS220は発話202内の複数の意図の存在を検出できるが、MIS220によって実行される処理には、発話202の意図がボット用に構成される任意の意図と一致するかどうかを決定することは含まれない。代わりに、発話202の意図がボットの意図と一致するかどうかを決定するための処理は、MBシステム200の意図分類器242によって、またはスキルボットの意図分類器によって実行され得る(例えば、図3の実施形態に示されるように)。MIS220によって実行される処理では、発話202を処理できるボット(例えば、特定のスキルボットまたはマスターボット自体)が存在することを仮定している。したがって、MIS220によって実行される処理では、チャボットシステム内のボットに関する知識(例えば、マスターボットに登録されているスキルボットのID)や、特定のボットに対して構成されている意図に関する知識は必要ない。
【0068】
発話202が複数の意図を含むことを決定するために、MIS220は、データストア250内のルールセット252から1つまたは複数のルールを適用する。発話202に適用されるルールは、発話202の言語に依存し、複数の意図の存在を示す文パターンを含み得る。例えば、文パターンは、文の2つの部分(例えば接続詞)を結合する等位接続詞を含むことができ、両方の部分は別個の意図に対応する。発話202が文パターンと一致する場合、発話202は複数の意図を表していると推測できる。複数の意図を含む発話は、必ずしも異なる意図を持っているわけではないことに留意されたい(例えば、異なるボットに向けられる意図、または同じボット内の異なる意図に向けられる意図)。代わりに、発話には同じ意図の個別のインスタンスが含まれ得る。例えば、「支払い口座Xを使用してピザを注文し、次に支払い口座Yを使用してピザを注文する」などである。
【0069】
発話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に送信することができる。
【0070】
EIS230は、受信した発話(例えば、発話206または発話208)がスキルボットの呼び出し名を含むかどうかを決定する。ある態様では、チャボットシステム内の各スキルボットには、そのスキルボットをチャボットシステム内の他のスキルボットから区別する固有の呼び出し名が割り当てられる。呼び出し名のリストは、データストア250内のスキルボット情報254の一部として維持することができる。発話に呼び出し名と一致する単語が含まれている場合、その発話は明示的な呼び出しであるとみなされる。ボットが明示的に呼び出されない場合、EIS230によって受信される発話は、非明示的に呼び出している発話234とみなされ、マスターボットの意図分類器(例えば、意図分類器242)に入力されて、発話を処理するためにどのボットを使用するかを決定する。場合によっては、意図分類器242は、マスターボットが非明示的に呼び出す発話を処理すべきであると決定することになる。他の例では、意図分類器242は、発話を処理のためにルーティングするスキルボットを決定する。
【0071】
EIS230によって提供される明示的呼び出し機能には、いくつかの利点がある。マスターボットが実行する必要がある処理の量を削減できる。例えば、明示的な呼び出しがある場合、マスターボットは、意図分類分析(例えば、意図分類器242を使用)を行う必要がない場合もあり、スキルボットを選択するために縮小される意図分類分析を行う必要がある場合もある。したがって、明示的呼び出し分析により、意図分類分析に頼ることなく、特定のスキルボットの選択が可能になる場合がある。
【0072】
また、複数のスキルボット間で機能が重複する状況もあり得る。これは、例えば2つのスキルボットによって処理される意図が重複している場合、または互いに非常に近い場合に発生し得る。このような状況では、マスターボットが意図分類分析のみに基づいて複数のスキルボットのうちどれを選択するかを識別することが困難な場合がある。このようなシナリオでは、明示的な呼び出しにより、使用される特定のスキルボットが明確になる。
【0073】
発話が明示的な呼び出しであることを決定することに加えて、EIS230は、発話のいずれかの部分が、明示的に呼び出されるスキルボットへの入力として使用されるべきかどうかを決定する役割を担う。特に、EIS230は、発話の一部が呼び出しに関連していないかどうかを決定することができる。EIS230は、発話の分析および/または抽出される情報205の分析を通じてこの決定を実行することができる。EIS230は、EIS230が受信した発話全体を送信する代わりに、呼び出しに関連付けられていない発話の一部を、呼び出されるスキルボットに送信できる。場合によっては、呼び出されるスキルボットへの入力は、呼び出しに関連付けられる発話の一部を削除するだけで形成される。例えば、「ピザボットを使用してピザを注文したい」は、「ピザボットの使用」はピザボットの呼び出しには関連するが、ピザボットによって実行される処理とは無関係であるため、「ピザを注文したいである」と短縮できる。場合によっては、EIS230は、例えば完全な文を形成するために、呼び出されるボットに送信される部分を再フォーマットしてもよい。したがって、EIS230は、明示的な呼び出しがあることを決定するだけでなく、明示的な呼び出しがあった場合にスキルボットに何を送信するかも決定する。場合によっては、呼び出されるボットに入力するテキストがない場合がある。例えば、発話が「ピザボット」であった場合、EIS230は、ピザボットが呼び出されていると決定することができるが、ピザボットによって処理されるテキストが存在しない。このようなシナリオでは、EIS230は、送信するものが何もないことをスキルボット呼び出し部240に示すことができる。
【0074】
スキルボット呼び出し部240は、さまざまな方法でスキルボットを呼び出す。例えば、スキルボット呼び出し部240は、明示的な呼び出しの結果として特定のスキルボットが選択されるという指示235の受信に応答して、ボットを呼び出すことができる。指示235は、明示的に呼び出されるスキルボットの入力とともにEIS230によって送信できる。このシナリオでは、スキルボット呼び出し部240は、会話の制御を明示的に呼び出されるスキルボットに引き渡す。明示的に呼び出されるスキルボットは、EIS230からの入力をスタンドアロンの発話として扱うことによって、入力に対する適切な応答を決定する。例えば、応答は、特定のアクションを実行すること、または特定の状態で新しい会話を開始することなどであり得、新しい会話の初期状態はEIS230から送信される入力に依存する。
【0075】
スキルボット呼び出し部240がスキルボットを呼び出すことができる別の方法は、意図分類子242を使用する暗黙的呼び出しを介することである。意図分類器242は、機械学習および/またはルールベースのトレーニング技術を使用してトレーニングされ、発話が特定のスキルボットが実行するように構成されるタスクを表す可能性を決定することができる。意図分類器242は、スキルボットごとに1つのクラス、異なるクラスでトレーニングされる。例えば、新しいスキルボットがマスターボットに登録されるたびに、新しいスキルボットに関連付けられる発話例のリストを使用して、意図分類器242をトレーニングして、特定の発話が新しいスキルボットが実行できるタスクを表す可能性を決定することができる。このトレーニングの結果として生成されるパラメータ(例えば、機械学習モデルのパラメータの値のセット)は、スキルボット情報254の一部として記憶することができる。
【0076】
ある態様では、意図分類器242は、本明細書でさらに詳細に説明するように、機械学習モデルを使用して実装される。機械学習モデルのトレーニングは、さまざまなスキルボットに関連付けられる発話例から発話の少なくともサブセットを入力して、機械学習モデルの出力として、どのボットが特定のトレーニング発話を処理するための正しいボットであるかについての推論を生成することを含んでもよい。各トレーニング発話について、トレーニング発話に使用する正しいボットの指示がグラウンドトゥルース情報として提供され得る。機械学習モデルの動作は、次いで、生成される推論とグランドトゥルース情報の間の差異を最小限に抑えるために(例えば、逆伝播を通じて)適応させることができる。
【0077】
ある態様では、意図分類器242は、マスターボットに登録されるスキルボットごとに、スキルボットが発話(例えば、EIS230から受信した非明示的に呼び出す発話234)を処理できる可能性を示す信頼スコアを決定する。意図分類器242はまた、構成される各システムレベルの意図(例えば、ヘルプ、終了)の信頼スコアを決定することもできる。特定の信頼スコアが1つまたは複数の条件を満たす場合、スキルボット呼び出し部240は、特定の信頼スコアに関連付けられるボットを呼び出す。例えば、信頼スコアの閾値を満たす必要がある場合がある。したがって、意図分類器242の出力245は、システム意図の識別または特定のスキルボットの識別のいずれかである。いくつかの態様では、信頼スコア閾値を満たすことに加えて、信頼スコアは、次に高い信頼スコアを一定の勝率だけ超えなければならない。このような条件を課すと、複数のスキルボットの信頼スコアが各々信頼スコア閾値を超えた場合に、特定のスキルボットにルーティングできるようになる。
【0078】
信頼スコアの評価に基づいてボットを識別した後、スキルボット呼び出し部240は、識別されるボットに処理を引き渡す。システム意図の場合、識別されるボットがマスターボットになる。それ以外の場合、識別されるボットはスキルボットである。さらに、スキルボット呼び出し部240は、識別されるボットに対する入力247として何を提供するかを決定する。上で示したように、明示的な呼び出しの場合、入力247は、呼び出しに関連付けられていない発話の一部に基づくか、または入力247が何もない(例えば、空の文字列)場合がある。暗黙的な呼び出しの場合、入力247は発話全体になる可能性がある。
【0079】
データストア250は、マスターボットシステム200のさまざまなサブシステムによって使用されるデータを記憶する1つまたは複数のコンピューティング装置を備える。上で説明したように、データストア250は、ルール252およびスキルボット情報254を含む。ルール252は、例えば、発話が複数の意図を表すとき、および複数の意図を表す発話をどのように分割するかをMIS220によって決定するためのルールを含む。ルール252はさらに、スキルボットを明示的に呼び出す発話のどの部分をスキルボットに送信するかをEIS230によって決定するためのルールを含む。スキルボット情報254は、チャボットシステムにおけるスキルボットの呼び出し名、例えば、特定のマスターボットに登録されているすべてのスキルボットの呼び出し名のリストを含む。スキルボット情報254は、チャボットシステム内の各スキルボットの信頼スコアを決定するために意図分類器242によって使用される情報、例えば機械学習モデルのパラメータを含むこともできる。
【0080】
図3は、ある態様によるスキルボットシステム300の簡略化されるブロック図である。スキルボットシステム300は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアの組み合わせで実装できるコンピューティングシステムである。図1に示される実施形態などのある態様では、スキルボットシステム300を使用して、デジタルアシスタント内に1つまたは複数のスキルボットを実装することができる。
【0081】
スキルボットシステム300は、MIS310、意図分類器320、および会話マネージャ330を含む。MIS310は、図2のMIS220に類似しており、データストア350内のルール352を使用して以下を決定するように動作可能であることを含む同様の機能を提供する。(1)発話が複数の意図を表しているかどうか、またそうであれば、(2)複数の意図の意図ごとに発話を別の発話に分割する方法。ある態様では、複数の意図を検出し、発話を分割するためにMIS310によって適用されるルールは、MIS220によって適用されるルールと同じである。MIS310は発話302と抽出される情報304を受信する。抽出される情報304は、図1の抽出される情報205に類似しており、言語パーサ214またはスキルボットシステム300にローカルな言語パーサを使用して生成することができる。
【0082】
意図分類器320は、図2の実施形態に関連して上述し、本明細書でさらに詳細に説明した意図分類器242と同様の方法でトレーニングすることができる。例えば、ある態様では、意図分類器320は、機械学習モデルを使用して実装される。意図分類器320の機械学習モデルは、特定のスキルボットに関連付けられる発話例の少なくともサブセットをトレーニング発話として使用して、特定のスキルボット用にトレーニングされる。各トレーニング発話のグラウンドトゥルースは、トレーニング発話に関連付けられる特定のボットの意図になる。
【0083】
発話302は、ユーザから直接受信することも、マスターボットを介して提供することもできる。例えば、図2に示される実施形態におけるMIS220およびEIS230を介した処理の結果として、発話302がマスターボットを介して供給される場合、MIS220によってすでに実行される処理の繰り返しを避けるために、MIS310をバイパスすることができる。しかし、発話302が、例えば、スキルボットへのルーティング後に生じる会話中に、ユーザから直接受信される場合、MIS310は、発話302を処理して、発話302が複数の意図を表すかどうかを決定することができる。そうである場合、MIS310は1つまたは複数のルールを適用して、発話302を意図ごとに個別の発話、例えば発話「D」306と発話「E」308に分割する。発話302が複数の意図を表さない場合、MIS310は、発話302を分割することなく、意図分類のために発話302を意図分類器320に転送する。
【0084】
意図分類器320は、受信した発話(例えば、発話306または308)をスキルボットシステム300に関連付けられる意図と一致するように構成されている。上で説明したように、スキルボットは1つまたは複数の意図で構成でき、各意図には、その意図に関連付けられ、分類器のトレーニングに使用される少なくとも1つの発話例が含まれる。図2の実施形態では、マスターボットシステム200の意図分類器242は、個々のスキルボットの信頼スコアおよびシステム意図に対する信頼スコアを決定するようにトレーニングされる。同様に、意図分類器320は、スキルボットシステム300に関連付けられる各意図の信頼スコアを決定するようにトレーニングすることができる。意図分類器242によって実行される分類はボットレベルであるのに対し、意図分類器320によって実行される分類は意図レベルであり、したがってより粒度が細かい。意図分類器320は、意図情報354にアクセスできる。意図情報354は、スキルボットシステム300に関連付けられる意図ごとに、その意図の意味を表し図示し、通常、その意図によって実行可能なタスクに関連付けられる発話のリストを含む。意図情報354は、この発話リストに関するトレーニングの結果として生成されるパラメータをさらに含むことができる。
【0085】
会話マネージャ330は、意図分類器320の出力として、意図分類器320に入力される発話に最もよく一致するものとして意図分類器320によって識別される特定の意図の指示322を受信する。場合によっては、意図分類器320は一致を決定できないことがある。例えば、発話がシステム意図または異なるスキルボットの意図に向けられている場合、意図分類器320によって計算される信頼スコアは信頼スコア閾値を下回る可能性がある。これが発生すると、スキルボットシステム300は、処理のために、例えば、別のスキルボットにルーティングするために、発話をマスターボットに参照することができる。しかし、意図分類器320がスキルボット内の意図を識別することに成功した場合、会話マネージャ330はユーザとの会話を開始することになる。
【0086】
会話マネージャ330によって開始される会話は、意図分類器320によって識別される意図に固有の会話である。例えば、会話マネージャ330は、識別される意図に対するダイアログフローを実行するように構成される状態機械を使用して実装され得る。状態機械には、デフォルトの開始状態(例えば、追加の入力なしで意図が呼び出される場合)と1つまたは複数の追加の状態を含めることができ、各状態には、スキルボットによって実行されるアクション(例えば、購入トランザクションの実行)および/またはユーザに提示されるダイアログ(例えば、質問、応答)が関連付けられている。したがって、会話マネージャ330は、意図を識別する指示322を受信するとアクション/ダイアログ335を決定することができ、会話中に受信した後続の発話に応じて追加のアクションまたはダイアログを決定することができる。
【0087】
データストア350は、スキルボットシステム300のさまざまなサブシステムによって使用されるデータを記憶する1つまたは複数のコンピューティング装置を備える。図3に示すように、データストア350は、ルール352および意図情報354を含む。ある態様では、データストア350は、マスターボットまたはデジタルアシスタントのデータストア、例えば図2のデータストア250に統合することができる。
【0088】
チャボットは、名前付きエンティティ認識(NER)のタスクを実行できる。NERは、固有名詞エンティティを構成するテキストの範囲を見つけ、エンティティのタイプをタグ付けするタスクを指す場合がある。人物、場所、組織、および地政学的エンティティの4つが、よく使われる名前付きエンティティである。しかし、「名前付きエンティティ」という用語は、日付、時刻、数値、通貨などを指す場合がある。以下は、NERシステムの出力例である。
[人デビッド・スミス]は、[日付9月12日]に[場所ニューヨーク]における[販売者パームコートレストラン]において[通貨95ドル]を支払った。
【0089】
NERは、相対的な意味と感情を理解するためにテキスト分析を必要とする重要なNLPタスクである。例えば、「シドニー」のような名前付きエンティティが場所、人、大学の名前であるかどうかを知ることは、多くの自然言語理解タスクにとって重要である。NERの恩恵を受ける重要なタスクのいくつかを以下に説明する。質問応答では、NERを使用して回答を構成するテキストの範囲を識別できる。例えば、上記の例に基づくと、次の質問の回答は「95ドル」になる。デビッド・スミスさんはレストランにおいていくら支払ったか?態様ベースの感情分析では、NERはエンティティに対する顧客の感情を知るための最初のステップとしてエンティティを識別できる。例えば、次の例文では、「ニコンのカメラ」と「キヤノンのカメラ」というエンティティについて肯定的な意見と否定的な意見の両方が存在し得る。
【0090】
ニコンのカメラは素晴らしい。キヤノンのカメラよりも優れている。
NERは、デジタルアシスタントで使用される技術の1つである。NERはデジタルアシスタントで使用して、ユーザの単語をPER(PERSONの略称であり得る)、DATE、TIMEなどの定義済みカテゴリに検索して分類することができる。これらのタイプの情報は、デジタルアシスタントがユーザの要求を処理するために使用できる。例えば、次の文から経費報告書を生成するために、デジタルアシスタントはNERモデルを使用して、SFO、10ドル、5月21日をMER(MERCHANTの略称であり得る)、CUR(CURRENCYでの略称であり得る)、DATEエンティティとして識別できる。LOCは、LOCATIONの略称であるカテゴリ識別子である。
【0091】
MERSFO]は[日付5月21日]に駐車料金として[CUR10ドル]を請求した。
【0092】
NERは、セグメンテーションとタイプ曖昧さによって引き起こされる困難さのため、簡単なタスクではない。セグメンテーションの曖昧さは、文中のエンティティとその境界を見つけることの複雑さから生じる。例えば、文中の複数の単語が1つのエンティティを表す場合がある。以下に示すように、「New York Times」は3つの単語で構成される単一のエンティティ(MERタグ付き)である。
【0093】
MERNew York Times]の今年の取引額を20ドルに変更する。
さらに、同じ単語が複数のエンティティタイプを指す場合があり、NERはコンテキストに応じてこのタイプの曖昧さを解決する必要がある。例えば、「シドニー」は次の文の中の人物または場所を指すことができる。
【0094】
月曜日の午後遅く、[PERシドニー]からテキストメッセージが届いた。
LOCシドニー]で最高の景色である。
【0095】
分類器を理解することは、NERアルゴリズムがどのように機能するかを理解する上で役立ち得る。分類器は、入力のセットを与えられる場合に、事前に定義される有限のカテゴリセットの中からクラスまたはラベルを決定する機能を学習するシステムであり得る。テキスト分類器の一般的な例として、感情分析を使用すると、文章(例えば、製品のレビュー)で表現される意見の感情と方向性を、肯定的、否定的、または中立的として識別できる。
【0096】
比較すると、シーケンスラベル付けは、テキスト内のすべての単語を分類(すなわち、ラベルを割り当てる)し、シーケンスラベル付けタスクとしてのNERは、単語のサブシーケンスを識別してラベル付けすることを含むことができる。これを行うには、Begins、Inside、Outside(BIO)ラベルスキームは、シーケンスラベラーを使用してサブシーケンスを識別する方法であり得る。ラベルは、名前付きエンティティの境界とタイプの両方を保持(capture)する。この技術では、対象範囲を開始するトークンにはラベルBをタグ付けし得、範囲内に出現するトークンにはラベルIをタグ付けし、対象範囲外にあるトークンにはラベルOをタグ付けする。Oタグは1つだけの場合もあるが、名前付きエンティティクラスごとに異なるBタグとIタグが存在し得る(例えば、I-DATEとI-MER)。次の例は、BIO符号化が同じタイプの2つの隣接する名前付きエンティティ(つまり、[MERPlaza Hotel’s]と[MERパームコートレストラン])間の境界を定義する方法を示している。表1は発話の分類例を示している。
【0097】
【表1】
【0098】
インテリジェントアシスタントNERには、以下の最先端技術を組み込むことができる。
【0099】
深層学習とは、異なるレベルのデータ表現を自動的に学習する複数の処理層で構成されるニューラルネットワークを指す。各層は、入力データを少し抽象的で複雑な表現に変換することを学習する。これにより、特徴の学習が可能になり、手作業で作成される豊富な特徴が不要になる。このため、深層ニューラルネットワークは、十分なデータを提供する複雑な問題を解決するのに適したツールとなり得る。深層学習は、大規模なデータセット内の複雑な構造を発見し、入力に長距離情報を統合することで、NERタスクを含む自然言語処理の最先端技術を大幅に向上させた。
【0100】
事前トレーニングとは、ウィキペディアやコモン・クロール(ウェブをクロールして自由に提供されるデータのオープンリポジトリ)などの大規模な外部データセットでネットワークをトレーニングするプロセスを指す。事前トレーニングの背後にある直感は、ネットワークが十分に大規模で一般的なデータセットでトレーニングされると、テキスト世界の汎用モデルとして効果的に機能するということである。事前トレーニングされたネットワークを使用すると、1つの問題(例えば、言語モデリング)を解決する際に得られる知識を活用して、ゼロから始めることなく(転移学習とも呼ばれる)、異なるが関連する問題(例えば、テキスト分類)を解決するための新しいネットワークのバックボーンを初期化できる。
【0101】
シーケンスラベル付けモデル(例えば、NER)は、隣接するラベル間の不一致につながり得る。例えば、次の文では、モデルは「シドニー」をB-PERとしてラベル付けし、「ハーバー」をI-LOCとしてラベル付けしているが、ラベル境界はIタグで始まることができないため、これは有効なシーケンスではない。したがって、正しいシーケンスはB-LOCとI-LOCになる。このため、隣接するラベルが一貫していることを強制するために条件付きランダムフィールド(CRF)が使用される。表3は、文の一部のラベル付けの例を示している。
【0102】
【表2】
【0103】
そのために、CRFはトレーニング中にタグ-タグの重みを学習し、それらのシーケンスに非常に負の重み(例えば、次の表3のX値)を割り当てることによって、不可能なBIOタグシーケンスの生成を回避する。
【0104】
【表3】
【0105】
多数のパラメータを持つ深層学習モデルは、トレーニングデータに過剰適合しやすくなり得る。これにより、モデルがトレーニングデータ内のノイズを学習するようになり、新しいデータでモデルを評価するときに性能が低下する。ドロップアウトは、この問題に対処するための計算コストが低く、非常に効果的な技術であり得る。重要なアイデアは、装置が過度に共適応(つまり、過剰適合)することを防ぐために、トレーニング中にモデルから一部の層出力装置をランダムに無視または削除することである。
【0106】
深層学習モデルでは、さまざまなデータパターンを適切に一般化するために、さまざまな制約と能力が必要である。これらの制約は、モデルが問題を最適に解決できるように調整する必要があるハイパーパラメータと呼ばれるいくつかの尺度によって制御される。ハイパーパラメータの調整とは、学習アルゴリズムに最適なハイパーパラメータのセットを見つけるプロセスを指す。
【0107】
開示されるNERシステムには、いくつかのモデルの改善、トレーニングの改善、およびデータの改善が含まれ得る。
【0108】
モデルの改善のために、開示されるNERシステムは、コンテキストと地名辞典の機能を組み合わせることができる。開示されるNERモデルは、コンテキスト機能と地名辞典機能を組み合わせたハイブリッドモデルになり得る。新しい方法では、コンテキスト機能と地名辞典と呼ばれる外部知識リソースを組み合わせて、モデルの性能を向上させる。地名辞典は、組織、国、都市、人名などの名前付きエンティティのリストであり得、非構造化テキストと照合されてモデルに追加機能を提供する。例えば:
【0109】
【表4】
【0110】
外部知識を活用することで、開示されるNERモデルは、収集に非常に費用がかかり、労力がかかり得る注釈付きデータへの依存度が低くなる。
【0111】
開示されるNERシステムは、小さなトレーニングデータセット上の固定CRFタグ-タグ遷移を含むことができる。大規模なトレーニングデータセットでは、CRFはOI-LOCI-PERのような一貫性のないタグペアがトレーニングデータに出現しないことを学習し、そのためこれらのタグ間の遷移に非常に負の重みを割り当てる。しかし、トレーニングデータセットが小さい場合、CRFはこれらの一貫性のないタグ間遷移を生成するモデルを学習することがある。したがって、開示されるNERシステムは、一貫性のない遷移の重みを非常に負の値に設定してトレーニング後に対応する重みを変更することにより、CRFが一貫性のないタグ間遷移を見つけるのを阻止する新しい技術を導入できる。この技術により、トレーニングデータが少ない場合でも一貫したタグ間遷移が生成されるようになる。
【0112】
トレーニングを改善するために、開示されるNERシステムは選択的ドロップアウトを含むことができる。選択的ドロップアウトと呼ばれる新しい技術では、非エンティティトークンと比較して、エンティティトークンに高いドロップアウトレートを適用できる。これにより、モデルはトレーニング中にコンテキスト情報に重点を置くことができ、エンティティタイプごとに異なる値に対してモデルの信頼度と堅牢性が向上する。例:(青い部分はエンティティ値である。)
トレーニング例:私の普通預金口座に100ドルを振り込んでください。
【0113】
テスト例:私の銀行口座に250ポンドを振り込んでいただけるか?
開示されるNERシステムは、広範なハイパーパラメータ調整を含むことができる。ハイパー調整フレームワークは、幅広い範囲の値をカバーできる。これにより、開示されるNERシステムは、広範囲にわたるハイパーパラメータの調整を実行し、高品質の結果を達成するための最適なハイパーパラメータの選択を識別できるようになる。
【0114】
開示されるNERシステムは、データの改善を含むことができる。データの改善の1つとして、重複チャンク機構が含まれ得る。既存の最先端モデルの制限は、メモリと計算要件が入力シーケンスの長さの2乗で増加することである。一般的に利用可能なハードウェアの制限を考慮すると、現在の事前トレーニングされた言語モデルは最大512個のトークンの入力シーケンスしか処理できない。この制限を緩和するために、開示されるシステムは、長いテキストを重複チャンクに分割する機構を使用することができ、各チャンクとそれに対応するラベルは、トレーニング時に個別の例として扱われる。評価/推論のために、同じ入力テキストのチャンクからの予測を統合する必要がある。この機構により、モデルはより大きなシーケンスを処理できるようになり、高い性能を維持しながらトレーニングと推論の時間を大幅に短縮できる。
【0115】
図4は、事前トレーニングされた言語モデル用の長いテキストを処理するシステム400を示す。長さ決定エンジン410は発話402を受信することができる。長さ決定エンジンは、長さがトークンの所定の閾値を超えているかどうかを決定できる。トークンは単語、単語の一部、または句読点になり得る。
【0116】
長さがトークンピースの所定の閾値を超える場合、チャンク化エンジン420は発話を複数の重複チャンクに分割することができる。例えば、チャンク化エンジン420は、発話402をチャンクA422、チャンクB424、およびチャンクC426に分割できる。3つのチャンクが図示されているが、開示される技術はこれに限定されず、任意の数のチャンクに適用可能である。例えば、処理システムの機能に応じて、わずか2つのチャンクを処理できる。
【0117】
名前付きエンティティ認識装置430は、各チャンクの分類器またはラベルを決定することができる。例えば、名前付きエンティティ認識装置430は、チャンクA422に対してラベルA432を決定し、チャンクB424に対してラベルB434を決定し、チャンクC426に対してラベルC436を決定できる。上で説明したように、名前付きエンティティ認識装置430は、チャンク内の各トークンにラベルを割り当てることができる。名前付きエンティティ認識装置は、複数のチャンクの各チャンクにラベルを割り当てることもできる。スコアエンジン440は、チャンクA422のラベルA432、チャンクB424のラベルB434、およびチャンクC426のラベルC436を受信できる。各ラベルにはチャンクスコアを付加できる。スコアエンジン440は、第1のチャンクからの信頼スコアと第2のチャンクからの信頼スコアの2つの信頼スコアを統合することによって、トークンピースの重複チャンクの各チャンクの最終ラベルおよび関連する信頼スコアを計算できる。スコアエンジン440は、少なくとも2つの信頼スコアの統合に基づいて、発話のセットの最終的な注釈付きラベルを決定できる。スコアエンジン440は、最終的な注釈付きスコア442をメモリに記憶できる。
【0118】
図5は、例示的な発話502を複数のチャンクに変換することを示している。例示的な発話502は複数のチャンクに分割することができ、各チャンクは一定数の単語である。図5に示すように、例示的な発話502は、いくつかの単語を含む所定の長さのセグメントに分割できる。いくつかの態様では、所定の長さは32語になり得る。一例として、発話502はチャンクA504に分割することができ、チャンクA504には、10トークンの例示的なチャンクサイズに対してインデックス1から10までを含めることができる。チャンクBには、10トークンの例示的なチャンクサイズに対して、インデックス6から15を含めることができる。図4に示すように、名前付きエンティティ認識装置430は、より小さなチャンクをより効率的に処理できる。例えば、エンティティ認識装置430が10語のセグメントを処理する方が、例示的な発話502全体を処理するよりも高速になる。
【0119】
名前付きエンティティ認識装置430は発話502を分析し、各トークンのタグまたはラベルを決定することができる。例えば、発話502の第1のトークン(インデックス1)は単語「My」であり、名前付きエンティティ認識装置430は、そのトークンに「O」のタグを割り当てることができる。これは、そのトークンが対象範囲外であることを意味する。同様に、名前付きエンティティ認識装置430は、「name」、「is」、「living」、「in」、「and」、「working」、「for」というトークンに「O」のタグを割り当てることができる。名前付きエンティティ認識装置430は、インデックス4のトークン「デイビス」に、人の名前の始まりを意味する「B-PER」のタグを割り当てることができる。名前付きエンティティ認識装置430は、インデックス8のトークン「ブリスベン」に、場所の始まりを意味する「B-LOC」のタグを割り当てることができる。名前付きエンティティ認識装置430は、インデックス10のトークン「オーストラリア」に、場所の始まりを意味する「B-LOC」のタグを割り当てることができる。名前付きエンティティ認識装置430は、インデックス14のトークン「オラクル」に、組織の始まりを意味する「B-ORG」のタグを割り当てることができる。名前付きエンティティ認識装置430は、インデックス15のトークン「コープ」に組織名の範囲内のタグを割り当てることができる。
【0120】
一例として、図5は、チャンクサイズが10トークンで、重複サイズが5チャンクであることを示す。例えば、第1の重複部分508は、チャンクA504の後半部分を含むことができる。第2の重複部分510には、チャンクB506の前半を含めることができる。
【0121】
図5は、チャンクからの予測を統合する技術をさらに示す。例えば、名前付きエンティティ認識装置430は、チャンクAの分析中にインデックス8で「ブリスベン」を適切にラベル付けできるが、インデックス10で「オーストラリア」を見逃す。チャンクBの分析中に、名前付きエンティティ認識装置430はインデックス10の「オーストラリア」を適切にラベル付けできたが、インデックス8の「ブリスベン」を見逃した。チャンクAとチャンクBからの分析の出力が統合されるが、「ブリスベン」と「オーストラリア」が適切にラベル付けされる。
【0122】
図6は予測を統合する技術を示す。図4に示すスコアエンジン440は、名前付きエンティティ認識装置430からの各ラベルの信頼スコアを決定できる。例えば、スコアエンジン440は、インデックス6、7、8、および9の信頼スコアを決定できる。信頼スコアは、割り当てられるラベルの信頼度が0.9であり、ラベルが正しいという信頼度が90%であることを示す。チャンクAのインデックス10の場合、スコアエンジン440は、割り当てられるラベル「O」の信頼スコアを0.5と決定でき、ラベルが正しいという信頼度が50%であることを示す。
【0123】
チャンクBの場合、スコアエンジン440は、インデックス6、7、9、および10の信頼スコアを決定でき、信頼スコアは、割り当てられるラベルの信頼度が0.9であり、ラベルが正しいという信頼度が90%であることを示す。チャンクBのインデックス8の場合、スコアエンジン440は、割り当てられるレベル「O」の信頼スコアを0.5と決定でき、ラベルが正しいという信頼度が50%であることを示す。
【0124】
統合される出力には、いくつかの結果が考えられる。例えば、出力戦略には「半分」、「第1」、「第2」、「最大」が含まれ得る。「半分」戦略の場合、スコアエンジン440は、第1のチャンクからの1/2予測と、第2のチャンクからの1/2予測を使用できる。「第1の」戦略では、スコアエンジン440は第1のチャンクからの予測を使用できる。「第2の」戦略では、スコアエンジン440は第2のチャンクからの予測を使用できる。「最大」戦略の場合、スコアエンジン440は最大信頼スコアに基づいて予測を決定できる。
【0125】
図6に示すように、「ブリスベン」のインデックス8のラベルと「オーストラリア」のラベルインデックス10のラベルは両方とも正確であるため、「半分」戦略は正確な結果を提供することができる。「第1の」戦略では、「ブリスベン」のインデックス8のラベルを正しく識別するが、「オーストラリア」のトークンピースのラベルを誤って識別する。「第2の」戦略では、インデックス8の「ブリスベン」のラベルを誤って識別するが、「オーストラリア」のトークンピースには正しくラベルを付ける。「ブリスベン」のインデックス8のラベルと「オーストラリア」のラベルインデックス10のラベルは両方とも正確であるため、「Max」戦略は正確な結果を提供できる。
【0126】
いくつかの態様では、所定の長さは32個のトークンピースであってもよい。図6に示すように、各チャンクは複数の要素に分割できる。例えば、各チャンクはチャンク間の重複(lと省略可能)を提供できる。チャンク間の重複の量は事前に決定できる。例えば、32個のトークンピースのチャンクの場合、重複は16個のトークンピース(サブワード)になり得る。
【0127】
図7は、事前トレーニングされた言語モデル用の長いテキストを処理するためのシステムおよび技術に関連する例示的なプロセス700のフローチャートである。いくつかの実装では、図7の1つまたは複数のプロセスブロックは、コンピューティング装置(例えば、コンピューティング装置1000)によって実行され得る。いくつかの実装では、図7の1つまたは複数のプロセスブロックは、別の装置、またはコンピューティング装置とは別の、またはコンピューティング装置を含む装置グループによって実行され得る。さらに、または代わりに、図7の1つまたは複数のプロセスブロックは、処理サブシステム1004、記憶サブシステム1018、I/Oサブシステム1008、通信サブシステム1024、および/またはバスサブシステム1002などの装置1000の1つまたは複数の構成要素によって実行され得る。
【0128】
図7に示すように、プロセス700は、データ処理システムで発話のセットを受信し、名前付きエンティティ認識装置を使用してトレーニングまたはインターフェースして、発話のセットからの各トークンピースにラベルを割り当てること(ブロック710)を含むことができる。例えば、コンピューティング装置は、データ処理システムで発話のセットを受信し、名前付きエンティティ認識装置を使用してトレーニングまたはインターフェースして、上記のように、発話のセットから各トークンピースにラベルを割り当てることができる。さまざまな態様において、発話のセットは、キーボードを使用したチャボットを介したユーザ入力を通じて受信できる。さまざまな態様において、発話のセットは、マイクを使用してチャボットを介して聴覚的にユーザから受信できる。システムは、口頭の発話をテキスト入力に変換できる。
【0129】
図7にさらに示すように、プロセス700は、発話のセットの長さを決定すること(ブロック720)を含み得る。例えば、コンピューティング装置は、前述のように、発話のセットの長さを決定できる。プロセス700は、発話を複数のトークンピースに分割することによって、発話のセットの長さを決定できる。トークンピースは、単語、単語の一部、または句読点になり得る。複雑な単語は、1つまたは複数のトークンピースに分解できる。長さは、発話内のトークンピースの数になり得る。
【0130】
図7にさらに示すように、プロセス700は、発話のセットの長さがトークンピースの所定の閾値を超える場合を含み得、発話のセットをトークンピースの複数の重複チャンクに分割すること(ブロック730)を含むことができる。発話の長さを所定の閾値と比較することができる。所定の閾値は必要に応じて変更できる。さまざまな態様において、所定の閾値は512個のトークンピースであり得る。当業者であれば、他の閾値も本開示の範囲内であることを理解するであろう。
【0131】
図7にさらに示すように、プロセス700は、チャンク内の各トークンピースに信頼スコアとともにラベルを割り当てること(ブロック740)を含むことができる。上で説明したように、発話内の各トークンピースにラベルを割り当てることができる。名前付きエンティティ認識装置430は、単語のサブシーケンスを識別してラベル付けすることができる。さまざまな態様で、開始、内部、および外部(BIO)ラベルスキームを使用できる。BIOラベルスキームはサブシーケンスを識別でき、ラベルは名前付きエンティティの境界とタイプの両方を保持(capture)する。この技術では、対象範囲を開始するトークンにはラベルBをタグ付けことができ、範囲内に出現するトークンにはラベルIを、対象範囲外にあるトークンにはラベルOをそれぞれタグ付ける。Oタグは1つしか存在しない場合もあるが、名前付きエンティティクラスごとに異なるBタグとIタグが存在し得る(例えば、I-DATEとI-MERCHANT)。各ラベルには、ラベルが正しいという信頼度を示す信頼スコアを割り当てることができる。
【0132】
図7にさらに示すように、プロセス700は、第1のチャンクからの信頼スコアと第2のチャンクからの信頼スコアの2つの信頼スコアを統合することによって、トークンピースの重複チャンクの各チャンクの最終ラベルおよび関連する信頼スコアを決定することを含むことができる(ブロック750)。
【0133】
図7にさらに示すように、プロセス700は、少なくとも2つの信頼スコアの統合に基づいて、発話のセットの最終的な注釈付きラベルを決定すること(ブロック760)を含み得る。
【0134】
図7にさらに示すように、プロセス700は、最終的な注釈付きラベルをメモリに記憶すること(ブロック770)を含み得る。プロセス700は、最終的な注釈付きラベルを決定するためにいくつかの異なる戦略を利用できる。例えば、出力戦略には「半分」、「第1」、「第2」、「最大」が含まれ得る。「半分」戦略の場合、スコアエンジン440は、第1のチャンクからの1/2予測と、第2のチャンクからの1/2予測を使用できる。「第1の」戦略では、スコアエンジン440は第1のチャンクからの予測を使用できる。「第2の」戦略では、スコアエンジン440は第2のチャンクからの予測を使用できる。「最大」戦略の場合、スコアエンジン440は最大信頼スコアに基づいて予測を決定できる。
【0135】
プロセス700には、以下で説明する単一の実装または実装の任意の組み合わせ、および/または本明細書の他の箇所で説明する1つまたは複数の他のプロセスと関連した実装などの追加の実装が含まれ得る。
【0136】
第1の実装では、各チャンクとそれに対応するラベルのシーケンスは、トレーニング時に別個の例として扱われる。
【0137】
第2の実装では、単独で、または第1の実装と組み合わせて、長さNの発話が、Kがチャンクサイズであり、Lが重複サイズである、「(NL)/(KL)」の重複チャンクに分割される。
【0138】
第3の実装では、単独で、または第1および第2の実装の1つまたは複数と組み合わせて、複数の重複チャンクのうちの第1の選択されるチャンクからの信頼スコアに少なくとも部分的に基づいて、トークンピースの全体のスコアおよび最終的な注釈付きラベルを決定する。
【0139】
第4の実装では、単独で、または第1から第3の実装の1つまたは複数と組み合わせて、トークンピースの全体のスコアの決定は、トークンピースの重複チャンク内のトークンピースの位置に基づいて行われ、全体のスコアは、第1のチャンクがトークンピースの重複チャンクの前半にある場合は第1のチャンクからの第1の信頼スコアであり、第2のチャンクがトークンピースの重複チャンクの後半にある場合は第2のチャンクからの第2の信頼スコアである。
【0140】
第5の実装では、単独で、または第1から第4の実装の1つまたは複数と組み合わせて、全体のスコアの決定は、複数の重複チャンクの最大信頼スコアに基づいて行われる。
【0141】
第6の実装では、単独で、または第1から第5の実装の1つまたは複数と組み合わせて、トークンピースの所定の閾値は512個のトークンピースであり、重複トークンピースの所定の数は128個のトークンピースである。
【0142】
図7はプロセス700の例示的なブロックを示しているが、いくつかの実装では、プロセス700には、図7に示されているものよりも多くのブロック、より少ないブロック、異なるブロック、または異なる配置のブロックが含まれ得る。さらに、または代わりに、プロセス700の2つ以上のブロックを並行して実行することもできる。
【0143】
図8は、実施形態を実装するための分散システム800の簡略化される図を示す。図示の実施形態では、分散システム800には、1つまたは複数の通信ネットワーク810を介してサーバ812に結合される1つまたは複数のクライアントコンピューティング装置802、804、806、および808が含まれる。クライアントコンピューティング装置802、804、806、および808は、1つまたは複数のアプリケーションを実行するように構成できる。
【0144】
さまざまな態様において、サーバ812は、事前トレーニングされた言語モデルの長いテキストを処理する技術を可能にする1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。
【0145】
ある態様では、サーバ812は、非仮想環境および仮想環境を含むことができる他のサービスまたはソフトウェアアプリケーションも提供することができる。いくつかの態様では、これらのサービスは、クライアントコンピューティング装置802、804、806、および/または808のユーザに、サービスとしてのソフトウェア(SaaS)モデルなどの下で、ウェブベースまたはクラウドサービスとして提供され得る。クライアントコンピューティング装置802、804、806、および/または808を動作するユーザは、順に1つまたは複数のクライアントアプリケーションを利用してサーバ812と対話し、これらの構成要素によって提供されるサービスを利用することができる。
【0146】
図8に示される構成では、サーバ812は、サーバ812によって実行される機能を実装する1つまたは複数の構成要素818、820、および822を含み得る。これらの構成要素には、1つまたは複数のプロセッサ、ハードウェア構成要素、またはそれらの組み合わせによって実行できるソフトウェア構成要素が含まれ得る。分散システム800とは異なり得る、さまざまな異なるシステム構成が可能であることを理解されたい。したがって、図8に示される実施形態は、実施形態のシステムを実装するための分散システムの一例であり、限定することを意図したものではない。
【0147】
ユーザは、本開示の教示に従って、事前トレーニングされた言語モデルの長いテキストを処理する技術のために、クライアントコンピューティング装置802、804、806、および/または808を使用することができる。クライアント装置は、クライアント装置のユーザがクライアント装置と対話できるようにするインターフェースを提供することができる。クライアント装置は、このインターフェースを介してユーザに情報を出力することもできる。図8には4つのクライアントコンピューティング装置のみが示されているが、任意の数のクライアントコンピューティング装置がサポートされ得る。
【0148】
クライアント装置には、ポータブルハンドヘルド装置、パーソナルコンピュータやラップトップなどの汎用コンピュータ、ワークステーションコンピュータ、ウェアラブル装置、ゲームシステム、シンクライアント、さまざまなメッセージング装置、センサまたは他の感知装置などのさまざまなタイプのコンピューティングシステムなどが含まれ得る。これらのコンピューティング装置は、さまざまなタイプとバージョンのソフトウェアアプリケーションとオペレーティングシステムを実行し得(例えば、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)アプリケーション)などのさまざまな異なるアプリケーションを実行することができ、さまざまな通信プロトコルを使用することができる。
【0149】
ネットワーク810は、当業者によく知られている任意のタイプのネットワークであり、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、Apple Talk(登録商標)などを含むがこれらに限定されない、さまざまな利用可能なプロトコルのいずれかを使用してデータ通信をサポートできる。単なる例として、ネットワーク810は、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(例えば、電気電子学会(IEEE)1002.11プロトコルスイートのいずれかで動作するネットワーク)、Bluetooth(登録商標)、および/または他の無線プロトコル)、ならびに/またはこれらおよび/もしくは他のネットワークの任意の組み合わせであり得る。
【0150】
サーバ812は、1つまたは複数の汎用コンピュータ、専用サーバコンピュータ(例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な配置および/または組み合わせから構成され得る。サーバ812は、仮想オペレーティングシステムを実行する1つもしくは複数の仮想機械、またはサーバの仮想記憶装置を維持するために仮想化され得る論理記憶装置の1つもしくは複数の柔軟なプールなどの仮想化を伴う他のコンピューティングアーキテクチャを含み得る。さまざまな態様において、サーバ812は、前述の開示で説明される機能を提供する1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。
【0151】
サーバ812のコンピューティングシステムは、上述したもののいずれかを含む1つまたは複数のオペレーティングシステム、ならびに任意の市販のサーバオペレーティングシステムを実行することができる。サーバ812は、さまざまな追加のサーバプリケーションおよび/または中間層アプリケーションのいずれかを実行することもでき、これには、HTTP(ハイパーテキストトランスポートプロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(共通ゲートウェイインターフェース)サーバ、JAVA(登録商標)サーバ、データベースサーバなどが含まれる。例示的なデータベースサーバには、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものが含まれるが、これらに限定されない。
【0152】
いくつかの実装では、サーバ812には、クライアントコンピューティング装置802、804、806、および808のユーザから受信したデータフィードおよび/またはイベント更新を分析および統合するための1つまたは複数のアプリケーションが含まれ得る。例として、データフィードおよび/またはイベント更新には、Twitter(登録商標)フィード、Facebook(登録商標)更新、または1つまたは複数のサードパーティ情報ソースおよび継続的なデータストリームから受信したリアルタイム更新が含まれ得るが、これらに限定されず、これには、センサーデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などに関連するリアルタイムイベントが含まれ得る。サーバ812はまた、クライアントコンピューティング装置802、804、806、および808の1つまたは複数の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つまたは複数のアプリケーションを含み得る。
【0153】
分散システム800には、1つまたは複数のデータリポジトリ814、816も含まれ得る。これらのデータリポジトリは、ある態様ではデータやその他の情報を記憶するために使用され得る。例えば、データリポジトリ814、816の1つまたは複数は、事前トレーニングされた言語モデルの長いテキストを処理するための技術に関する情報(例えば、意図スコア、全体のスコア)を記憶するために使用されてもよい。データリポジトリ814、816は、さまざまな場所に存在することができる。例えば、サーバ812によって使用されるデータリポジトリは、サーバ812に対してローカルであってもよいし、サーバ812からリモートであってもよく、ネットワークベースまたは専用接続を介してサーバ812と通信してもよい。データリポジトリ814、816は異なるタイプであってもよい。ある態様では、サーバ812によって使用されるデータリポジトリは、例えば、Oracle Corporation(登録商標)や他のベンダーによって提供されるデータベースなどのリレーショナルデータベースなどのデータベースである場合がある。これらのデータベースの1つまたは複数は、構造化照会言語(SQL)形式のコマンドに応答して、データベースへのデータの記憶、更新、およびデータベースからのデータの取得を可能にするように適応され得る。
【0154】
ある態様では、データリポジトリ814、816のうちの1つまたは複数は、アプリケーションデータを記憶するためにアプリケーションによって使用されてもよい。アプリケーションによって使用されるデータリポジトリは、例えば、キー/値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムによってサポートされる一般的な記憶リポジトリなど、さまざまなタイプの場合がある。
【0155】
ある態様では、本開示で説明されている事前トレーニングされた言語モデル機能のための長いテキストを処理する技術は、クラウド環境を介したサービスとして提供され得る。図6は、ある態様に従って、さまざまなテキスト処理関連サービスがクラウドサービスとして提供され得るクラウドベースのシステム環境の簡略化されるブロック図である。図6に示す実施形態では、クラウドインフラストラクチャシステム602は、1つまたは複数のクライアントコンピューティング装置604、606、および608を使用するユーザによって要求される可能性のある1つまたは複数のクラウドサービスを提供することができる。クラウドインフラストラクチャシステム602は、サーバ812について上述したものを含むことができる1つまたは複数のコンピュータおよび/またはサーバを備えることができる。クラウドインフラストラクチャシステム602内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、または任意の他の適切な配置および/または組み合わせとして編成され得る。
【0156】
ネットワーク610は、クライアント604、606、および608とクラウドインフラストラクチャシステム602との間のデータの通信および交換を容易にすることができる。ネットワーク610は、1つまたは複数のネットワークを含むことができる。ネットワークは同じタイプであっても、異なるタイプであってもよい。ネットワーク610は、通信を容易にするために、有線および/または無線プロトコルを含む1つまたは複数の通信プロトコルをサポートすることができる。
【0157】
図9に示す実施形態は、クラウドインフラストラクチャシステムの一例にすぎず、限定することを意図したものではない。いくつかの他の態様では、クラウドインフラストラクチャシステム902は、図9に示されるものより多いまたは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の異なる構成または配置を有してもよいことを理解されたい。例えば、図9は3つのクライアントコンピューティング装置を示しているが、代替態様では任意の数のクライアントコンピューティング装置がサポートされ得る。
【0158】
クラウドサービスという用語は、一般的に、サービスプロバイダのシステム(例えば、クラウドインフラストラクチャシステム902)によって、インターネットなどの通信ネットワークを介して、オンデマンドでユーザに提供されるサービスを指すために使用される。通常、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバやシステムは、顧客自身のオンプレミスのサーバやシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。したがって、顧客は、サービス用のライセンス、サポート、またはハードウェアおよびソフトウェアリソースを別途購入することなく、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。例えば、クラウドサービスプロバイダのシステムがアプリケーションをホストでき、ユーザはアプリケーションを実行するためのインフラストラクチャリソースを購入することなく、ネットワーク910(例えば、インターネット)経由でオンデマンドによりアプリケーションを注文して使用できる。クラウドサービスは、アプリケーション、リソース、サービスへの簡単かつスケーラブルなアクセスを提供するように設計されている。いくつかのプロバイダがクラウドサービスを提供している。例えば、ミドルウェアサービス、データベースサービス、Javaクラウドサービスなど、いくつかのクラウドサービスがカリフォルニア州レッドウッドショアーズのOracle Corporation(登録商標)によって提供されている。
【0159】
ある態様では、クラウドインフラストラクチャシステム902は、異なるモデルを使用して1つまたは複数のクラウドサービスを提供することができ、例えば、Software as a Service(SaaS)モデル、Platform as a Service(PaaS)モデル、Infrastructure as a Service(IaaS)モデル、およびハイブリッドサービスモデルを含むその他のモデルなどである。クラウドインフラストラクチャシステム902は、さまざまなクラウドサービスの提供を可能にする一連のアプリケーション、ミドルウェア、データベース、および他のリソースを含むことができる。
【0160】
SaaSモデルでは、顧客が基礎となるアプリケーションのハードウェアやソフトウェアを購入することなく、アプリケーションまたはソフトウェアをインターネットなどの通信ネットワークを介してサービスとして顧客に提供できる。例えば、SaaSモデルを使用して、クラウドインフラストラクチャシステム902によってホストされるオンデマンドアプリケーションへのアクセスを顧客に提供できる。Oracle Corporation(登録商標)が提供するSaaSサービスの例には、人事/資本管理のためのさまざまなサービス、顧客関係管理(CRM)、企業リソースプランニング(ERP)、サプライチェーン管理(SCM)、企業性能管理(EPM)、分析サービス、ソーシャルアプリケーションなどが含まれるが、これらに限定されない。
【0161】
IaaSモデルは、一般に、インフラストラクチャリソース(例えば、サーバ、記憶装置、ハードウェアおよびネットワーキングリソース)をクラウドサービスとして顧客に提供し、弾性なコンピューティングおよび記憶機能を提供するために使用される。さまざまなIaaSサービスがOracle Corporation(登録商標)によって提供されている。
【0162】
PaaSモデルは、一般に、顧客がそのようなリソースを調達、構築、または維持する必要なく、顧客がアプリケーションおよびサービスを開発、実行、および管理できるようにするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例には、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、さまざまなアプリケーション開発ソリューションサービスなどが含まれるが、これらに限定されない。
【0163】
クラウドサービスは、一般に、オンデマンド自己サービスベース、サブスクリプションベース、弾力的に拡張可能、信頼性が高く、可用性が高く、安全な方法で提供される。例えば、顧客は、サブスクリプション注文を介して、クラウドインフラストラクチャシステム902によって提供される1つまたは複数のサービスを注文することができる。次に、クラウドインフラストラクチャシステム902は、顧客のサブスクリプション注文で要求されるサービスを提供するための処理を実行する。クラウドインフラストラクチャシステム902は、1つまたは複数のクラウドサービスを提供するように構成され得る。
【0164】
クラウドインフラストラクチャシステム902は、異なる展開モデルを介してクラウドサービスを提供することができる。パブリッククラウドモデルでは、クラウドインフラストラクチャシステム902はサードパーティのクラウドサービスプロバイダによって所有され得、クラウドサービスは個人または企業であり得る一般の顧客に提供される。ある他の態様では、プライベートクラウドモデルの下で、クラウドインフラストラクチャシステム902は組織内(例えば、企業組織内)で動作され、組織内の顧客にサービスが提供され得る。例えば、顧客は人事部、給与部などの企業のさまざまな部門、あるいは企業内の個人である場合もある。他のある態様では、コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム902および提供されるサービスは、関連するコミュニティ内の複数の組織によって共有され得る。上記モデルのハイブリッドなど、他のさまざまなモデルも使用可能である。
【0165】
クライアントコンピューティング装置904、906、および908は、異なるタイプ(例えば、図8に示される装置802、804、806、および808)であってもよく、1つまたは複数のクライアントアプリケーションを動作させることができてもよい。ユーザは、クライアント装置を使用して、クラウドインフラストラクチャシステム902によって提供されるサービスを要求するなど、クラウドインフラストラクチャシステム902と対話することができる。例えば、ユーザはクライアント装置を使用して、本開示で説明されているチャットボットサービスを要求することができる。
【0166】
いくつかの態様では、チャボットサービスを提供するためにクラウドインフラストラクチャシステム902によって実行される処理には、ビッグデータ分析が含まれ得る。この分析には、大規模なデータセットを使用、分析、操作して、データ内のさまざまな傾向、動作、関係性などを検出し、視覚化することが含まれ得る。この分析は1つまたは複数のプロセッサによって実行され、データの並列処理、データを使用したシミュレーションの実行などが行われ得る。例えば、クラウドインフラストラクチャシステム902によってビッグデータ分析が実行され、発話の意図が決定され得る。この分析に使用されるデータには、構造化データ(例えば、データベースに記憶されているデータ、または構造化モデルに従って構造化されるデータ)および/または非構造化データ(例えば、データブロブ(バイナリラージオブジェクト))が含まれ得る。
【0167】
図9の実施形態に示されるように、クラウドインフラストラクチャシステム902は、クラウドインフラストラクチャシステム902によって提供されるさまざまなクラウドサービスの提供を容易にするために利用されるインフラストラクチャリソース930を含むことができる。インフラストラクチャリソース930には、例えば、処理リソース、記憶またはメモリリソース、ネットワーキングリソースなどが含まれ得る。
【0168】
ある態様では、さまざまな顧客向けにクラウドインフラストラクチャシステム902によって提供されるさまざまなクラウドサービスをサポートするためのこれらのリソースの効率的なプロビジョニングを促進するために、リソースは、リソースのセットまたはリソースモジュール(「ポッド」とも呼ばれる)にバンドルされ得る。各リソースモジュールまたはポッドは、1つまたは複数のタイプのリソースの事前に統合および最適化される組み合わせを含み得る。ある態様では、異なるタイプのクラウドサービスに対して異なるポッドが事前にプロビジョニングされ得る。例えば、第1セットのポッドはデータベースサービス用にプロビジョニングでき、第2セットのポッドは、第1セットのポッド内のポッドとは異なるリソースの組み合わせを含むことができ、Javaサービスなど用にプロビジョニングできる。一部のサービスでは、サービスをプロビジョニングするために割り当てられるリソースがサービス間で共有され得る。
【0169】
クラウドインフラストラクチャシステム902は、それ自体、クラウドインフラストラクチャシステム902の異なる構成要素によって共有され、クラウドインフラストラクチャシステム902によるサービスのプロビジョニングを容易にするサービス932を内部的に使用することができる。これらの内部共有サービスには、セキュリティおよびIDサービス、統合サービス、企業リポジトリサービス、企業マネージャーサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするサービス、電子メールサービス、通知サービス、ファイル転送サービスなどが含まれ得るが、これらに限定されない。
【0170】
クラウドインフラストラクチャシステム902は、複数のサブシステムを備えることができる。これらのサブシステムは、ソフトウェアやハードウェア、またはそれらの組み合わせで実装できる。図9に示すように、サブシステムは、クラウドインフラストラクチャシステム902のユーザまたは顧客がクラウドインフラストラクチャシステム902と対話できるようにするユーザインターフェースサブシステム912を含んでもよい。ユーザインターフェースサブシステム912は、ウェブインターフェース914、オンラインストアインターフェース916などのさまざまな異なるインターフェースを含むことができ、クラウドインフラストラクチャシステム902によって提供されるクラウドサービスは宣伝され、消費者および他のインターフェース918によって購入可能である。例えば、顧客は、クライアント装置を使用して、インターフェース914、916、および918の1つまたは複数を使用して、クラウドインフラストラクチャシステム902によって提供される1つまたは複数のサービスを要求する(サービス要求934)場合がある。例えば、顧客はオンラインストアにアクセスし、クラウドインフラストラクチャシステム902によって提供されるクラウドサービスを閲覧し、顧客がサブスクライブを希望するクラウドインフラストラクチャシステム902によって提供される1つまたは複数のサービスのサブスクリプション注文を行うことができる。サービス要求には、顧客を識別する情報と、顧客がサブスクリプションを希望する1つまたは複数のサービスが含まれ得る。例えば、顧客はクラウドインフラストラクチャシステム902によって提供されるチャボット関連サービスのサブスクリプション注文を行うことができる。注文の一部として、顧客は入力を識別する情報(例えば、発話)を提供し得る。
【0171】
図9に示される実施形態などのある態様では、クラウドインフラストラクチャシステム902は、新しい注文を処理するように構成される注文管理サブシステム(OMS)920を備えることができる。この処理の一部として、まだ作成していない場合は、OMS920は顧客の口座を作成し、要求されるサービスを顧客に提供するために顧客に請求するために使用される請求情報および/または会計情報を顧客から受信し、顧客情報を確認し、確認後、顧客の注文を予約する。さまざまなワークフローを調整して、プロビジョニングの注文を準備するように構成できる(まだ作成していない場合)。
【0172】
適切に検証されると、OMS920は、処理、メモリ、およびネットワーキングリソースを含む注文のためのリソースをプロビジョニングするように構成される注文プロビジョニングサブシステム(OPS)924を呼び出し得る。プロビジョニングには、注文に対してリソースを割り当て、顧客の注文によって要求されるサービスを容易にするためにリソースを構成することが含まれ得る。注文に対してリソースがプロビジョニングされる方法およびプロビジョニングされるリソースのタイプは、顧客が注文したクラウドサービスのタイプによって異なる場合がある。例えば、1つのワークフローによれば、OPS924は、要求されている特定のクラウドサービスを決定し、その特定のクラウドサービスに対して事前構成されている可能性のあるポッドの数を識別するように構成され得る。注文に対して割り当てられるポッドの数は、要求されるサービスのサイズ/量/レベル/範囲によって異なる場合がある。例えば、割り当てられるポッドの数は、サービスによってサポートされるユーザの数、サービスが要求されている期間などに基づいて決定され得る。割り当てられるポッドは、次いで、要求されるサービスを提供するために、特定の要求顧客向けにカスタマイズできる。
【0173】
クラウドインフラストラクチャシステム902は、要求したサービスがいつ使用できるようになったかを示すために、要求している顧客に応答または通知944を送信することができる。場合によっては、顧客が要求されるサービスの使用および利点の利用を開始できるようにする情報(例えば、リンク)が顧客に送信され得る。
【0174】
クラウドインフラストラクチャシステム902は、複数の顧客にサービスを提供することができる。各顧客に対して、クラウドインフラストラクチャシステム902は、顧客から受信した1つまたは複数のサブスクリプション注文に関連する情報を管理し、注文に関連する顧客データを維持し、要求されるサービスを顧客に提供する責任を負う。クラウドインフラストラクチャシステム902はまた、顧客によるサブスクリプションサービスの使用に関する使用統計を収集することもできる。例えば、使用される記憶の量、転送されるデータの量、ユーザ数、システムの稼働時間と停止時間などの統計が収集され得る。この使用情報は、顧客への請求に使用され得る。請求は、例えば、月次サイクルで行うことができる。
【0175】
クラウドインフラストラクチャシステム902は、複数の顧客に並行してサービスを提供することができる。クラウドインフラストラクチャシステム902は、おそらく専有情報を含む、これらの顧客のための情報を記憶することができる。ある態様では、クラウドインフラストラクチャシステム902は、顧客情報を管理し、ある顧客に関連する情報が別の顧客によってアクセスできないように管理情報の分離を提供するように構成されるID管理サブシステム(IMS)928を備える。IMS928は、情報アクセス管理、認証および承認サービス、顧客IDとロールおよび関連機能の管理サービスなどのIDサービスなど、さまざまなセキュリティ関連サービスを提供するように構成できる。
【0176】
図10は、特定の態様を実装するために使用できる例示的なコンピュータシステム1000を示している。例えば、いくつかの態様では、コンピュータシステム1000は、図4に示すように、事前トレーニングされた言語モデルの長いテキストを処理するためのシステム400や、上述のさまざまなサーバおよびコンピュータシステムのいずれかを実装するために使用できる。図10に示すように、コンピュータシステム1000は、バスサブシステム1002を介して他の多くのサブシステムと通信する処理サブシステム1004を含むさまざまなサブシステムを含む。これらの他のサブシステムには、処理加速ユニット1006、I/Oサブシステム1008、記憶サブシステム1018、および通信サブシステム1024が含まれ得る。記憶サブシステム1018は、記憶媒体1022およびシステムメモリ1010を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0177】
バスサブシステム1002は、コンピュータシステム1000のさまざまな構成要素およびサブシステムが意図したとおりに相互に通信できるようにする機構を提供する。バスサブシステム1002は単一のバスとして概略的に示されているが、バスサブシステムの代替態様では複数のバスを利用することもできる。バスサブシステム1002は、メモリバスまたはメモリコントローラ、周辺バス、さまざまなバスアーキテクチャのいずれかを使用するローカルバスなどを含むいくつかのタイプのバス構造のいずれであってもよい。例えば、そのようなアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびPeripheral Component Interconnect(PCI)バスが含まれ得る。これは、IEEEP1386.1規格などに従って製造されるメザニンバスとして実装され得る。
【0178】
処理サブシステム1004は、コンピュータシステム1000の動作を制御し、1つまたは複数のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサには、単一コアまたはマルチコアプロセッサが含まれ得る。コンピュータシステム1000の処理リソースは、1つまたは複数の処理ユニット1032、1034などに編成され得る。処理ユニットには、1つもしくは複数のプロセッサ、同じもしくは異なるプロセッサからの1つもしくは複数のコア、コアとプロセッサの組み合わせ、またはコアとプロセッサのその他の組み合わせが含まれ得る。いくつかの態様では、処理サブシステム1004は、グラフィックプロセッサ、デジタル信号プロセッサ(DSP)などの1つまたは複数の専用コプロセッサを含み得る。いくつかの態様では、処理サブシステム1004の処理ユニットの一部またはすべてが、特定用途向け集積回路(ASIC)やフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされる回路を使用して実装され得る。
【0179】
いくつかの態様では、処理サブシステム1004内の処理ユニットは、システムメモリ1010またはコンピュータ可読記憶媒体1022に記憶される命令を実行することができる。さまざまな態様において、処理ユニットは、さまざまなプログラムまたはコード命令を実行し、複数の同時実行プログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、システムメモリ1010および/または潜在的に1つもしくは複数の記憶装置を含むコンピュータ可読記憶媒体1022に載置することができる。適切なプログラミングを通じて、処理サブシステム1004は、上述のさまざまな機能を提供することができる。コンピュータシステム1000が1つまたは複数の仮想機械を実行している場合、1つまたは複数の処理ユニットが各仮想機械に割り当てられ得る。
【0180】
ある態様では、コンピュータシステム1000によって実行される全体の処理を加速するために、カスタマイズされる処理を実行するため、または処理サブシステム1004によって実行される処理の一部をオフロードするために、処理加速ユニット1006が任意で提供されてもよい。
【0181】
I/Oサブシステム1008は、コンピュータシステム1000に情報を入力するための、および/またはコンピュータシステム1000からもしくはコンピュータシステム1000を介して情報を出力するための装置および機構を含み得る。一般に、入力装置という用語の使用は、コンピュータシステム800に情報を入力するためのあらゆる可能なタイプの装置および機構を含むことを意図している。ユーザインターフェース入力装置には、例えば、キーボード、マウスやトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドやタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えた音声入力装置、マイク、およびその他のタイプの入力装置が含まれ得る。ユーザインターフェース入力装置には、モーションセンシング装置および/またはジェスチャ認識装置も含まれ得、例えば、ユーザが入力装置を制御および動作できるようにするMicrosoft Kinect(登録商標)モーションセンサー、Microsoft Xbox(登録商標)360ゲームコントローラー、ジェスチャや音声コマンドを使用して入力を受信するためのインターフェースを提供する装置などである。ユーザインターフェース入力装置には、ユーザの目の動き(例えば、写真を撮影しているときやメニューを選択しているときの「まばたき」)を検出し、その目のジェスチャを入力装置(例えば、Google Glass(登録商標))への入力として変換するGoogle Glass(登録商標)まばたき検出器などの目のジェスチャ認識装置も含まれ得る。さらに、ユーザインターフェース入力装置は、ユーザが音声コマンドを通じて音声認識システム(例えば、Siri(登録商標)ナビゲータ)と対話できるようにする音声認識センシング装置を含んでもよい。
【0182】
ユーザインターフェース入力装置の他の例には、限定されないが、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、およびスピーカー、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー距離計、視線追跡装置などの音声/ビジュアル装置が含まれ得る。さらに、ユーザインターフェース入力装置には、例えば、コンピュータ断層撮影法、磁気共鳴画像化、位置放射断層撮影法、および医療用超音波検査装置などの医療用画像化入力装置が含まれ得る。ユーザインターフェース入力装置には、例えば、MIDIキーボード、デジタル楽器などの音声入力装置も含まれ得る。
【0183】
一般に、出力装置という用語の使用は、コンピュータシステム1000からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置および機構を含むことを意図している。ユーザインターフェース出力装置には、ディスプレイサブシステム、インジケータライト、または音声出力装置などの非視覚的ディスプレイが含まれ得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。例えば、ユーザインターフェース出力装置には、モニター、プリンタ、スピーカー、ヘッドフォン、自動車ナビゲーションシステム、プロッター、音声出力装置、モデムなど、テキスト、グラフィック、音声/ビデオ情報を視覚的に伝えるさまざまなディスプレイ装置が含まれるが、これらに限定されない。
【0184】
記憶サブシステム1018は、コンピュータシステム1000によって使用される情報およびデータを記憶するためのリポジトリまたはデータストアを提供する。記憶サブシステム1018は、いくつかの態様の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための、有形の非一時的なコンピュータ可読記憶媒体を提供する。記憶サブシステム1018は、処理サブシステム1004によって実行されると上述の機能を提供するソフトウェア(例えば、プログラム、コードモジュール、命令)を記憶することができる。ソフトウェアは、処理サブシステム1004の1つまたは複数の処理ユニットによって実行され得る。記憶サブシステム1018は、本開示の教示に従って使用されるデータを記憶するためのリポジトリも提供することができる。
【0185】
記憶サブシステム1018は、揮発性メモリ装置および不揮発性メモリ装置を含む、1つまたは複数の非一時的メモリ装置を含み得る。図10に示されるように、記憶サブシステム1018は、システムメモリ1010およびコンピュータ可読記憶媒体1022を含む。システムメモリ1010には、プログラム実行中に命令とデータを記憶するための揮発性メインランダムアクセスメモリ(RAM)と、固定命令が記憶される不揮発性読み取り専用メモリ(ROM)またはフラッシュメモリを含む、複数のメモリが含まれ得る。いくつかの実装では、起動中など、コンピュータシステム1000内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)は、通常、ROMに記憶され得る。RAMは通常、処理サブシステム1004によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実装では、システムメモリ1010は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含み得る。
【0186】
限定ではなく一例として、図10に示すように、システムメモリ1010は、実行中のアプリケーションプログラム1012をロードすることができ、これには、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのさまざまなアプリケーション、プログラムデータ1014、およびオペレーティングシステム1016が含まれ得る。一例として、オペレーティングシステム1016は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinuxオペレーティングシステム、さまざまな市販のUNIX(登録商標)またはUNIX類似オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがこれらに限定されない)、および/またはモバイルオペレーティングシステム、例えば、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムなどのさまざまなバージョンを含み得る。
【0187】
コンピュータ可読記憶媒体1022は、いくつかの態様の機能を提供するプログラミングおよびデータ構造を記憶することができる。コンピュータ可読媒体1022は、コンピュータシステム1000用のコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶を提供し得る。処理サブシステム1004によって実行されると、上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1018に記憶され得る。一例として、コンピュータ可読記憶媒体1022は、ハードディスクドライブ、磁気ディスクドライブ、CDROM、デジタルビデオディスク(DVD)、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光媒体などの不揮発性メモリが含まれ得る。コンピュータ可読記憶媒体1022としては、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどが含まれ得る、これらに限定されない。コンピュータ可読記憶媒体1022には、フラッシュメモリベースのSSDなどの不揮発性メモリに基づくソリッド状態ドライブ(SSD)、企業フラッシュドライブ、ソリッド状態ROMなど、ソリッド状態RAM、ダイナミックRAM、スタティックRAM、ダイナミックランダムアクセスメモリ(DRAM)ベースのSSD、磁気抵抗RAM(MRAM)SSD、DRAMとフラッシュメモリベースのSSDを組み合わせて使用するハイブリッドSSDなどの揮発性メモリをベースとするSSDも含まれ得る。
【0188】
ある態様では、記憶サブシステム1018はまた、コンピュータ可読記憶媒体1022にさらに接続され得るコンピュータ可読記憶媒体リーダ1020を含み得る。リーダ1020は、ディスク、フラッシュドライブなどのメモリ装置からデータを受信して読み取るように構成され得る。
【0189】
ある態様では、コンピュータシステム1000は、処理リソースおよびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートすることができる。例えば、コンピュータシステム1000は、1つまたは複数の仮想機械を実行するためのサポートを提供することができる。ある態様では、コンピュータシステム1000は、仮想機械の構成および管理を容易にするハイパーバイザなどのプログラムを実行することができる。各仮想機械には、メモリ、コンピューティング(例えば、プロセッサ、コア)、I/O、およびネットワークリソースが割り当てられ得る。各仮想機械は通常、他の仮想機械とは独立して実行される。仮想機械は通常、独自のオペレーティングシステムを実行し、それは、コンピュータシステム1000によって実行される他の仮想機械によって実行されるオペレーティングシステムと同じであっても、異なっていてもよい。したがって、複数のオペレーティングシステムがコンピュータシステム1000によって同時に潜在的に実行され得る。
【0190】
通信サブシステム1024は、他のコンピュータシステムおよびネットワークへのインターフェースを提供する。通信サブシステム1024は、コンピュータシステム1000から他のシステムとの間でデータを送受信するためのインターフェースとして機能する。例えば、通信サブシステム1024により、コンピュータシステム1000は、インターネットを介して1つまたは複数のクライアント装置との通信チャネルを確立し、クライアント装置との間で情報を送受信できるようになる。例えば、通信サブシステムは、チャボットの問い合わせに関してユーザに応答を送信するために使用することができる。
【0191】
通信サブシステム1024は、有線通信プロトコルおよび/または無線通信プロトコルの両方をサポートすることができる。例えば、ある態様では、通信サブシステム1024は、無線音声および/またはデータネットワーク(例えば、携帯電話技術、3G、4G、またはEDGE(世界的な進化のための強化されるデータ速度)などの高度なデータネットワーク技術の使用)へアクセスするための無線周波数(RF)トランシーバ構成要素、Wi-Fi(IEEE802.XXファミリ規格、その他のモバイル通信技術、またはそれらの組み合わせ)、全地球測位システム(GPS)受信機構成要素、および/または他の構成要素を含んでもよい。いくつかの態様では、通信サブシステム1024は、無線インターフェースに加えて、または無線インターフェースの代わりに、有線ネットワーク接続(例えば、イーサネット)を提供することができる。
【0192】
通信サブシステム1024は、さまざまな形式でデータを送受信することができる。例えば、いくつかの態様では、他の形式に加えて、通信サブシステム1024は、構造化および/または非構造化データフィード1026、イベントストリーム1028、イベント更新1030などの形式で入力通信を受信することができる。例えば、通信サブシステム1024は、ソーシャルメディアネットワークおよび/または他の通信サービスのユーザからリアルタイムでデータフィード1026を受信(または送信)するように構成され得、例えば、Twitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリー(RSS)フィードなどのWebフィード、および/または1つまたは複数のサードパーティ情報ソースからのリアルタイム更新などである。
【0193】
ある態様では、通信サブシステム1024は、連続データストリームの形式でデータを受信するように構成され、これには、明示的な終了がなく、本質的に連続的または無制限である可能性がある、リアルタイムイベントおよび/またはイベント更新1030のイベントストリーム1028が含まれ得る。連続データを生成するアプリケーションの例としては、センサーデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などが挙げられ得る。
【0194】
通信サブシステム1024は、コンピュータシステム1000から他のコンピュータシステムまたはネットワークにデータを通信するように構成することもできる。データは、構造化データフィードおよび/または非構造化データフィード1026、イベントストリーム1028、イベント更新1030などのさまざまな形式で、コンピュータシステム1000に結合される1つまたは複数のストリーミングデータソースコンピュータと通信している可能性のある1つまたは複数のデータベースに通信され得る。
【0195】
コンピュータシステム1000は、さまざまなタイプのうちの1つであり得、これには、ハンドヘルドポータブル装置(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、携帯情報端末(PDA))、ウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムが含まれる。コンピュータおよびネットワークの絶え間なく変化する性質のため、図10に示されるコンピュータシステム1000の説明は、具体的な実施例としてのみ意図されている。図10に示されるシステムよりも多いまたは少ない構成要素を有する他の多くの構成が可能である。本明細書で提供される開示および教示に基づいて、当業者は、さまざまな態様を実装するための他の方法および/または技術を理解するであろう。
【0196】
具体的な態様を説明したが、さまざまな修正、変更、代替構成、および均等物が可能である。実施形態は、ある具体的なデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、特定の一連のトランザクションおよびステップを使用してある態様を説明したが、これが限定を意図するものではないことは当業者には明らかである。一部のフローチャートでは動作が逐次的なプロセスとして説明されているが、動作の多くは並列または同時に実行できる。さらに、動作の順序は並べ替えることができる。プロセスには、図に含まれていない追加のステップが含まれ得る。上記の態様のさまざまな特徴および態様は、個別にまたは組み合わせて使用できる。
【0197】
さらに、ハードウェアとソフトウェアの特定の組み合わせを使用してある態様を説明したが、ハードウェアとソフトウェアの他の組み合わせも可能であることを認識されたい。ある態様は、ハードウェアのみで、もしくはソフトウェアのみで、またはそれらの組み合わせを使用して実装することができる。本明細書で説明されるさまざまなプロセスは、同じプロセッサ上で実装することもできるし、異なるプロセッサ上で任意の組み合わせで実装することもできる。
【0198】
装置、システム、構成要素、またはモジュールがある動作または機能を実行するように構成されていると説明されている場合、このような構成は、例えば、動作を実行する電子回路を設計することによって、コンピュータ命令もしくはコード、または非一時的メモリ媒体に記憶されるコードもしくは命令を実行するようにプログラムされるプロセッサもしくはコア、またはそれらの任意の組み合わせを実行することなどによって動作を実行するプログラマブル電子回路(例えば、マイクロプロセッサ)をプログラムすることによって達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、プロセスの異なる対が異なる技術を使用することも、同じプロセスの対が異なる時点で異なる技術を使用することもできる。
【0199】
態様の完全な理解を提供するために、本開示では具体的な詳細が与えられる。しかし、これらの具体的な詳細なしで態様を実施することもできる。例えば、よく知られている回路、プロセス、アルゴリズム、構造、および技術は、態様を分かりにくくすることを避けるために不必要な詳細を省略して示されている。この説明は、例示的な態様のみを提供するものであり、他の態様の範囲、適用性、または構成を制限することを意図するものではない。むしろ、前述の態様の説明は、当業者に、さまざまな態様を実装するための有効な説明を提供するものである。要素の機能や配置にはさまざまな変更を加えることができる。
【0200】
したがって、本明細書および図面は、限定的な意味ではなく、例示的な意味としてみなされるべきである。しかし、特許請求の範囲に記載のより広い趣旨および範囲から逸脱することなく、追加、減算、削除、ならびにその他の修正および変更を行うことができることは明らかである。したがって、具体的な態様を説明したが、これらは限定することを意図したものではない。さまざまな修正および均等物は、以下の特許請求の範囲内に含まれる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【国際調査報告】