言語

これらは、YAMLベースのダイアログ・フロー・エディタの「言語」カテゴリで使用可能なコンポーネントです。

System.Intent

このコンポーネントは、ユーザーのインテントを検出し、すべてのエンティティを抽出してから、後続の状態をトリガーします。
ノート

このコンポーネントは、ビジュアル・フロー・デザイナで開発されたスキルには使用できません。かわりに、アクティブなフローがない場合、インテントは自動的に解決されます。インテント検出および解決を参照してください。
プロパティ 説明 必須?
variable 言語処理フレームワークがユーザー入力から解決した値を保持します。たとえば、サンプル・スキル・ボットでは、このプロパティをvariable=iResultとして定義しています(iResult: "nlpResult"context変数の1つとして定義)。変数iResultを指定する必要はありません。この名前は、サンプル・コードおよびサンプル・スキルで使用される表記規則です。nlpResultに対してどのような変数名を使用するとしても、ダイアログ・フロー全体で一貫して使用してください。 はい
optionsPrompt 「ウィン・マージン」オプションの値を設定する場合のインテントのリストのタイトル。デフォルトでは、この文字列値はDo you want toです。

このプロパティのデフォルト値は、スキルのリソース・バンドルに格納されます。これを変更するには、「リソース・バンドル」アイコンをクリックして、「構成」タブをクリックし、Intent - optionsPromptキーを更新します。スキルのリソース・バンドルを使用してデフォルト・メッセージを変更する場合は、コンポーネントにプロパティを含める必要はありません(デフォルトをオーバーライドする場合を除きます)。

いいえ
botName インテントを解決するスキルの名前(表示名ではありません)。このプロパティは、現在のスキルではなく別のスキルのモデルを使用してユーザー入力を解決する場合に使用します。このアプローチは、プライマリ・ユースケースに必要なドメインよりも狭い定義のドメインのモデルに基づいてインテントを解決する場合に役立ちます。 いいえ
botVersion スキルのバージョンを指定します。デフォルト値は1.0です(バージョン番号を指定しない場合)。 いいえ
sourceVariable 言語処理フレームワークは、sourceVariableを入力として使用してインテントを解決します。

重要:このプロパティは、translateプロパティと組み合せて使用できませんsourceVariableで表される入力を変換する必要がある場合は、System.TranslateInputを使用して変換できます。

いいえ
daIntercept System.Intentへのコールについて、デジタル・アシスタントがユーザー入力をインターセプトして他のスキルに再ルーティングできるかどうかを決定します。指定できる値は次のとおりです:
  • always (デフォルト)--現在のフローが終了していない場合でも、デジタル・アシスタントが入力をインターセプトできるようにします。これにより、デジタル・アシスタントは別のフローへの切替えを提案する割込みを処理できます。
  • never--デジタル・アシスタントがユーザー入力をインターセプトできないようにします。この値を設定するユースケースの詳細は、スキルのSystem.Intentコンポーネントへのコールの強制を参照してください。
スキルがデジタル・アシスタントに属していない場合、このプロパティは無視されます。
いいえ
translate autoTranslateコンテキスト変数に対して設定された値をここでオーバーライドします。autoTranslateが設定されていないか、falseに設定されている場合、このプロパティをtrueに設定して、このコンポーネントに対してのみ自動翻訳を有効にすることができます。autotranslateコンテキスト変数がtrueに設定されている場合、このプロパティをfalseに設定して、このコンポーネントを自動翻訳から除外できます。

重要:このプロパティは、sourceVariableプロパティと組み合せて使用できませんsourceVariableで表される入力を変換する必要がある場合は、System.TranslateInputを使用して変換できます。

いいえ

System.IntentコンポーネントのQ&Aプロパティ

これらは、Q&Aルーティングのオプションのプロパティです。
プロパティ 説明 データ型 デフォルトの値
qnaEnable Q&Aモジュールへのルーティングを有効にします。これをtrue (ルーティング有効)に設定した場合、Q&A遷移アクション(noneまたはexit)も定義する必要があります。Q&A遷移を参照してください。 boolean false
qnaBotName Q&Aモジュールがあるスキルの名前(表示名ではありません)。このプロパティを定義しない場合、System.QnAコンポーネントのbotNameプロパティに対して定義されている値がかわりに使用されます。 string N/A
qnaBotVersion Q&Aモジュールがあるスキルのバージョン。デフォルトでは、1.0です。この値はオプションです int N/A
qnaTimeout Q&Aサーバーがユーザー入力に応答するまでにスキルが待機する時間(ミリ秒)。 long 5000
qnaUseResult このオプションをtrue (デフォルト)に設定すると、スキルはユーザー入力を使用してQ&Aサーバーに問い合せることができます。スキルはこの問合せの結果(一致)を使用してルーティングを設定します。このプロパティをtrueに設定すると、一致がある場合にのみ「回答の表示」リンクがスキルに表示されます。falseに設定すると、「回答の表示」リンクは常に表示されます。 boolean true
qnaSkipIfIntentFound trueに設定すると、インテントの一致があった場合にスキルはQ&Aをバイパスします。デフォルト値(false)では、スキルはユーザーの発話を使用してQnAサーバーに問い合せることができ、QnAをオプションとして表示することもできます。 boolean false
optionsPrompt

Q&Aは、System.Intentコンポーネントに対して有効化されていて一致が見つかった場合に表示されます。

ヒント: 外国語(英語以外)の場合は、リソース・バンドルを参照します。ダイアログ・フローのリソース・バンドルの参照を参照してください

string Do you want to
optionsQnaLabel

一致を表示するためにユーザーをSystem.QnAコンポーネントに移動させる、オプション(optionsPrompt)でのアクションのラベル。

ヒント: 外国語(英語以外)の場合は、リソース・バンドルを参照します。ダイアログ・フローのリソース・バンドルの参照を参照してください

string Questions
qnaMatchFields ユーザー・メッセージとの照合に使用されるQ&Aのフィールドを設定します。有効な値は:
  • all
  • categories
  • questions
  • answers
  • categories+questions
これらの値は、カンマ区切りリストとして入力できます
string all
qnaMinimumMatch

一致とみなされるためにQ&Aペアに含まれている必要があるトークンの最小および最大パーセンテージを設定します。

最適な一致を返すために、インテント・エンジンによって質問として解決される発話をトークン化します。これらのトークンは、語幹および単語の様々な組合せから形成されます。その結果、発話から大量のトークンが生成される可能性があります。そのため、Q&Aペアにすべてのキーワードおよびバリアントが含まれている可能性はほとんどありません。したがって、この設定をデフォルトの50%,25%から変更しないことをお薦めします。

生成されたトークンの50% (デフォルトの最大レベル)を設定すると、Q&Aペアは、発話のすべてのキーワードが含まれる場合に関連する一致とみなされます。この最大レベルを満たすことができない場合は、最小レベルの25%になります。これらの設定を変更した場合、特に最大を50%を超えるように増やすことによって、Q&Aペアはすべてのキーワードが含まれている必要があるだけでなく、他のトークンと一致する必要もあります。

ただし、関連する一致が欠落する可能性を低くし、関連しない一致がプロセスで返されることを許容できる場合は、さらに低いしきい値を追加できます。例: 50%,25%,10%

関連しない一致を最小限にする場合は、レベルを高くすることができます(60%,50%など)。そうすることで、すべてのキーワードが含まれるQ&Aペアが除外される場合があることに注意してください。

重要: デフォルトのレベルを使用しない場合は、minimumMatchプロパティとQ&Aバッチ・テスターの「一致しきい値」オプションを同じ値に設定する必要があります。Q&Aモジュールのバッチ・テストを参照してください。

string 50%,25%
qnaUseSourceVariable trueに設定した場合、Q&A一致は、ユーザー入力ではなくSystem.QnasourceVariableプロパティに格納されている値に基づきます。 boolean false

System.MatchEntity

ノート

このトピックでは、このコンポーネントをYAMLモードで使用する方法について説明します。ビジュアル・フロー・デザイナでの使用方法の詳細は、「エンティティの照合」を参照してください。

System.MatchEntityは、インテント・エンジンをコールして、sourceVariableプロパティに保持されているテキストからエンティティ情報を抽出します。変数のエンティティ・タイプに一致が存在する場合、このエンティティ値が変数に設定されます。

プロパティ 説明 必須?
sourceVariable 入力値を保持する変数。 はい
variable コンテキスト変数の名前。この変数の値は、FreeMarker式を使用して特定のエンティティを抽出するために、後続のSystem.SetVariableコンポーネントで使用できます。たとえば、EMAILエンティティ値を抽出するには: ${userInputEntities.value.entityMatches['EMAIL'][0]} はい

このコンポーネントには、matchおよびnomatchという2つの事前定義済の遷移もあります。

遷移 説明
match エンティティが一致した場合に、ある状態に移行することをダイアログ・エンジンに指定します。
nomatch エンティティが一致しない場合に、ある状態に移行するようにダイアログ・エンジンを定義します。
次のスニペットでは、System.MatchEntityコンポーネントは、mailInput変数に格納されているユーザー指定の値を、mailEntity変数に対して定義されているEMAILエンティティ・タイプと照合します。ユーザー入力が電子メール・アドレスであることでエンティティ・タイプを満たした場合、System.MatchEntityコンポーネントはこの値を、ボット・ユーザーにエコーバックされるmailEntity変数に書き込みます("You entered ${mailEntity.value.email}")。値が一致しない場合、ダイアログ・エンジンはnomatch状態に移行します。
ノート

System.MatchEntityコンポーネントは、単一の値を解決します。
context:
  variables:
    iResult: "nlpresult"
    mailInput: "string"
    mailEntity: "EMAIL"
states:
  intent:
    component: "System.Intent"
    properties:
      variable: "iResult"
    transitions:
      actions:
        displayMailAdresses: "askMail"
        unresolvedIntent: "dunno"
  askMail:
    component: "System.Text"
    properties:
      prompt: "Please provide a valid email address"
      variable: "mailInput"
    transitions:
      next: "matchEntity"
  matchEntity:
    component: "System.MatchEntity"
    properties:
      sourceVariable: "mailInput"
      variable: "mailEntity"
    transitions:
      actions:
        match: "print"
        nomatch: "nomatch"
  print:
    component: "System.Output"
    properties:
      text: "You entered ${mailEntity.value.email}"
    transitions:
      return: "done"
  nomatch:
    component: "System.Output"
    properties:
      text: "All I wanted was a valid email address."
    transitions:
      return: "done"
  dunno:
    component: "System.Output"
    properties:
      text: "I don't know what you want"
    transitions:
      return: "done"

System.DetectLanguage

ノート

このトピックでは、このコンポーネントをYAMLモードで使用する方法について説明します。ビジュアル・フロー・デザイナでの使用方法の詳細は、言語の検出を参照してください。
このコンポーネントは、翻訳サービスを使用して、ユーザー入力から、またはsourceプロパティによって参照されるコンテキスト変数に保存されたコンテンツから、ユーザーの言語を検出します:
context:
  variables:
    autoTranslate: "boolean"
    translated: "string"
    someTranslatedText: "string"
states:
  setAutoTranslate:
    component: "System.SetVariable"
    properties:
      variable: "autoTranslate"
      value: true
    transitions:
      next: "detect"
   detect:
    component: "System.DetectLanguage"
    properties:
      source: "someTranslatedText"  
      useExistingProfileLanguageTag: true
    transitions:
      ...
System.DetectLanguageコンポーネントは、ロケール文字列を使用してprofile.languageTagという名前の変数を設定します。この変数を値式(${profile.languageTag})で使用すると、現在の言語で変数を設定できます。
ノート

profile.languageTagは、メッセンジャ・クライアントによって設定されるprofile.locale変数よりも優先されます。

useExistingProfileLanguageTagプロパティは、スキルが翻訳サービスが含まれるデジタル・アシスタントの一部である場合に使用されます。これにより、スキルはデジタル・アシスタントによって検出された言語をすぐに使用できます。そうでない場合は、言語が(再)検出される前に、スキルではメッセージやプロンプトが英語で提示される可能性があります。スキルが翻訳対応のデジタル・アシスタントにない場合、このプロパティは無視されます。

profile.localeおよびprofile.languageTag変数

特定のリソース・バンドルの使用およびUIラベルとコンポーネント・メッセージ自体の両方の翻訳は、すべてprofile.localeおよびprofile.languageTag変数に格納されているユーザーの言語によって決まります。

これらの変数の設定方法は、スキルの言語モードによって異なります:

  • ネイティブ言語サポートを使用するスキルの場合、変数にすでに値が割り当てられていないかぎり、言語が自動的に検出され、これらの変数に適切な値が移入されます。
  • 翻訳サービスを使用するスキルの場合:
    • profile.locale変数の値は、ユーザーのメッセンジャ・クライアントから導出されます。
      ノート

      profile.localeでは、ISO言語国またはISO language_country形式の値がサポートされています。
    • profile.languageTag変数の値は、System.DetectLanguageコンポーネントによって提供されます。
ノート

profile.locale変数に設定された値によって、profile.languageTag変数に値が設定されている場合でも、DATE、CURRENCYおよびNUMBERエンティティのロケール固有の形式を決定できます。
これらの変数の両方の値を設定する(また、これらの変数で相互の値を設定できるようにする)には、System.SetVariableを使用します。例:
  • setLocaleToGerman:
      component: "System.SetVariable"
      properties:
        variable: "profile.locale"
        value: "de"
  • setLanguageTagToGerman:
      component: "System.SetVariable"
      properties:
        variable: "profile.languageTag"
        value: "de"
  • setLanguageToVariableValue:
      component: "System.SetVariable"
      properties:
        variable: "profile.languageTag"
        value: "${language_preference_var.value}"
  • setLocaleToLanguageTag:
      component: "System.SetVariable"
      properties:
        variable: "profile.locale"
        value: "${profile.languageTag}"
  • setTagToLocale:
      component: "System.SetVariable"
      properties:
        variable: "profile.languageTag"
        value: "${profile.locale}"

ヒント:

これらの変数またはカスタム・ユーザー・データベース表に格納されているロケール値を、サポートされている言語のリストと比較することにより、言語の選択リストを実装できます。検出された言語がこのリストにない場合は、ユーザーに言語の選択を求め、その値でprofile.languageTagを設定できます。

System.TranslateInput

ノート

このトピックでは、このコンポーネントをYAMLモードで使用する方法について説明します。ビジュアル・フロー・デザイナでの使用方法の詳細は、「入力の翻訳」を参照してください。

このコンポーネントは、指定されたテキストをスキルの翻訳サービスに送信し、英語翻訳を格納します。これは、翻訳サービスで構成されているスキルに依存します。翻訳サービスは、ユーザーの入力から言語を認識し、英語に翻訳します。このコンポーネントは、ネイティブ・サポート言語モードを使用するスキルでは機能しません。

このコンポーネントは、生の入力テキストを翻訳する前に処理する必要がある場合に使用します。たとえば、翻訳サービスに送信する前に、ユーザー入力から個人データを削除できます。

プロパティ 説明 必須?
source 英語に翻訳するテキスト値を指定します。 いいえ
variable テキストの英語翻訳を保持する変数。 はい

System.TranslateInputコンポーネントは、ユーザーの言語をすでに検出している翻訳サービスを利用するため、スキルへの翻訳サービスの追加で説明されている、言語を検出または設定する状態に従う必要はありません。その結果、直接ユーザー入力から、またはsource変数から、英語翻訳を格納できます。

直接入力翻訳

System.TranslateInputコンポーネントは、直接ユーザー入力の英語翻訳をvariableプロパティに格納します。次のコード・スニペットは、translatedString変数の「Hallo、 ich bin ein Mensch」のようなユーザー入力が、どのように「Hello、 I am a human」として格納されるかを示しています。
context:
  variables:
     translatedString: “string”
     sourceString: “string”
...

states:
...

  translateInput:
    component: "System.TranslateInput"
      properties:
        variable: "translatedString"

source変数

次のスニペットでは、sourceString変数がユーザー入力を保持します。(この入力は、たとえば、共通レスポンス・コンポーネントによって収集されている場合があります。)System.TranslateInputが処理を完了すると、英語翻訳はtranslatedString変数に格納されます。
context:
  variables:
    autoTranslate: "boolean" 
    translatedString: "string"
    sourceString: "string"    

   ...

states:
   ...

  translateInputString:
    component: "System.TranslateInput"
    properties:
      source: "sourceString"
      variable: "translatedString"
    transitions: 
      ...
ノート

System.TranslateInputコンポーネントは、カスタム・コンポーネントによってコンテキスト変数に格納されるデータ・オブジェクトまたは配列を翻訳できません。このコンテンツは、自動翻訳を使用するコンポーネントによって変数が参照される場合にのみ翻訳可能です。たとえば、System.TranslateInputコンポーネントは、{”product”: “scissors”, “color”: “silver”}のようなデータ・オブジェクトをscissorsおよびsilverとして翻訳できません。

sourceVariableプロパティ

System.IntentsourceVariableプロパティはコンポーネントによって処理された値を保持するため、System.TranslateInputコンポーネントとともに使用して翻訳済テキストを挿入できます。次のスニペットは、NLPエンジンによって処理できるようにするためのtranslated変数値の割当てを示しています。

  translate:
    component: "System.TranslateInput"
    properties:
      variable: "translated"
    transitions: 
      next: "intent"
  intent:
    component: "System.Intent"
    properties:
      variable: "iResult"
      sourceVariable: "translated"
...

System.TranslateOutput

ノート

このトピックでは、このコンポーネントをYAMLモードで使用する方法について説明します。ビジュアル・フロー・デザイナでの使用方法の詳細は、出力の翻訳を参照してください。
System.TranslateOutputコンポーネントを使用すると、テキストをユーザーの言語に翻訳できます。このコンポーネントは、sourceプロパティに対して定義された値を取得します。テキストをSystem.DetectLanguageコンポーネントまたはprofile.locale変数によって検出された言語に翻訳し、variableプロパティに格納します。
プロパティ 説明 必須?
source 翻訳対象テキスト、または翻訳が必要な値を持つ変数を参照するFreeMarker式。 はい
variable 翻訳済テキストを保持します。 はい
この例では、本来は自動翻訳されたテキストを表示するSystem.Outputコンポーネントが、翻訳済テキストを出力しますが、ここではsourceプロパティに対して定義されたテキストの翻訳を出力しています。
  unresolvedTranslate:
    component: "System.TranslateOutput"
    properties:
      source: "Sorry I don't understand"
      variable: "someTranslatedText"
    transitions:
      next: "unresolved"
  unresolved:
    component: "System.Output"
    properties:
      text: "${someTranslatedText}"
    transitions:
      return: "unresolved"

System.Qna

これらは、System.Qnaコンポーネントのオプションのプロパティです。
名前 説明 必須? デフォルトの値
botName Q&Aモジュールがあるスキルの名前(表示名ではありません)。 いいえ N/A
botVersion botNameプロパティで識別されるスキルのバージョン。botNameプロパティは、botVersionプロパティを定義しなくても定義できます。ただし、botVersionbotNameも定義しないと定義できません: botVersionは、botNameプロパティも定義しない場合は無視されます。結果的に、そのデフォルト・バージョン(1.0)は、botNameプロパティも定義した場合にのみ適用されます。スキルの別のバージョンにルーティングするには、botNameプロパティを定義し、ターゲット・バージョンを使用してbotVersionプロパティを設定する必要があります。 いいえ 1.0
highlighter 各回答内の最も関連性の高いテキストを強調表示するために使用される方法。有効な値:
  • system - システムで回答内の最も関連性の高いテキストの判別を試行し、それらの単語を強調表示します。
  • firstNChars - 回答内の最初の文字が強調表示されます。文字数は、highlightLengthプロパティの値に、最後の強調表示される単語の残りの文字を加えて決定されます。
いいえ system
highlightLength 各回答内の強調表示される文字数。 いいえ 100
sourceVariable 言語処理フレームワークは、ユーザー入力ではなく、sourceVariableによって格納されている値を使用して、Q&A一致を解決します。System.IntentコンポーネントのqnaUseSourceVariable: trueを設定することで、この一致をアクティブ化します。例:
metadata:
  platformVersion: "1.0"
main: true
name: "FinancialBotMainFlow"
context:
  variables:
    iResult: "nlpresult"
    iResult2: "nlpresult"
    transaction: "string"
    faqstring1: "string"
    faqstring2: "string"
states:

  ...  
  
  setVariable:
    component: "System.SetVariable"
    properties:
      variable: "faqstring1"
      value: "Tell me about family floater plan"

...

  intent2:
    component: "System.Intent"
    properties:
      variable: "iResult"
      sourceVariable: "faqstring1"
      qnaEnable: true
      qnaUseSourceVariable: true
    transitions:
      actions:
        Send Money: "sendMoney"
        Balances: "balances"
        unresolvedIntent: "unresolved"
        qna: "qna"

  sendMoney:
    component: "System.Output"
    properties:
      text: "send money"
    transitions:
      return: "sendMoney"

  balances:
    component: "System.Output"
    properties:
      text: "Balances"
    transitions:
      return: "balances"

  unresolved:
    component: "System.Output"
    properties:
      text: "Sorry I don't understand that question!"
    transitions:
      return: "unresolved"
  qna:
    component: "System.QnA"
    properties:
	    sourceVariable: "faqString1"
    transitions:
      actions:
        none: "unresolved"
      next: "intent2"
いいえ N/A
transitionOnTextReceived
ユーザーがフリー・テキストを入力したときに、System.QnAコンポーネントで定義された状態から遷移します。
  • true (デフォルト)—スキルがフリー・テキストを受信したときにSystem.Qna状態から遷移します。Q&Aプロパティを使用して構成されるSystem.Intent状態への遷移を構成した場合、スキルはこのテキストの解決を試行できます。

  • false—ダイアログ・エンジンはQ&A状態のままであり、この状態ではフリー・テキストはQ&A問合せとして処理されます。コンポーネントにより終了オプションも表示されます。デフォルトでは、このボタンは「質問の終了」として表示されますが、exitLabelプロパティを使用して変更できます。

    これにより終了オプションが追加されるため、exit遷移を構成する必要があります。

いいえ true
keepTurn

keepTurnプロパティの動作は、System.QnAコンポーネントで定義された状態からユーザーがどのように遷移するかによって異なります。ブール(true、false)を使用して、またはキーと値のペアのマップを使用して、keepTurnによってユーザーがフローでどのようにルーティングされるかを構成できます。

いいえ false (ブールとして構成された場合)
matchListLimit 回答のページ区切りを制限します いいえ 5
categoryListLimit カテゴリのページ区切りを制限します いいえ 5
resultLayout 一致した回答のレイアウト。有効な値: horizontalおよびvertical いいえ 水平
minimumMatch

一致とみなされるためにQ&Aペアに含まれている必要があるトークンの最小および最大パーセンテージを設定します。

最適な一致を返すために、インテント・エンジンによって質問として解決される発話をトークン化します。これらのトークンは、語幹および単語の様々な組合せから形成されます。ユーザー・メッセージの長さによっては、プロセスで大量のトークンが生成される可能性があります。それらのすべてと一致するQ&Aペアが存在する可能性は低いため、50%, 25%の一致レベルを設定することをお薦めします。

この設定では、Q&Aペアは、トークンの50%と一致する場合に関連があるとみなされます。この最大レベルを満たすことができない場合は、最小レベルの25%になります。

関連する一致が欠落する可能性を低くし、関連しない一致がプロセスで返されることを許容できる場合は、フォールバックとして、さらに低いしきい値を追加できます。例: 50%,25%,10%.

関連しない一致を最小限にする場合は、パーセンテージを増やすことができますが(たとえば、minimumMatch: "80%")、そのようにすると、3語から7語で構成されるメッセージについて予期しない一致が発生する可能性があります。ただし、短いユーザー問合せと長いユーザー問合せの両方について、返されるQ&Aの精度を調整できます。

重要: テスト時にデフォルトのレベルを使用しない場合は、QnaMinimumMatchプロパティとQ&Aバッチ・テスターの「一致しきい値」オプションを、minimumMatchプロパティに対して設定した値と同じ値に設定する必要があります。Q&Aモジュールのバッチ・テストを参照してください

いいえ 50%,25%
matchfields ユーザー・メッセージとの照合に使用されるQ&Aのフィールドを設定します。有効な値は:
  • all
  • categories
  • questions
  • answers
  • categories+questions
これらの値は、カンマ区切りリストとして入力できます。
いいえ all
enableCategoryDrilldown カテゴリ別のドリルダウンを表示するには、trueに設定します。 いいえ true
exitLabel Q&Aモジュールを終了するためのラベル・テキスト。 いいえ Exit Questions
viewAnswerLabel 回答詳細の表示アクションのラベル・テキスト。 いいえ View
moreAnswersLabel その他の回答の表示アクションのラベル・テキスト。 いいえ More Answers
answersLabel 特定のカテゴリの回答の表示アクションのラベル・テキスト。 いいえ Answers
categoriesLabel 発話と一致するカテゴリのラベル・テキスト。 いいえ Categories
subCategoriesLabel サブカテゴリの表示アクションのラベル・テキスト。 いいえ Sub-Categories
moreCategoriesLabel その他のカテゴリの表示アクションのラベル・テキスト。 いいえ More Categories

minimumMatchを使用した返されるQ&Aの精度の向上

デフォルト設定の50%,25%では正確なQ&Aペアが返されますが、パーセンテージを上げて、スキルによって返される結果の数を減らし正確さを高めることが必要になる場合があります。たとえば、高いパーセンテージのトークンと一致する場合、またはユーザーをライブ・エージェントにルーティングする場合、スキルによってQ&Aペアのみを返すことができます。

このようなシナリオで、minimumMatchプロパティのパーセンテージを80%に上げると、特に長いメッセージの場合に、より正確なQ&A一致が返されます。同じことが短いメッセージには該当しない可能性があります。短いメッセージは通常は3語から7語で構成され、それらの約50%は無視される単語(ストップ・ワード)です。たとえば、ユーザーの質問What is account security?の場合、accountおよびsecurityという2つのトークンが検出されます。minimumMatchが80%に設定されている場合、これらのトークンのうちの1つのみが返されます(2の80%は1.6であり、これは1に切り捨てられます)。理想的には、両方が返される必要があります。この場合、accountsについて全般的に説明するQ&Aペアがスキルによって返されることがあり、これではレスポンスが広すぎます。スキルによってaccount securityに関するQ&Aのみが返されるか、または何も返されないことが必要です。

短いメッセージに対して正確なQ&Aが返されるようにminimumMatchプロパティを構成するには、照合が必要なトークンの数、次より小さい演算子(<)、およびメッセージに多数のトークンが含まれる場合の必要な一致レベルを入力します。例:
  qna:
    component: "System.QnA"
    properties:
      minimumMatch: "3<80%"
    transitions:
      actions:
        none: "unresolved"
      next: "intent"
このスニペットでは、メッセージに1個から3個のトークンが含まれている場合、スキルによってユーザーに返されるにはQ&Aペアはすべてのトークンと一致している必要があります。このシナリオに関しては、この設定ではaccount securityと一致したQ&Aペアのみが返されます。メッセージに4個以上のトークンが含まれる場合、Q&Aペアはそれらの80%と一致することのみが必要です。
追加詳細を含む長いメッセージ用に最小一致を調整するには、必要な一致トークンの数を段階的に設定します(同時にパーセンテージを下げます)。たとえば、次の設定は、9個を超えるトークンが含まれる可能性のあるメッセージを処理する方法を示しています:
  qna:
    component: "System.QnA"
    properties:
      minimumMatch: "3<80% 8<70% 12<65%"  
    transitions:
      actions:
        none: "unresolved"
      next: "intent"
このスニペットのminimumMatch設定によって、次のトークンが一致する場合にのみ、スキルによってQ&Aが返されます。
メッセージ内のトークンの数 一致する必要があるトークンの数
1 1
2 2
3 3
4 (80%一致) 3 (3.2、3に切捨て)
5 (80%一致) 4
6 (80%一致) 4 (4.8、4に切捨て
7 (80%一致) 5 (5.6、5に切捨て)
8 (80%一致) 6 (6.4) 6に切捨て
9 (70%一致) 6 (6.3、5に切捨て
10 (70%一致) 7
11 (70%一致) 7 (7.7、7に切捨て)
12 (70%一致) 8 (8.4、8に切捨て)
13 (65%一致) 8 (8.45、8に切捨て)

keepTurnのキー値マップと遷移アクション

keepTurnプロパティを、遷移を説明するキーを持つマップとして定義できます。
キー 説明 デフォルトの値
next falseに設定すると、ダイアログが次の状態に遷移するときに、スキルは制御を放棄します。ダイアログ・エンジンが次の状態に移行するまで、スキルはユーザー入力を処理しません。 false
none trueに設定すると、ユーザー入力に対して返される質問がないためnone遷移アクションがトリガーされたときに、スキルは制御を保持します。 true
exit trueに設定すると、exit遷移アクションがトリガーされたときに、スキルは制御を保持します。 true
textReceived trueに設定すると、transitionOnTextReceivedtrue (ダイアログ・エンジンに状態から遷移するよう伝える)に設定されている場合、スキルは会話の制御を保持します。 true

Q&A遷移

名前 説明 必須?
none ユーザー入力に対して一致が見つかりません(これは通常、そのような一致が見つからなかったことをユーザーに通知する状態にフローがルーティングされることを意味します)。 はい
exit ユーザーはQ&Aモジュールを終了します。デフォルトでは、このアクションについてkeepTurntrueに設定されます。 いいえ