ギャビン先生のトランスフォーマーライブクラスの認識-Rasa対話ロボットプロジェクト実際の戦闘教育分野教育ボットプロジェクトフォーム分析とカスタムフルソリューション(75)

   この記事では、引き続き、産業レベルのビジネス対話プラットフォームとフレームワークRasa、および教育分野のRasa対話ロボットプロジェクトのEducation Botプロジェクトでのフォームの定義、フォームをアクティブ化する方法、または現在実行中のフォームを作成する方法に焦点を当てます。非アクティブ状態に移行し、フォーム内のスロットを使用する方法、フォームによって収集された情報を検証する方法、および動的フォームの動作の詳細な分析を実行する方法。

 1.Rasa対話ロボットプロジェクトの教育分野におけるEducationBotプロジェクトフォームのインサイダー分析とカスタムフルソリューション

  1. EducationBotプロジェクトフォームの使用状況分析

フォームは、Rasaの会話型ボットの開発において中心的な役割を果たします。これは、現在、Rasaの会話型ボットがユーザー情報を収集するための最良の方法です。

プロジェクトで使用されるフォームの定義は次のとおりです。収集される情報がrequired_slotsで定義されていることがわかります。

さらに、ダイアログフローはフォームを介して制御することもできます。フォームの実行時の優先度はルールよりも高く、必要なコンテンツをフォームに配置して、期待どおりに実行されるようにすることができます。

 2.Rasaフォームの定義と放射化分析およびケース分析

フォームはドメインファイルで定義され、フォームの名前は、ストーリーまたはルールでフォームを実行するために使用されるアクションの名前でもあります。フォームが収集する必要のあるスロットをrequired_slotsに指定する必要があります。以下は、フォーム定義のサンプルです。

キーignored_intentsを使用して、フォームで無視する必要のあるインテントのリストを定義できます。このキーで定義されたインテントは、各スロットマッピングのキーnot_intentに追加されます。

通常、ルールはフォームのアクティブ化とフォームの送信に使用されます。次のルールはフォームのアクティブ化に使用されます。手順は、最初にアクション「utter_ask_playground_help」を実行し、次にユーザーに確認を求めることです。確認後、アクション「 playground_form "が実行され、フォームがアクティブになります。

次のルールは、フォームの送信方法を定義します。条件は、フォームがアクティブである必要があることです。送信後、active_loopをnullに設定する必要があります。

Rasaが提供するフォームを使用するには、RulePolicyがポリシー構成に追加されていることを確認する必要があります。

フォームがアクションによってアクティブ化されると、次の2つの応答形式のいずれかを使用して、フォームが要求しているスロット情報をユーザーに提供するように要求します。

      utter_ask_ <form_name> _ <slot_name>

utter_ask_ <slot_name>

 3.フォーム分析とベストプラクティスの非アクティブ化

フォームに必要なスロットに関する情報が収集されると、フォームは自動的に非アクティブ状態になります。ルールまたはストーリーを使用して、フォームが終了したときのチャットボットの動作を説明できます。これが行われない場合、フォームは実行を停止した後、ユーザーの次のメッセージをリッスンする状態になります。次の例は、フォームの実行が終了した後にアクションutter_submitおよびutter_slots_valuesが実行されることを示しています。

 4.不幸なフォームパスのライティングストーリー/ルールの分析とケース分析

ユーザーがダイアログロボットの要求に応じて常に情報を提供するとは限らない場合、フォームアクションの実行は拒否され、フォームは自動的に例外ActionExecutionRejectionをスローします。この状況で考えられるシナリオは次のとおりです。

-スロットが要求されましたが、ユーザーがスロットに最新のメッセージを入力しておらず、スロットの検証または抽出のためのカスタムアクションを定義していません

-スロットが要求されましたが、スロットの検証または抽出のカスタムアクションがSlotSetイベントを返しませんでした

フォームの実行を明示的に拒否するには、カスタムアクションでActionExecutionRejectedイベントを返すようにします。フォームが実行を拒否する状況に対処するために、次の例のように、ルールまたはストーリーでフォームを処理できます。

もう1つの状況は、フォームが情報を収集するときにユーザーがビジネスの処理を続行しないことを決定した場合、フォームの実行を停止する必要があることです。具体的な方法は、デフォルトのアクションaction_deactivate_loopを使用してフォームを非アクティブ化し、要求されたスロットをリセットすることです。例は次のとおりです。

これらのルールやストーリーを作成するには、Rasaが提供するインタラクティブな学習方法を使用することを強くお勧めします。自分で作成すると、重要なコンテンツを見逃す可能性があります。

 5.フォームスロットマッピングの分析

Rasa 3.0が開始されてから、すべてのスロットがドメインファイルのスロットセクションで定義されるため、同じスロットマッピングを複数のフォームで使用できるため、不要な繰り返しを排除できます。プロジェクトで使用されるスロットマッピングは次のとおりです。条件が追加されると、フォームが実行されている場合にのみ、スロットにエンティティの値が入力されます。

 6.フォーム入力分析とケース分析の検証

ユーザー入力からスロット値を抽出する場合は検証が必要です。デフォルトでは、Rasaは値で埋められたスロットのみを検証します。カスタム検証アクションを実装して、抽出されたスロットを検証できます。このアクションがドメインファイルに追加されていることを確認してください。

このカスタムアクションはFormValidationActionから継承できます。これにより、スロットの検証プロセスが簡素化されます。この場合、抽出されたスロットごとにvalidate_<slot_name>メソッドを作成する必要があります。次の検証方法の例は、スロットを検証する方法を示しています。つまり、スロットの値がデータベースに存在する場合にのみ値を設定できます。存在しない場合は、Noneに設定されます。

 7.カスタムスロットマッピング分析とケース分析

ニーズを満たす事前定義されたスロットマッピングがない場合は、カスタムアクションvalidate_ <form_name>を使用して独自のスロット抽出コードロジックを記述できます。Rasaは、フォームの実行時にこのアクションをトリガーします。Rasa SDKを使用する場合は、FormValidationActionから継承することをお勧めします。カスタムスロットを抽出するには、次の手順を実行する必要があります。

-カスタムタイプを使用して、スロットマッピングの各スロットのメソッドを定義します:extract_ <slot_name>

-ドメインファイルのフォーム定義のキーrequired_slotsに、事前定義されたカスタムスロットマッピングを使用するすべてのスロットを一覧表示します

次の例は、ユーザー入力テキストに含まれる屋外情報に基づいてスロット情報を抽出する方法を示しています。

 8.動的フォーム動作分析とケース分析

デフォルトでは、Rasaはドメインのフォーム定義にリストされているスロットを使用して、ユーザーからの値が入力されていないスロット情報を順番に要求します。カスタムスロットマッピングとFormValidationActionを使用する場合、Rasaは、メソッドrequired_slotsによって返された最初の空のスロットに基づいてユーザーに情報を要求します。メソッドrequired_slotsをオーバーライドすることで、要求されたスロットを動的に追加できます。たとえば、以前に要求されたスロットの情報に基づいてより多くのコンテンツを取得する必要がある場合、このメソッドをオーバーライドすることでスロットの要求順序を変更することもできます。

事前定義されたスロットマッピングを使用しないスロットごとにメソッドextract_<slotname>を定義する必要があります。次の例は、1つのスロットの値に従って別のスロットの情報を要求する必要があるかどうかを制御する方法を示しています。

ドメインのフォーム定義のrequired_slotsからスロットを削除する場合は、最初に上記の例のdomain_slotsの値を別の新しい変数に割り当ててから、Go and modifyではなく、この変数に基づいてスロットを削除する必要があります。 domain_slotsを直接実行すると、予期しない動作が発生する可能性があります。次に例を示します。

 9.Requested_slotスロット分析とケース分析

Requested_slotはテキストタイプのスロットであり、ドメインに自動的に追加されます。requested_slotの値は、ダイアログではデフォルトで無視されます。この動作を変更する場合は、requested_slotをドメインファイルに追加する必要があります。タイプははカテゴリであり、属性influence_conversationはtrueに設定されます。次の例のように、現在のリクエストのスロットに基づいて予期しない状況を処理する場合、ユーザーが現在のダイアログのスロットリクエストに他の質問で応答したとき:

 10.次のスロット分析とケース分析を要求するカスタムアクション

フォームがユーザーから収集する必要のある次のスロットを決定すると、関連するアクションutter_ask_xxxが実行されます。この従来の方法で要件を満たせない場合は、action_ask_ <form_name>_<slot_name>などのカスタムアクションを使用することもできます。またはaction_ask_<slot_name>を使用して、ユーザーに次のスロットを要求します。次に例を示します。

おすすめ

転載: blog.csdn.net/m0_49380401/article/details/123436208