インテントの作成
スキルにインテントを作成するステップを次に示します。
インテントへのエンティティの追加


値に依存しないは、組込みエンティティにのみ適用されます。カスタム・エンティティには適用できません。

または、「新規エンティティ」をクリックして、インテント固有のエンティティを追加できます。

ヒント:
JSONペイロードに含まれるインテント・エンティティのみが、コンポーネント・サービスに送信され、このサービスによって返されます。インテントと関連付けられていないエンティティは、ユーザー入力を認識することでインテント解決に貢献する場合であっても、含まれることはありません。カスタム・コンポーネントがエンティティ一致を介してエンティティにアクセスする場合は、必ずそのエンティティをインテントに追加してください。値に依存しないインテント・エンティティ
値に依存しない機能を使用すると、エンティティ値がインテント分類にどのように影響するかを調整できます。この機能を有効にすると、関連付けられた組込みエンティティの特定の値がインテント分類に関係しません。ただし、この機能を無効にすると、入力の解決においてエンティティ値が重要な役割を果たすことが許可されます。
インテントの例 | 関連エンティティ | トレーニングの発話 | 値に依存しない? |
---|---|---|---|
勘定残高 | DATE |
|
はい- 特定の日付値はインテントを示すものではありません。ユーザーが任意の日にアカウント残高を要求できるため、これらの発話の様々な日付値は無視できます。 |
休日店舗営業時間 | DATE |
|
いいえ – インテント分類は特定の(および限定された)値セットに基づいており、ユーザーは休日について問い合せています。 |
|
DATE |
|
いいえ – 両方のインテントに対して値に依存しないを無効にします。この場合、非依存のDATE値は、モデルが値を過去または将来とみなさないことを意味します。過去の休暇残数の確認インテントを示す「先月」の値は無視されます。結果として、「翌月は休みをとりましたか」のような単語入力も、この意図に対して正しく解決されない可能性があります。 |
CSVファイルからのインテントのインポート
インテントは、手動で追加するか、CSVファイルからインポートできます。このファイルは、エクスポートしたインテントのCSVから作成することも、スプレッドシート・プログラムまたはテキスト・ファイルで最初から作成することもできます。
CSVファイルには、ネイティブ・サポート言語モードを使用するスキルでは6つの列、使用しないスキルでは5つの列があります。列名とその意味を次に示します:
query
: 発話例。topIntent
: 発話が一致する必要があるインテント。conversationName
: インテントの会話名。answer
: 回答インテントの場合、インテントの静的回答。enabled
:true
の場合、インテントがスキルで有効になります。nativeLanguageTag
: (ネイティブ言語サポートのスキルのみ)発話の言語。値としては、2文字の言語タグ(fr
、en
など)を使用します。- デジタル・アシスタントのネイティブ言語サポートのスキルでは、この列は必須です。
- ネイティブ言語サポートなしのスキルの場合、この列を含むCSVはインポートできません。
次に示すのは、ネイティブ言語サポートなしで回答インテントを使用するスキルのCSVファイルの抜粋です。
query,topIntent,conversationName,answer,enabled
I want to order a pizza,OrderPizza,Order a Pizza.,,true
I want a pizza,OrderPizza,Order a Pizza.,,true
I want a pizaa,OrderPizza,Order a Pizza.,,true
I want a pizzaz,OrderPizza,Order a Pizza.,,true
I'm hungry,OrderPizza,Order a Pizza.,,true
Make me a pizza,OrderPizza,Order a Pizza.,,true
I feel like eating a pizza,OrderPizza,Order a Pizza.,,true
Gimme a pie,OrderPizza,Order a Pizza.,,true
Give me a pizza,OrderPizza,Order a Pizza.,,true
pizza I want,OrderPizza,Order a Pizza.,,true
I do not want to order a pizza,CancelPizza,Cancel your order.,,true
I do not want this,CancelPizza,Cancel your order.,,true
I don't want to order this pizza,CancelPizza,Cancel your order.,,true
Cancel this order,CancelPizza,Cancel your order.,,true
Can I cancel this order?,CancelPizza,Cancel your order.,,true
Cancel my pizza,CancelPizza,Cancel your order.,,true
Cancel my pizaa,CancelPizza,Cancel your order.,,true
Cancel my pizzaz,CancelPizza,Cancel your order.,,true
I'm not hungry anymore,CancelPizza,Cancel your order.,,true
don't cancel my pizza,unresolvedIntent,unresolvedIntent,,true
Why is a cheese pizza called Margherita,unresolvedIntent,unresolvedIntent,,true
次に示すのは、回答インテントを使用するネイティブ言語サポート対応スキルのCSVファイルの抜粋です。
query,topIntent,conversationName,answer,enabled,nativeLanguageTag
Do you sell pasta,Products,Our Products,We sell only pizzas. No salads. No pasta. No burgers. Only pizza,true,en
Vendez-vous des salades,Products,Our Products,Nous ne vendons que des pizzas. Pas de salades. Pas de pâtes. Pas de hamburgers. Seulement pizza,fr
do you sell burgers,Products,Our Products,We sell only pizzas. No salads. No pasta. No burgers. Only pizza,true,en
Do you sell salads,Products,Our Products,We sell only pizzas. No salads. No pasta. No burgers. Only pizza,true,en
Vendez des hamburgers,Products,Our Products,Nous ne vendons que des pizzas. Pas de salades. Pas de pâtes. Pas de hamburgers. Seulement pizza,true,fr
CSVファイルをインポートするには:
-
左側のナビゲーション・バーで「インテント」(
)をクリックします。
-
「詳細」をクリックし、「インテントのインポート」を選択します。
-
.csv
ファイルを選択し、「開く」をクリックします。 -
スキルをトレーニングします。
CSVファイルへのインテントのエクスポート
トレーニング・コーパスは、CSVにエクスポートすることで再利用できます。その後、このファイルを別のスキルにインポートできます。
-
左側のナビゲーション・バーで「インテント」
をクリックします。
-
「詳細」をクリックし、「インテントのエクスポート」を選択します。
-
ファイルを保存します。このファイルには次の列があります。これらについては、CSVファイルからのインテントのインポートで説明しています:
query, topIntent, conversationName, answer, enabled, nativeLanguageTag
使用するトレーニング・モデル
回答インテントを使用するスキル、ネイティブ言語サポートを使用するスキル、または多数のインテントを含むスキルでは、Trainer Htは使用できません。これらのスキルにはTrainer Tmを使用します。
Trainer Tm
大/小文字の区別に対応する発話(たとえば、TmではBlacK FridayをBlack Fridayとして認識)、句読点、類似する動詞および名詞、またはスペルミスでトレーニング・データを増大させる必要はありません。後者の場合、Trainer Tmでは、ユーザーがキーワードを不正確に入力した場合でも、コンテキストを使用してフレーズを解決します。このモデルを使用してスキルを開発する場合のトレーニング・コーパスを作成するための一般的なガイドラインを次に示します。
- 無関係なコンテンツの認識。I'm really excited about the coming Black Friday deals, and can't wait for the deals.Can you tell me what's going to be on sale for Black Friday?の場合、Trainer Tmでは:
- 無関係なコンテンツ(I'm really excited about the coming Black Friday deals...)を破棄します。
- 関連するコンテンツ(Can you tell me what's going to be on sale for Black Friday?)をインテントに解決します。この場合は、Black Friday Dealsと呼ばれるインテントです。
Trainer Tmでは、無関係なコンテンツがインテントに解決される可能性がある場合でも、メッセージ内の関連するコンテンツと無関係なコンテンツを区別することもできます。私は新しい80インチTVをブラック・フライデーで$2200で購入しましたが、同じセットがオンラインで$2100で入手できることがわかりました。Do you offer price match?の場合は、Black Friday Dealsインテントや、このメッセージに適したPrice Matchingインテントに一致させることができます。この場合、Trainer Tmでは:- I bought the new 80 inch TV on Black Friday for $2200, but now I see that the same set is available online for $2100を無関係なコンテンツと認識します。
- Do you offer price match?を解決します。
- 単一の単語または名前がエンティティと一致する場合のインテントの解決。たとえば、Trainer TmではBlack Fridayのみで構成されるメッセージをBlack Fridayのエンティティに関連付けられたインテントに解決できます。
- 類似する発話(Cancel my orderとWhy did you cancel my order?)の区別。
- ピザのオーダーのみを履行するためのスキルの、Show me pizza recipesやHow many calories in a Meat Feastなど、スコープ外の発話の認識。
- ピザのオーダー・スキルの、What's the weather like todayなど、ドメイン外の発話の認識。
ヒント:
Trainer Tmでは、ユーザー・メッセージがトレーニング・データと明確に異なるため、分類できない場合は簡単に区別できますが、スキルのインテントに解決しないようにするフレーズを表す発話を使用してunresolvedIntent
を定義することもできます。このようなフレーズは、スキルのドメイン内にある可能性がありますが、トレーニング・データと同じ単語の一部を共有していてもスコープに含まれません。たとえば、ピザ・スキルのI want to order a carです。これは、I want to order a pizzaによるトレーニングも受けています。 - 類似するエンティティの区別 – たとえば、Tmでは、Sign Up for Email Dealsと呼ばれるインテントのコンテキストで、郵便物は電子メールと同じではないと認識します。regular mailと呼ばれるエンティティはスコープに含まれないと認識されるため、I want to sign up for deals through regular mailというフレーズはI want to sign up for email dealsの場合よりも低い信頼度で解決されます。
Trainer Ht
Trainer Htはデフォルトのトレーニング・モデルです。必要なトレーニング・コーパスは少量であるため、エンティティ、インテントおよびトレーニング・コーパスを開発する際に使用します。テストで正確性の高いインテント解決が示されるレベルまでトレーニング・コーパスが豊富になったら、Trainer Tmのトレーニングによってスキルの認識をさらに深められる状態になります。
Trainer Htがトレーニング・コーパス自体のみからインテントを解決する方法を全般的に理解できます。品詞とエンティティ(カスタムと組込みの両方)にタグを付け、インテントのコンテキスト内で同じ意味を持つ単語を検出することによって、サンプル文から一致ルールを形成します。たとえば、SendMoneyというインテントに、母に$500を送金するとCleoに$500を支払うの両方が含まれる場合、Trainer Htは支払うを送金するに相当するものとして解釈します。トレーニング後、Trainer Htのタグ付けにより、これらの文はユーザー入力に適用されるテンプレート(personにCurrencyを送金する、personにCurrencyを支払う)にまとめられます。
Trainer Htでは入力された文が利用されるため、その動作を予測できます。つまり、トレーニング・コーパスを構成する文と類似した文(ルールに従ったユーザー入力)でテストすると非常に正確になりますが、難解なユーザー入力に直面すると、うまくいかない可能性があります。
トレーニング・コーパスの作成
インテントを定義する場合は、まずユーザー・アクションを示す名前をインテントに指定し、続いて実際のユーザー文または発話のセットを集めます。インテントとそれに属する発話の集まりで、トレーニング・コーパスが構成されます。コーパスという用語は、「このスキルを賢くするために考え出したすべてのインテントおよびサンプル・フレーズ」を簡単に述べた言葉です。コーパスは、スキルのインテリジェンスの鍵となります。コーパスを使用してモデルをトレーニングすることで、実質的にそのモデルは、ユーザー入力を単一のインテントに解決するための参照ツールに変わります。最終的にトレーニング・コーパスは、スキルと人間の会話がたどるルートを決定するうえで重要な役割を果たすため、トレーニング・コーパスを作成する際には慎重に単語を選択する必要があります。
一般に、大規模で多様なサンプル・フレーズのセットがあると、インテントを正確に解決するモデルの能力が高まります。ただし、堅牢なトレーニング・コーパスの作成は、単に十分に練られたサンプル・フレーズから始めるのではなく、実際には明確に記述されたインテントから始めます。使用例を明確に反映しているのみでなく、サンプル文との関係も同様に明確になっている必要があります。サンプル文がどこに属すのかがわかっていないと、インテントは互いに区別されません。
インテントの作成時にはおそらくサンプル発話を考慮すると思いますが、次のガイドラインを使用することでそれらを拡張できます
Trainer Tmのガイドライン
- 本番環境に移行するスキルには、最小信頼度しきい値0.7を使用します。
- インテント名に適切な命名規則を使用して、関連するインテントを簡単に確認できるようにします。
- 一般的に、各インテントに対して少なくとも80から100の発話を作成します。コーパスのサイズおよびシェイプのガイドラインに従って、インテントの最小(推奨されない)発話数は2です。トレーニング・セット内の発話の合計数は25,000を超えないようにしてください。
- 可能な場合は、次を含む変更されていない実際のフレーズを使用します:
- 俗語
- ユーザーが入力する可能性がある標準的な略語(opportunityの"opty"など)
- 製品名などの非標準的な名
- スペルのバリアント("check"や"cheque"など)
- アクションとアクションが実行されるエンティティの両方を示す完全に形成されたセンテンスを作成します。
- 発話の長さを3語から30語の間に保つようにしてください。発話が短すぎてコンテキストがないと、モデルが予測不可能な方法で一般化する可能性があります。発話が長すぎると、モデルが関連する単語やフレーズを識別できない場合があります。ただし、一般的に使用されるフレーズの場合、1語または2語の発話には例外があります。エンティティとアクションの両方を指定する2単語のメッセージ(order status、price check、membership info、ship internationallyなど)が想定される場合、それらをトレーニング・データに追加します。サンプル・フレーズにアクションとエンティティの両方があることを確認します。
- 具体的にします。たとえば、What is your store phone number?は、Trainer Tmで電話番号を店舗に関連付けることができるため、What is your phone number?より適しています。この学習の結果、What's your mom's phone number?は低い信頼度スコアに解決されます。
- Trainer Tmはスコープ外の発話を検出する一方で、ドメイン内にあるのにスキルのインテントのスコープに含まれない発話に対して
unresolvedIntent
を作成することで、信頼度と精度を向上させることができます。これにより、Trainer Tmはドメイン・インテントの境界を学習できます。スキルのインテントに解決しないフレーズには、unresolvedIntent
を定義できます。unresolvedIntent
を定義するのは、ユーザー・メッセージがスキルのインテントに適用されていない場合でも、それらに解決されている場合のみです。 - 重要なコンテンツを囲む単語およびフレーズをできるだけ変更します。たとえば、"I'd like a pizza、please"、"Can you get me a pizza?"、"A pizza, please"などです。
- 回避するプラクティスをいくつか示します:
- 単一の単語またはフレーズを特定のインテントに関連付けないでください(その単語またはフレーズがインテントを示している場合を除きます)。フレーズを繰り返すと、インテント解決がスキューされる可能性があります。たとえば、各OrderPizza発話を"I want to …"で始め、各ShowMenuインテントを"Can you help me to …"で始めると、OrderPizzaでは"Can you help me to"で始まり、ShowMenuでは"I want to"で始まるユーザー入力をモデルが解決する確率が高くなることがあります。
- インテント内での1単語の発話の高い出現頻度。1単語の発話は例外です。使用する場合は、慎重に使用してください。
- 他のドメインまたはドメイン外トピックに簡単に適用できる制約のない発話。
- コーパスでは、大/小文字が異なる同じ発話、または同じ題目を持つ異なる単語形式の同じ発話を繰り返す必要はありません。たとえば、Trainer Tmではmanage、managesおよびmanagerを区別できるため、"Who does Sam manage?"と"Who manages Sam?"を区別するだけでなく、これらの単語が相互に関連していることも理解します。
ノート
単語のスペルミスを追加する場合があります。ただし、その前に、発話テスターでこれらのスペルミスを使用して、モデルで認識されるかどうかを確認します。それらがどれだけうまく処理されているかに驚かれるかもしれません。また、スペルミスを追加しないと、予期しない方法でモデルをスキューするリスクが少なくなります。
- テスト・ケースを作成して、インテント解決の整合性を確認します。
- スキル品質の概要レポートを実行して、バランスのとれたトレーニング・セットを保守します。異常レポートを実行し、誤分類または異常な発話をチェックします。
- スキルをデプロイする場合、次によってトレーニング・データを継続的に改善できます:
- 会話ログ(指定した期間に発生したすべての会話のサマリー)を確認します。「設定」で「インサイトの有効化」をオンに切り替えてロギングを有効にします。
- スキル品質レポートの実行およびインサイト・リトレーナを使用したインテントへの実際のユーザー・メッセージの割当て(または再割当て。これらのレポートで、
unresolvedIntent
のドメイン・インテント内に誤って分類された発話が多いことが判明した場合:- スコープ内の発話を
unresolvedIntent
からドメイン・インテントに移動します。 - スコープ外の発話をドメイン・インテントから
unresolvedIntent
に移動します。
- スコープ内の発話を
Trainer Htのガイドライン
- 俗語
- 一般的なスペルミス
- ユーザーが入力する可能性がある標準的な略語("opportunity"の"opty"など)
- 製品名などの非標準的な名
- スペルのバリアント("check"や"cheque"など)
-
次を使用した1つまたは2つの入替えによって、これらの初期フレーズのボキャブラリと文の構造を変更します:
-
俗語(お金を意味する単語としてmoolah、lucre、dough)
- ユーザーが入力する可能性がある標準的な略語(opportunityの"opty"など)
- 製品名などの非標準的な名
-
一般的な表現(AccountBalanceというインテントに対してお金がないですか?)
-
別の言い回し(Send cash to savings、Send funds to savings、Send money to savings、Transfer cash to savings。)
-
異なるカテゴリのオブジェクト(ピザをオーダーしたい、食べ物をオーダーしたい)。
-
代替のスペル(check、cheque)
-
よくあるスペルミス(businessに対して"buisness")
-
普段使用しない語順(当座預金へ、$20送金)
-
- お腹が空いたやピザを作ってほしいなど、別の概念を使用して同じインテントを表します
- 単一の単語またはフレーズを特定のインテントに関連付けないでください(その単語またはフレーズがインテントを示している場合を除きます)。フレーズを繰り返すと、インテント解決がスキューされる可能性があります。たとえば、各OrderPizza発話を"I want to …"で始め、各ShowMenuインテントを"Can you help me to …"で始めると、OrderPizzaでは"I want to"で始まり、ShowMenuでは"Can you help me to"で始まるユーザー入力をモデルが解決する確率が高くなることがあります。
-
文の一部や単一の単語を使用しません。かわりに、アクションおよびエンティティを含む完全な文(255文字以内)を使用します。単一のキーワード例を使用する必要がある場合は、慎重に選択してください。
- テスト・ケースを作成して、インテント解決のテストの整合性を確認します。新しいインテント例を追加するとリグレッションが生じる可能性があるため、最後にはいくつかのテスト・フレーズを追加してインテント解決動作を安定させることになる可能性があります。