機械翻訳について

Language

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

System.Intent

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

ノート:

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

このプロパティのデフォルト値は、スキル・リソース・バンドルに格納されます。 これを変更するには、リソース・バンドル・アイコンをクリックし、「構成」タブを選択して、「インテント - 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遷移」を参照してください。 ブール false
qnaBotName Q&Aモジュールでスキルの(表示名ではない)名前。 このプロパティを定義しない場合、System.QnAコンポーネントのbotNameプロパティに対して定義されている値がかわりに使用されます。 文字列 該当なし
qnaBotVersion Q&Aモジュールとのスキルのバージョン。 デフォルトでは、これは1.0です。 この値はオプションです int 該当なし
qnaTimeout スキルがQ&Aサーバーがユーザー入力に応答するまで待機する時間(ミリ秒)。 long 5000
qnaUseResult このオプションをtrue (デフォルト)に設定すると、スキルによってユーザー入力でQ&Aサーバーに問い合せることができます。 スキルはこの問合せの結果(一致)を使用してルーティングを設定します。 このプロパティをtrueに設定すると、一致する場合にのみスキルに「回答の表示」リンクが表示されます。 falseに設定すると、回答の表示リンクは常に表示されます。 ブール true
qnaSkipIfIntentFound trueに設定した場合、インテントが一致すると、スキルはQ&Aをバイパスします。 デフォルト値(false)では、スキルでユーザーの発話を持つQnAサーバーを問い合せることができ、QnAをオプションとして提示できます。 ブール false
optionsPrompt

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

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

文字列 Do you want to
optionsQnaLabel

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

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

文字列 Questions
qnaMatchFields ユーザー・メッセージの照合に使用するQ&Aフィールドを設定します。 有効な値は次のとおりです。
  • all
  • categories
  • questions
  • answers
  • categories+questions
これらの値は、カンマ区切りリストとして入力できます。
文字列 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モジュールのバッチ・テスト」を参照してください。

文字列 50%,25%
qnaUseSourceVariable trueに設定した場合、q&a照合は、ユーザー入力ではなく、System.QnasourceVariableプロパティに保存された値に基づきます。 ブール false

System.MatchEntity

ノート:

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

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

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

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

遷移 説明
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モジュールでスキルの(表示名ではない)名前。 いいえ 該当なし
botVersion botNameプロパティで識別されるスキルのバージョン。 botNameプロパティは、botVersionプロパティを定義せずに定義することもできます。 ただし、botVersionは、botNameを定義せずに定義することはできません: 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"
いいえ 該当なし
transitionOnTextReceived
ユーザーがフリー・テキストを入力したときに、System.QnAコンポーネントで定義された状態から遷移します。
  • true (デフォルト)-スキルが任意の空きテキストを受信すると、System.Qna状態から移行します。 スキルは、「Q&Aプロパティ」で構成されているSystem.Intent状態への遷移を構成する際に、このテキストの解決を試みます。

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

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

いいえ true
keepTurn

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

いいえ 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 Batch tester マッチのしきい値オプションを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% (ストップ単語)です。 たとえば、ユーザーからの質問である「アカウント・セキュリティとは何ですか。」では、アカウントとセキュリティの2つのトークンが検出されます。 minimumMatchが80%に設定されている場合、これらのトークンのうち1つのみが戻されます(2の80%は1.6で、1に丸められます)。理想的には、両方のトークンを使用する必要があります。 この場合、スキルによって、通常はアカウントを表すQ&Aのペアが返され、これに対するレスポンスが広すぎます。 スキルによってアカウント・セキュリティについてQ&Aのみが戻されるか、まったく戻されないことが必要です。

minimumMatchプロパティを構成して、ショート・メッセージに対して正確なQ&Aを返すには、メッセージに多数のトークンが含まれる場合に、一致する必要があるトークンの数、より小さい演算子(<)および必要な一致レベルを入力します。 たとえば:
  qna:
    component: "System.QnA"
    properties:
      minimumMatch: "3<80%"
    transitions:
      actions:
        none: "unresolved"
      next: "intent"
このスニペットでは、メッセージに1から3つのトークンが含まれている場合、そのスキルのQ&Aのペアはそれらすべてに一致しないと、ユーザーに戻されません。 シナリオの観点からは、この設定ではアカウント・セキュリティと一致する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モジュールを終了します。 デフォルトでは、keepTurnは、このアクションのtrueに設定されています。 いいえ