この記事では、引き続き、産業レベルのビジネス対話プラットフォームおよびフレームワークであるRasaに焦点を当て、Rasa対話ロボットプロジェクトの教育分野におけるEducation Botプロジェクトスロットのさまざまなタイプとアプリケーションプラクティス、スロットマッピングとアプリケーションプラクティスをカスタマイズする方法について説明します。スロット検証アクション、およびプロジェクトの使用を通じて。エンティティとインテントが解析されます。
1.スロットのインサイダー分析、スロット検証アクション分析、Rasa対話ロボットプロジェクトの教育分野におけるEducationBotプロジェクトのエンティティとインテント分析
- Rasaスロットの動作メカニズムとベストプラクティス分析
スロットは、rasa対話システムの状態管理において中心的な役割を果たします。ユーザーと対話ロボットの間の対話により、スロットに必要な情報が生成され、マイクロサービスを呼び出すRasaによって返されるイベントは、スロットの値を更新できます。トラッカー。ある程度、スロットは対話の流れを制御し、スロットは対話ロボットの記憶を構成します。スロットには、Key-Valueの形式でユーザーから提供された情報と、データベースのクエリ結果などの外部呼び出しを通じて取得された情報が格納されます。
以下は、ドメインファイルで定義されたスロットの例です。
2.スロットと会話の動作の詳細な説明と分析例
Impact_conversationを使用して、スロットが会話の動作に影響を与えるかどうかを決定できます。falseに設定すると、情報のみが保存され、ダイアログの状態には影響しません。次の例では、ユーザーの年齢情報を格納するスロットエイジを定義していますが、ダイアログロボットは、次のアクションを予測するたびにこのスロットの情報を無視するため、ダイアログフローには影響しません。
このプロパティが設定されていないかtrueに設定されている場合、スロットのタイプがない限り、ダイアログフローに影響します。スロットがダイアログに与える影響は、スロットタイプによって異なります。次の例では、スロットhome_cityはテキストタイプのスロットです。値がある場合、ダイアログに影響します。特定の値は、ダイアログフローに影響を与えません。
3.スロットタイプ:テキストスロット、ブールスロット、カテゴリスロット、フロートスロット、リストスロット、任意のスロット详解適用例
テキストスロット:テキスト値を保存するために使用されます
例は次のとおりです。
追加の属性influence_conversationを使用して、スロットが会話の動作に影響を与えるかどうかを判断できます。
ブールスロット:bool値をtrueまたはfalseに格納します
例は次のとおりです。
追加の属性influence_conversationを使用して、スロットが会話の動作に影響を与えるかどうかを判断できます。nullまたはfalseの値は、ダイアログに異なる影響を与えることに注意してください。
カテゴリスロット:スロットの値が、事前定義された値のカテゴリリストから選択されたものである場合
例は次のとおりです。
属性influence_conversationがtrueに設定されている場合、会話の動作はスロットの値に応じて変化し、デフォルト値の__other__がユーザー定義値のリストに自動的に追加されます。ユーザー定義の値リストのいずれにも一致する値がない場合は、__other__として一致します。
フロートスロット:実際の値を保存するために使用されます
例は次のとおりです。
デフォルトのmax_value=1.0、min_value = 0.0、判断ルールは次のとおりです。
-スロットの値がmax_valueとmin_valueの間にある場合は、このスロットの値を使用します
-スロットの値がmin_valueより小さい場合は、min_valueで定義された値を使用します
-スロットの値がmax_valueより大きい場合は、max_valueで定義された値を使用します
リストスロット:値のリストを格納するために使用されます
例は次のとおりです。
属性influence_conversationがtrueに設定されている場合、リストに値があるかどうかはダイアログに影響し、リストの長さはダイアログフローに影響しません。
任意のスロット:任意の値を格納するために使用されます。これは、辞書やリストなど、任意のタイプにすることができます。
例は次のとおりです。
このタイプのスロットは、会話では常に無視されます。このタイプの場合、属性influence_conversationをtrueに設定することはできません。
4.カスタムスロットタイプの動作メカニズムと分析例
レストラン予約対話システムを開発する場合、予約の最大数が6人である状況に対処する必要がある場合があります。この場合、カスタムスロットクラスを開発して、対話の次のアクションの動作に影響を与えることができます。スロットの値を制御します。
次の例では、スロットNumberOfPeopleSlotが定義され、スロットの値が特性化処理によってベクトルに変換されるため、Rasaの機械学習モデルはスロットの値を処理できます。スロットNumberOfPeopleSlotには、次の3つの可能な値があり、長さ2のベクトルで表すことができます。
(0,0)スロット値が設定されていません
(1,0)1〜6のスロット値
(0,1)スロット値> 6
次に例を示します。
実装されたカスタムスロットクラスを個別のPythonモジュールとして使用して、他のカスタムアクションコードと区別できます。つまり、カスタムスロットクラスをディレクトリに配置し、「__ init__.py」という名前のファイルを空のファイルに追加してから、これを参照します。モジュールパスを介したカスタムスロットクラス。
例は次のとおりです。
次に、ドメインファイルで以下を構成します。
Rasaフレームワークがカスタムスロットクラスを使用して、さまざまなスロットの人々の値に基づいてトレーニングデータを追加できるようにするために、ストーリーデータの例を次に示します。
5.スロットマッピングの詳細な説明と分析例
Rasa 3.0以降、スロットマッピングはドメインのスロットセクションで定義されています。これにより、以前のバージョンで提供されていたスロットの暗黙的な自動入力メカニズムが削除され、代わりにユーザー入力に基づいて値をスロットにマップする方法が明示的に定義されます。ドメインで定義されているスロットごとに、明示的なスロットマッピングを提供する必要があります。スロットマッピングのデフォルトの動作では、ダイアログコンテキストに関係なく、ユーザーがメッセージを入力するたびにユーザー情報を抽出するためにスロットマッピングが実行されます。スロットマッピングをフォームのコンテキストでのみ機能させるには、マッピング条件を使用できます。
from_entityについて:
このマッピングは、スロットを埋めるために抽出されたエンティティに基づいており、パラメータエンティティを指定する必要があります。これらのパラメータはオプションです:intent、not_intent、role、group。
次に例を示します。
フォームのコンテキストでfrom_entityマッピングを使用する場合は、制限があります。フォームがアクティブ化されている場合、マッピングは、次の1つ以上の条件が満たされた場合にのみ使用できます。
-from_entityを使用するスロットがフォームによって要求されています
-フォームで定義されたrequired_slotsの1つのスロットのみが、フォームの唯一のエンティティマッピングメカニズムである特定のfrom_entityマッピングを使用します。複数のfrom_entityマッピングがある場合、抽出されたエンティティは無視され、同じ値が妨げられます。エンティティは複数のスロットに入力されます
例は次のとおりです。
from_textについて:
ユーザーが最近入力したテキスト情報をスロットに入力します。インテントが指定されている場合は、インテントがトリガーされたときにのみ入力されます。それ以外の場合、スロットの入力はインテントとは関係ありません。ユーザー入力に対応するインテントがexcluded_intentに含まれている場合、パディングは実行されません。
例は次のとおりです。
from_intentについて:
スロットは、ユーザー入力によって識別されたインテントがスロットマッピングのインテントパラメータの値と一致する場合にのみ埋められます。インテントが指定されていない場合、インテントがnot_intentにない限り、スロットを埋めることができます。
例は次のとおりです。
from_trigger_intentについて:
特定の意図を持つユーザーメッセージによってフォームがアクティブ化されると、スロットはスロットマッピングで指定された値で埋められます。インテントがnot_intentにある場合、スロットは埋められません。
例は次のとおりです。
6.詳細なマッピング条件と分析例
1つのフォームのコンテキストでのみスロットマッピングを使用するために、スロットマッピングで条件キーを使用してフォームを指定し、active_loopでマッピングを使用できるフォームの名前を指定できます。requested_slotが指定されていない場合、現在要求されているスロットに関係なく、関連情報が抽出されている限り、スロットは埋められます。
例は次のとおりです。
7.カスタムスロットマッピングの詳細な説明と分析例
スロット検証アクションを使用してスロットマッピングをカスタマイズできます。この場合、スロットマッピングのタイプをカスタムに設定する必要があります。
例は次のとおりです。
また、アクションを指定することはできません。これにより、カスタムアクションによって返されるSlotSetイベントを介してスロットを埋めるなど、カスタムアクションがカスタムマッピングのスロットを埋めることができます。
例は次のとおりです。
8.Action_validate_slot_mappingsの詳細な説明とソースコード分析
action_validate_slot_mappingを使用して、フォームコンテキストの外部でスロットを抽出または検証できます。このアクションは、デフォルトのアクションaction_extract_slotsが実行された後に自動的に呼び出されるため、名前を変更することはできません。このカスタムアクションは、RasaSDKのValidationActionから継承する必要があります。ドメインファイルのアクションセクションにアクションがリストされている限り、カスタムスロットマッピングでアクション名を指定する必要はありません。
9.エンティティの詳細な説明と分析例
ドメインのエンティティセクションには、NLUパイプラインで構成されたエンティティエクストラクタによって抽出できるエンティティが一覧表示されます。例は次のとおりです。
10.インテントの詳細な説明と分析例
ドメインファイルのインテントセクションには、NLUデータとストーリーデータで使用されるすべてのインテントが一覧表示されます。次に例を示します。
use_entities:[]を使用して、インテントのすべてのエンティティを無視できます。