(57)【要約】  本開示は、会話エージェントの訓練に関する。会話エージェントは、アトミック演算子のセットで開始され、各アトミック演算子は、操作を実行するための１つまたは複数のアトミック演算子ルールを有する。自然言語入力は、会話インタフェースでユーザから受け取られる。自然言語入力が、ルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかの決定がなされる。自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、ユーザに訓練が要求される。次いで、自然言語入力をスクリプトにマッピングする訓練をユーザから受ける。自然言語入力をスクリプトにマッピングするマッピング・ルールが格納され、スクリプトが実行される。
2021531487.tif 000002
【特許請求の範囲】
【請求項１】
自然言語を使用して会話エージェントを訓練するためのコンピュータ実施方法であって、
アトミック演算子のセットで前記会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための１つまたは複数のアトミック演算子ルールを有する、前記開始することと、
ユーザからの自然言語入力を会話インタフェースで受け取ることと、
前記自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに訓練を要求することと、
前記自然言語をスクリプトにマッピングする訓練を前記ユーザから前記会話インタフェースによって受けることと、
前記自然言語入力を前記スクリプトにマッピングするマッピング・ルールを格納することと、
訓練を前記ユーザから受けることに応じて、前記スクリプトを実行することと
を含む、コンピュータ実施方法。
【請求項２】
前記自然言語入力を前記スクリプトにマッピングする訓練を前記ユーザから受けることが、
アトミック演算子および自然言語入力を使用して新しいスクリプトを生成することと、
前記自然言語入力を前記新しいスクリプトに結合させるマッピング・ルールを生成することと
を含む、請求項１に記載の方法。
【請求項３】
前記新しいスクリプトを生成することが、
前記会話インタフェースを使用して前記新しいスクリプトを作成するためにアトミック演算子を呼び出すことと、
前記会話インタフェースを使用してアトミック演算子入力および自然言語入力を含むスクリプト文を提供することと、
前記会話インタフェースを使用して前記スクリプトを終了するためにアトミック演算子を呼び出すことと
を含む、請求項２に記載の方法。
【請求項４】
前記自然言語入力をスクリプトにマッピングする訓練を前記ユーザから受けることが、前記自然言語入力を前記スクリプトにマッピングするために既存のマッピング・ルールを一般化することを含む、請求項１に記載の方法。
【請求項５】
前記既存のマッピング・ルールを一般化することが、
既存の自然言語ルールの用語と同一である前記自然言語入力の用語を識別することと、
前記自然言語入力と前記既存の自然言語ルールとの間の非同一用語を、前記非同一用語を包含するスーパークラスで前記非同一用語を置き換えることによって、一般化することと
を含む、請求項４に記載の方法。
【請求項６】
一般化することが、前記自然言語入力を、以前に入力された自然言語入力と同じように処理することを含む、請求項４に記載の方法。
【請求項７】
前記自然言語入力を受け取る前に、プライマリ・スクリプトがロードされ、前記プライマリ・スクリプトが、自然言語入力を前記ユーザに促すように構成される、請求項１に記載の方法。
【請求項８】
前記スクリプトを実行することが、
前記スクリプトを命令ベクトルにロードすることであり、前記スクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットを通して反復することと、
前記命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、
前記サブスクリプト呼出しに対応するサブスクリプトを第２の命令ベクトルにロードすることと、
前記サブスクリプトの命令のセットを通して反復することと、
前記サブスクリプトの前記命令のセットを通して反復した後、前記命令のセットの残りの命令を通して反復するために前記スクリプトに戻ることと
を含む、請求項１に記載の方法。
【請求項９】
前記スクリプトが、少なくとも１つのサブスクリプトを参照し、前記少なくとも１つのサブスクリプトが、第２のサブスクリプトをさらに含む、請求項１に記載の方法。
【請求項１０】
会話エージェントであって、
少なくとも１つのメモリ・コンポーネントおよび少なくとも１つのプロセッサと、
アトミック演算子のセットのデータ・ストアであり、各アトミック演算子が、操作を実行するための１つまたは複数のアトミック演算子ルールを有する、前記データ・ストアと、
ユーザからの自然言語入力を受け取るように構成された会話インタフェースと、
ルール・エンジンであり、
前記自然言語入力が、前記ルール・エンジンによって指定された複数のマッピング・ルールを参照することによって既存のスクリプトにマッピングされるかどうかを決定し、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに訓練を要求する
ように構成される、前記ルール・エンジンと、
ルール訓練コンポーネントであり、
前記ルール・エンジンが前記ユーザに訓練を要求することに応じて、前記自然言語をスクリプトにマッピングする訓練を前記ユーザから前記会話インタフェースによって受け、
前記自然言語入力を前記スクリプトにマッピングするマッピング・ルールを格納する
ように構成される、前記ルール訓練コンポーネントと、
訓練を前記ユーザから受けることに応じて、前記スクリプトを実行するように構成されたスクリプト・エンジンと
を含む、会話エージェント。
【請求項１１】
前記ルール訓練コンポーネントが、
アトミック演算子および自然言語入力を使用して新しいスクリプトを生成し、
前記自然言語入力を前記新しいスクリプトに結合させるマッピング・ルールを生成する
ようにさらに構成される、請求項１０に記載の会話エージェント。
【請求項１２】
前記新しいスクリプトを生成することが、
前記会話インタフェースを使用して前記新しいスクリプトを作成するためにアトミック演算子を呼び出すことと、
前記会話インタフェースを使用してアトミック演算子入力および自然言語入力を含むスクリプト文を提供することと、
前記会話インタフェースを使用して前記スクリプトを終了するためにアトミック演算子を呼び出すことと
を含む、請求項１１に記載の会話エージェント。
【請求項１３】
前記ルール訓練コンポーネントが、
前記自然言語入力を前記スクリプトにマッピングするために既存のマッピング・ルールを一般化する
ように構成される、請求項１０に記載の会話エージェント。
【請求項１４】
前記既存のマッピング・ルールを一般化することが、
既存の自然言語ルールの用語と同一である前記自然言語入力の用語を識別することと、
前記自然言語入力と前記既存の自然言語ルールとの間の非同一用語を、前記非同一用語を包含するスーパークラスで前記非同一用語を置き換えることによって、一般化することと
を含む、請求項１３に記載の会話エージェント。
【請求項１５】
一般化することが、前記自然言語入力を、以前に入力された自然言語入力と同じように処理することを含む、請求項１３に記載の会話エージェント。
【請求項１６】
前記自然言語入力を受け取る前に、プライマリ・スクリプトがロードされ、前記プライマリ・スクリプトが、自然言語入力を前記ユーザに促すように構成される、請求項１０に記載の会話エージェント。
【請求項１７】
前記スクリプト・エンジンが、
前記スクリプトを命令ベクトルにロードすることであり、前記スクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットを通して反復することと、
前記命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、
前記サブスクリプト呼出しに対応するサブスクリプトを第２の命令ベクトルにロードすることと、
前記サブスクリプトの命令のセットを通して反復することと、
前記サブスクリプトの前記命令のセットを通して反復した後、前記命令のセットの残りの命令を通して反復するために前記スクリプトに戻ることと
を行うようにさらに構成される、請求項１０に記載の会話エージェント。
【請求項１８】
前記スクリプトが、少なくとも１つのサブスクリプトを含み、前記少なくとも１つのサブスクリプトが、第２のサブスクリプトをさらに含む、請求項１０に記載の会話エージェント。
【請求項１９】
自然言語を使用して会話エージェントを訓練するためのコンピュータ・プログラム製品であって、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、前記プログラム命令が、プロセッサに方法を実行させるように前記プロセッサによって実行可能であり、前記方法が、
アトミック演算子のセットで前記会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための１つまたは複数のアトミック演算子ルールを有する、前記開始することと、
ユーザからの自然言語入力を会話インタフェースで受け取ることと、
前記自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに訓練を要求することと、
前記自然言語をスクリプトにマッピングする訓練を前記ユーザから前記会話インタフェースによって受けることと、
前記自然言語入力を前記スクリプトにマッピングするマッピング・ルールを格納することと、
訓練を前記ユーザから受けることに応じて、前記スクリプトを実行することと
を含む、コンピュータ・プログラム製品。
【請求項２０】
前記自然言語入力を前記スクリプトにマッピングする訓練を前記ユーザから受けることが、
アトミック演算子および自然言語入力を使用して新しいスクリプトを生成することと、
前記自然言語入力を前記新しいスクリプトに結合させるマッピング・ルールを生成することと
を含む、請求項１９に記載のコンピュータ・プログラム製品。
【請求項２１】
前記新しいスクリプトを生成することが、
前記会話インタフェースを使用して前記新しいスクリプトを作成するためにアトミック演算子を呼び出すことと、
前記会話インタフェースを使用してアトミック演算子入力および自然言語入力を含むスクリプト文を提供することと、
前記会話インタフェースを使用して前記スクリプトを終了するためにアトミック演算子を呼び出すことと
を含む、請求項２０に記載のコンピュータ・プログラム製品。
【請求項２２】
前記自然言語入力をスクリプトにマッピングする訓練を前記ユーザから受けることが、前記自然言語入力を前記スクリプトにマッピングするために既存のマッピング・ルールを一般化することを含む、請求項１９に記載のコンピュータ・プログラム製品。
【請求項２３】
前記スクリプトを実行することが、
前記スクリプトを命令ベクトルにロードすることであり、前記スクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットを通して反復することと、
前記命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、
前記サブスクリプト呼出しに対応するサブスクリプトを第２の命令ベクトルにロードすることと、
前記サブスクリプトの命令のセットを通して反復することと、
前記サブスクリプトの前記命令のセットを通して反復した後、前記命令のセットの残りの命令を通して反復するために前記スクリプトに戻ることと
を含む、請求項１９に記載のコンピュータ・プログラム製品。
【請求項２４】
自然言語を使用して会話エージェントを訓練するためのコンピュータ実施方法であって、
アトミック演算子のセットで前記会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための１つまたは複数のアトミック演算子ルールを有する、前記開始することと、
ユーザからの自然言語入力を会話インタフェースで受け取ることと、
前記自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに明確化を要求することと、
前記ユーザに明確化を要求することに応じて、前記自然言語をスクリプトにマッピングする訓練を前記ユーザから前記会話インタフェースによって受けることと、
前記自然言語入力を前記スクリプトにマッピングするマッピング・ルールを格納することと、
訓練を前記ユーザから受けることに応じて、前記スクリプトを実行することと
を含み、前記スクリプトを実行することが、
前記スクリプトを命令ベクトルにロードすることであり、前記スクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットを通して反復し、前記命令で指定された自然言語ルールおよびアトミック演算子ルールを実行することと
をさらに含む、コンピュータ実施方法。
【請求項２５】
会話エージェントのスクリプトを実行するためのコンピュータ・プログラム製品であって、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、前記プログラム命令が、プロセッサに方法を実行させるように前記プロセッサによって実行可能であり、前記方法が、
スクリプトを命令ベクトルにロードすることであり、前記スクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットの命令がアトミック演算子ルールと一致するかどうかを決定することと、
前記命令が前記アトミック演算子ルールと一致するという決定に応じて、アトミック演算子を実行することと、
前記命令のセットの命令が自然言語ルールと一致するかどうかを決定することと、
前記命令が前記自然言語ルールと一致するという決定に応じて、前記自然言語ルールがマッピングされる第２のスクリプトを実行することと、
前記命令のセットの命令がアトミック演算子ルールまたは自然言語ルールと一致しないという決定に応じて、ユーザに明確化を要求することと、
前記ユーザによる明確化を受け取ることであり、前記ユーザが、アトミック演算子ルールまたは自然言語ルールと一致しない前記命令のセットの前記命令を新しいスクリプトにマッピングする新しい自然言語ルールを生成する、前記受け取ることと、
アトミック演算子ルールまたは自然言語ルールと一致しない前記命令のセットの前記命令を受け取ることに応じて、前記新しいスクリプトで指定された命令の第２のセットを通して反復し、前記新しいスクリプトの少なくとも１つのアトミック演算子を実行することによって、前記新しいスクリプトを実行することと
を含む、コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、認知システムに関し、より詳細には、自然言語を使用した会話エージェント（conversational agent）の訓練に関する。
【背景技術】
【０００２】
認知システムは、人間の専門知識および認知を拡大するために、自然言語処理および機械学習を使用して人間と機械とが自然に対話（interact）できるようにする技術プラットフォームを提供する。認知システムは、会話エージェントを使用することができ、会話エージェントは、人間のユーザと会話し、通常の自然言語でユーザによって作成されたステートメントを解釈して応答する。
【発明の概要】
【０００３】
本開示の実施形態は、会話エージェントの訓練に関する。会話エージェントは、アトミック演算子（atomic operator）のセットで開始することができ、各アトミック演算子は、操作を実行するための１つまたは複数のアトミック演算子ルールを有する。自然言語入力は、会話インタフェースでユーザから受け取ることができる。自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかの決定を行うことができる。自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、ユーザに訓練を要求することができる。次いで、明確化の要求に応じて自然言語入力をスクリプトにマッピングする訓練をユーザから会話インタフェースで受け取ることができる。次いで、自然言語入力をスクリプトにマッピングするマッピング・ルールが格納され得、スクリプトが実行され得る。
【０００４】
第１の態様から見ると、本発明は、自然言語を使用して会話エージェントを訓練するためのコンピュータ実施方法を提供し、コンピュータ実施方法は、アトミック演算子のセットで会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための１つまたは複数のアトミック演算子ルールを有する、開始することと、ユーザからの自然言語入力を会話インタフェースで受け取ることと、自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、ユーザに訓練を要求することと、自然言語をスクリプトにマッピングする訓練をユーザから会話インタフェースによって受けることと、自然言語入力をスクリプトにマッピングするマッピング・ルールを格納することと、訓練をユーザから受けることに応じて、スクリプトを実行することとを含む。
【０００５】
好ましくは、本発明は、自然言語入力をスクリプトにマッピングする訓練をユーザから受けることが、アトミック演算子および自然言語入力を使用して新しいスクリプトを生成することと、自然言語入力を新しいスクリプトに結合させるマッピング・ルールを生成することとを含む、方法を提供する。
【０００６】
好ましくは、本発明は、新しいスクリプトを生成することが、会話インタフェースを使用して新しいスクリプトを作成するためにアトミック演算子を呼び出すことと、会話インタフェースを使用してアトミック演算子入力および自然言語入力を含むスクリプト文を提供することと、会話インタフェースを使用してスクリプトを終了するためにアトミック演算子を呼び出すこととを含む、方法を提供する。
【０００７】
好ましくは、本発明は、自然言語入力をスクリプトにマッピングする訓練をユーザから受けることが、自然言語入力をスクリプトにマッピングするために既存のマッピング・ルールを一般化することを含む、方法を提供する。
【０００８】
好ましくは、本発明は、既存のマッピング・ルールを一般化することが、既存の自然言語ルールの用語と同一である自然言語入力の用語を識別することと、自然言語入力と既存の自然言語ルールとの間の非同一用語（non-identical term）を、非同一用語を包含するスーパークラスで非同一用語を置き換えることによって、一般化することとを含む、方法を提供する。
【０００９】
好ましくは、本発明は、一般化することが、自然言語入力を、以前に入力された自然言語入力と同じように処理することを含む、方法を提供する。
【００１０】
好ましくは、本発明は、自然言語入力を受け取る前に、プライマリ・スクリプト（primary script）がロードされ、プライマリ・スクリプトが、自然言語入力をユーザに促すように構成される、方法を提供する。
【００１１】
好ましくは、本発明は、スクリプトを実行することが、スクリプトを命令ベクトルにロードすることであり、スクリプトが命令のセットを有する、ロードすることと、命令のセットを通して反復することと、命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、サブスクリプト呼出しに対応するサブスクリプトを第２の命令ベクトルにロードすることと、サブスクリプトの命令のセットを通して反復することと、サブスクリプトの命令のセットを通して反復した後、命令のセットの残りの命令を通して反復するためにスクリプトに戻ることとを含む、方法を提供する。
【００１２】
好ましくは、本発明は、スクリプトが、少なくとも１つのサブスクリプトを参照し、少なくとも１つのサブスクリプトが、第２のサブスクリプトをさらに含む方法を提供する。
【００１３】
別の態様から見ると、本発明は、会話エージェントを提供し、会話エージェントは、少なくとも１つのメモリ・コンポーネントおよび少なくとも１つのプロセッサと、アトミック演算子のセットのデータ・ストアであり、各アトミック演算子が、操作を実行するための１つまたは複数のアトミック演算子ルールを有する、データ・ストアと、ユーザからの自然言語入力を受け取るように構成された会話インタフェースと、ルール・エンジンであり、自然言語入力が、ルール・エンジンによって指定された複数のマッピング・ルールを参照することによって既存のスクリプトにマッピングされるかどうかを決定し、自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、ユーザに訓練を要求するように構成される、ルール・エンジンと、ルール訓練コンポーネントであり、ルール・エンジンがユーザに訓練を要求することに応じて、自然言語をスクリプトにマッピングする訓練をユーザから会話インタフェースによって受け、自然言語入力をスクリプトにマッピングするマッピング・ルールを格納するように構成される、ルール訓練コンポーネントと、訓練をユーザから受けることに応じて、スクリプトを実行するように構成されたスクリプト・エンジンとを含む。
【００１４】
好ましくは、本発明は、ルール訓練コンポーネントが、アトミック演算子および自然言語入力を使用して新しいスクリプトを生成し、自然言語入力を新しいスクリプトに結合させるマッピング・ルールを生成するようにさらに構成される、会話エージェントを提供する。
【００１５】
好ましくは、本発明は、新しいスクリプトを生成することが、会話インタフェースを使用して新しいスクリプトを作成するためにアトミック演算子を呼び出すことと、会話インタフェースを使用してアトミック演算子入力および自然言語入力を含むスクリプト文を提供することと、会話インタフェースを使用してスクリプトを終了するためにアトミック演算子を呼び出すこととを含む、会話エージェントを提供する。
【００１６】
好ましくは、本発明は、ルール訓練コンポーネントが、自然言語入力をスクリプトにマッピングするために既存のマッピング・ルールを一般化するように構成される、会話エージェントを提供する。
【００１７】
好ましくは、本発明は、既存のマッピング・ルールを一般化することが、既存の自然言語ルールの用語と同一である自然言語入力の用語を識別することと、自然言語入力と既存の自然言語ルールとの間の非同一用語を、非同一用語を包含するスーパークラスで非同一用語を置き換えることによって、一般化することとを含む、会話エージェントを提供する。
【００１８】
好ましくは、本発明は、一般化することが、自然言語入力を、以前に入力された自然言語入力と同じように処理することを含む、会話エージェントを提供する。
【００１９】
好ましくは、本発明は、自然言語入力を受け取る前に、プライマリ・スクリプトがロードされ、プライマリ・スクリプトが、自然言語入力をユーザに促すように構成される、会話エージェントを提供する。
【００２０】
好ましくは、本発明は、スクリプト・エンジンが、スクリプトを命令ベクトルにロードすることであり、スクリプトが命令のセットを有する、ロードすることと、命令のセットを通して反復することと、命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、サブスクリプト呼出しに対応するサブスクリプトを第２の命令ベクトルにロードすることと、サブスクリプトの命令のセットを通して反復することと、サブスクリプトの命令のセットを通して反復した後、命令のセットの残りの命令を通して反復するためにスクリプトに戻ることとを行うようにさらに構成される、会話エージェントを提供する。
【００２１】
好ましくは、本発明は、スクリプトが、少なくとも１つのサブスクリプトを含み、少なくとも１つのサブスクリプトが、第２のサブスクリプトをさらに含む、会話エージェントを提供する。
【００２２】
別の態様から見ると、本発明は、自然言語を使用して会話エージェントを訓練するためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品が、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、プログラム命令が、プロセッサに方法を実行させるようにプロセッサによって実行可能であり、この方法が、アトミック演算子のセットで会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための１つまたは複数のアトミック演算子ルールを有する、開始することと、ユーザからの自然言語入力を会話インタフェースで受け取ることと、自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、ユーザに訓練を要求することと、自然言語をスクリプトにマッピングする訓練をユーザから会話インタフェースによって受けることと、自然言語入力をスクリプトにマッピングするマッピング・ルールを格納することと、訓練をユーザから受けることに応じて、スクリプトを実行することとを含む。
【００２３】
好ましくは、本発明は、自然言語入力をスクリプトにマッピングする訓練をユーザから受けることが、アトミック演算子および自然言語入力を使用して新しいスクリプトを生成することと、自然言語入力を新しいスクリプトに結合させるマッピング・ルールを生成することとを含む、コンピュータ・プログラム製品を提供する。
【００２４】
好ましくは、本発明は、新しいスクリプトを生成することが、会話インタフェースを使用して新しいスクリプトを作成するためにアトミック演算子を呼び出すことと、会話インタフェースを使用してアトミック演算子入力および自然言語入力を含むスクリプト文を提供することと、会話インタフェースを使用してスクリプトを終了するためにアトミック演算子を呼び出すこととを含む、コンピュータ・プログラム製品を提供する。
【００２５】
好ましくは、本発明は、自然言語入力をスクリプトにマッピングする訓練をユーザから受けることが、自然言語入力をスクリプトにマッピングするために既存のマッピング・ルールを一般化することを含む、コンピュータ・プログラム製品を提供する。
【００２６】
好ましくは、本発明は、スクリプトを実行することが、スクリプトを命令ベクトルにロードすることであり、スクリプトが命令のセットを有する、ロードすることと、命令のセットを通して反復することと、命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、サブスクリプト呼出しに対応するサブスクリプトを第２の命令ベクトルにロードすることと、サブスクリプトの命令のセットを通して反復することと、サブスクリプトの命令のセットを通して反復した後、命令のセットの残りの命令を通して反復するためにスクリプトに戻ることとを含む、コンピュータ・プログラム製品を提供する。
【００２７】
別の態様から見ると、本発明は、自然言語を使用して会話エージェントを訓練するためのコンピュータ実施方法を提供し、コンピュータ実施方法は、アトミック演算子のセットで会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための１つまたは複数のアトミック演算子ルールを有する、開始することと、ユーザからの自然言語入力を会話インタフェースで受け取ることと、自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、ユーザに明確化を要求することと、ユーザに明確化を要求することに応じて、自然言語をスクリプトにマッピングする訓練をユーザから会話インタフェースによって受けることと、自然言語入力をスクリプトにマッピングするマッピング・ルールを格納することと、訓練をユーザから受けることに応じて、スクリプトを実行することであり、スクリプトを実行することが、スクリプトを命令ベクトルにロードすることであり、スクリプトが命令のセットを有する、ロードすることと、命令のセットを通して反復し、命令で指定された自然言語ルールおよびアトミック演算子ルールを実行することとをさらに含む、実行することとを含む。
【００２８】
別の態様から見ると、本発明は、会話エージェントのスクリプトを実行するためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品が、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、プログラム命令が、プロセッサに方法を実行させるようにプロセッサによって実行可能であり、この方法が、スクリプトを命令ベクトルにロードすることであり、スクリプトが命令のセットを有する、ロードすることと、命令のセットの命令がアトミック演算子ルールと一致するかどうかを決定することと、命令がアトミック演算子ルールと一致するという決定に応じて、アトミック演算子を実行することと、命令のセットの命令が自然言語ルールと一致するかどうかを決定することと、命令が自然言語ルールと一致するという決定に応じて、自然言語ルールがマッピングされる第２のスクリプトを実行することと、命令のセットの命令がアトミック演算子ルールまたは自然言語ルールと一致しないという決定に応じて、ユーザに明確化を要求することと、ユーザによる明確化を受け取ることであり、ユーザが、アトミック演算子ルールまたは自然言語ルールと一致しない命令のセットの命令を新しいスクリプトにマッピングする新しい自然言語ルールを生成する、受け取ることと、アトミック演算子ルールまたは自然言語ルールと一致しない命令のセットの命令を受け取ることに応じて、新しいスクリプトで指定された命令の第２のセットを通して反復し、新しいスクリプトの少なくとも１つのアトミック演算子を実行することによって、新しいスクリプトを実行することとを含む。
【００２９】
上述の概要は、本開示の各々の例示される実施形態またはすべての実施態様を記載するものではない。
【００３０】
本開示に含まれる図面は、本明細書に組み込まれ、本明細書の一部を形成する。図面は、本開示の実施形態を示し、説明とともに、本開示の原理を説明するのに役立つ。図面は、典型的な実施形態の単なる例示であり、本開示を限定しない。
【図面の簡単な説明】
【００３１】
【図１】本開示の実施形態による、会話エージェントを示すブロック図である。
【図２】本開示の実施形態による、自然言語入力に基づいて会話エージェントを訓練するためのプロセスを示す流れ図である。
【図３】本開示の実施形態による、スクリプトを実行するためのプロセスを示す流れ図である。
【図４Ａ】本開示の実施形態による、ルール・エンジンによってルールを処理する一例を示す概略図である。
【図４Ｂ】本開示の実施形態による、図４Ａに示されたルールを一般化する一例を示す概略図である。
【図５】本開示の実施形態による、会話エージェントを有するコンピュータ・システムを示すブロック図である。
【図６】本開示の実施形態による、本明細書に記載された、方法、ツール、およびモジュールのうちの１つまたは複数、ならびに関連する機能を実施する際に、使用することができる例示のコンピュータ・システムを示すハイレベル・ブロック図である。
【図７】本開示の実施形態による、クラウド・コンピューティング環境を示す図である。
【図８】本開示の実施形態による、抽象化モデル層を示すブロック図である。
【発明を実施するための形態】
【００３２】
本明細書で説明される実施形態は、様々な変形および代替の形態が可能であるが、その詳細は、図面に例として示されており、詳細に説明される。しかしながら、記載される特定の実施形態は、限定の意味で解釈されるべきでないことを理解されたい。それどころか、本開示の範囲内にあるすべての変形、等価物、代替を包含することが意図される。
【００３３】
本開示の態様は、一般に、認知システムの分野に関し、特に、自然言語を使用した会話エージェントの訓練に関する。本開示はそのような用途に必ずしも限定されないが、本開示の様々な態様は、このコンテキストを使用した様々な例の議論を通して理解することができる。
【００３４】
会話エージェントの開発は、技術的なツーリングおよびプログラミング・モデルを使用して専門家によって行われる技術的タスクである。既知の会話エージェントは、一般に、特定の入力に対して特定の出力で応答するようにコード化または訓練される。意味モデルを使用するものもあれば、機械学習モデル、ルールのセット、実際のコード、または他の機構に埋め込まれたこの意味知識を有するものもある。
【００３５】
事前定義された正式の知識表現を使用すると、会話エージェントの用途が限定される。既知の会話エージェントは、知識表現を正式に定義することなしに新しい問題分野に適用することができない。
【００３６】
本開示の態様は、自然言語入力を通して訓練される会話エージェントに関する。実施形態は、会話インタフェースおよびアトミック演算子のセットを含む。ユーザは、アトミック演算子によって定義された操作を実行するように会話インタフェースを介してシステムに指示することができる。
【００３７】
ユーザはまた、会話型対話（conversational interaction）を通して、１つまたは複数のアトミック演算子を含むスクリプトに自然言語入力をマッピングするようにシステムに教えることができる。スクリプトは、自然言語の文をさらに含むことができる。ルールベースの人工知能エンジンは、自然言語入力のスクリプトへのマッピングを管理する。
【００３８】
システムは極めて限定された能力で開始することがあるが、しかしながら、時間とともに、大量の知能がシステムによって取得され得る。一連の機械学習アルゴリズムは、自然言語理解を一般化するためにバックグラウンドで動作することができ、その結果、ユーザは、言い回しのすべてのあり得る入れ替えを入力する必要はない。
【００３９】
開始時に、システムは、単に、アトミック操作を実行するように構成することができる。しかしながら、システムは、システムのインテリジェンスが拡大されるように、入力が理解されないときに明確化のために問い合わせるように構成されてもよい。ユーザがスクリプトの階層にマッピングされた複雑な自然言語命令の階層を構築するとき、より複雑な会話が処理され得る。
【００４０】
次に図１を参照すると、本開示の実施形態による、会話エージェント１００を示すブロック図が示される。会話エージェント１００は、自然言語入力の形態のユーザ命令を受け取るための会話ユーザ・インタフェース１１０を含む。会話エージェント１００は、コア・スクリプト・エンジン１２０と、自然言語入力のマッピングを管理するルール・エンジン１５０とをさらに含む。
【００４１】
会話エージェント１００は、スクリプト・エンジン１２０によって実行されるアトミック演算子１４０のセット（１つまたは複数の個々のアトミック演算子１４１で構成される）を含む。アトミック演算子１４０のセットは、事前定義することができる（編集可能でないこともある）。アトミック演算子１４０のセットは、事実上、予約語であり、それは、識別されたとき、特定の操作の実行をもたらす。例えば、アトミック演算子「Ｐｌｕｓ」は、２つの数値入力に対して加算操作を実行することができる。ユーザは、一連の既存のアトミック演算子で構成することができる自然言語を使用して新しい命令を定義することができる。
【００４２】
会話エージェント１００は、各々が一連の１つまたは複数のアトミック演算子および自然言語文を有するスクリプト１３０のセット（１つまたは複数の個々のスクリプト１３１を含む）をさらに含む。新しいスクリプトは、ユーザ入力によって訓練されるとき、スクリプト・エンジン１２０で構築することができる。実施形態において、スクリプト１３０は、階層的に組織化することができる。例えば、スクリプト１３０のセットは、１つまたは複数の子スクリプトまたはサブスクリプト（それら自体１つまたは複数のサブスクリプトを含むことができる）を有する親スクリプトを含むことができる。
【００４３】
スクリプト・エンジン１２０は、個々のスクリプト１３１から命令を読み出し、ルール・エンジン１５０と対話してそれらの命令を処理する。最も基本的な形態の命令は、アトミック演算子１４１を含む。アトミック演算子１４１は、アトミック演算子１４１の入力必須呼出し（input required call）（例えば、トリガ）を記述する１つまたは複数のアトミック演算子ルール１５２によって定義される。アトミック演算子１４１の入力および機能に基づいて、対応する出力が送信される（例えば、会話ユーザ・インタフェース１１０に）。
【００４４】
ルール・エンジン１５０は、それぞれのアトミック演算子１４０にマッピングされたアトミック演算子ルール１５２と、自然言語命令をスクリプト１３１にマッピングする自然言語ルール１５１とを含む。
【００４５】
図２を参照すると、本開示の実施形態による、会話エージェント（例えば、会話エージェント１００）を訓練するための例示のプロセス２００を示す流れ図２００が示される。
【００４６】
プロセス２００が開始し、プライマリ・スクリプトが開始およびロードされる。これが、ステップ２０１に示される。プライマリ・スクリプトは、初期化時にスクリプト・エンジン１２０によって自動的に開始およびロードされ得る。プライマリ・スクリプトは、会話エージェントのコア機能を定義する。例えば、プライマリ・スクリプトは、既存のスクリプト１３０のロード、新しいスクリプトの生成、既存のスクリプト１３０の一般化、およびアトミック演算子１４０の呼出しを促進する。プライマリ・スクリプトは、ユーザ入力を促す（例えば、要求する）ことができる。例えば、プライマリ・スクリプトをロードして開始するとき、会話エージェントは、ステータス（例えば、「稼働中です。」）を提供し、テキスト入力ウィンドウを会話インタフェース１１０に設けることによってユーザ入力を促すように構成することができる。次いで、ユーザの自然言語入力が受け取られる。これがステップ２０２に示される。自然言語入力は、会話エージェント１００によって処理されることになる任意の英数字文字を含むことができる。例えば、自然言語入力は、質問（例えば、「４と５の合計はいくつになるか？」、「天気はどうですか？」、「何時ですか？」など）またはステートメント（例えば、「ジョージ・ワシントンは初代大統領でした。」）あるいはその両方を含むことができる。
【００４７】
次いで、会話エージェント１００は、自然言語入力が既存のスクリプトにマッピングされるかどうかを決定することができる。これが、ステップ２０４に示される。自然言語入力が既存のスクリプトにマッピングされるかどうかの決定は、ルール・エンジン１５０を参照することによって完了することができる。ルール・エンジン１５０は、特定のスクリプトを呼び出すために使用することができる自然言語ルール１５１を含む。例えば、自然言語入力が自然言語ルール１５１のルールにマッピングされる場合、スクリプトをロードし、スクリプトで指定された命令（例えば、１つまたは複数のアトミック演算子または１つまたは複数のサブスクリプトあるいはその両方を含むことができる）により反復することによって、対応するスクリプト１３１を実行することができる。同様に、自然言語入力の命令がアトミック演算子ルール１５２のルールにマッピングされる場合、対応するアトミック演算子が実行される。これが、ステップ２０５に示される。スクリプト実行に関するさらなる詳細は、図３を参照して以下で提供される。実施形態では、実行されるスクリプトが自然言語入力を含んでいる場合、これらの入力はステップ２０２において入力として受け取られ、これらの入力が既存のスクリプトにマッピングされるかどうかの決定をステップ２０４において行うことができる。
【００４８】
既存のスクリプトと一致しない場合、入力の明確化が要求される。これが、ステップ２０７に示される。他の既存のルールがトリガされていないという決定に応じて呼び出されるデフォルト・ルールを設定することによって、明確化を要求することができる。例えば、ユーザが「１リットルは何ミリリットルですか？」と問い合わせ、自然言語入力命令がルール・エンジン１５０のルールにマッピングされていない場合、デフォルト・スクリプト（例えば、ＤｏｎｔＵｎｄｅｒｓｔａｎｄ．ｓｃｒ）を呼び出すことができ、その結果、会話エージェントは会話インタフェース１１０で明確化通知を出力する。次いで、ユーザは、会話エージェント１００が将来はこの自然言語入力命令を理解するように会話エージェント１００を訓練することができる。これが、ステップ２０８に示される。ユーザの訓練は様々な方法で完了することができる。
【００４９】
いくつかの実施形態では、訓練は、新しいスクリプトを生成することを含む（例えば、ステップ２１１〜ステップ２１３）。新しいスクリプトを生成するために、新しいスクリプト名の入力を受け取ることができる。これが、ステップ２１１に示される。スクリプト名は、新しいスクリプトの命令を実行するために新しいスクリプトを参照するのに使用することができる。実施形態では、新しく生成されたスクリプトは、スクリプトを呼び出すために１つまたは複数のルールを生成する（例えば、ルール・エンジン１５０で）ことによって呼び出される。スクリプト名が受け取られた後、スクリプトの命令が受け取られる。スクリプトの命令には、自然言語入力に対処するために使用される１つまたは複数のアトミック演算子または既存のスクリプト（新しいスクリプトに統合される場合、サブスクリプトになる）あるいはその両方が含まれる。最後に、「終了」入力が受け取られ、その結果、新しいスクリプトが完結される。その結果、ユーザが同じ入力（例えば、「１リットルは何ミリリットルですか？」）を会話インタフェース１１０に送信した後、自然言語入力がルール・エンジン１５０で参照されて、新しく生成されたスクリプトが検索され、入力が応答され得る（例えば、１０００ミリリットル）。
【００５０】
実施形態では、ユーザの訓練は、既存のルールまたはスクリプトあるいはその両方を一般化することを含むことができる。これが、ステップ２２０に示される。既存のスクリプトの一般化は、様々な方法で完了することができる。例えば、いくつかの実施形態では、一般化することは、構造的に類似した入力フレーズに対して１つまたは複数のルールまたはスクリプトあるいはその両方で指定された用語を一般化することを含むことができる。これが、ステップ２２１に示される。一例として、ユーザが、「ｘをｙに加える」（ここで、ｘおよびｙは整数である）を理解するように会話エージェントを訓練し、後で、ユーザが、「ｘとｙの合計はいくつになるか」を提示したと仮定する。会話エージェントは、「ｘをｙに加える」に類似している「ｘとｙの合計はいくつになるか」という問合せを処理するように構成することができる。そのような場合、２つの構造的に類似した入力フレーズを比較して、同一の用語を識別することができる（例えば、「＜数値＞を＜数値＞に加える」対「＜数値＞と＜数値＞の合計はいくつになるか」）。出力スクリプトは、同一の用語のうちのいずれかの存在を検討することができ、これらの同一の用語は、オリジナルの入力を参照して置き換えることができる（例えば、「＜数値＞と＜数値＞の合計はいくつになるか？」は、「＜数値＞を＜数値＞に加える」と置き換えることができる）。一般化に関するさらなる詳細は、図４において論じられる。
【００５１】
実施形態において、訓練することは、同一の用語をもつ２つの自然言語入力の値を一般化することを含むことができる。これが、ステップ２２２に示される。上述の例に従って、会話エージェントが「６と８の合計はいくつになるか？」という問合せに応答するように訓練され、後で、ユーザが、「８と１０の合計はいくつになるか？」という問合せを提示した場合、会話エージェントは、指定された数値を自動的に一般化するように構成することができる。この例では、「６」および「８」という値は、一般的な数値プレース・ホールダ（例えば、＜数値＞）で置き換えることができる。その結果、ユーザが後で「８と１０の合計はいくつになるか？」を提示した場合、一般化に基づいて、会話エージェントは、８と１０の合計を出力することになる。別の例として、自然言語入力が「空は何色か？」である場合、「空」という用語は、「オブジェクト」に一般化することができる。その結果、スクリプトを呼び出す（例えば、自然言語ルールに従って）ために「空」という用語を要求する代わりに、任意の「オブジェクト」を使用してスクリプトを呼び出すことができる。例えば、ユーザが「草は何色か？」を入力する場合、同じスクリプトを呼び出すことができる。この例では、「空」という用語を含む命令を、「オブジェクト」に一般化することもできる。「草」というオブジェクトに対して定義された特性に基づいて、会話エージェントは、色を出力することができる。
【００５２】
実施形態では、値を一般化することは、２つの異なる入力の値を包含するスーパークラスを決定することによって完了することができる。例えば、特定の整数に対して、スーパークラスは「数値の整数」として定義することができる。別の例として、アメリカの特定の州に対して、スーパークラスは「米国の州」として定義することができる。実施形態では、２つの入力に異なる値を包含するスーパークラスは、値を識別するために自然言語入力をトークン化することによって決定され得る。次いで、リレーショナル・データベース（ＲＤＢ）に関してこの値を解析して、ＲＤＢにおける値の階層的なおよび関係を示す位置づけを決定することができる。２つの入力の両方の値の「親ノード」（例えば、スーパークラス）に基づいて、スーパークラスを選択することができる。次いで、この値は、スーパークラスのサブクラスを含む将来の自然言語入力を処理できるように、スーパークラスと置き換えることができる。
【００５３】
実施形態では、ルールまたはスクリプトあるいはその両方を一般化することは、自然言語入力の一致類似性（match similarity）に基づいて完了することができる。これが、ステップ２２３に示される。例えば、ユーザが「４と５を加える」に応答するためのスクリプトを用いて会話エージェントを訓練し、後で、ユーザが「４と５を加える」を有する自然言語入力を提示した場合、会話エージェントは、ルール・マッピングまたはスクリプトあるいはその両方を自動的に一般化し、自然言語入力の小さいバリエーションに適合するように構成することができる。実施形態では、類似性閾値を実装して、２つの入力を同じ出力にマッピングできるかどうかを決定することができる。例えば、類似性閾値は、２つの所与の入力を一般化するには特定の数の一致する文字（例えば、１０個の一致する文字、９０％の一致する文字など）が存在しなければならないことを指示することができる。いくつかの実施形態では、これは、区別された自然言語入力に応じて同じスクリプト実行を可能にすることができる追加のルールをルール・エンジン１５０に含めることによって完了することができる（例えば、ルールは、２つのバリエーションを使用してスクリプトを呼び出すための機能を含む）。一般に、ルールは、入力を出力に単純にマッピングする。しかしながら、一般化することによって、多数の入力バリエーションを単一の出力にマッピングすることができる。さらに、入力の変化は、別の出力をもたらすことができる（例えば、任意の２つの整数を加えることなどの値を一般化することによって）。
【００５４】
会話エージェント１００がステップ２０８においてユーザの訓練を受けた後、ユーザの自然言語がユーザによって再入力され、プロセス２００は繰り返すことができる。後続の反復では、入力は、ここで、既存のスクリプトにマッピングすることができる。しかしながら、入力が依然としてスクリプトまたは操作にマッピングされない場合、さらなる明確化をステップ２０７において要求することができる。
【００５５】
次に、会話インタフェース（例えば、図１の会話インタフェース１１０）でのユーザ対話を示す一例を参照する。この例では、会話エージェント１００は「ＪＥＭ」と呼ばれる。
【００５６】
ユーザは、会話エージェントに以下の会話に示されるように、いくつかの基本的な数学を教えることができる。
ユーザ：４を５に加える
ＪＥＭ：分かりません＝＞”４を５に加える”
ユーザ：ＪＥＭＣｒｅａｔｅＳｃｒｉｐｔ  ”４を５に加える”
ＪＥＭ：スクリプト文を入力し、終了したときにＪＥＭＥｎｄＳｃｒｉｐｔを使用してください。
ユーザ：ｓｕｍ＝４  ＪＥＭＰｌｕｓ  ５
ユーザ：ＪＥＭＤｅｆｉｎｅ  ｌａｓｔＲｅｓｕｌｔ＝＄ｓｕｍ
ユーザ：ＪＥＭＯｕｔｐｕｔ  ＄ｓｕｍ
ユーザ：ＪＥＭＥｎｄＳｃｒｉｐｔ
ＪＥＭ：”４を５に加える”のスクリプトを作成していただきありがとうございます
ユーザ：４を５に加える
ＪＥＭ：９
ユーザ：１を３に加える
ＪＥＭ：分かりません＝＞”１を３に加える”
ユーザ：”１を３に加える”  ＪＥＭＨａｎｄｌｅＬｉｋｅ  ”４を５に加える”
ユーザ：１を３に加える
ＪＥＭ：４
ユーザ：５を３に加える
ＪＥＭ：８
ユーザ：４と５でいくつになるか
ＪＥＭ：分かりません＝＞”４と５でいくつになるか”
ユーザ：”４と５でいくつになるか”  ＪＥＭＳａｍｅＡｓ  ”４を５に加える”
ユーザ：４と５でいくつになるか
ＪＥＭ：９
【００５７】
上述の会話では、アトミック演算子１４１は次の通りである。
１．  ＪＥＭＣｒｅａｔｅＳｃｒｉｐｔ
２．  ＪＥＭＰｌｕｓ
３．  ＪＥＭＯｕｔｐｕｔ
４．  ＪＥＭＥｎｄＳｃｒｉｐｔ
５．  ＪＥＭＨａｎｄｌｅＬｉｋｅ
６．  ＪＥＭＳａｍｅＡｓ
【００５８】
上述の会話では、ユーザは、最初に、会話エージェントによって理解されない（例えば、ルールが、自然言語入力を既存のスクリプトまたはアトミック演算子にマッピングしない）自然言語命令を入力する。その結果、会話エージェント１００は、システムが入力を理解しないというユーザへの通知（例えば、図２のステップ２０７）を促すためのデフォルト・スクリプトを検索する。この場合、ユーザは、新しいスクリプトにより会話エージェントを訓練する（例えば、ステップ２１１〜ステップ２１３）。ユーザは最初にスクリプト名「４を５に加える」を指定し、次いで、引き続いて、関連するスクリプト文（例えば、追加アトミック操作を含む）を指定する。次いで、ユーザはスクリプトを閉じる。同じ自然言語フレーズ（４を５に加える）を再入力すると、会話エージェントは、「４を５に加える」（例えば、自然言語フレーズが自然言語ルールで指定されたスクリプトにマッピングされていることに基づく）スクリプトを取得し、スクリプト内の命令を実行し、４と５の合計を出力する。
【００５９】
次いで、ユーザは、類似しているが異なる数値の自然言語フレーズを入力する。会話エージェントは、自然言語フレーズをどのスクリプトにもマッピングできないので、自然言語フレーズを理解しない。会話エージェント１００によって促された明確化に応じて、ユーザは、アトミック演算子「ＪＥＭＨａｎｄｌｅＬｉｋｅ」を入力し、自然言語フレーズ「１を３に加える」を「４を５に加える」にマッピングする。次いで、「４を５に加える」というスクリプトが、検索され一般化される。すなわち、「４を５に加える」というスクリプトを検索するためのマッピングは、今では、「＜数値＞を＜数値＞に加える」に一般化され、「ｓｕｍ＝４  ＪＥＭＰｌｕｓ  ５」というスクリプト命令は、「ｓｕｍ＝＜ｎｕｍｅｒｉｃ＞  ＪＥＭＰｌｕｓ  ＜ｎｕｍｅｒｉｃ＞」に一般化される。これにより、表現が「＜数値＞を＜数値＞に加える」からなる限り、ＪＥＭの会話エージェント１００は、任意の２つの数の加算を処理することができる。
【００６０】
次いで、ユーザは、異なる言い回しによる類似の自然言語フレーズの「４と５でいくつになるか」を入力する。会話エージェントは、入力が「４と５を加える」と同じ意味であるにもかかわらず、入力を理解しない（フレーズが、定義されたルールによってスクリプトにマッピングされていないので）。会話エージェントによる明確化応答に応じて、ユーザは、「４と５でいくつになるか」を「４を５に加える」にマッピングするアトミック演算子「ＪＥＭＳａｍｅＡｓ」を入力する。その結果、システムは、「＜数値＞と＜数値＞でいくつになるか」を「＜数値＞を＜数値＞に加える」にマッピングするように教えられる（例えば、これらの自然言語フレーズは、両方とも、「４を５に加える」スクリプトを呼び出すために自然言語ルールに格納される）。その結果、入力「４と５でいくつになるか」を受け取ることに応じて、システムは、４と５の合計を出力する。
【００６１】
ＪＥＭはまた、以下の会話に示されるように、スクリプトをカスケードすること（例えば、単一の入力に対して多数のスクリプトまたはスクリプト階層を参照すること）をサポートすることができる。
ユーザ：１４と５２の平均はいくつになるか
ＪＥＭ：分かりません＝＞”１４と５２の平均はいくつになるか”
ユーザ：ＪＥＭＣｒｅａｔｅＳｃｒｉｐｔ  ”１４と５２の平均はいくつになるか”
ＪＥＭ：スクリプト文を入力し、終了したときにＪＥＭＥｎｄＳｃｒｉｐｔを使用してください。
ユーザ：１４を５２に加える
ユーザ：２で割る
ユーザ：ＪＥＭＥｎｄＳｃｒｉｐｔ
ユーザ：１４と５２の平均はいくつになるか
ＪＥＭ：分かりません＝＞”２で割る”
ユーザ：ＪＥＭＣｒｅａｔｅＳｃｒｉｐｔ  ”２で割る”
ＪＥＭ：スクリプト文を入力し、終了したときにＪＥＭＥｎｄＳｃｒｉｐｔを使用してください。
ユーザ：ｒｅｓｕｌｔ＝＄ｌａｓｔＲｅｓｕｌｔ  ＪＥＭＤｉｖｉｄｅＢｙ  ２
ユーザ：ＪＥＭＯｕｔｐｕｔ  ＄ｒｅｓｕｌｔ
ユーザ：ＪＥＭＥｎｄＳｃｒｉｐｔ
ＪＥＭ：”２で割る”のスクリプトを作成していただきありがとうございます
ユーザ：１４と５２の平均はいくつになるか
ＪＥＭ：３３
【００６２】
この例は、自然言語の質問を処理するためにユーザがスクリプトの複雑な階層を定義することができることを示している。多数のスクリプトは、所与の自然言語入力に応じて参照することができる。上述で示したように、「１４と５２の平均はいくつになるか」というスクリプトおよび「２で割る」という子スクリプトは、両方とも、「１４と５２の平均はいくつになるか」への出力を提供するために参照される。各スクリプトは、それ自体、自然言語で書くことができる。最終的に、一連のアトミック操作は、ユーザが要望するアクションを行うために呼び出される。
【００６３】
次に図３を参照すると、スクリプト・エンジン（例えば、スクリプト・エンジン１２０）でスクリプト（例えば、スクリプト１３１）を実行する例示のプロセス３００を示す流れ図が示される。
【００６４】
開始時に、スクリプトを命令ベクトルにロードすることができる。これが、ステップ３０１に示される。命令ベクトル内の次の命令が読み出される。これが、ステップ３０２に示される。最初に、「次の命令」は、命令ベクトル内の第１の命令を参照する。次いで、この命令は、ルール・エンジン（例えば、ルール・エンジン１５０）を使用してテストされる。すなわち、ルール・エンジンは、この命令が、１つまたは複数のルール（例えば、アトミック・ルールまたは自然言語ルールあるいはその両方）にマッピングされるかどうかを決定する。この命令がアトミック演算子ルールと一致しているかどうかの決定が行われる。これが、ステップ３０４に示される。この命令がアトミック演算子と一致していると決定された場合、アトミック操作が実行される。これが、ステップ３０５に示される。アトミック操作を実行する際に、アトミック演算子がプロセス演算子であるかどうかの決定が行われる。「プロセス・アトミック演算子」は、ユーザが演算子で定義したテキストを含むことができ、テキストは命令リストに加えることができる（さらなる詳細に関しては以下の表１を参照）。アトミック演算子がプロセス・アトミック演算子である場合、ユーザ入力は命令ベクトルに送り込まれ、その結果、そのルールに対してテストされる。これが、ステップ３０７に示される。アトミック演算子がプロセス・アトミック演算子でない場合、会話エージェントは、命令ベクトル内の次の命令を読み出すことができる。これが、ステップ３０６に示される。
【００６５】
命令は、スクリプトにリストされている順序で処理される。スクリプトの途中に、サブスクリプトが呼び出されることになる命令がある場合、サブスクリプトの命令が実行された後、オリジナルのスクリプトの次の命令に戻る。
【００６６】
アトミック演算子ルールに加えて、自然言語ルールが命令をスクリプトにマッピングする。その結果、ステップ３０４において命令がアトミック演算子ルールと一致しない場合、命令が自然言語ルールと一致するかどうかの決定が行われる。これが、ステップ３０８に示される。命令が自然言語ルールと一致する場合、自然言語ルールにマッピングされているスクリプトが実行される（上述の例に従うと、「４と５でいくつになるか？」という自然言語入力は、ルール・エンジンによってスクリプト「４と５でいくつになるか？」にマッピングされている）。これが、ステップ３０９に示される。スクリプトは、スクリプト文を命令ベクトルにロードし、次いで、それらの命令により反復することによって実行される。これが、ステップ３１０に示される。
【００６７】
命令が自然言語ルールと一致しない場合、会話エージェントは、最後のユーザ入力に関して明確化を要求するデフォルト・ルールを実行することができる。これが、ステップ３１１に示される。これにより、ユーザは、最後のユーザ入力に今後どのように応答するか（例えば、１つまたは複数の新しいスクリプトの生成または既存のスクリプトの一般化あるいはその両方によって）を会話エージェント１００に教えることができる。
【００６８】
一例とするために、以下のアトミック演算子を含む会話エージェントの実施態様が説明される。再び、会話エージェントは「ＪＥＭ」と呼ばれる。
【００６９】
【表１】
2021531487.tif 000003
【００７０】
最初の開始時に、表１に示されたルールが、ルール・エンジン１５０にロードされる。会話エージェント１００が起動すると、最初の開始時または後続の開始時のいずれかに、スクリプト・エンジン１２０は、ファイル「１．ｓｃｒ」に含まれるスクリプトを自動的にロードする。これは、プライマリ・スクリプトであり、会話エージェント１００のコア機能を定義する。
【００７１】
会話エージェント１００に、以下に示された１．ｓｃｒのバージョンを提供することができる。
ＪＥＭＯｕｔｐｕｔ  「稼働中です」
ｏｒｉｇｉｎａｌＩｎｐｕｔ＝ＪＥＭＩｎｐｕｔ
ＪＥＭＰｒｏｃｅｓｓ  ＄ｏｒｉｇｉｎａｌＩｎｐｕｔ
ＪＥＭＥｘｅｃｕｔｅ  “１．ｓｃｒ”  ２
【００７２】
このプライマリ・スクリプトは、エージェント１００が稼働中であることを知らせ、会話ユーザ・インタフェース１１０からの入力を読み出し、その入力を処理し、次いで、２行目に戻って反復して会話ユーザ・インタフェースからの次の入力を読み出すようにスクリプト・エンジン１２０に指示する。
【００７３】
開始時に、プライマリ・スクリプトが命令ベクトルにロードされる。スクリプト・エンジン１２０は、命令ベクトルにより、各命令を解析し、各命令をルール・エンジン１５０で指定されたルールと比較することを反復する。命令がアトミック演算子ルール１５２のうちの１つと一致する場合、アトミック演算子１４１が実行される。ＪＥＭＰｒｏｃｅｓｓアトミック演算子は、＄ｏｒｉｇｉｎａｌＩｎｐｕｔに保持されているユーザ入力を命令ベクトルに入れ、その結果、ユーザ入力はルール・エンジン１５０のルールに対してテストされる。
【００７４】
アトミック演算子ルールに加えて、自然言語ルール１５１は、命令をスクリプト１３１にマッピングする。命令がそのような自然言語ルール１５１と一致する場合、スクリプト１３１は、スクリプト文を命令ベクトルにロードし、次いで、それらの命令を通して反復することによって実行される。
【００７５】
開始時に、デフォルト・ルールは、他のルールが呼び出されない（例えば、トリガされない、アクティブにされない）場合にのみアクティブにするように構成することができる。このデフォルト・ルールは、明確にするためにユーザに問い合わせるスクリプト「ＤｏｎｔＵｎｄｅｒｓｔａｎｄ．ｓｃｒ」を呼び出す。「ＤｏｎｔＵｎｄｅｒｓｔａｎｄ．ｓｃｒ」が以下に示される。
ＪＥＭＯｕｔｐｕｔ”分かりません＝＞ＪＥＭＲｅｆｅｒｅｎｃｅ”
ＪＥＭＲｅｆｅｒｅｎｃｅ  最後のユーザ入力を参照する
【００７６】
図４Ａは、本開示の実施形態による、ルール・エンジン（例えばルール・エンジン１５０）によってルールを処理する一例を示す概略図である。ルールは、ルール入力解析木４１０とルール出力４２０とを含む。ルール・エンジン１５０は、命令の解析木をルール入力４１０の解析木と比較する。一致がある場合、ルール出力４２０は命令ベクトルに入れられる。
【００７７】
図４Ａに示された例示のルールは、フレーズ４１１の「４を５に加える」のルール入力解析木４１０を含む。フレーズ４１１は、フレーズ４１１の各用語に対するトークン４１２を有する。用語「加える」は、タイプ「動詞」および値「加える」を有し、用語「４」は、タイプ「数値」および値「４」を有し、用語「〜に（ｔｏ）」は、タイプ「前置詞（ｐｒｅｐ）」および値「〜に（ｔｏ）」を有し、用語「５」は、タイプ「数値」および値「５」を有する。ルール出力４２０は、スクリプト「ｓｅｎｔｅｎｃｅ＝ｅｘｅｃｕｔｅ５７．ｓｃｒ」４２１の実行を指示する。ルール出力４２０によって識別されたスクリプト４３０は、次のように示される。
Ｓｕｍ＝４  ｐｌｕｓ  ５
Ｄｅｆｉｎｅ  ＬａｓｔＲｅｓｕｌｔ＝＄Ｓｕｍ
Ｏｕｔｐｕｔ  ＄Ｓｕｍ
【００７８】
アトミック演算子ＪＥＭＨａｎｄｌｅＬｉｋｅを使用して実施される一般化アルゴリズムが説明される。一般化アルゴリズムは、２つの構造的に類似した入力フレーズを比較して、同一の用語を識別する。次いで、アルゴリズムは、同一の用語のうちのいずれかの存在に関して出力スクリプトを調べ、それらをオリジナルの入力への参照と置き換える。図４Ａに示されたルールおよびスクリプトの一般化の後の一例が、図４Ｂに示される。
【００７９】
図４Ｂに示された例示のルールは、フレーズ４５１が「＜数値＞を＜数値＞に加える」ように一般化されているルール入力解析木４１０を含む。フレーズ４５１は、フレーズ４５１の各用語に対するトークン４５２を有する。用語「４」のトークンはタイプ「数値」を有し、値「４」は削除され、それによって、それは任意の値に一般化される。同様に、用語「５」のトークンはタイプ「数値」を有し、値「５」は削除され、それによって、それは任意の値に一般化される。
【００８０】
ルール出力４２０は、スクリプト「ｓｅｎｔｅｎｃｅ＝ｅｘｅｃｕｔｅ５７．ｓｃｒ」４２１の実行の指示を維持する。
【００８１】
しかしながら、ルール出力４２０によって識別されたスクリプト４６０は、次のように一般化される。
Ｓｕｍ＝Ｒｅｆ＿０＿１＿０  ｐｌｕｓ  Ｒｅｆ＿０＿３＿０
Ｄｅｆｉｎｅ  ＬａｓｔＲｅｓｕｌｔ＝＄Ｓｕｍ
Ｏｕｔｐｕｔ  ＄Ｓｕｍ
【００８２】
Ｒｅｆ＿０＿１＿０およびＲｅｆ＿０＿３＿０は、入力木のトークンまたはフレーズを参照する。入力木は、対応する子ノードを含むトップ・レベル・フレーズ・ノードをもつ階層とすることができる。
【００８３】
加えて、マッピング・ルールの一般化は、アトミック演算子ＪＥＭＳａｍｅＡｓにより実施されてもよい。最初に、入力を出力に単純にマッピングするルールを作成することができる。次いで、このルールは、同一の用語を識別するために入力フレーズを比較し、ＪＥＭＨａｎｄｌｅＬｉｋｅと同じ方法で一般化することによって一般化することができる。
【００８４】
この例では、「＜数値＞と＜数値＞でいくつになるか」は、「＜数値＞を＜数値＞に加える」にマッピングされ、次いで、スクリプトの形態のルール出力にマッピングされる。
【００８５】
スクリプトの階層によるカスケード一般化が行われてもよい。例えば、システムが第１のルールまたはスクリプトあるいはその両方を一般化する場合、一般化された用語を探し出すために、対応するサブスクリプトも参照することができる。サブスクリプトも一般化された用語を含む場合、サブスクリプトは、親スクリプトと類似の方法（例えば、数値を除去し、それを任意の数値に一般化すること）で一般化することもできる。
【００８６】
一般化プロセスを簡単化する目的で、自動学習プロセスが行われてもよい。入力の構造または値が既存のルールに類似している場合、システムは、入力を既存のルールで処理すべきかどうかをユーザに尋ねることができる。そうすべきであるとユーザが確認した場合、ルールおよびスクリプトは自動的に一般化され得る。
【００８７】
自動学習では、システムは、すべての入力を以前に受け取った入力と比較する。３つのタイプの比較がある。
１．入力は、以前の入力と構造的に同一であるが、値が異なっているか？例えば、「１を７に加える」は、「４を５に加える」と構造的に同一である。
２．入力は、構造的に異なっているが、類似する値の項を含んでいるか？例えば、「４と５でいくつになるか」は、「４を５に加える」と類似している。
３．入力は、二、三の文字しか異なっていないか（すなわち、タイプミスを示すことがあるファジー・マッチ）？例えば、「４を５に加える（ａｄｄ）」の代わりに「４を５に加えた（ａｄｄｅｄ）」である。
【００８８】
これらの比較テストのうちのいずれかが一致を示す場合、ユーザは、文が同じものを意味する（例えば、上述の２および３）かどうか、または文が同じやり方で処理されるべきである（例えば、上述の１）かどうかを尋ねられることがある。次いで、ＪＥＭＨａｎｄｌｅＬｉｋｅまたはＪＥＭＳａｍｅＡｓが、適宜呼び出される。いくつかの実施形態では、ファジー・マッチングは、類似する英数字文字の閾値数に基づいて完了することができる。例えば、入力は、一致する文字の閾値数（例えば、入力は既存の自然言語ルールへの類似性の閾値レベルを満たす）に基づいて、分析し、所与のスクリプトにマッピングされている入力と比較することができる。一致する文字の閾値数が満たされる場合、ファジー・マッチであるという決定を行うことができ、一般化プロトコルを実行することができる。
【００８９】
いくつかの実施形態では、ルール機能（rule feature）の自動トグリングが、一般化に応じて行われてもよい。これは、ルール機能が、一般化のために非アクティブにされ、特殊化のためにアクティブにされることを意味する。「４を５に加える」という例では、「ｖａｌｕｅ＝’４’」および「ｖａｌｕｅ＝’５’」の機能があり、これらの値が参照と置き換えられると、それらの機能はもはやテストされない（例えば、ルール機能は非アクティブにされる）。各機能は、その機能がテストされるべきかどうかを決定するための真または偽のいずれかに設定される「テスト」属性に関連する。
【００９０】
会話エージェントの開発のための対話型システムおよび方法が提供されると、会話エージェントを開発するのに必要とされるコスト、時間、および技術的熟練が低減される。加えて、それは、稼働中のユーザとの対話に応じて会話エージェントの連続的な学習を可能にする。システムは、対話型会話を介して訓練され、知識を格納するための自然言語の使用、コマンドの階層、自然言語コマンドのスクリプトへのマッピング、および一般化の課題に対処する。実施形態は、スクリプトおよびサブスクリプトを介して大量の知識表現を構築することによってコンピュータ・システムの機能を改善する。スクリプトの階層的組織により、迅速な情報検索およびスループットの改善を可能にすることができる。
【００９１】
さらに、コンピュータ・システムは、そのような方法でそのような知識表現（例えば、アトミック演算子を有する複数のスクリプトに組織化された）を以前には構築することができなかった。未知の概念に対してユーザに明確化を促すことによって、システムは、新しい問題を定義する、または既存のスクリプトを一般化する、あるいはその両方を行うようにユーザに促すことにより、知識ギャップを「埋める」ことができる。
【００９２】
実施形態は、さらに、自然言語スクリプトの階層を可能にする。その結果、特定のステップの詳細が後でしか決定されない計画を導出することが可能である。
【００９３】
実施形態は、自然言語文（例えば、「４を５に加える」および「４と５でいくつになるか？」）を一般化する能力を可能にする。
【００９４】
アスペクトは、事前定義されたセマンティック・モデルを必要としない。これは、セマンティック・モデルを正式に（数学的に）定義する必要なしに、アスペクトを新しい問題ドメインに直ちに適用できることを意味する。
【００９５】
以下は、質問に答えるためのスクリプトの追加の例である。トップ・レベル・スクリプトは、ユーザが「ニール・アームストロングはいつ生まれたか？」という質問を入力することによってトリガされることになる。これにより、以下を含むスクリプトが実行される。
ＳＣＲＩＰＴ  Ａ
ｒｅｓｕｌｔｓ＝ＪＥＭＳｅａｒｃｈＷｅｂ  ”ニール・アームストロング”
ｆａｃｔｓ＝ＪＥＭＡｂｓｔｒａｃｔ  ＄ｒｅｓｕｌｔｓ
ＪＥＭＮｏｔｅ  ＄ｆａｃｔｓ
ｆａｃｔＲｅｓｕｌｔｓ＝ＪＥＭＳｅａｒｃｈＮａｒｒａｔｉｖｅ  ”ニール・アームストロング”
ＪＥＭＰｒｏｃｅｓｓ  ＄ｆａｃｔＲｅｓｕｌｔｓ  ”ニール・アームストロングはいつ生まれたか？”
【００９６】
Ｓｃｒｉｐｔ  Ａの１行目はアトミック操作を実行して、インターネットを検索し、それによって、ニール・アームストロングを要約した文、例えば、「ニール・アームストロングは、月面を歩いた最初の人であり、１９３０年８月５日に生まれた」などを見つけることになる。
【００９７】
２行目は、これらの文を（以前に学習したルールを使用して）「ニール・アームストロングは月面を歩いた最初の人であった」および「ニール・アームストロングは１９３０年８月５日に生まれた」という事実に抽象化することになる。
【００９８】
３行目は、これらの事実を説明文に書くことになる。
【００９９】
４行目は、ニール・アームストロングに関する事実を求めて説明文を検索することになる。
【０１００】
最後に、５行目は、回答のコンテキストにおける各事実を処理する。例えば、コンテキストに関するルール（例えば、解析木比較に基づく）は、次いで、「ニール・アームストロングは月面を歩いた最初の人であった」を無視し、「ニール・アームストロングは１９３０年８月５日に生まれた」を出力することになる。
【０１０１】
図５を参照すると、本開示の例示的な実施形態を実装することができるコンピュータ・システム５００を示すブロック図が示される。
【０１０２】
コンピュータ・システム５００は、少なくとも１つのプロセッサ５０１、ハードウェア・モジュール、または少なくとも１つのプロセッサで実行されるソフトウェア・ユニットとすることができる記載されたコンポーネントの機能を実行するための回路を含む。並列処理スレッドを実行する多数のプロセッサを備えることができ、それにより、コンポーネントの機能の一部またはすべての並列処理が可能になる。メモリ５０２は、コンピュータ命令５０３を少なくとも１つのプロセッサ５０１に供給してコンポーネントの機能を実行するように構成することができる。会話エージェント５５０（例えば、会話エージェント１００）は、自然言語入力を介してクライアントがユーザ対話に利用できる会話ユーザ・インタフェース５６０（例えば、会話ユーザ・インタフェース１１０）をもつリモート・サーバに備えられてもよい。
【０１０３】
会話エージェント５５０は、アトミック演算子ルールを適用することによって定義済み操作を実行するためのアトミック演算子５８０（例えば、アトミック演算子１４０）のセット、および会話エージェント５５０の訓練中に開発されたスクリプト５７０（例えば、スクリプト１３０）のセットのデータ・ストア５１０を含むことができる。スクリプト５７０は、一連のアトミック演算子５８０および自然言語入力を含み、自然言語入力を他のスクリプトにマッピングすることにより、スクリプトの階層を定義するように構成される。
【０１０４】
会話エージェント５５０は、自然言語処理および機械学習処理を実行するように構成されたルール・エンジン５９０（例えば、ルール・エンジン１５０）を含む。
【０１０５】
ルール・エンジン５９０は、自然言語入力のルールをアトミック演算子またはスクリプトにマッピングするように構成されたルール適用コンポーネント５１２を含む。ルール・エンジン５９０には、新しいスクリプトを生成し、既存のスクリプトを一般化するように構成されたルール訓練コンポーネント５２０がさらに含まれる。ルール訓練コンポーネント５２０は、アトミック演算子および自然言語入力を使用して新しいスクリプトを生成するように構成された新スクリプト生成コンポーネント５２１と、新しい自然言語入力の既存のスクリプトへのマッピングを一般化するように構成された一般化コンポーネント５２２とを含むことができる。いくつかの実施形態では、生成コンポーネントは、自然言語入力の類似の構造または値あるいはその両方に基づいて（例えば、類似性閾値または値識別あるいはその両方を使用して）、スクリプトを自動的に一般化して新しい自然言語入力を包含するように構成することができる。
【０１０６】
会話エージェント１００は、マッピング済みスクリプトから命令を読み出し、スクリプトのアトミック演算子の定義済み操作を実行するためのスクリプト・エンジン１２０を含む。スクリプト・エンジン１２０は、スクリプトを命令ベクトルにロードし、命令ベクトルによって、各命令を順番に読み出すことと、それを、ルール・エンジンでマッピング・ルールを適用してアトミック演算子の定義済み操作を実行することによりテストすることとを反復するための命令読出しコンポーネント５３０を含むことができる。
【０１０７】
次に図６を参照すると、本開示の実施形態による、本明細書で説明される方法、ツール、およびモジュールのうちの１つまたは複数、ならびに関連する機能を実施する（例えば、１つまたは複数のプロセッサ回路またはコンピュータのコンピュータ・プロセッサを使用する）際に使用することができる例示のコンピュータ・システム６０１（例えば、会話エージェント１００およびコンピュータ・システム５００）のハイレベル・ブロック図が示される。いくつかの実施形態では、コンピュータ・システム６０１の主要コンポーネントは、１つまたは複数のＣＰＵ６０２、メモリ・サブシステム６０４、端末インタフェース６１２、ストレージ・インタフェース６１４、Ｉ／Ｏ（入力／出力）デバイス・インタフェース６１６、およびネットワーク・インタフェース６１８を含むことができ、それらのすべては、メモリ・バス６０３、Ｉ／Ｏバス６０８、およびＩ／Ｏバス・インタフェース・ユニット６１０を介してコンポーネント間通信のために、直接にまたは間接的に、通信可能に結合され得る。
【０１０８】
コンピュータ・システム６０１は、本明細書では総称してＣＰＵ６０２と呼ぶ、１つまたは複数の汎用プログラマブル中央処理装置（ＣＰＵ）６０２Ａ、６０２Ｂ、６０２Ｃ、および６０２Ｄを含むことができる。ある実施形態では、コンピュータ・システム６０１は、比較的大きいシステムに特有な多数のプロセッサを含むことができるが、しかしながら、他の実施形態では、コンピュータ・システム６０１は、代替として単一のＣＰＵシステムとすることができる。各ＣＰＵ６０２は、メモリ・サブシステム６０４に格納された命令を実行することができ、１つまたは複数のレベルのオンボード・キャッシュを含むことができる。
【０１０９】
システム・メモリ６０４は、ランダム・アクセス・メモリ（ＲＡＭ）６２２またはキャッシュ・メモリ６２４などの揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム６０１は、他の着脱可能／着脱不能な揮発性／不揮発性コンピュータ・システム記憶媒体をさらに含むことができる。単なる例として、ストレージ・システム６２６は、「ハードドライブ」などの着脱不能な不揮発性磁気媒体から読み出しそれに書き込むために設けることができる。図示されていないが、着脱可能な不揮発性磁気ディスク（例えば、「ＵＳＢサム・ドライブ」もしくは「フロッピー（Ｒ）・ディスク」）から読み出しそれに書き込むための磁気ディスク・ドライブ、またはＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、もしくは他の光学媒体などの着脱可能な不揮発性光ディスクから読み出すかもしくは書き込むための光ディスク・ドライブが設けられてもよい。加えて、メモリ６０４は、フラッシュ・メモリ、例えば、フラッシュ・メモリ・スティック・ドライブまたはフラッシュ・ドライブを含むことができる。メモリ・デバイスは、１つまたは複数のデータ媒体インタフェースによってメモリ・バス６０３に接続され得る。メモリ６０４は、様々な実施形態の機能を実行するように構成された１組の（例えば、少なくとも１つの）プログラム・モジュールを有する少なくとも１つのプログラム製品を含むことができる。
【０１１０】
各々が少なくとも１組のプログラム・モジュール６３０を有する１つまたは複数のプログラム／ユーティリティ６２８は、メモリ６０４に格納することができる。プログラム／ユーティリティ６２８は、ハイパーバイザ（バーチャル・マシン・モニタとも呼ばれる）、１つまたは複数のオペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データを含むことができる。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々、またはそれらの組合せは、ネットワーク環境の実施態様を含むことができる。プログラム６２８またはプログラム・モジュール６３０あるいはその両方は、一般に、様々な実施形態の機能または方法を実行する。
【０１１１】
いくつかの実施形態では、コンピュータ・システム６０１のプログラム・モジュール６３０は、会話エージェント訓練モジュールを含む。会話エージェント訓練モジュールは、各アトミック演算子がアトミック演算子ルールのセットを含むアトミック演算子のセットで会話エージェントを開始するように構成することができる。会話エージェント訓練モジュールは、自然言語入力を受け取るための会話ユーザ・インタフェースをさらに含むことができる。会話エージェント訓練モジュールは、さらに、自然言語入力が、ルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定するように構成することができる。自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、会話エージェント訓練モジュールは、ユーザに明確化を要求するように構成することができる。次いで、訓練をユーザから受けることができ、自然言語入力をスクリプトにマッピングするマッピング・ルールを格納することができる。次いで、会話エージェント訓練モジュールは、ユーザの訓練ごとにスクリプトを実行するように構成することができる。
【０１１２】
メモリ・バス６０３は、図６では、ＣＰＵ６０２、メモリ・サブシステム６０４、およびＩ／Ｏバス・インタフェース６１０の間に直通通信経路を提供する単一のバス構造として示されているが、メモリ・バス６０３は、実施形態によっては、多数の異なるバスまたは通信経路を含むことができ、これは、階層、スター、またはウェブ構成のポイント・ツー・ポイント・リンク、多数の階層バス、並列冗長経路、または任意の他の適切なタイプの構成などの様々な形態のうちのいずれかで構成することができる。さらに、Ｉ／Ｏバス・インタフェース６１０およびＩ／Ｏバス６０８は、単一のそれぞれのユニットとして示されているが、コンピュータ・システム６０１は、実施形態によっては、多数のＩ／Ｏバス・インタフェース・ユニット６１０、多数のＩ／Ｏバス６０８、または両方を含むことができる。さらに、様々なＩ／Ｏデバイスまで延びる様々な通信経路からＩ／Ｏバス６０８を分離する多数のＩ／Ｏインタフェース・ユニットが示されているが、他の実施形態では、Ｉ／Ｏデバイスの一部またはすべては、１つまたは複数のシステムＩ／Ｏバスに直接に接続されてもよい。
【０１１３】
いくつかの実施形態では、コンピュータ・システム６０１は、マルチユーザ・メインフレーム・コンピュータ・システム、シングルユーザ・システム、または直接ユーザ・インタフェースがほとんどないかもしくは全くないが、他のコンピュータ・システム（クライアント）からの要求を受け取るサーバ・コンピュータもしくは類似のデバイスとすることができる。さらに、実施形態によっては、コンピュータ・システム６０１は、デスクトップ・コンピュータ、ポータブル・コンピュータ、ラップトップもしくはノートブック・コンピュータ、タブレット・コンピュータ、ポケット・コンピュータ、電話、スマート・フォン、ネットワーク・スイッチもしくはルータ、または他の適切なタイプの電子デバイスとして実装されてもよい。
【０１１４】
図６は例示的なコンピュータ・システム６０１の代表的な主要コンポーネントを示すことが意図されていることに留意されたい。しかしながら、実施形態によっては、個々のコンポーネントは、図６に表されたものよりも複雑性が大きくてもまたは小さくてもよく、図６に示されたもの以外のまたはそれに加えたコンポーネントが存在してもよく、そのようなコンポーネントの数、タイプ、および構成は変わってもよい。
【０１１５】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書で詳述される教示の実施態様は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本開示の実施形態は、現在知られているまたは後に開発される他のタイプのコンピューティング環境と組み合わせて実施することができる。
【０１１６】
クラウド・コンピューティングは、最小の管理負担またはサービスのプロバイダとの対話で迅速にプロビジョニングおよび解消することができる設定可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共有プールへの便利なオン・デマンド・ネットワーク・アクセスを可能にするためのサービス提供の一モデルである。このクラウド・モデルは、少なくとも５つの特性、少なくとも３つのサービス・モデル、および少なくとも４つの展開モデルを含むことができる。
【０１１７】
特性は以下の通りである。
オン・デマンド・セルフサービス：クラウド消費者は、サービスのプロバイダとの人的な対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方向にプロビジョニングすることができる。
ブロード・ネットワーク・アクセス：能力はネットワークの全体にわたって利用可能であり、異種シンまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による使用を推進する標準的な機構を介してアクセスされる。
リソース・プーリング：プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用する多数の消費者に役立つようにプールされ、様々な物理および仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。消費者は、一般に、提供されるリソースの正確な場所に関する制御または知識を有していないが、より高レベルの抽象化での場所（例えば、国、州、またはデータセンタ）を指定できる場合があるという点で、場所非依存性の意味合いがある。
迅速な弾力性：能力を、迅速に弾力的に、場合によっては自動的に、プロビジョニングして、素速くスケール・アウトし、迅速に解消して素速くスケール・インすることができる。消費者にとって、プロビジョニングに利用可能な能力は、しばしば、無制限に見え、いつでもどんな量でも購入することができる。
従量に基づくサービス：クラウド・システムは、サービスのタイプ（例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント）にとって適切なある抽象レベルで計量能力を活用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用量をモニタ、制御、および報告することができ、それにより、利用されるサービスのプロバイダと消費者の両方に透明性が提供される。
【０１１８】
サービス・モデルは以下の通りである。
サービスとしてのソフトウェア（ＳａａＳ）：消費者に提供される能力は、クラウド・インフラストラクチャ上で動作するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インタフェース（例えば、ウェブ・ベースの電子メール）を通して様々なクライアント・デバイスからアクセス可能である。消費者は、限定的なユーザ固有のアプリケーション構成設定のあり得る例外を除き、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらに個別のアプリケーション能力を含む基礎をなすクラウド・インフラストラクチャを管理または制御しない。
サービスとしてのプラットフォーム（ＰａａＳ）：消費者に提供される能力は、プロバイダによってサポートされたプログラミング言語およびツールを使用して作成された消費者作成または取得アプリケーションを、クラウド・インフラストラクチャ上に配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎をなすクラウド・インフラストラクチャを管理または制御しないが、配備されたアプリケーションおよび場合によってはアプリケーション・ホスト環境の設定を制御する。
サービスとしてのインフラストラクチャ（ＩａａＳ）：消費者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本コンピューティング・リソースをプロビジョニングすることであり、消費者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを配備および実行することができる。消費者は、基礎をなすクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションを制御し、場合によっては選択ネットワーキング・コンポーネント（例えばホスト・ファイアウォール）を限定的に制御する。
【０１１９】
配備モデルは以下の通りである。
プライベート・クラウド：クラウド・インフラストラクチャは組織のためだけに運営される。クラウド・インフラストラクチャは、組織またはサード・パーティが管理することができ、施設内または施設外に存在することができる。
コミュニティ・クラウド：クラウド・インフラストラクチャは、いくつかの組織によって共有され、共通の関心事（例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項）を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、組織またはサード・パーティが管理することができ、施設内または施設外に存在することができる。
パブリック・クラウド：クラウド・インフラストラクチャは、一般大衆または大企業グループが利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド：クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーション可搬性を可能にする標準技術または専用技術（例えば、クラウド間のロード・バランシングのためのクラウド・バースティング）によって結合された、２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の複合である。
【０１２０】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味相互運用性に重点をおいたサービス指向である。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【０１２１】
次に、図７を参照すると、例示的なクラウド・コンピューティング環境７１０が示される。図示のように、クラウド・コンピューティング環境７１０は、クラウド消費者によって使用されるローカル・コンピューティング・デバイス、例えば、携帯情報端末（ＰＤＡ）もしく携帯電話７００Ａ（例えば、会話エージェント１００およびコンピュータ・システム５００）または自動車コンピュータ・システム７００Ｎあるいはその両方などが通信することができる１つまたは複数のクラウド・コンピューティング・ノード７００を含む。ノード７００は、互いに通信することができる。ノード７００は、本明細書で上述したようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組合せなどの１つまたは複数のネットワークにおいて物理的にまたは仮想的にグループ化することができる（図示せず）。これにより、クラウド・コンピューティング環境７１０は、クラウド消費者がローカル・コンピューティング・デバイスにリソースを維持する必要がないサービスとして、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを提供することができる。図７に示されたコンピューティング・デバイス７００Ａ〜７００Ｎのタイプは単に例示であることが意図されていることと、コンピューティング・ノード７００およびクラウド・コンピューティング環境７１０は、任意のタイプのネットワークまたはネットワーク・アドレス可能な接続（例えば、ウェブ・ブラウザを使用して）あるいはその両方を介して任意のタイプのコンピュータ化デバイスと通信できることとを理解されたい。
【０１２２】
次に、図８を参照すると、クラウド・コンピューティング環境７１０（図７）によって提供される機能抽象化層のセットが示される。図８に示されたコンポーネント、層、および機能は、単に例示であるように意図されており、本開示の実施形態はそれに限定されないことを予め理解されたい。以下に示されるように、以下の層および対応する機能が提供される。
【０１２３】
ハードウェアおよびソフトウェア層８００は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム８０２と、ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャ・ベース・サーバ８０４と、サーバ８０６と、ブレード・サーバ８０８と、ストレージ・デバイス８１０と、ネットワークおよびネットワーキング・コンポーネント８１２とが含まれる。実施形態によっては、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア８１４と、データベース・ソフトウェア８１６とを含む。
【０１２４】
仮想化層８２０は、仮想エンティティの以下の例、すなわち、仮想サーバ８２２と、仮想ストレージ８２４と、仮想プライベート・ネットワークを含む仮想ネットワーク８２６と、バーチャル・アプリケーションおよびオペレーティング・システム８２８と、仮想クライアント８３０とを備えることができる抽象化層を提供する。
【０１２５】
１つの例では、管理層８４０は、以下で説明する機能を提供することができる。リソース・プロビジョニング８４２は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を行う。例えば、リソース・プロビジョニング８４２は、高いアクティビティを有することが示されているデバイスに追加のコンピューティング・リソースを割り当てることができる。計量および価格設定８４４は、リソースがクラウド・コンピューティング環境内で利用されたときにコスト追跡を行い、これらのリソースの消費に対する請求書または送り状を送る。１つの例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。いくつかの実施形態では、計量および価格設定８４４は、システムのマシンに割り当てられたライセンスの数を示す。セキュリティは、クラウド消費者およびタスクのアイデンティティ検証、ならびにデータおよび他のリソースの保護を行う。ユーザ・ポータル８４６は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセス権を提供する。サービス・レベル管理８４８は、必要なサービス・レベルが満たされるようにクラウド・コンピューティング・リソース割り当ておよび管理を行う。サービス品質保証契約（ＳＬＡ）計画および履行８５０は、将来必要なことがＳＬＡによって予想されるクラウド・コンピューティング・リソースの事前配置および調達を行う。
【０１２６】
ワークロード層８６０は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロードおよび機能の例には、マッピングおよびナビゲーション８６２と、ソフトウェア開発およびライフ・サイクル管理８６４と、仮想教室教育提供８６６と、データ分析処理８６８と、トランザクション処理８７０と、識別可能媒体の識別８７２とが含まれる。
【０１２７】
本明細書でより詳細に論じられているように、本明細書に記載された方法の実施形態のうちのいくつかの操作の一部またはすべては、本明細書において一貫している限り、代替の順序で実行されてもよく、または全く実行されなくてもよいと考えられる。さらに、多数の操作が、同時に、またはより大きいプロセスの内部の一部として行われてもよい。
【０１２８】
本開示は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有する１つのコンピュータ可読記憶媒体（または複数の媒体）を含むことができる。
【０１２９】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述のものの任意の適切な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読出し専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的符号化デバイス、および前述のものの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通って伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通して伝送される電気信号などのそれ自体一過性信号であると解釈されるべきではない。
【０１３０】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング／処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【０１３１】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのようなオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータで、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータで、部分的にユーザのコンピュータでおよび部分的にリモート・コンピュータで、または完全にリモート・コンピュータもしくはサーバで実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータへ接続されてもよく、または、外部コンピュータへの接続がなされてもよい（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路は、本開示の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人専用にすることによってコンピュータ可読プログラム命令を実行することができる。
【０１３２】
本開示の態様は、本開示の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して本明細書に記載されている。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実現され得ることが理解されるであろう。
【０１３３】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／動作を実現するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを生み出すものであってもよい。これらのコンピュータ可読プログラム命令はまた、命令が格納されたコンピュータ可読記憶媒体が流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／動作の態様を実現する命令を含む製品を構成するように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに対し、特定のやり方で機能するように指示することができるものであってもよい。
【０１３４】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／動作を実施するように、コンピュータ実装プロセスを生み出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイスで一連の動作ステップを実行させるものであってもよい。
【０１３５】
図における流れ図およびブロック図は、本開示の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示す。これに関しては、流れ図またはブロック図の各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部分を表すことができる。いくつかの代替の実施態様では、ブロックに記された機能は、図に記された順序から外れて行われてもよい。例えば、連続して示された２つのブロックは、実際には、実質的に同時に実行されてもよく、またはブロックは、時には、関連する機能に応じて逆の順序で実行されてもよい。ブロック図または流れ図あるいはその両方の各ブロック、およびブロック図または流れ図あるいはその両方のブロックの組合せは、指定された機能または動作を実行するかまたは専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェア・ベース・システムで実施することができることにも留意されたい。
【０１３６】
本明細書で使用される用語は、特定の実施形態のみを説明するためのものであり、様々な実施形態を限定するようには意図されていない。本明細書で使用されるとき、「ある（ａ）」、「１つの（ａｎ）」、および「その（ｔｈｅ）」という単数形は、文脈が明確にそうでないことを示さない限り、複数形を同様に含むように意図されている。本明細書で使用された場合、「含む（ｉｎｃｌｕｄｅｓ）」または「含んでいる（ｉｎｃｌｕｄｉｎｇ）」あるいはその両方の用語は、記述された特徴、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を指定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、またはそれらのグループ、あるいはその組合せの存在または追加を排除しないことがさらに理解されよう。様々な実施形態の例示の実施形態の前の詳細な説明において、本明細書の一部を形成し、例として、様々な実施形態を実施することができる特定の例示の実施形態が示される添付の図面（同様の数字が同様の要素を表す）が参照された。これらの実施形態は、当業者が実施形態を実施できるように十分に詳細に説明されたが、他の実施形態が使用されてもよく、様々な実施形態の範囲から逸脱することなく、論理的、機械的、電気的、および他の変更が行われてもよい。前の説明において、多数の特定の詳細が、様々な実施形態の完全な理解を提供するように記載された。しかし、様々な実施形態は、これらの特定の詳細なしに実施されてもよい。他の事例では、よく知られている回路、構造、および技法は、実施形態を不明瞭にしないために、詳細には示されていない。
【０１３７】
本明細書内で使用された「実施形態」という単語に関する様々な事例は、必ずしも同じ実施形態を参照しないが、同じ実施形態を参照してもよい。本明細書に図示および記載されたデータおよびデータ構造は単なる例であり、他の実施形態では、異なる量のデータ、データのタイプ、フィールド、フィールドの数およびタイプ、フィールド名、行の数およびタイプ、記録、エントリ、またはデータの編成が使用されてもよい。加えて、いかなるデータも論理と組み合わせることができ、その結果、別個のデータ構造が必要でないことがある。それゆえに、前の詳細な説明は、限定の意味で解釈されるべきでない。
【０１３８】
本開示の様々な実施形態の説明が、例示の目的で提示されたが、網羅的であることまたは開示された実施形態に限定することは意図されていない。記載された実施形態の範囲から逸脱することなく、多くの変形および変更が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の用途、または市場で見いだされる技術に対する技術的な改善を最もよく説明するように、または本明細書で開示される実施形態を他の当業者が理解できるように選ばれた。
【０１３９】
本開示が特定の実施形態に関して説明されたが、その改変および変形が当業者には明らかになることが予想される。それゆえに、特許請求の範囲が、本開示の範囲に含まれるすべてのそのような改変および変形を包含すると解釈されることが意図されている。
【図１】
2021531487.tif 000004
【図２】
2021531487.tif 000005
【図３】
2021531487.tif 000006
【図４Ａ】
2021531487.tif 000007
【図４Ｂ】
2021531487.tif 000008
【図５】
2021531487.tif 000009
【図６】
2021531487.tif 000010
【図７】
2021531487.tif 000011
【図８】
2021531487.tif 000012
【手続補正書】
【提出日】令和3年5月10日(2021.5.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
自然言語を使用して会話エージェントを訓練するためのコンピュータ実施方法であって、
アトミック演算子のセットで前記会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための１つまたは複数のアトミック演算子ルールを有する、前記開始することと、
ユーザからの自然言語入力を会話インタフェースで受け取ることと、
前記自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに訓練を要求することと、
前記自然言語をスクリプトにマッピングする訓練を前記ユーザから前記会話インタフェースによって受けることと、
前記自然言語入力を前記スクリプトにマッピングするマッピング・ルールを格納することと、
訓練を前記ユーザから受けることに応じて、前記スクリプトを実行することと
を含む、コンピュータ実施方法。
【請求項２】
前記自然言語入力を前記スクリプトにマッピングする訓練を前記ユーザから受けることが、
アトミック演算子および自然言語入力を使用して新しいスクリプトを生成することと、
前記自然言語入力を前記新しいスクリプトに結合させるマッピング・ルールを生成することと
を含む、請求項１に記載の方法。
【請求項３】
前記新しいスクリプトを生成することが、
前記会話インタフェースを使用して前記新しいスクリプトを作成するためにアトミック演算子を呼び出すことと、
前記会話インタフェースを使用してアトミック演算子入力および自然言語入力を含むスクリプト文を提供することと、
前記会話インタフェースを使用して前記スクリプトを終了するためにアトミック演算子を呼び出すことと
を含む、請求項２に記載の方法。
【請求項４】
前記自然言語入力をスクリプトにマッピングする訓練を前記ユーザから受けることが、前記自然言語入力を前記スクリプトにマッピングするために既存のマッピング・ルールを一般化することを含む、請求項１に記載の方法。
【請求項５】
前記既存のマッピング・ルールを一般化することが、
既存の自然言語ルールの用語と同一である前記自然言語入力の用語を識別することと、
前記自然言語入力と前記既存の自然言語ルールとの間の非同一用語を、前記非同一用語を包含するスーパークラスで前記非同一用語を置き換えることによって、一般化することと
を含む、請求項４に記載の方法。
【請求項６】
一般化することが、前記自然言語入力を、以前に入力された自然言語入力と同じように処理することを含む、請求項４に記載の方法。
【請求項７】
前記自然言語入力を受け取る前に、プライマリ・スクリプトがロードされ、前記プライマリ・スクリプトが、自然言語入力を前記ユーザに促すように構成される、請求項１に記載の方法。
【請求項８】
前記スクリプトを実行することが、
前記スクリプトを命令ベクトルにロードすることであり、前記スクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットを通して反復することと、
前記命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、
前記サブスクリプト呼出しに対応するサブスクリプトを第２の命令ベクトルにロードすることと、
前記サブスクリプトの命令のセットを通して反復することと、
前記サブスクリプトの前記命令のセットを通して反復した後、前記命令のセットの残りの命令を通して反復するために前記スクリプトに戻ることと
を含む、請求項１に記載の方法。
【請求項９】
前記スクリプトが、少なくとも１つのサブスクリプトを参照し、前記少なくとも１つのサブスクリプトが、第２のサブスクリプトをさらに含む、請求項１に記載の方法。
【請求項１０】
会話エージェントであって、
少なくとも１つのメモリ・コンポーネントおよび少なくとも１つのプロセッサと、
アトミック演算子のセットのデータ・ストアであり、各アトミック演算子が、操作を実行するための１つまたは複数のアトミック演算子ルールを有する、前記データ・ストアと、
ユーザからの自然言語入力を受け取るように構成された会話インタフェースと、
ルール・エンジンであり、
前記自然言語入力が、前記ルール・エンジンによって指定された複数のマッピング・ルールを参照することによって既存のスクリプトにマッピングされるかどうかを決定し、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに訓練を要求する
ように構成される、前記ルール・エンジンと、
ルール訓練コンポーネントであり、
前記ルール・エンジンが前記ユーザに訓練を要求することに応じて、前記自然言語をスクリプトにマッピングする訓練を前記ユーザから前記会話インタフェースによって受け、
前記自然言語入力を前記スクリプトにマッピングするマッピング・ルールを格納する
ように構成される、前記ルール訓練コンポーネントと、
訓練を前記ユーザから受けることに応じて、前記スクリプトを実行するように構成されたスクリプト・エンジンと
を含む、会話エージェント。
【請求項１１】
前記ルール訓練コンポーネントが、
アトミック演算子および自然言語入力を使用して新しいスクリプトを生成し、
前記自然言語入力を前記新しいスクリプトに結合させるマッピング・ルールを生成する
ようにさらに構成される、請求項１０に記載の会話エージェント。
【請求項１２】
前記新しいスクリプトを生成することが、
前記会話インタフェースを使用して前記新しいスクリプトを作成するためにアトミック演算子を呼び出すことと、
前記会話インタフェースを使用してアトミック演算子入力および自然言語入力を含むスクリプト文を提供することと、
前記会話インタフェースを使用して前記スクリプトを終了するためにアトミック演算子を呼び出すことと
を含む、請求項１１に記載の会話エージェント。
【請求項１３】
前記ルール訓練コンポーネントが、
前記自然言語入力を前記スクリプトにマッピングするために既存のマッピング・ルールを一般化する
ように構成される、請求項１０に記載の会話エージェント。
【請求項１４】
前記既存のマッピング・ルールを一般化することが、
既存の自然言語ルールの用語と同一である前記自然言語入力の用語を識別することと、
前記自然言語入力と前記既存の自然言語ルールとの間の非同一用語を、前記非同一用語を包含するスーパークラスで前記非同一用語を置き換えることによって、一般化することと
を含む、請求項１３に記載の会話エージェント。
【請求項１５】
一般化することが、前記自然言語入力を、以前に入力された自然言語入力と同じように処理することを含む、請求項１３に記載の会話エージェント。
【請求項１６】
前記自然言語入力を受け取る前に、プライマリ・スクリプトがロードされ、前記プライマリ・スクリプトが、自然言語入力を前記ユーザに促すように構成される、請求項１０に記載の会話エージェント。
【請求項１７】
前記スクリプト・エンジンが、
前記スクリプトを命令ベクトルにロードすることであり、前記スクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットを通して反復することと、
前記命令のセットを通して反復している間に、サブスクリプト呼出しを識別することと、
前記サブスクリプト呼出しに対応するサブスクリプトを第２の命令ベクトルにロードすることと、
前記サブスクリプトの命令のセットを通して反復することと、
前記サブスクリプトの前記命令のセットを通して反復した後、前記命令のセットの残りの命令を通して反復するために前記スクリプトに戻ることと
を行うようにさらに構成される、請求項１０に記載の会話エージェント。
【請求項１８】
前記スクリプトが、少なくとも１つのサブスクリプトを含み、前記少なくとも１つのサブスクリプトが、第２のサブスクリプトをさらに含む、請求項１０に記載の会話エージェント。
【請求項１９】
プロセッサまたはコンピュータに、請求項１ないし請求項９のいずれか一項に記載のコンピュータ実施方法を実行させるためのプログラム。
【請求項２０】
請求項１９に記載のプログラムを記憶した記憶媒体。
【請求項２１】
自然言語を使用して会話エージェントを訓練するためのコンピュータ実施方法であって、
アトミック演算子のセットで前記会話エージェントを開始することであり、各アトミック演算子が、操作を実行するための１つまたは複数のアトミック演算子ルールを有する、前記開始することと、
ユーザからの自然言語入力を会話インタフェースで受け取ることと、
前記自然言語入力が、複数のマッピング・ルールを有するルール・エンジンを参照することによって既存のスクリプトにマッピングされるかどうかを決定することと、
前記自然言語入力が既存のスクリプトにマッピングされないという決定に応じて、前記ユーザに明確化を要求することと、
前記ユーザに明確化を要求することに応じて、前記自然言語をスクリプトにマッピングする訓練を前記ユーザから前記会話インタフェースによって受けることと、
前記自然言語入力を前記スクリプトにマッピングするマッピング・ルールを格納することと、
訓練を前記ユーザから受けることに応じて、前記スクリプトを実行することと
を含み、前記スクリプトを実行することが、
前記スクリプトを命令ベクトルにロードすることであり、前記スクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットを通して反復し、前記命令で指定された自然言語ルールおよびアトミック演算子ルールを実行することと
をさらに含む、コンピュータ実施方法。
【請求項２２】
プロセッサに、
スクリプトを命令ベクトルにロードすることであり、前記スクリプトが命令のセットを有する、前記ロードすることと、
前記命令のセットの命令がアトミック演算子ルールと一致するかどうかを決定することと、
前記命令が前記アトミック演算子ルールと一致するという決定に応じて、アトミック演算子を実行することと、
前記命令のセットの命令が自然言語ルールと一致するかどうかを決定することと、
前記命令が前記自然言語ルールと一致するという決定に応じて、前記自然言語ルールがマッピングされる第２のスクリプトを実行することと、
前記命令のセットの命令がアトミック演算子ルールまたは自然言語ルールと一致しないという決定に応じて、ユーザに明確化を要求することと、
前記ユーザによる明確化を受け取ることであり、前記ユーザが、アトミック演算子ルールまたは自然言語ルールと一致しない前記命令のセットの前記命令を新しいスクリプトにマッピングする新しい自然言語ルールを生成する、前記受け取ることと、
アトミック演算子ルールまたは自然言語ルールと一致しない前記命令のセットの前記命令を受け取ることに応じて、前記新しいスクリプトで指定された命令の第２のセットを通して反復し、前記新しいスクリプトの少なくとも１つのアトミック演算子を実行することによって、前記新しいスクリプトを実行することと
を実行させるためのプログラム。
【国際調査報告】
2021531487.tif 000013
2021531487.tif 000014