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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7196194自然言語を使用した会話エージェントの訓練
<>
  • 特許-自然言語を使用した会話エージェントの訓練 図1
  • 特許-自然言語を使用した会話エージェントの訓練 図2
  • 特許-自然言語を使用した会話エージェントの訓練 図3
  • 特許-自然言語を使用した会話エージェントの訓練 図4A
  • 特許-自然言語を使用した会話エージェントの訓練 図4B
  • 特許-自然言語を使用した会話エージェントの訓練 図5
  • 特許-自然言語を使用した会話エージェントの訓練 図6
  • 特許-自然言語を使用した会話エージェントの訓練 図7
  • 特許-自然言語を使用した会話エージェントの訓練 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-16
(45)【発行日】2022-12-26
(54)【発明の名称】自然言語を使用した会話エージェントの訓練
(51)【国際特許分類】
   G10L 15/22 20060101AFI20221219BHJP
   G06F 3/16 20060101ALI20221219BHJP
   G06F 3/01 20060101ALI20221219BHJP
【FI】
G10L15/22 300U
G06F3/16 650
G06F3/01 510
【請求項の数】 20
(21)【出願番号】P 2020556918
(86)(22)【出願日】2019-06-04
(65)【公表番号】
(43)【公表日】2021-11-18
(86)【国際出願番号】 IB2019054630
(87)【国際公開番号】W WO2019234622
(87)【国際公開日】2019-12-12
【審査請求日】2021-10-28
(31)【優先権主張番号】16/000,605
(32)【優先日】2018-06-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【復代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ルーク、ジェームス、スティーブン
(72)【発明者】
【氏名】マゴーワン、ジェームス、ロバート
【審査官】菊地 陽一
(56)【参考文献】
【文献】特開2017-207610(JP,A)
【文献】特開2003-271195(JP,A)
【文献】特開2004-109323(JP,A)
【文献】米国特許出願公開第2013/0179174(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G10L 15/22
G06F 3/16
G06F 3/01
(57)【特許請求の範囲】
【請求項1】
自然言語を使用して会話エージェントを訓練するためのコンピュータ実施方法であって、
アトミック演算子のセットを有する前記会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための1つまたは複数のアトミック演算子ルールを有する、前記開始することと、
ユーザからの自然言語入力を会話インタフェースで受け取ることと、
前記自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに訓練を要求することと、
前記ユーザに訓練を要求することに応答して、前記ユーザから複数のテキスト入力を受けることであって、前記複数のテキスト入力は、順に、新しいスクリプトを生成し、前記自然言語入力に対する正しい回答を返し、前記正しい回答を提示し、前記新しいスクリプトを終了するように構成された複数のアトミック演算子を含む、受けることと
前記ユーザから前記複数のテキスト入力を受けることに応答して、前記新しいスクリプトを作成することと、
前記自然言語入力を前記新しいスクリプトにマッピングするマッピング・ルールを格納することと、
訓練を前記ユーザから受けることに応じて、前記新しいスクリプトを実行することであって、前記新しいスクリプトを実行することは、前記会話インタフェース上で前記正しい回答を提示することを引き起こす、実行することと
を含む、コンピュータ実施方法。
【請求項2】
前記複数のテキスト入力は、
前記新しいスクリプトを生成するよう構成された第1のアトミック演算子を含む第1のテキスト入力と、
第1の関数を実行するよう構成された第2のアトミック演算子を含む第2のテキスト入力であって、前記第1の関数は、前記自然言語入力に対する前記正しい回答を返す、第2のテキスト入力と、
前記第1の関数から出力された前記正しい回答を前記会話インタフェースに提示するよう構成された第3のアトミック演算子を含む第3のテキスト入力と、
前記新しいスクリプトを終了するように構成された第4のアトミック演算子を含む、第4のテキスト入力と
を含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記自然言語入力を受け取る前に、プライマリ・スクリプトがロードされ、前記プライマリ・スクリプトが、自然言語入力を前記ユーザに促すように構成される、請求項1に記載の方法。
【請求項4】
前記新しいスクリプトを実行することが、
前記新しいスクリプトを命令ベクトルにロードすることであり、前記新しいスクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットを通して反復することと、
前記命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、
前記サブスクリプト呼出しに対応するサブスクリプトを第2の命令ベクトルにロードすることと、
前記サブスクリプトの命令のセットを通して反復することと、
前記サブスクリプトの前記命令のセットを通して反復した後、前記命令のセットの残りの命令を通して反復するために前記新しいスクリプトに戻ることと
を含む、請求項1に記載の方法。
【請求項5】
前記新しいスクリプトが、少なくとも1つのサブスクリプトを参照し、前記少なくとも1つのサブスクリプトが、第2のサブスクリプトをさらに含む、請求項1に記載の方法。
【請求項6】
自然言語を使用して会話エージェントを訓練するためのコンピュータ実施方法であって、
アトミック演算子のセットを有する前記会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための1つまたは複数のアトミック演算子ルールを有する、前記開始することと、
ユーザからの自然言語入力を会話インタフェースで受け取ることと、
前記自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに訓練を要求することと、
前記自然言語入力をスクリプトにマッピングする訓練を前記ユーザから前記会話インタフェースによって受けることと、
前記自然言語入力を前記スクリプトにマッピングするマッピング・ルールを格納することと、
訓練を前記ユーザから受けることに応じて、前記スクリプトを実行することと
を含み、前記自然言語入力をスクリプトにマッピングする訓練を前記ユーザから受けることが、前記自然言語入力を前記スクリプトにマッピングするために既存のマッピング・ルールを一般化することを含む方法。
【請求項7】
前記既存のマッピング・ルールを一般化することが、
既存の自然言語ルールの用語と同一である前記自然言語入力の用語を識別することと、
前記自然言語入力と前記既存の自然言語ルールとの間の非同一用語を、前記非同一用語を包含するスーパークラスで前記非同一用語を置き換えることによって、一般化することと
を含む、請求項に記載の方法。
【請求項8】
一般化することが、前記自然言語入力を、以前に入力された自然言語入力と同じように処理することを含む、請求項に記載の方法。
【請求項9】
会話エージェントであって、
少なくとも1つのメモリ・コンポーネントおよび少なくとも1つのプロセッサと、
アトミック演算子のセットのデータ・ストアであり、各アトミック演算子が、操作を実行するための1つまたは複数のアトミック演算子ルールを有する、前記データ・ストアと、
ユーザからの自然言語入力を受け取るように構成された会話インタフェースと、
ルール・エンジンであり、
前記自然言語入力が、前記ルール・エンジンによって指定された複数のマッピング・ルールを参照することによって既存のスクリプトにマッピングされるかどうかを決定し、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに訓練を要求する
ように構成される、前記ルール・エンジンと、
ルール訓練コンポーネントであり、
前記ルール・エンジンが前記ユーザに訓練を要求することに応じて前記ユーザから、順に、新しいスクリプトを生成し、前記自然言語入力に対する正しい回答を返し、前記正しい回答を提示し、前記新しいスクリプトを終了するよう構成された複数のアトミック演算子を含む複数のテキスト入力を受け、
前記ユーザから前記複数のテキスト入力を受けることに応答して、前記新しいスクリプトを作成し、
前記自然言語入力を前記新しいスクリプトにマッピングするマッピング・ルールを格納する
ように構成される、前記ルール訓練コンポーネントと、
訓練を前記ユーザから受けることに応じて、前記新しいスクリプトを実行するように構成されたスクリプト・エンジンであって、前記新しいスクリプトを実行することは、前記会話インタフェース上で前記正しい回答を提示することを引き起こす、スクリプト・エンジンと
を含む、会話エージェント。
【請求項10】
前記複数のテキスト入力は、
前記新しいスクリプトを生成するよう構成された第1のアトミック演算子を含む第1のテキスト入力と、
第1の関数を実行するよう構成された第2のアトミック演算子を含む第2のテキスト入力であって、前記第1の関数は、前記自然言語入力に対する前記正しい回答を返す、第2のテキスト入力と、
前記第1の関数から出力された前記正しい回答を前記会話インタフェースに提示するよう構成された第3のアトミック演算子を含む第3のテキスト入力と、
前記新しいスクリプトを終了するように構成された第4のアトミック演算子を含む、第4のテキスト入力と
を含む、請求項9に記載の会話エージェント。
【請求項11】
前記自然言語入力を受け取る前に、プライマリ・スクリプトがロードされ、前記プライマリ・スクリプトが、自然言語入力を前記ユーザに促すように構成される、請求項に記載の会話エージェント。
【請求項12】
前記スクリプト・エンジンが、
前記新しいスクリプトを命令ベクトルにロードすることであり、前記新しいスクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットを通して反復することと、
前記命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、
前記サブスクリプト呼出しに対応するサブスクリプトを第2の命令ベクトルにロードすることと、
前記サブスクリプトの命令のセットを通して反復することと、
前記サブスクリプトの前記命令のセットを通して反復した後、前記命令のセットの残りの命令を通して反復するために前記新しいスクリプトに戻ることと
を行うようにさらに構成される、請求項に記載の会話エージェント。
【請求項13】
前記新しいスクリプトが、少なくとも1つのサブスクリプトを含み、前記少なくとも1つのサブスクリプトが、第2のサブスクリプトをさらに含む、請求項に記載の会話エージェント。
【請求項14】
会話エージェントであって、
少なくとも1つのメモリ・コンポーネントおよび少なくとも1つのプロセッサと、
アトミック演算子のセットのデータ・ストアであり、各アトミック演算子が、操作を実行するための1つまたは複数のアトミック演算子ルールを有する、前記データ・ストアと、
ユーザからの自然言語入力を受け取るように構成された会話インタフェースと、
ルール・エンジンであり、
前記自然言語入力が、前記ルール・エンジンによって指定された複数のマッピング・ルールを参照することによって既存のスクリプトにマッピングされるかどうかを決定し、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに訓練を要求する
ように構成される、前記ルール・エンジンと、
ルール訓練コンポーネントであり、
前記ルール・エンジンが前記ユーザに訓練を要求することに応じて、前記自然言語入力をスクリプトにマッピングする訓練を前記ユーザから前記会話インタフェースによって受け、
前記自然言語入力を前記スクリプトにマッピングするマッピング・ルールを格納する
ように構成される、前記ルール訓練コンポーネントと、
訓練を前記ユーザから受けることに応じて、前記スクリプトを実行するように構成されたスクリプト・エンジンと
を含み、前記ルール訓練コンポーネントが、
前記自然言語入力を前記スクリプトにマッピングするために既存のマッピング・ルールを一般化する
ように構成される会話エージェント。
【請求項15】
前記既存のマッピング・ルールを一般化することが、
既存の自然言語ルールの用語と同一である前記自然言語入力の用語を識別することと、
前記自然言語入力と前記既存の自然言語ルールとの間の非同一用語を、前記非同一用語を包含するスーパークラスで前記非同一用語を置き換えることによって、一般化することと
を含む、請求項14に記載の会話エージェント。
【請求項16】
一般化することが、前記自然言語入力を、以前に入力された自然言語入力と同じように処理することを含む、請求項14に記載の会話エージェント。
【請求項17】
プロセッサまたはコンピュータに、請求項1ないし請求項のいずれか一項に記載のコンピュータ実施方法を実行させるためのプログラム。
【請求項18】
請求項17に記載のプログラムを記憶した記憶媒体。
【請求項19】
自然言語を使用して会話エージェントを訓練するためのコンピュータ実施方法であって、
アトミック演算子のセットを有する前記会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための1つまたは複数のアトミック演算子ルールを有する、前記開始することと、
ユーザからの自然言語入力を会話インタフェースで受け取ることと、
前記自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに明確化を要求することと、
前記ユーザに明確化を要求することに応じて、前記ユーザから複数のテキスト入力を受けることであって、前記複数のテキスト入力は、順に、新しいスクリプトを生成し、前記自然言語入力に対する正しい回答を返し、前記正しい回答を提示し、前記新しいスクリプトを終了するよう構成された複数のアトミック演算子を含む、受けることと、
前記ユーザから前記複数のテキスト入力を受けることに応答して、前記新しいスクリプトを作成することと、
前記自然言語入力を前記新しいスクリプトにマッピングするマッピング・ルールを格納することと、
訓練を前記ユーザから受けることに応じて、前記新しいスクリプトを実行することであって、前記新しいスクリプトを実行することは、前記会話インタフェース上で正しい回答を提示することを引き起こす、実行することと
を含み、前記スクリプトを実行することが、
前記新しいスクリプトを命令ベクトルにロードすることであり、前記新しいスクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットを通して反復し、前記命令で指定された自然言語ルールおよびアトミック演算子ルールを実行することと
をさらに含む、コンピュータ実施方法。
【請求項20】
プロセッサに、
スクリプトを命令ベクトルにロードすることであり、前記スクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットの命令がアトミック演算子ルールと一致するかどうかを決定することと、
前記命令が前記アトミック演算子ルールと一致するという決定に応じて、アトミック演算子を実行することと、
前記命令のセットの命令が自然言語ルールと一致するかどうかを決定することと、
前記命令が前記自然言語ルールと一致するという決定に応じて、前記自然言語ルールがマッピングされる第2のスクリプトを実行することと、
前記命令のセットの命令がアトミック演算子ルールまたは自然言語ルールと一致しないという決定に応じて、ユーザに明確化を要求することと、
前記ユーザによる明確化を受け取ることであり、前記ユーザから、複数のテキスト入力を受けることであって、前記複数のテキスト入力は、順に、新しいスクリプトを生成し、アトミック演算子ルールまたは自然言語ルールと一致しない前記命令のセットの前記命令に対する正しい回答を返し、前記正しい回答を提示し、前記新しいスクリプトを終了するよう構成された複数のアトミック演算子を含む、受けることと、
前記ユーザから前記複数のテキスト入力を受けることに応答して、前記新しいスクリプトを作成することと、
アトミック演算子ルールまたは自然言語ルールと一致しない前記命令のセットの前記命令を前記新しいスクリプトにマッピングする新しい自然言語ルールを生成することと、
アトミック演算子ルールまたは自然言語ルールと一致しない前記命令のセットの前記命令を受け取ることに応じて、前記新しいスクリプトで指定された命令の第2のセットを通して反復し、前記新しいスクリプトの少なくとも1つのアトミック演算子を実行することによって、前記新しいスクリプトを実行することであって、前記新しいスクリプトを実行することは、会話インタフェース上で正しい回答を提示することを引き起こす、実行すること
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、認知システムに関し、より詳細には、自然言語を使用した会話エージェント(conversational agent)の訓練に関する。
【背景技術】
【0002】
認知システムは、人間の専門知識および認知を拡大するために、自然言語処理および機械学習を使用して人間と機械とが自然に対話(interact)できるようにする技術プラットフォームを提供する。認知システムは、会話エージェントを使用することができ、会話エージェントは、人間のユーザと会話し、通常の自然言語でユーザによって作成されたステートメントを解釈して応答する。
【発明の概要】
【0003】
本開示の実施形態は、会話エージェントの訓練に関する。会話エージェントは、アトミック演算子(atomic operator)のセットで開始することができ、各アトミック演算子は、操作を実行するための1つまたは複数のアトミック演算子ルールを有する。自然言語入力は、会話インタフェースでユーザから受け取ることができる。自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかの決定を行うことができる。自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、ユーザに訓練を要求することができる。次いで、明確化の要求に応じて自然言語入力をスクリプトにマッピングする訓練をユーザから会話インタフェースで受け取ることができる。次いで、自然言語入力をスクリプトにマッピングするマッピング・ルールが格納され得、スクリプトが実行され得る。
【0004】
第1の態様から見ると、本発明は、自然言語を使用して会話エージェントを訓練するためのコンピュータ実施方法を提供し、コンピュータ実施方法は、アトミック演算子のセットで会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための1つまたは複数のアトミック演算子ルールを有する、開始することと、ユーザからの自然言語入力を会話インタフェースで受け取ることと、自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、ユーザに訓練を要求することと、自然言語をスクリプトにマッピングする訓練をユーザから会話インタフェースによって受けることと、自然言語入力をスクリプトにマッピングするマッピング・ルールを格納することと、訓練をユーザから受けることに応じて、スクリプトを実行することとを含む。
【0005】
好ましくは、本発明は、自然言語入力をスクリプトにマッピングする訓練をユーザから受けることが、アトミック演算子および自然言語入力を使用して新しいスクリプトを生成することと、自然言語入力を新しいスクリプトに結合させるマッピング・ルールを生成することとを含む、方法を提供する。
【0006】
好ましくは、本発明は、新しいスクリプトを生成することが、会話インタフェースを使用して新しいスクリプトを作成するためにアトミック演算子を呼び出すことと、会話インタフェースを使用してアトミック演算子入力および自然言語入力を含むスクリプト文を提供することと、会話インタフェースを使用してスクリプトを終了するためにアトミック演算子を呼び出すこととを含む、方法を提供する。
【0007】
好ましくは、本発明は、自然言語入力をスクリプトにマッピングする訓練をユーザから受けることが、自然言語入力をスクリプトにマッピングするために既存のマッピング・ルールを一般化することを含む、方法を提供する。
【0008】
好ましくは、本発明は、既存のマッピング・ルールを一般化することが、既存の自然言語ルールの用語と同一である自然言語入力の用語を識別することと、自然言語入力と既存の自然言語ルールとの間の非同一用語(non-identical term)を、非同一用語を包含するスーパークラスで非同一用語を置き換えることによって、一般化することとを含む、方法を提供する。
【0009】
好ましくは、本発明は、一般化することが、自然言語入力を、以前に入力された自然言語入力と同じように処理することを含む、方法を提供する。
【0010】
好ましくは、本発明は、自然言語入力を受け取る前に、プライマリ・スクリプト(primary script)がロードされ、プライマリ・スクリプトが、自然言語入力をユーザに促すように構成される、方法を提供する。
【0011】
好ましくは、本発明は、スクリプトを実行することが、スクリプトを命令ベクトルにロードすることであり、スクリプトが命令のセットを有する、ロードすることと、命令のセットを通して反復することと、命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、サブスクリプト呼出しに対応するサブスクリプトを第2の命令ベクトルにロードすることと、サブスクリプトの命令のセットを通して反復することと、サブスクリプトの命令のセットを通して反復した後、命令のセットの残りの命令を通して反復するためにスクリプトに戻ることとを含む、方法を提供する。
【0012】
好ましくは、本発明は、スクリプトが、少なくとも1つのサブスクリプトを参照し、少なくとも1つのサブスクリプトが、第2のサブスクリプトをさらに含む方法を提供する。
【0013】
別の態様から見ると、本発明は、会話エージェントを提供し、会話エージェントは、少なくとも1つのメモリ・コンポーネントおよび少なくとも1つのプロセッサと、アトミック演算子のセットのデータ・ストアであり、各アトミック演算子が、操作を実行するための1つまたは複数のアトミック演算子ルールを有する、データ・ストアと、ユーザからの自然言語入力を受け取るように構成された会話インタフェースと、ルール・エンジンであり、自然言語入力が、ルール・エンジンによって指定された複数のマッピング・ルールを参照することによって既存のスクリプトにマッピングされるかどうかを決定し、自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、ユーザに訓練を要求するように構成される、ルール・エンジンと、ルール訓練コンポーネントであり、ルール・エンジンがユーザに訓練を要求することに応じて、自然言語をスクリプトにマッピングする訓練をユーザから会話インタフェースによって受け、自然言語入力をスクリプトにマッピングするマッピング・ルールを格納するように構成される、ルール訓練コンポーネントと、訓練をユーザから受けることに応じて、スクリプトを実行するように構成されたスクリプト・エンジンとを含む。
【0014】
好ましくは、本発明は、ルール訓練コンポーネントが、アトミック演算子および自然言語入力を使用して新しいスクリプトを生成し、自然言語入力を新しいスクリプトに結合させるマッピング・ルールを生成するようにさらに構成される、会話エージェントを提供する。
【0015】
好ましくは、本発明は、新しいスクリプトを生成することが、会話インタフェースを使用して新しいスクリプトを作成するためにアトミック演算子を呼び出すことと、会話インタフェースを使用してアトミック演算子入力および自然言語入力を含むスクリプト文を提供することと、会話インタフェースを使用してスクリプトを終了するためにアトミック演算子を呼び出すこととを含む、会話エージェントを提供する。
【0016】
好ましくは、本発明は、ルール訓練コンポーネントが、自然言語入力をスクリプトにマッピングするために既存のマッピング・ルールを一般化するように構成される、会話エージェントを提供する。
【0017】
好ましくは、本発明は、既存のマッピング・ルールを一般化することが、既存の自然言語ルールの用語と同一である自然言語入力の用語を識別することと、自然言語入力と既存の自然言語ルールとの間の非同一用語を、非同一用語を包含するスーパークラスで非同一用語を置き換えることによって、一般化することとを含む、会話エージェントを提供する。
【0018】
好ましくは、本発明は、一般化することが、自然言語入力を、以前に入力された自然言語入力と同じように処理することを含む、会話エージェントを提供する。
【0019】
好ましくは、本発明は、自然言語入力を受け取る前に、プライマリ・スクリプトがロードされ、プライマリ・スクリプトが、自然言語入力をユーザに促すように構成される、会話エージェントを提供する。
【0020】
好ましくは、本発明は、スクリプト・エンジンが、スクリプトを命令ベクトルにロードすることであり、スクリプトが命令のセットを有する、ロードすることと、命令のセットを通して反復することと、命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、サブスクリプト呼出しに対応するサブスクリプトを第2の命令ベクトルにロードすることと、サブスクリプトの命令のセットを通して反復することと、サブスクリプトの命令のセットを通して反復した後、命令のセットの残りの命令を通して反復するためにスクリプトに戻ることとを行うようにさらに構成される、会話エージェントを提供する。
【0021】
好ましくは、本発明は、スクリプトが、少なくとも1つのサブスクリプトを含み、少なくとも1つのサブスクリプトが、第2のサブスクリプトをさらに含む、会話エージェントを提供する。
【0022】
別の態様から見ると、本発明は、自然言語を使用して会話エージェントを訓練するためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品が、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、プログラム命令が、プロセッサに方法を実行させるようにプロセッサによって実行可能であり、この方法が、アトミック演算子のセットで会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための1つまたは複数のアトミック演算子ルールを有する、開始することと、ユーザからの自然言語入力を会話インタフェースで受け取ることと、自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、ユーザに訓練を要求することと、自然言語をスクリプトにマッピングする訓練をユーザから会話インタフェースによって受けることと、自然言語入力をスクリプトにマッピングするマッピング・ルールを格納することと、訓練をユーザから受けることに応じて、スクリプトを実行することとを含む。
【0023】
好ましくは、本発明は、自然言語入力をスクリプトにマッピングする訓練をユーザから受けることが、アトミック演算子および自然言語入力を使用して新しいスクリプトを生成することと、自然言語入力を新しいスクリプトに結合させるマッピング・ルールを生成することとを含む、コンピュータ・プログラム製品を提供する。
【0024】
好ましくは、本発明は、新しいスクリプトを生成することが、会話インタフェースを使用して新しいスクリプトを作成するためにアトミック演算子を呼び出すことと、会話インタフェースを使用してアトミック演算子入力および自然言語入力を含むスクリプト文を提供することと、会話インタフェースを使用してスクリプトを終了するためにアトミック演算子を呼び出すこととを含む、コンピュータ・プログラム製品を提供する。
【0025】
好ましくは、本発明は、自然言語入力をスクリプトにマッピングする訓練をユーザから受けることが、自然言語入力をスクリプトにマッピングするために既存のマッピング・ルールを一般化することを含む、コンピュータ・プログラム製品を提供する。
【0026】
好ましくは、本発明は、スクリプトを実行することが、スクリプトを命令ベクトルにロードすることであり、スクリプトが命令のセットを有する、ロードすることと、命令のセットを通して反復することと、命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、サブスクリプト呼出しに対応するサブスクリプトを第2の命令ベクトルにロードすることと、サブスクリプトの命令のセットを通して反復することと、サブスクリプトの命令のセットを通して反復した後、命令のセットの残りの命令を通して反復するためにスクリプトに戻ることとを含む、コンピュータ・プログラム製品を提供する。
【0027】
別の態様から見ると、本発明は、自然言語を使用して会話エージェントを訓練するためのコンピュータ実施方法を提供し、コンピュータ実施方法は、アトミック演算子のセットで会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための1つまたは複数のアトミック演算子ルールを有する、開始することと、ユーザからの自然言語入力を会話インタフェースで受け取ることと、自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、ユーザに明確化を要求することと、ユーザに明確化を要求することに応じて、自然言語をスクリプトにマッピングする訓練をユーザから会話インタフェースによって受けることと、自然言語入力をスクリプトにマッピングするマッピング・ルールを格納することと、訓練をユーザから受けることに応じて、スクリプトを実行することであり、スクリプトを実行することが、スクリプトを命令ベクトルにロードすることであり、スクリプトが命令のセットを有する、ロードすることと、命令のセットを通して反復し、命令で指定された自然言語ルールおよびアトミック演算子ルールを実行することとをさらに含む、実行することとを含む。
【0028】
別の態様から見ると、本発明は、会話エージェントのスクリプトを実行するためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品が、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、プログラム命令が、プロセッサに方法を実行させるようにプロセッサによって実行可能であり、この方法が、スクリプトを命令ベクトルにロードすることであり、スクリプトが命令のセットを有する、ロードすることと、命令のセットの命令がアトミック演算子ルールと一致するかどうかを決定することと、命令がアトミック演算子ルールと一致するという決定に応じて、アトミック演算子を実行することと、命令のセットの命令が自然言語ルールと一致するかどうかを決定することと、命令が自然言語ルールと一致するという決定に応じて、自然言語ルールがマッピングされる第2のスクリプトを実行することと、命令のセットの命令がアトミック演算子ルールまたは自然言語ルールと一致しないという決定に応じて、ユーザに明確化を要求することと、ユーザによる明確化を受け取ることであり、ユーザが、アトミック演算子ルールまたは自然言語ルールと一致しない命令のセットの命令を新しいスクリプトにマッピングする新しい自然言語ルールを生成する、受け取ることと、アトミック演算子ルールまたは自然言語ルールと一致しない命令のセットの命令を受け取ることに応じて、新しいスクリプトで指定された命令の第2のセットを通して反復し、新しいスクリプトの少なくとも1つのアトミック演算子を実行することによって、新しいスクリプトを実行することとを含む。
【0029】
上述の概要は、本開示の各々の例示される実施形態またはすべての実施態様を記載するものではない。
【0030】
本開示に含まれる図面は、本明細書に組み込まれ、本明細書の一部を形成する。図面は、本開示の実施形態を示し、説明とともに、本開示の原理を説明するのに役立つ。図面は、典型的な実施形態の単なる例示であり、本開示を限定しない。
【図面の簡単な説明】
【0031】
図1】本開示の実施形態による、会話エージェントを示すブロック図である。
図2】本開示の実施形態による、自然言語入力に基づいて会話エージェントを訓練するためのプロセスを示す流れ図である。
図3】本開示の実施形態による、スクリプトを実行するためのプロセスを示す流れ図である。
図4A】本開示の実施形態による、ルール・エンジンによってルールを処理する一例を示す概略図である。
図4B】本開示の実施形態による、図4Aに示されたルールを一般化する一例を示す概略図である。
図5】本開示の実施形態による、会話エージェントを有するコンピュータ・システムを示すブロック図である。
図6】本開示の実施形態による、本明細書に記載された、方法、ツール、およびモジュールのうちの1つまたは複数、ならびに関連する機能を実施する際に、使用することができる例示のコンピュータ・システムを示すハイレベル・ブロック図である。
図7】本開示の実施形態による、クラウド・コンピューティング環境を示す図である。
図8】本開示の実施形態による、抽象化モデル層を示すブロック図である。
【発明を実施するための形態】
【0032】
本明細書で説明される実施形態は、様々な変形および代替の形態が可能であるが、その詳細は、図面に例として示されており、詳細に説明される。しかしながら、記載される特定の実施形態は、限定の意味で解釈されるべきでないことを理解されたい。それどころか、本開示の範囲内にあるすべての変形、等価物、代替を包含することが意図される。
【0033】
本開示の態様は、一般に、認知システムの分野に関し、特に、自然言語を使用した会話エージェントの訓練に関する。本開示はそのような用途に必ずしも限定されないが、本開示の様々な態様は、このコンテキストを使用した様々な例の議論を通して理解することができる。
【0034】
会話エージェントの開発は、技術的なツーリングおよびプログラミング・モデルを使用して専門家によって行われる技術的タスクである。既知の会話エージェントは、一般に、特定の入力に対して特定の出力で応答するようにコード化または訓練される。意味モデルを使用するものもあれば、機械学習モデル、ルールのセット、実際のコード、または他の機構に埋め込まれたこの意味知識を有するものもある。
【0035】
事前定義された正式の知識表現を使用すると、会話エージェントの用途が限定される。既知の会話エージェントは、知識表現を正式に定義することなしに新しい問題分野に適用することができない。
【0036】
本開示の態様は、自然言語入力を通して訓練される会話エージェントに関する。実施形態は、会話インタフェースおよびアトミック演算子のセットを含む。ユーザは、アトミック演算子によって定義された操作を実行するように会話インタフェースを介してシステムに指示することができる。
【0037】
ユーザはまた、会話型対話(conversational interaction)を通して、1つまたは複数のアトミック演算子を含むスクリプトに自然言語入力をマッピングするようにシステムに教えることができる。スクリプトは、自然言語の文をさらに含むことができる。ルールベースの人工知能エンジンは、自然言語入力のスクリプトへのマッピングを管理する。
【0038】
システムは極めて限定された能力で開始することがあるが、しかしながら、時間とともに、大量の知能がシステムによって取得され得る。一連の機械学習アルゴリズムは、自然言語理解を一般化するためにバックグラウンドで動作することができ、その結果、ユーザは、言い回しのすべてのあり得る入れ替えを入力する必要はない。
【0039】
開始時に、システムは、単に、アトミック操作を実行するように構成することができる。しかしながら、システムは、システムのインテリジェンスが拡大されるように、入力が理解されないときに明確化のために問い合わせるように構成されてもよい。ユーザがスクリプトの階層にマッピングされた複雑な自然言語命令の階層を構築するとき、より複雑な会話が処理され得る。
【0040】
次に図1を参照すると、本開示の実施形態による、会話エージェント100を示すブロック図が示される。会話エージェント100は、自然言語入力の形態のユーザ命令を受け取るための会話ユーザ・インタフェース110を含む。会話エージェント100は、コア・スクリプト・エンジン120と、自然言語入力のマッピングを管理するルール・エンジン150とをさらに含む。
【0041】
会話エージェント100は、スクリプト・エンジン120によって実行されるアトミック演算子140のセット(1つまたは複数の個々のアトミック演算子141で構成される)を含む。アトミック演算子140のセットは、事前定義することができる(編集可能でないこともある)。アトミック演算子140のセットは、事実上、予約語であり、それは、識別されたとき、特定の操作の実行をもたらす。例えば、アトミック演算子「Plus」は、2つの数値入力に対して加算操作を実行することができる。ユーザは、一連の既存のアトミック演算子で構成することができる自然言語を使用して新しい命令を定義することができる。
【0042】
会話エージェント100は、各々が一連の1つまたは複数のアトミック演算子および自然言語文を有するスクリプト130のセット(1つまたは複数の個々のスクリプト131を含む)をさらに含む。新しいスクリプトは、ユーザ入力によって訓練されるとき、スクリプト・エンジン120で構築することができる。実施形態において、スクリプト130は、階層的に組織化することができる。例えば、スクリプト130のセットは、1つまたは複数の子スクリプトまたはサブスクリプト(それら自体1つまたは複数のサブスクリプトを含むことができる)を有する親スクリプトを含むことができる。
【0043】
スクリプト・エンジン120は、個々のスクリプト131から命令を読み出し、ルール・エンジン150と対話してそれらの命令を処理する。最も基本的な形態の命令は、アトミック演算子141を含む。アトミック演算子141は、アトミック演算子141の入力必須呼出し(input required call)(例えば、トリガ)を記述する1つまたは複数のアトミック演算子ルール152によって定義される。アトミック演算子141の入力および機能に基づいて、対応する出力が送信される(例えば、会話ユーザ・インタフェース110に)。
【0044】
ルール・エンジン150は、それぞれのアトミック演算子140にマッピングされたアトミック演算子ルール152と、自然言語命令をスクリプト131にマッピングする自然言語ルール151とを含む。
【0045】
図2を参照すると、本開示の実施形態による、会話エージェント(例えば、会話エージェント100)を訓練するための例示のプロセス200を示す流れ図200が示される。
【0046】
プロセス200が開始し、プライマリ・スクリプトが開始およびロードされる。これが、ステップ201に示される。プライマリ・スクリプトは、初期化時にスクリプト・エンジン120によって自動的に開始およびロードされ得る。プライマリ・スクリプトは、会話エージェントのコア機能を定義する。例えば、プライマリ・スクリプトは、既存のスクリプト130のロード、新しいスクリプトの生成、既存のスクリプト130の一般化、およびアトミック演算子140の呼出しを促進する。プライマリ・スクリプトは、ユーザ入力を促す(例えば、要求する)ことができる。例えば、プライマリ・スクリプトをロードして開始するとき、会話エージェントは、ステータス(例えば、「稼働中です。」)を提供し、テキスト入力ウィンドウを会話インタフェース110に設けることによってユーザ入力を促すように構成することができる。次いで、ユーザの自然言語入力が受け取られる。これがステップ202に示される。自然言語入力は、会話エージェント100によって処理されることになる任意の英数字文字を含むことができる。例えば、自然言語入力は、質問(例えば、「4と5の合計はいくつになるか?」、「天気はどうですか?」、「何時ですか?」など)またはステートメント(例えば、「ジョージ・ワシントンは初代大統領でした。」)あるいはその両方を含むことができる。
【0047】
次いで、会話エージェント100は、自然言語入力が既存のスクリプトにマッピングされるかどうかを決定することができる。これが、ステップ204に示される。自然言語入力が既存のスクリプトにマッピングされるかどうかの決定は、ルール・エンジン150を参照することによって完了することができる。ルール・エンジン150は、特定のスクリプトを呼び出すために使用することができる自然言語ルール151を含む。例えば、自然言語入力が自然言語ルール151のルールにマッピングされる場合、スクリプトをロードし、スクリプトで指定された命令(例えば、1つまたは複数のアトミック演算子または1つまたは複数のサブスクリプトあるいはその両方を含むことができる)により反復することによって、対応するスクリプト131を実行することができる。同様に、自然言語入力の命令がアトミック演算子ルール152のルールにマッピングされる場合、対応するアトミック演算子が実行される。これが、ステップ205に示される。スクリプト実行に関するさらなる詳細は、図3を参照して以下で提供される。実施形態では、実行されるスクリプトが自然言語入力を含んでいる場合、これらの入力はステップ202において入力として受け取られ、これらの入力が既存のスクリプトにマッピングされるかどうかの決定をステップ204において行うことができる。
【0048】
既存のスクリプトと一致しない場合、入力の明確化が要求される。これが、ステップ207に示される。他の既存のルールがトリガされていないという決定に応じて呼び出されるデフォルト・ルールを設定することによって、明確化を要求することができる。例えば、ユーザが「1リットルは何ミリリットルですか?」と問い合わせ、自然言語入力命令がルール・エンジン150のルールにマッピングされていない場合、デフォルト・スクリプト(例えば、DontUnderstand.scr)を呼び出すことができ、その結果、会話エージェントは会話インタフェース110で明確化通知を出力する。次いで、ユーザは、会話エージェント100が将来はこの自然言語入力命令を理解するように会話エージェント100を訓練することができる。これが、ステップ208に示される。ユーザの訓練は様々な方法で完了することができる。
【0049】
いくつかの実施形態では、訓練は、新しいスクリプトを生成することを含む(例えば、ステップ211~ステップ213)。新しいスクリプトを生成するために、新しいスクリプト名の入力を受け取ることができる。これが、ステップ211に示される。スクリプト名は、新しいスクリプトの命令を実行するために新しいスクリプトを参照するのに使用することができる。実施形態では、新しく生成されたスクリプトは、スクリプトを呼び出すために1つまたは複数のルールを生成する(例えば、ルール・エンジン150で)ことによって呼び出される。スクリプト名が受け取られた後、スクリプトの命令が受け取られる。スクリプトの命令には、自然言語入力に対処するために使用される1つまたは複数のアトミック演算子または既存のスクリプト(新しいスクリプトに統合される場合、サブスクリプトになる)あるいはその両方が含まれる。最後に、「終了」入力が受け取られ、その結果、新しいスクリプトが完結される。その結果、ユーザが同じ入力(例えば、「1リットルは何ミリリットルですか?」)を会話インタフェース110に送信した後、自然言語入力がルール・エンジン150で参照されて、新しく生成されたスクリプトが検索され、入力が応答され得る(例えば、1000ミリリットル)。
【0050】
実施形態では、ユーザの訓練は、既存のルールまたはスクリプトあるいはその両方を一般化することを含むことができる。これが、ステップ220に示される。既存のスクリプトの一般化は、様々な方法で完了することができる。例えば、いくつかの実施形態では、一般化することは、構造的に類似した入力フレーズに対して1つまたは複数のルールまたはスクリプトあるいはその両方で指定された用語を一般化することを含むことができる。これが、ステップ221に示される。一例として、ユーザが、「xをyに加える」(ここで、xおよびyは整数である)を理解するように会話エージェントを訓練し、後で、ユーザが、「xとyの合計はいくつになるか」を提示したと仮定する。会話エージェントは、「xをyに加える」に類似している「xとyの合計はいくつになるか」という問合せを処理するように構成することができる。そのような場合、2つの構造的に類似した入力フレーズを比較して、同一の用語を識別することができる(例えば、「<数値>を<数値>に加える」対「<数値>と<数値>の合計はいくつになるか」)。出力スクリプトは、同一の用語のうちのいずれかの存在を検討することができ、これらの同一の用語は、オリジナルの入力を参照して置き換えることができる(例えば、「<数値>と<数値>の合計はいくつになるか?」は、「<数値>を<数値>に加える」と置き換えることができる)。一般化に関するさらなる詳細は、図4において論じられる。
【0051】
実施形態において、訓練することは、同一の用語をもつ2つの自然言語入力の値を一般化することを含むことができる。これが、ステップ222に示される。上述の例に従って、会話エージェントが「6と8の合計はいくつになるか?」という問合せに応答するように訓練され、後で、ユーザが、「8と10の合計はいくつになるか?」という問合せを提示した場合、会話エージェントは、指定された数値を自動的に一般化するように構成することができる。この例では、「6」および「8」という値は、一般的な数値プレース・ホールダ(例えば、<数値>)で置き換えることができる。その結果、ユーザが後で「8と10の合計はいくつになるか?」を提示した場合、一般化に基づいて、会話エージェントは、8と10の合計を出力することになる。別の例として、自然言語入力が「空は何色か?」である場合、「空」という用語は、「オブジェクト」に一般化することができる。その結果、スクリプトを呼び出す(例えば、自然言語ルールに従って)ために「空」という用語を要求する代わりに、任意の「オブジェクト」を使用してスクリプトを呼び出すことができる。例えば、ユーザが「草は何色か?」を入力する場合、同じスクリプトを呼び出すことができる。この例では、「空」という用語を含む命令を、「オブジェクト」に一般化することもできる。「草」というオブジェクトに対して定義された特性に基づいて、会話エージェントは、色を出力することができる。
【0052】
実施形態では、値を一般化することは、2つの異なる入力の値を包含するスーパークラスを決定することによって完了することができる。例えば、特定の整数に対して、スーパークラスは「数値の整数」として定義することができる。別の例として、アメリカの特定の州に対して、スーパークラスは「米国の州」として定義することができる。実施形態では、2つの入力に異なる値を包含するスーパークラスは、値を識別するために自然言語入力をトークン化することによって決定され得る。次いで、リレーショナル・データベース(RDB)に関してこの値を解析して、RDBにおける値の階層的なおよび関係を示す位置づけを決定することができる。2つの入力の両方の値の「親ノード」(例えば、スーパークラス)に基づいて、スーパークラスを選択することができる。次いで、この値は、スーパークラスのサブクラスを含む将来の自然言語入力を処理できるように、スーパークラスと置き換えることができる。
【0053】
実施形態では、ルールまたはスクリプトあるいはその両方を一般化することは、自然言語入力の一致類似性(match similarity)に基づいて完了することができる。これが、ステップ223に示される。例えば、ユーザが「4と5を加える」に応答するためのスクリプトを用いて会話エージェントを訓練し、後で、ユーザが「4と5を加える」を有する自然言語入力を提示した場合、会話エージェントは、ルール・マッピングまたはスクリプトあるいはその両方を自動的に一般化し、自然言語入力の小さいバリエーションに適合するように構成することができる。実施形態では、類似性閾値を実装して、2つの入力を同じ出力にマッピングできるかどうかを決定することができる。例えば、類似性閾値は、2つの所与の入力を一般化するには特定の数の一致する文字(例えば、10個の一致する文字、90%の一致する文字など)が存在しなければならないことを指示することができる。いくつかの実施形態では、これは、区別された自然言語入力に応じて同じスクリプト実行を可能にすることができる追加のルールをルール・エンジン150に含めることによって完了することができる(例えば、ルールは、2つのバリエーションを使用してスクリプトを呼び出すための機能を含む)。一般に、ルールは、入力を出力に単純にマッピングする。しかしながら、一般化することによって、多数の入力バリエーションを単一の出力にマッピングすることができる。さらに、入力の変化は、別の出力をもたらすことができる(例えば、任意の2つの整数を加えることなどの値を一般化することによって)。
【0054】
会話エージェント100がステップ208においてユーザの訓練を受けた後、ユーザの自然言語がユーザによって再入力され、プロセス200は繰り返すことができる。後続の反復では、入力は、ここで、既存のスクリプトにマッピングすることができる。しかしながら、入力が依然としてスクリプトまたは操作にマッピングされない場合、さらなる明確化をステップ207において要求することができる。
【0055】
次に、会話インタフェース(例えば、図1の会話インタフェース110)でのユーザ対話を示す一例を参照する。この例では、会話エージェント100は「JEM」と呼ばれる。
【0056】
ユーザは、会話エージェントに以下の会話に示されるように、いくつかの基本的な数学を教えることができる。
ユーザ:4を5に加える
JEM:分かりません=>”4を5に加える”
ユーザ:JEMCreateScript ”4を5に加える”
JEM:スクリプト文を入力し、終了したときにJEMEndScriptを使用してください。
ユーザ:sum=4 JEMPlus 5
ユーザ:JEMDefine lastResult=$sum
ユーザ:JEMOutput $sum
ユーザ:JEMEndScript
JEM:”4を5に加える”のスクリプトを作成していただきありがとうございます
ユーザ:4を5に加える
JEM:9
ユーザ:1を3に加える
JEM:分かりません=>”1を3に加える”
ユーザ:”1を3に加える” JEMHandleLike ”4を5に加える”
ユーザ:1を3に加える
JEM:4
ユーザ:5を3に加える
JEM:8
ユーザ:4と5でいくつになるか
JEM:分かりません=>”4と5でいくつになるか”
ユーザ:”4と5でいくつになるか” JEMSameAs ”4を5に加える”
ユーザ:4と5でいくつになるか
JEM:9
【0057】
上述の会話では、アトミック演算子141は次の通りである。
1. JEMCreateScript
2. JEMPlus
3. JEMOutput
4. JEMEndScript
5. JEMHandleLike
6. JEMSameAs
【0058】
上述の会話では、ユーザは、最初に、会話エージェントによって理解されない(例えば、ルールが、自然言語入力を既存のスクリプトまたはアトミック演算子にマッピングしない)自然言語命令を入力する。その結果、会話エージェント100は、システムが入力を理解しないというユーザへの通知(例えば、図2のステップ207)を促すためのデフォルト・スクリプトを検索する。この場合、ユーザは、新しいスクリプトにより会話エージェントを訓練する(例えば、ステップ211~ステップ213)。ユーザは最初にスクリプト名「4を5に加える」を指定し、次いで、引き続いて、関連するスクリプト文(例えば、追加アトミック操作を含む)を指定する。次いで、ユーザはスクリプトを閉じる。同じ自然言語フレーズ(4を5に加える)を再入力すると、会話エージェントは、「4を5に加える」(例えば、自然言語フレーズが自然言語ルールで指定されたスクリプトにマッピングされていることに基づく)スクリプトを取得し、スクリプト内の命令を実行し、4と5の合計を出力する。
【0059】
次いで、ユーザは、類似しているが異なる数値の自然言語フレーズを入力する。会話エージェントは、自然言語フレーズをどのスクリプトにもマッピングできないので、自然言語フレーズを理解しない。会話エージェント100によって促された明確化に応じて、ユーザは、アトミック演算子「JEMHandleLike」を入力し、自然言語フレーズ「1を3に加える」を「4を5に加える」にマッピングする。次いで、「4を5に加える」というスクリプトが、検索され一般化される。すなわち、「4を5に加える」というスクリプトを検索するためのマッピングは、今では、「<数値>を<数値>に加える」に一般化され、「sum=4 JEMPlus 5」というスクリプト命令は、「sum=<numeric> JEMPlus <numeric>」に一般化される。これにより、表現が「<数値>を<数値>に加える」からなる限り、JEMの会話エージェント100は、任意の2つの数の加算を処理することができる。
【0060】
次いで、ユーザは、異なる言い回しによる類似の自然言語フレーズの「4と5でいくつになるか」を入力する。会話エージェントは、入力が「4と5を加える」と同じ意味であるにもかかわらず、入力を理解しない(フレーズが、定義されたルールによってスクリプトにマッピングされていないので)。会話エージェントによる明確化応答に応じて、ユーザは、「4と5でいくつになるか」を「4を5に加える」にマッピングするアトミック演算子「JEMSameAs」を入力する。その結果、システムは、「<数値>と<数値>でいくつになるか」を「<数値>を<数値>に加える」にマッピングするように教えられる(例えば、これらの自然言語フレーズは、両方とも、「4を5に加える」スクリプトを呼び出すために自然言語ルールに格納される)。その結果、入力「4と5でいくつになるか」を受け取ることに応じて、システムは、4と5の合計を出力する。
【0061】
JEMはまた、以下の会話に示されるように、スクリプトをカスケードすること(例えば、単一の入力に対して多数のスクリプトまたはスクリプト階層を参照すること)をサポートすることができる。
ユーザ:14と52の平均はいくつになるか
JEM:分かりません=>”14と52の平均はいくつになるか”
ユーザ:JEMCreateScript ”14と52の平均はいくつになるか”
JEM:スクリプト文を入力し、終了したときにJEMEndScriptを使用してください。
ユーザ:14を52に加える
ユーザ:2で割る
ユーザ:JEMEndScript
ユーザ:14と52の平均はいくつになるか
JEM:分かりません=>”2で割る”
ユーザ:JEMCreateScript ”2で割る”
JEM:スクリプト文を入力し、終了したときにJEMEndScriptを使用してください。
ユーザ:result=$lastResult JEMDivideBy 2
ユーザ:JEMOutput $result
ユーザ:JEMEndScript
JEM:”2で割る”のスクリプトを作成していただきありがとうございます
ユーザ:14と52の平均はいくつになるか
JEM:33
【0062】
この例は、自然言語の質問を処理するためにユーザがスクリプトの複雑な階層を定義することができることを示している。多数のスクリプトは、所与の自然言語入力に応じて参照することができる。上述で示したように、「14と52の平均はいくつになるか」というスクリプトおよび「2で割る」という子スクリプトは、両方とも、「14と52の平均はいくつになるか」への出力を提供するために参照される。各スクリプトは、それ自体、自然言語で書くことができる。最終的に、一連のアトミック操作は、ユーザが要望するアクションを行うために呼び出される。
【0063】
次に図3を参照すると、スクリプト・エンジン(例えば、スクリプト・エンジン120)でスクリプト(例えば、スクリプト131)を実行する例示のプロセス300を示す流れ図が示される。
【0064】
開始時に、スクリプトを命令ベクトルにロードすることができる。これが、ステップ301に示される。命令ベクトル内の次の命令が読み出される。これが、ステップ302に示される。最初に、「次の命令」は、命令ベクトル内の第1の命令を参照する。次いで、この命令は、ルール・エンジン(例えば、ルール・エンジン150)を使用してテストされる。すなわち、ルール・エンジンは、この命令が、1つまたは複数のルール(例えば、アトミック・ルールまたは自然言語ルールあるいはその両方)にマッピングされるかどうかを決定する。この命令がアトミック演算子ルールと一致しているかどうかの決定が行われる。これが、ステップ304に示される。この命令がアトミック演算子と一致していると決定された場合、アトミック操作が実行される。これが、ステップ305に示される。アトミック操作を実行する際に、アトミック演算子がプロセス演算子であるかどうかの決定が行われる。「プロセス・アトミック演算子」は、ユーザが演算子で定義したテキストを含むことができ、テキストは命令リストに加えることができる(さらなる詳細に関しては以下の表1を参照)。アトミック演算子がプロセス・アトミック演算子である場合、ユーザ入力は命令ベクトルに送り込まれ、その結果、そのルールに対してテストされる。これが、ステップ307に示される。アトミック演算子がプロセス・アトミック演算子でない場合、会話エージェントは、命令ベクトル内の次の命令を読み出すことができる。これが、ステップ306に示される。
【0065】
命令は、スクリプトにリストされている順序で処理される。スクリプトの途中に、サブスクリプトが呼び出されることになる命令がある場合、サブスクリプトの命令が実行された後、オリジナルのスクリプトの次の命令に戻る。
【0066】
アトミック演算子ルールに加えて、自然言語ルールが命令をスクリプトにマッピングする。その結果、ステップ304において命令がアトミック演算子ルールと一致しない場合、命令が自然言語ルールと一致するかどうかの決定が行われる。これが、ステップ308に示される。命令が自然言語ルールと一致する場合、自然言語ルールにマッピングされているスクリプトが実行される(上述の例に従うと、「4と5でいくつになるか?」という自然言語入力は、ルール・エンジンによってスクリプト「4と5でいくつになるか?」にマッピングされている)。これが、ステップ309に示される。スクリプトは、スクリプト文を命令ベクトルにロードし、次いで、それらの命令により反復することによって実行される。これが、ステップ310に示される。
【0067】
命令が自然言語ルールと一致しない場合、会話エージェントは、最後のユーザ入力に関して明確化を要求するデフォルト・ルールを実行することができる。これが、ステップ311に示される。これにより、ユーザは、最後のユーザ入力に今後どのように応答するか(例えば、1つまたは複数の新しいスクリプトの生成または既存のスクリプトの一般化あるいはその両方によって)を会話エージェント100に教えることができる。
【0068】
一例とするために、以下のアトミック演算子を含む会話エージェントの実施態様が説明される。再び、会話エージェントは「JEM」と呼ばれる。
【0069】
【表1】
【0070】
最初の開始時に、表1に示されたルールが、ルール・エンジン150にロードされる。会話エージェント100が起動すると、最初の開始時または後続の開始時のいずれかに、スクリプト・エンジン120は、ファイル「1.scr」に含まれるスクリプトを自動的にロードする。これは、プライマリ・スクリプトであり、会話エージェント100のコア機能を定義する。
【0071】
会話エージェント100に、以下に示された1.scrのバージョンを提供することができる。
JEMOutput 「稼働中です」
originalInput=JEMInput
JEMProcess $originalInput
JEMExecute “1.scr” 2
【0072】
このプライマリ・スクリプトは、エージェント100が稼働中であることを知らせ、会話ユーザ・インタフェース110からの入力を読み出し、その入力を処理し、次いで、2行目に戻って反復して会話ユーザ・インタフェースからの次の入力を読み出すようにスクリプト・エンジン120に指示する。
【0073】
開始時に、プライマリ・スクリプトが命令ベクトルにロードされる。スクリプト・エンジン120は、命令ベクトルにより、各命令を解析し、各命令をルール・エンジン150で指定されたルールと比較することを反復する。命令がアトミック演算子ルール152のうちの1つと一致する場合、アトミック演算子141が実行される。JEMProcessアトミック演算子は、$originalInputに保持されているユーザ入力を命令ベクトルに入れ、その結果、ユーザ入力はルール・エンジン150のルールに対してテストされる。
【0074】
アトミック演算子ルールに加えて、自然言語ルール151は、命令をスクリプト131にマッピングする。命令がそのような自然言語ルール151と一致する場合、スクリプト131は、スクリプト文を命令ベクトルにロードし、次いで、それらの命令を通して反復することによって実行される。
【0075】
開始時に、デフォルト・ルールは、他のルールが呼び出されない(例えば、トリガされない、アクティブにされない)場合にのみアクティブにするように構成することができる。このデフォルト・ルールは、明確にするためにユーザに問い合わせるスクリプト「DontUnderstand.scr」を呼び出す。「DontUnderstand.scr」が以下に示される。
JEMOutput”分かりません=>JEMReference”
JEMReference 最後のユーザ入力を参照する
【0076】
図4Aは、本開示の実施形態による、ルール・エンジン(例えばルール・エンジン150)によってルールを処理する一例を示す概略図である。ルールは、ルール入力解析木410とルール出力420とを含む。ルール・エンジン150は、命令の解析木をルール入力410の解析木と比較する。一致がある場合、ルール出力420は命令ベクトルに入れられる。
【0077】
図4Aに示された例示のルールは、フレーズ411の「4を5に加える」のルール入力解析木410を含む。フレーズ411は、フレーズ411の各用語に対するトークン412を有する。用語「加える」は、タイプ「動詞」および値「加える」を有し、用語「4」は、タイプ「数値」および値「4」を有し、用語「~に(to)」は、タイプ「前置詞(prep)」および値「~に(to)」を有し、用語「5」は、タイプ「数値」および値「5」を有する。ルール出力420は、スクリプト「sentence=execute57.scr」421の実行を指示する。ルール出力420によって識別されたスクリプト430は、次のように示される。
Sum=4 plus 5
Define LastResult=$Sum
Output $Sum
【0078】
アトミック演算子JEMHandleLikeを使用して実施される一般化アルゴリズムが説明される。一般化アルゴリズムは、2つの構造的に類似した入力フレーズを比較して、同一の用語を識別する。次いで、アルゴリズムは、同一の用語のうちのいずれかの存在に関して出力スクリプトを調べ、それらをオリジナルの入力への参照と置き換える。図4Aに示されたルールおよびスクリプトの一般化の後の一例が、図4Bに示される。
【0079】
図4Bに示された例示のルールは、フレーズ451が「<数値>を<数値>に加える」ように一般化されているルール入力解析木410を含む。フレーズ451は、フレーズ451の各用語に対するトークン452を有する。用語「4」のトークンはタイプ「数値」を有し、値「4」は削除され、それによって、それは任意の値に一般化される。同様に、用語「5」のトークンはタイプ「数値」を有し、値「5」は削除され、それによって、それは任意の値に一般化される。
【0080】
ルール出力420は、スクリプト「sentence=execute57.scr」421の実行の指示を維持する。
【0081】
しかしながら、ルール出力420によって識別されたスクリプト460は、次のように一般化される。
Sum=Ref_0_1_0 plus Ref_0_3_0
Define LastResult=$Sum
Output $Sum
【0082】
Ref_0_1_0およびRef_0_3_0は、入力木のトークンまたはフレーズを参照する。入力木は、対応する子ノードを含むトップ・レベル・フレーズ・ノードをもつ階層とすることができる。
【0083】
加えて、マッピング・ルールの一般化は、アトミック演算子JEMSameAsにより実施されてもよい。最初に、入力を出力に単純にマッピングするルールを作成することができる。次いで、このルールは、同一の用語を識別するために入力フレーズを比較し、JEMHandleLikeと同じ方法で一般化することによって一般化することができる。
【0084】
この例では、「<数値>と<数値>でいくつになるか」は、「<数値>を<数値>に加える」にマッピングされ、次いで、スクリプトの形態のルール出力にマッピングされる。
【0085】
スクリプトの階層によるカスケード一般化が行われてもよい。例えば、システムが第1のルールまたはスクリプトあるいはその両方を一般化する場合、一般化された用語を探し出すために、対応するサブスクリプトも参照することができる。サブスクリプトも一般化された用語を含む場合、サブスクリプトは、親スクリプトと類似の方法(例えば、数値を除去し、それを任意の数値に一般化すること)で一般化することもできる。
【0086】
一般化プロセスを簡単化する目的で、自動学習プロセスが行われてもよい。入力の構造または値が既存のルールに類似している場合、システムは、入力を既存のルールで処理すべきかどうかをユーザに尋ねることができる。そうすべきであるとユーザが確認した場合、ルールおよびスクリプトは自動的に一般化され得る。
【0087】
自動学習では、システムは、すべての入力を以前に受け取った入力と比較する。3つのタイプの比較がある。
1.入力は、以前の入力と構造的に同一であるが、値が異なっているか?例えば、「1を7に加える」は、「4を5に加える」と構造的に同一である。
2.入力は、構造的に異なっているが、類似する値の項を含んでいるか?例えば、「4と5でいくつになるか」は、「4を5に加える」と類似している。
3.入力は、二、三の文字しか異なっていないか(すなわち、タイプミスを示すことがあるファジー・マッチ)?例えば、「4を5に加える(add)」の代わりに「4を5に加えた(added)」である。
【0088】
これらの比較テストのうちのいずれかが一致を示す場合、ユーザは、文が同じものを意味する(例えば、上述の2および3)かどうか、または文が同じやり方で処理されるべきである(例えば、上述の1)かどうかを尋ねられることがある。次いで、JEMHandleLikeまたはJEMSameAsが、適宜呼び出される。いくつかの実施形態では、ファジー・マッチングは、類似する英数字文字の閾値数に基づいて完了することができる。例えば、入力は、一致する文字の閾値数(例えば、入力は既存の自然言語ルールへの類似性の閾値レベルを満たす)に基づいて、分析し、所与のスクリプトにマッピングされている入力と比較することができる。一致する文字の閾値数が満たされる場合、ファジー・マッチであるという決定を行うことができ、一般化プロトコルを実行することができる。
【0089】
いくつかの実施形態では、ルール機能(rule feature)の自動トグリングが、一般化に応じて行われてもよい。これは、ルール機能が、一般化のために非アクティブにされ、特殊化のためにアクティブにされることを意味する。「4を5に加える」という例では、「value=’4’」および「value=’5’」の機能があり、これらの値が参照と置き換えられると、それらの機能はもはやテストされない(例えば、ルール機能は非アクティブにされる)。各機能は、その機能がテストされるべきかどうかを決定するための真または偽のいずれかに設定される「テスト」属性に関連する。
【0090】
会話エージェントの開発のための対話型システムおよび方法が提供されると、会話エージェントを開発するのに必要とされるコスト、時間、および技術的熟練が低減される。加えて、それは、稼働中のユーザとの対話に応じて会話エージェントの連続的な学習を可能にする。システムは、対話型会話を介して訓練され、知識を格納するための自然言語の使用、コマンドの階層、自然言語コマンドのスクリプトへのマッピング、および一般化の課題に対処する。実施形態は、スクリプトおよびサブスクリプトを介して大量の知識表現を構築することによってコンピュータ・システムの機能を改善する。スクリプトの階層的組織により、迅速な情報検索およびスループットの改善を可能にすることができる。
【0091】
さらに、コンピュータ・システムは、そのような方法でそのような知識表現(例えば、アトミック演算子を有する複数のスクリプトに組織化された)を以前には構築することができなかった。未知の概念に対してユーザに明確化を促すことによって、システムは、新しい問題を定義する、または既存のスクリプトを一般化する、あるいはその両方を行うようにユーザに促すことにより、知識ギャップを「埋める」ことができる。
【0092】
実施形態は、さらに、自然言語スクリプトの階層を可能にする。その結果、特定のステップの詳細が後でしか決定されない計画を導出することが可能である。
【0093】
実施形態は、自然言語文(例えば、「4を5に加える」および「4と5でいくつになるか?」)を一般化する能力を可能にする。
【0094】
アスペクトは、事前定義されたセマンティック・モデルを必要としない。これは、セマンティック・モデルを正式に(数学的に)定義する必要なしに、アスペクトを新しい問題ドメインに直ちに適用できることを意味する。
【0095】
以下は、質問に答えるためのスクリプトの追加の例である。トップ・レベル・スクリプトは、ユーザが「ニール・アームストロングはいつ生まれたか?」という質問を入力することによってトリガされることになる。これにより、以下を含むスクリプトが実行される。
SCRIPT A
results=JEMSearchWeb ”ニール・アームストロング”
facts=JEMAbstract $results
JEMNote $facts
factResults=JEMSearchNarrative ”ニール・アームストロング”
JEMProcess $factResults ”ニール・アームストロングはいつ生まれたか?”
【0096】
Script Aの1行目はアトミック操作を実行して、インターネットを検索し、それによって、ニール・アームストロングを要約した文、例えば、「ニール・アームストロングは、月面を歩いた最初の人であり、1930年8月5日に生まれた」などを見つけることになる。
【0097】
2行目は、これらの文を(以前に学習したルールを使用して)「ニール・アームストロングは月面を歩いた最初の人であった」および「ニール・アームストロングは1930年8月5日に生まれた」という事実に抽象化することになる。
【0098】
3行目は、これらの事実を説明文に書くことになる。
【0099】
4行目は、ニール・アームストロングに関する事実を求めて説明文を検索することになる。
【0100】
最後に、5行目は、回答のコンテキストにおける各事実を処理する。例えば、コンテキストに関するルール(例えば、解析木比較に基づく)は、次いで、「ニール・アームストロングは月面を歩いた最初の人であった」を無視し、「ニール・アームストロングは1930年8月5日に生まれた」を出力することになる。
【0101】
図5を参照すると、本開示の例示的な実施形態を実装することができるコンピュータ・システム500を示すブロック図が示される。
【0102】
コンピュータ・システム500は、少なくとも1つのプロセッサ501、ハードウェア・モジュール、または少なくとも1つのプロセッサで実行されるソフトウェア・ユニットとすることができる記載されたコンポーネントの機能を実行するための回路を含む。並列処理スレッドを実行する多数のプロセッサを備えることができ、それにより、コンポーネントの機能の一部またはすべての並列処理が可能になる。メモリ502は、コンピュータ命令503を少なくとも1つのプロセッサ501に供給してコンポーネントの機能を実行するように構成することができる。会話エージェント550(例えば、会話エージェント100)は、自然言語入力を介してクライアントがユーザ対話に利用できる会話ユーザ・インタフェース560(例えば、会話ユーザ・インタフェース110)をもつリモート・サーバに備えられてもよい。
【0103】
会話エージェント550は、アトミック演算子ルールを適用することによって定義済み操作を実行するためのアトミック演算子580(例えば、アトミック演算子140)のセット、および会話エージェント550の訓練中に開発されたスクリプト570(例えば、スクリプト130)のセットのデータ・ストア510を含むことができる。スクリプト570は、一連のアトミック演算子580および自然言語入力を含み、自然言語入力を他のスクリプトにマッピングすることにより、スクリプトの階層を定義するように構成される。
【0104】
会話エージェント550は、自然言語処理および機械学習処理を実行するように構成されたルール・エンジン590(例えば、ルール・エンジン150)を含む。
【0105】
ルール・エンジン590は、自然言語入力のルールをアトミック演算子またはスクリプトにマッピングするように構成されたルール適用コンポーネント512を含む。ルール・エンジン590には、新しいスクリプトを生成し、既存のスクリプトを一般化するように構成されたルール訓練コンポーネント520がさらに含まれる。ルール訓練コンポーネント520は、アトミック演算子および自然言語入力を使用して新しいスクリプトを生成するように構成された新スクリプト生成コンポーネント521と、新しい自然言語入力の既存のスクリプトへのマッピングを一般化するように構成された一般化コンポーネント522とを含むことができる。いくつかの実施形態では、生成コンポーネントは、自然言語入力の類似の構造または値あるいはその両方に基づいて(例えば、類似性閾値または値識別あるいはその両方を使用して)、スクリプトを自動的に一般化して新しい自然言語入力を包含するように構成することができる。
【0106】
会話エージェント100は、マッピング済みスクリプトから命令を読み出し、スクリプトのアトミック演算子の定義済み操作を実行するためのスクリプト・エンジン120を含む。スクリプト・エンジン120は、スクリプトを命令ベクトルにロードし、命令ベクトルによって、各命令を順番に読み出すことと、それを、ルール・エンジンでマッピング・ルールを適用してアトミック演算子の定義済み操作を実行することによりテストすることとを反復するための命令読出しコンポーネント530を含むことができる。
【0107】
次に図6を参照すると、本開示の実施形態による、本明細書で説明される方法、ツール、およびモジュールのうちの1つまたは複数、ならびに関連する機能を実施する(例えば、1つまたは複数のプロセッサ回路またはコンピュータのコンピュータ・プロセッサを使用する)際に使用することができる例示のコンピュータ・システム601(例えば、会話エージェント100およびコンピュータ・システム500)のハイレベル・ブロック図が示される。いくつかの実施形態では、コンピュータ・システム601の主要コンポーネントは、1つまたは複数のCPU602、メモリ・サブシステム604、端末インタフェース612、ストレージ・インタフェース614、I/O(入力/出力)デバイス・インタフェース616、およびネットワーク・インタフェース618を含むことができ、それらのすべては、メモリ・バス603、I/Oバス608、およびI/Oバス・インタフェース・ユニット610を介してコンポーネント間通信のために、直接にまたは間接的に、通信可能に結合され得る。
【0108】
コンピュータ・システム601は、本明細書では総称してCPU602と呼ぶ、1つまたは複数の汎用プログラマブル中央処理装置(CPU)602A、602B、602C、および602Dを含むことができる。ある実施形態では、コンピュータ・システム601は、比較的大きいシステムに特有な多数のプロセッサを含むことができるが、しかしながら、他の実施形態では、コンピュータ・システム601は、代替として単一のCPUシステムとすることができる。各CPU602は、メモリ・サブシステム604に格納された命令を実行することができ、1つまたは複数のレベルのオンボード・キャッシュを含むことができる。
【0109】
システム・メモリ604は、ランダム・アクセス・メモリ(RAM)622またはキャッシュ・メモリ624などの揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム601は、他の着脱可能/着脱不能な揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含むことができる。単なる例として、ストレージ・システム626は、「ハードドライブ」などの着脱不能な不揮発性磁気媒体から読み出しそれに書き込むために設けることができる。図示されていないが、着脱可能な不揮発性磁気ディスク(例えば、「USBサム・ドライブ」もしくは「フロッピー(R)・ディスク」)から読み出しそれに書き込むための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROM、もしくは他の光学媒体などの着脱可能な不揮発性光ディスクから読み出すかもしくは書き込むための光ディスク・ドライブが設けられてもよい。加えて、メモリ604は、フラッシュ・メモリ、例えば、フラッシュ・メモリ・スティック・ドライブまたはフラッシュ・ドライブを含むことができる。メモリ・デバイスは、1つまたは複数のデータ媒体インタフェースによってメモリ・バス603に接続され得る。メモリ604は、様々な実施形態の機能を実行するように構成された1組の(例えば、少なくとも1つの)プログラム・モジュールを有する少なくとも1つのプログラム製品を含むことができる。
【0110】
各々が少なくとも1組のプログラム・モジュール630を有する1つまたは複数のプログラム/ユーティリティ628は、メモリ604に格納することができる。プログラム/ユーティリティ628は、ハイパーバイザ(バーチャル・マシン・モニタとも呼ばれる)、1つまたは複数のオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データを含むことができる。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々、またはそれらの組合せは、ネットワーク環境の実施態様を含むことができる。プログラム628またはプログラム・モジュール630あるいはその両方は、一般に、様々な実施形態の機能または方法を実行する。
【0111】
いくつかの実施形態では、コンピュータ・システム601のプログラム・モジュール630は、会話エージェント訓練モジュールを含む。会話エージェント訓練モジュールは、各アトミック演算子がアトミック演算子ルールのセットを含むアトミック演算子のセットで会話エージェントを開始するように構成することができる。会話エージェント訓練モジュールは、自然言語入力を受け取るための会話ユーザ・インタフェースをさらに含むことができる。会話エージェント訓練モジュールは、さらに、自然言語入力が、ルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定するように構成することができる。自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、会話エージェント訓練モジュールは、ユーザに明確化を要求するように構成することができる。次いで、訓練をユーザから受けることができ、自然言語入力をスクリプトにマッピングするマッピング・ルールを格納することができる。次いで、会話エージェント訓練モジュールは、ユーザの訓練ごとにスクリプトを実行するように構成することができる。
【0112】
メモリ・バス603は、図6では、CPU602、メモリ・サブシステム604、およびI/Oバス・インタフェース610の間に直通通信経路を提供する単一のバス構造として示されているが、メモリ・バス603は、実施形態によっては、多数の異なるバスまたは通信経路を含むことができ、これは、階層、スター、またはウェブ構成のポイント・ツー・ポイント・リンク、多数の階層バス、並列冗長経路、または任意の他の適切なタイプの構成などの様々な形態のうちのいずれかで構成することができる。さらに、I/Oバス・インタフェース610およびI/Oバス608は、単一のそれぞれのユニットとして示されているが、コンピュータ・システム601は、実施形態によっては、多数のI/Oバス・インタフェース・ユニット610、多数のI/Oバス608、または両方を含むことができる。さらに、様々なI/Oデバイスまで延びる様々な通信経路からI/Oバス608を分離する多数のI/Oインタフェース・ユニットが示されているが、他の実施形態では、I/Oデバイスの一部またはすべては、1つまたは複数のシステムI/Oバスに直接に接続されてもよい。
【0113】
いくつかの実施形態では、コンピュータ・システム601は、マルチユーザ・メインフレーム・コンピュータ・システム、シングルユーザ・システム、または直接ユーザ・インタフェースがほとんどないかもしくは全くないが、他のコンピュータ・システム(クライアント)からの要求を受け取るサーバ・コンピュータもしくは類似のデバイスとすることができる。さらに、実施形態によっては、コンピュータ・システム601は、デスクトップ・コンピュータ、ポータブル・コンピュータ、ラップトップもしくはノートブック・コンピュータ、タブレット・コンピュータ、ポケット・コンピュータ、電話、スマート・フォン、ネットワーク・スイッチもしくはルータ、または他の適切なタイプの電子デバイスとして実装されてもよい。
【0114】
図6は例示的なコンピュータ・システム601の代表的な主要コンポーネントを示すことが意図されていることに留意されたい。しかしながら、実施形態によっては、個々のコンポーネントは、図6に表されたものよりも複雑性が大きくてもまたは小さくてもよく、図6に示されたもの以外のまたはそれに加えたコンポーネントが存在してもよく、そのようなコンポーネントの数、タイプ、および構成は変わってもよい。
【0115】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書で詳述される教示の実施態様は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本開示の実施形態は、現在知られているまたは後に開発される他のタイプのコンピューティング環境と組み合わせて実施することができる。
【0116】
クラウド・コンピューティングは、最小の管理負担またはサービスのプロバイダとの対話で迅速にプロビジョニングおよび解消することができる設定可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオン・デマンド・ネットワーク・アクセスを可能にするためのサービス提供の一モデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含むことができる。
【0117】
特性は以下の通りである。
オン・デマンド・セルフサービス:クラウド消費者は、サービスのプロバイダとの人的な対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方向にプロビジョニングすることができる。
ブロード・ネットワーク・アクセス:能力はネットワークの全体にわたって利用可能であり、異種シンまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を推進する標準的な機構を介してアクセスされる。
リソース・プーリング:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用する多数の消費者に役立つようにプールされ、様々な物理および仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。消費者は、一般に、提供されるリソースの正確な場所に関する制御または知識を有していないが、より高レベルの抽象化での場所(例えば、国、州、またはデータセンタ)を指定できる場合があるという点で、場所非依存性の意味合いがある。
迅速な弾力性:能力を、迅速に弾力的に、場合によっては自動的に、プロビジョニングして、素速くスケール・アウトし、迅速に解消して素速くスケール・インすることができる。消費者にとって、プロビジョニングに利用可能な能力は、しばしば、無制限に見え、いつでもどんな量でも購入することができる。
従量に基づくサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)にとって適切なある抽象レベルで計量能力を活用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用量をモニタ、制御、および報告することができ、それにより、利用されるサービスのプロバイダと消費者の両方に透明性が提供される。
【0118】
サービス・モデルは以下の通りである。
サービスとしてのソフトウェア(SaaS):消費者に提供される能力は、クラウド・インフラストラクチャ上で動作するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インタフェース(例えば、ウェブ・ベースの電子メール)を通して様々なクライアント・デバイスからアクセス可能である。消費者は、限定的なユーザ固有のアプリケーション構成設定のあり得る例外を除き、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらに個別のアプリケーション能力を含む基礎をなすクラウド・インフラストラクチャを管理または制御しない。
サービスとしてのプラットフォーム(PaaS):消費者に提供される能力は、プロバイダによってサポートされたプログラミング言語およびツールを使用して作成された消費者作成または取得アプリケーションを、クラウド・インフラストラクチャ上に配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎をなすクラウド・インフラストラクチャを管理または制御しないが、配備されたアプリケーションおよび場合によってはアプリケーション・ホスト環境の設定を制御する。
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本コンピューティング・リソースをプロビジョニングすることであり、消費者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを配備および実行することができる。消費者は、基礎をなすクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションを制御し、場合によっては選択ネットワーキング・コンポーネント(例えばホスト・ファイアウォール)を限定的に制御する。
【0119】
配備モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは組織のためだけに運営される。クラウド・インフラストラクチャは、組織またはサード・パーティが管理することができ、施設内または施設外に存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共通の関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、組織またはサード・パーティが管理することができ、施設内または施設外に存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大企業グループが利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーション可搬性を可能にする標準技術または専用技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって結合された、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0120】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味相互運用性に重点をおいたサービス指向である。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0121】
次に、図7を参照すると、例示的なクラウド・コンピューティング環境710が示される。図示のように、クラウド・コンピューティング環境710は、クラウド消費者によって使用されるローカル・コンピューティング・デバイス、例えば、携帯情報端末(PDA)もしく携帯電話700A(例えば、会話エージェント100およびコンピュータ・システム500)または自動車コンピュータ・システム700Nあるいはその両方などが通信することができる1つまたは複数のクラウド・コンピューティング・ノード700を含む。ノード700は、互いに通信することができる。ノード700は、本明細書で上述したようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組合せなどの1つまたは複数のネットワークにおいて物理的にまたは仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境710は、クラウド消費者がローカル・コンピューティング・デバイスにリソースを維持する必要がないサービスとして、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを提供することができる。図7に示されたコンピューティング・デバイス700A~700Nのタイプは単に例示であることが意図されていることと、コンピューティング・ノード700およびクラウド・コンピューティング環境710は、任意のタイプのネットワークまたはネットワーク・アドレス可能な接続(例えば、ウェブ・ブラウザを使用して)あるいはその両方を介して任意のタイプのコンピュータ化デバイスと通信できることとを理解されたい。
【0122】
次に、図8を参照すると、クラウド・コンピューティング環境710(図7)によって提供される機能抽象化層のセットが示される。図8に示されたコンポーネント、層、および機能は、単に例示であるように意図されており、本開示の実施形態はそれに限定されないことを予め理解されたい。以下に示されるように、以下の層および対応する機能が提供される。
【0123】
ハードウェアおよびソフトウェア層800は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム802と、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベース・サーバ804と、サーバ806と、ブレード・サーバ808と、ストレージ・デバイス810と、ネットワークおよびネットワーキング・コンポーネント812とが含まれる。実施形態によっては、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア814と、データベース・ソフトウェア816とを含む。
【0124】
仮想化層820は、仮想エンティティの以下の例、すなわち、仮想サーバ822と、仮想ストレージ824と、仮想プライベート・ネットワークを含む仮想ネットワーク826と、バーチャル・アプリケーションおよびオペレーティング・システム828と、仮想クライアント830とを備えることができる抽象化層を提供する。
【0125】
1つの例では、管理層840は、以下で説明する機能を提供することができる。リソース・プロビジョニング842は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を行う。例えば、リソース・プロビジョニング842は、高いアクティビティを有することが示されているデバイスに追加のコンピューティング・リソースを割り当てることができる。計量および価格設定844は、リソースがクラウド・コンピューティング環境内で利用されたときにコスト追跡を行い、これらのリソースの消費に対する請求書または送り状を送る。1つの例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。いくつかの実施形態では、計量および価格設定844は、システムのマシンに割り当てられたライセンスの数を示す。セキュリティは、クラウド消費者およびタスクのアイデンティティ検証、ならびにデータおよび他のリソースの保護を行う。ユーザ・ポータル846は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセス権を提供する。サービス・レベル管理848は、必要なサービス・レベルが満たされるようにクラウド・コンピューティング・リソース割り当ておよび管理を行う。サービス品質保証契約(SLA)計画および履行850は、将来必要なことがSLAによって予想されるクラウド・コンピューティング・リソースの事前配置および調達を行う。
【0126】
ワークロード層860は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロードおよび機能の例には、マッピングおよびナビゲーション862と、ソフトウェア開発およびライフ・サイクル管理864と、仮想教室教育提供866と、データ分析処理868と、トランザクション処理870と、識別可能媒体の識別872とが含まれる。
【0127】
本明細書でより詳細に論じられているように、本明細書に記載された方法の実施形態のうちのいくつかの操作の一部またはすべては、本明細書において一貫している限り、代替の順序で実行されてもよく、または全く実行されなくてもよいと考えられる。さらに、多数の操作が、同時に、またはより大きいプロセスの内部の一部として行われてもよい。
【0128】
本開示は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有する1つのコンピュータ可読記憶媒体(または複数の媒体)を含むことができる。
【0129】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述のものの任意の適切な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、消去可能プログラマブル読出し専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的符号化デバイス、および前述のものの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通って伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通して伝送される電気信号などのそれ自体一過性信号であると解釈されるべきではない。
【0130】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【0131】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++などのようなオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータで、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータで、部分的にユーザのコンピュータでおよび部分的にリモート・コンピュータで、または完全にリモート・コンピュータもしくはサーバで実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータへ接続されてもよく、または、外部コンピュータへの接続がなされてもよい(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本開示の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人専用にすることによってコンピュータ可読プログラム命令を実行することができる。
【0132】
本開示の態様は、本開示の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して本明細書に記載されている。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実現され得ることが理解されるであろう。
【0133】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実現するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを生み出すものであってもよい。これらのコンピュータ可読プログラム命令はまた、命令が格納されたコンピュータ可読記憶媒体が流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作の態様を実現する命令を含む製品を構成するように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに対し、特定のやり方で機能するように指示することができるものであってもよい。
【0134】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実施するように、コンピュータ実装プロセスを生み出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイスで一連の動作ステップを実行させるものであってもよい。
【0135】
図における流れ図およびブロック図は、本開示の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示す。これに関しては、流れ図またはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部分を表すことができる。いくつかの代替の実施態様では、ブロックに記された機能は、図に記された順序から外れて行われてもよい。例えば、連続して示された2つのブロックは、実際には、実質的に同時に実行されてもよく、またはブロックは、時には、関連する機能に応じて逆の順序で実行されてもよい。ブロック図または流れ図あるいはその両方の各ブロック、およびブロック図または流れ図あるいはその両方のブロックの組合せは、指定された機能または動作を実行するかまたは専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェア・ベース・システムで実施することができることにも留意されたい。
【0136】
本明細書で使用される用語は、特定の実施形態のみを説明するためのものであり、様々な実施形態を限定するようには意図されていない。本明細書で使用されるとき、「ある(a)」、「1つの(an)」、および「その(the)」という単数形は、文脈が明確にそうでないことを示さない限り、複数形を同様に含むように意図されている。本明細書で使用された場合、「含む(includes)」または「含んでいる(including)」あるいはその両方の用語は、記述された特徴、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、またはそれらのグループ、あるいはその組合せの存在または追加を排除しないことがさらに理解されよう。様々な実施形態の例示の実施形態の前の詳細な説明において、本明細書の一部を形成し、例として、様々な実施形態を実施することができる特定の例示の実施形態が示される添付の図面(同様の数字が同様の要素を表す)が参照された。これらの実施形態は、当業者が実施形態を実施できるように十分に詳細に説明されたが、他の実施形態が使用されてもよく、様々な実施形態の範囲から逸脱することなく、論理的、機械的、電気的、および他の変更が行われてもよい。前の説明において、多数の特定の詳細が、様々な実施形態の完全な理解を提供するように記載された。しかし、様々な実施形態は、これらの特定の詳細なしに実施されてもよい。他の事例では、よく知られている回路、構造、および技法は、実施形態を不明瞭にしないために、詳細には示されていない。
【0137】
本明細書内で使用された「実施形態」という単語に関する様々な事例は、必ずしも同じ実施形態を参照しないが、同じ実施形態を参照してもよい。本明細書に図示および記載されたデータおよびデータ構造は単なる例であり、他の実施形態では、異なる量のデータ、データのタイプ、フィールド、フィールドの数およびタイプ、フィールド名、行の数およびタイプ、記録、エントリ、またはデータの編成が使用されてもよい。加えて、いかなるデータも論理と組み合わせることができ、その結果、別個のデータ構造が必要でないことがある。それゆえに、前の詳細な説明は、限定の意味で解釈されるべきでない。
【0138】
本開示の様々な実施形態の説明が、例示の目的で提示されたが、網羅的であることまたは開示された実施形態に限定することは意図されていない。記載された実施形態の範囲から逸脱することなく、多くの変形および変更が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の用途、または市場で見いだされる技術に対する技術的な改善を最もよく説明するように、または本明細書で開示される実施形態を他の当業者が理解できるように選ばれた。
【0139】
本開示が特定の実施形態に関して説明されたが、その改変および変形が当業者には明らかになることが予想される。それゆえに、特許請求の範囲が、本開示の範囲に含まれるすべてのそのような改変および変形を包含すると解釈されることが意図されている。
図1
図2
図3
図4A
図4B
図5
図6
図7
図8