何がRasa 2.0で新しい-あなた自身のchatbotをビルド
8041 ワード
The following post is a simplified version of my original article that was published on Medium.
導入
Rasaオープンソースは、テキストを構築するために使用されているフレームワークとボイスベースのチャットボードです.最近、2020年10月に最初の公式バージョン2.0をリリースしました.新しいバージョンは、トレーニングデータ形式、構成ファイル、およびモデルを処理する方法を統一することを目指します.結果として、以前のバージョンと比較してかなり大きな変化があります.
この記事では、Rasa 1.10と最新バージョン2.0の主な違いのいくつかに深く潜り込みます.それをチェックして、古いRASAサーバの移行を実行する前に努力する価値があるかどうかを確認してください.
フォルダとファイル階層
フォルダーとファイルの構造は、前のバージョンと同じです.
構成
バージョン2.0が付属していますdefault configurations パイプラインとポリシーの両方.これは、より多くの新しいユーザーに便利です.それを言って、あなたはまだそれをカスタマイズすることができますし、形式は、以前のバージョンとまったく同じです.
内蔵のほとんど
tokenizers
次のプロパティーで標準化されました.intent_tokenization_flag
— フラグを設定するかどうかintent_split_symbol
— 意図を分割する記号token_pattern
— トークンを検出する正規表現次のコードスニペットを見てください
WhiteSpaceTokenizer
:pipeline:
- name: "WhitespaceTokenizer"
"intent_tokenization_flag": False
"intent_split_symbol": "_"
"token_pattern": None
それに財産case_sensitive
Tokenizersからfeaturizersに移動されています.次のコンポーネントを使用しない限り、このプロパティを安全に無視できます.政策
新しい政策の追加がある
RulePolicy
. それは常に固定された動作を持っている会話のために便利です.それはストーリーとわずかに異なり、より良いパフォーマンスのためのストーリーと一緒に使用する必要があります.する必要がありますRulePolicy
あなたのconfig.yml
ルールとフォームを使用するには.次の機能を実装するときに非常に便利です.RulePolicy
. あなたはまだ使用して同じ機能を実装することができますRulePolicy
とそれぞれのクラシファイア.輸入業者
デフォルトでは
RasaFileImporter
. これで、他の形式でのトレーニングデータをロードする独自のデータパーサーを作成することができます.あなたのトレーニングデータが異なるリソースからあるならば、これは役に立ちます.さらに、実験的な特徴がある
MultiProjectImporter
これにより、複数のRasaプロジェクトからデータセットを1つに結合できます.たとえば、プロジェクトを次のサブプロジェクトにモジュール化できます.ドメイン
ドメインのデータ構造.YMLは同じバージョンのままです.すべてのトレーニングデータファイルを指定する必要があります.省略された場合、Rasaはデフォルトでバージョン2.0として読み込みます.
version: "2.0"
intents:
- greet
- goodbye
- affirm
- deny
- mood_great
- mood_unhappy
- bot_challenge
国立天文台
NLUトレーニングデータのために、バージョン2.0のための新しい構造は以下の通りです:
version: "2.0"nlu:
- intent: greet
examples: |
- Hey
- Hi
- hello- intent: goodbye
examples: |
- Goodbye
- bye bye
メタデータ
実際には、任意のキー値のペアを含む追加のメタデータを宣言することができます.メタデータは、カスタムコンポーネントによってアクセスできます.たとえば、次のように宣言できます.
nlu:
- intent: greet
metadata:
sentiment: neutral
examples:
- text: |
hi
- text: |
hello
上記の例では、メタデータは意図したレベルで宣言されます.その結果、すべての例はメタデータを含む.各例で個別にメタデータを宣言できます.nlu:
- intent: greet
examples:
- text: |
hi
metadata:
sentiment: neutral
- text: |
hello
検索意図
古いバージョンでは、検索意図は、意図をより小さな目的に分類することができる実験的な特徴です.それはあなたの話のオーバーヘッドを減らすように小さな話のために構築するときにこれは多くのことができます.主な意図とその目的を分離するために/記号を使用する必要があります.以下の例を見てみましょう.
nlu:
- intent: chitchat/ask_name
examples: |
- What is your name?
- May I know your name?- intent: chitchat/ask_weather
examples: |
- What is the weather?
- May I know the current weather outside?
通常の意図とは異なり、答えは応答の中に配置する必要があります.ドメインの代わりにYML.京大理ファイルはデータフォルダーの下に配置され、ドメインとまったく同じ形式になります.京大理これは、複数のバリエーションを持つことができ、異なるペイロードを指定することを意味します.responses:
utter_chitchat/ask_name:
- text: "I don't have a name!"
utter_chitchat/ask_weather:
- text: "It is sunny"
- text: "It is raining heavily outside"
実体
エンティティの書式は、以前のバージョンと同じです.あなたがそれに気づいていないならば、役割とグループラベルは同じ実体の特定の概念を区別するのに用いられることができます.次の例を考えます.
Book me a flight from [Malaysia]{"entity": "country"} to [Singapore]{"entity": "country"}.
人間の視点から、実体の両方が国を参照しても、第二国が出発先を参照している間、最初の国は出発を参照します.この実験機能を使ってラベルを付けることができます.Book me a flight from [Malaysia]{"entity": "country", "role": "departure"} to [Singapore]{"entity": "country", "role": "destination"}.
ストーリー
あなたは、単一のファイルとしてNLUと一緒に物語を組み合わせることができますが、それは非常にそれらを分離することをお勧めします.新しい形式は古いバージョンに比べて、より詳細なものですが、意図と動作を区別するのに役立ちます.結果として、あなたのストーリーを構築するときに、不要な間違いをする可能性が低いです.
version: "2.0"stories: - story: happy path
steps:
- intent: greet
- action: utter_greet
- intent: goodbye
- action: utter_bye
NLUと同様に、ストーリーに関連する関連情報を格納するストーリー内のメタデータを定義できます.メタデータは、トレーニングで使用されず、あなたの物語のパフォーマンスに影響を与えません.フォーム
フォームは現在、Rasa SDKの代わりにトレーニングデータの一部です.フォームが必要
RulePolicy
, これは既にデフォルトで設定中です.まず、次のように定義します.forms:
your_form:
age:
- type: from_entity
entity: age
次に、Rasaがループし、呼び出しを行うアクションとActiveRoundループフィールドを指定できますutter_ask_{form_name}_{slot_name}
or utter_ask_{slot_name}
エンティティの年齢が満たされるまで.あなたの応答でそれらを定義する必要があります.stories:
- story: form asking for age
steps:
- intent: intent_ask_age
- action: your_form
- active_loop: your_form
規則
規則は常に一定の経路を持つ会話の小さな部分を記述する.同じ答えが返される1ターンの相互作用として考えることができます.話とは異なり、ルールは一般化されません、そして、大部分はFAQに答えます.それはトリガー経由の使用に似ています
MappingPolicy
インdomain.yml
Rasa 1.0用.ボットは常にユーザーがgreeetときにいつでもAutRangGreetで対応する必要がありますとしましょう.以下の規則を簡単に定義できます.rules: - rule: Say `hello` whenever users greet the bot
steps:
- intent: greet
- action: utter_greet
この投稿を読んでくれてありがとう!参考文献
Reference
この問題について(何がRasa 2.0で新しい-あなた自身のchatbotをビルド), 我々は、より多くの情報をここで見つけました https://dev.to/wfng92/what-s-new-in-rasa-2-0-build-your-own-chatbot-4j4oテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol