Language
これらは、YAMLベースのダイアログ・フロー・エディタの「言語」カテゴリで使用可能なコンポーネントです。
System.Intent
ノート:
このコンポーネントは、ビジュアル・フロー・デザイナで開発されたスキルには使用できません。 かわりに、アクティブ・フローがない場合、インテントは自動的に解決されます。 「インテントの検出と解決」を参照してください。プロパティ | 説明 | 必須かどうか |
---|---|---|
variable |
言語処理フレームワークがユーザー入力から解決する値を保持します。 たとえば、サンプルのコース・ボットはvariable=iResult として定義します(iResult: "nlpResult" はcontext 変数の1つとして定義)。 変数iResult に名前を付ける必要はありません。 この名前は、サンプル・コードおよびサンプル・スキルで使用される慣例です。 nlpResult に使用する変数名はすべて、ダイアログ・フロー全体で一貫して使用してください。
|
はい |
optionsPrompt |
「ウィン・マージン」オプションの値を設定した場合のインテントのリストのタイトル。 デフォルトでは、この文字列値はDo you want to です。
このプロパティのデフォルト値は、スキル・リソース・バンドルに格納されます。 これを変更するには、 |
いいえ |
botName |
インテントを解決するスキルの名前(表示名ではない)。 このプロパティは、現在のスキルではなく別のスキルのモデルを使用してユーザー入力を解決する場合に使用します。 このアプローチは、プライマリ・ユースケースに必要なドメインよりも狭く定義されたドメインを持つモデルに基づいてインテントを解決する場合に役立ちます。 | いいえ |
botVersion |
スキルのバージョンを指定します。 デフォルト値は1.0 です(バージョン番号を指定しない場合)。
|
いいえ |
sourceVariable |
言語処理フレームワークは、sourceVariable を入力として使用してインテントのを解決します。
重要: このプロパティは、 |
いいえ |
daIntercept |
System.Intent へのコールについて、デジタル・アシスタントがユーザー入力をインターセプトして他のスキルに再ルーティングできるかどうかを決定します。 使用可能な値は次のとおりです:
|
いいえ |
translate |
autoTranslate コンテキスト変数の値セットをここでオーバーライドします。 autoTranslate が設定されていない場合、またはfalse に設定されている場合、このプロパティをtrue に設定すると、このコンポーネントでのみ自動変換が有効になります。 autotranslate コンテキスト変数がtrue に設定されている場合、このプロパティをfalse に設定して、このコンポーネントを自動変換から除外できます。
重要: このプロパティは、 |
いいえ |
System.Intentコンポーネントの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は、 ヒント: 外国語(英語以外)の場合は、リソース・バンドルを参照してください。 「ダイアログ・フローのリソース・バンドルの参照」を参照してください |
文字列 | Do you want to |
optionsQnaLabel |
一致を表示するためにユーザーを ヒント: 外国語(英語以外)の場合は、リソース・バンドルを参照してください。 「ダイアログ・フローのリソース・バンドルの参照」を参照してください |
文字列 | Questions |
qnaMatchFields |
ユーザー・メッセージの照合に使用するQ&Aフィールドを設定します。 有効な値は次のとおりです。
|
文字列 | all |
qnaMinimumMatch |
一致とみなされるためにQ&Aペアに含まれている必要があるトークンの最小および最大パーセンテージを設定します。 最適な一致を返すために、インテント・エンジンが質問として解決する発話をトークン化します。 これらのトークンは、語幹および語の様々な組合せから構成されます。 その結果、大量のトークンが発話から生成される可能性があります。 そのため、Q&Aペアにキーワードとバリアントがすべて含まれている可能性は低くなります。 したがって、この設定をデフォルトの 生成されたトークンの50% (デフォルトの最大レベル)は、発話からのキーワードがすべてある場合に、Q&Aペアが関連する一致とみなされることを意味します。 この最大レベルを満たすことができない場合、最小レベルの25%で十分です。 これらの設定を、特に最大が50%を超えるように増やすことによって変更した場合、Q&Aペアはキーワードがすべて含まれているだけでなく、他のトークンとも一致する必要があります。 一方で、関連する一致を見逃す可能性を低くし、プロセスで無関係の一致が返されることを許容できる場合は、さらに低いしきい値を追加できます。 たとえば、 無関係な一致を最小にする場合は、レベルを高くすることができます(たとえば、 重要: デフォルトのレベルを使用しない場合は、 |
文字列 | 50%,25% |
qnaUseSourceVariable |
true に設定した場合、q&a照合は、ユーザー入力ではなく、System.QnaのsourceVariable プロパティに保存された値に基づきます。
|
ブール | false |
System.MatchEntity
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
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エンティティの「ロケール固有の形式」を決定できます。
-
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
このコンポーネントは、指定されたテキストをスキル翻訳サービスに送信し、英語翻訳を格納します。 これは、ユーザー入力から言語を認識して英語に変換する翻訳サービスで構成されているスキルに依存します。 このコンポーネントは、ネイティブ・サポート言語モードを使用するスキルでは動作しません。
このコンポーネントは、変換する前に生入力テキストを処理する必要があるときに使用します。 たとえば、ある個人データをユーザー入力から削除してから翻訳サービスに送信できます。
プロパティ | 説明 | 必須かどうか |
---|---|---|
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.Intent
のsourceVariable
プロパティは、コンポーネントによって処理された値を保持するため、これを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
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 |
|
highlightLength |
各回答で強調表示される文字数。 | いいえ | 100 | |
sourceVariable |
言語処理フレームワークは、ユーザー入力ではなくsourceVariable に格納された値を使用して、q&a照合を解決します。 この照合をアクティブにするには、System.IntentコンポーネントのqnaUseSourceVariable: true を設定します。 たとえば:
|
いいえ | 該当なし | |
transitionOnTextReceived |
ユーザーがフリー・テキストを入力したときに、
System.QnA コンポーネントで定義された状態から遷移します。
|
いいえ | true |
|
keepTurn |
|
いいえ | false (ブールとして構成された場合)
|
|
matchListLimit |
回答のページ区切りを制限します | いいえ | 5 | |
categoryListLimit |
カテゴリのページ区切りを制限します | いいえ | 5 | |
resultLayout |
一致した回答のレイアウト。 有効な値は、horizontal およびvertical です。
|
いいえ | 水平 | |
minimumMatch |
一致とみなされるためにQ&Aペアに含まれている必要があるトークンの最小および最大パーセンテージを設定します。 最適な一致を返すために、インテント・エンジンが質問として解決する発話をトークン化します。 これらのトークンは、語幹および語の様々な組合せから構成されます。 ユーザー・メッセージの長さに応じて、プロセスでは大量のトークンを生成できます。 Q&Aのすべてのペアが一致する可能性は低いため、 この設定では、Q&Aペアがトークンの50%と一致する場合、関連するものとみなされます。 この最大レベルを満たすことができない場合、最小レベルの25%で十分です。 関連する照合が欠落する可能性を低くし、プロセスで返される関連性のない一致を許容するには、偶数の下限しきい値をフォールバックとして追加します。 たとえば、 無関係な一致を最小限に抑える場合は、割合を増加する( 重要: テスト時にデフォルト・レベルを使用しない場合は、 |
いいえ | 50%,25% | |
matchfields |
ユーザー・メッセージの照合に使用するQ&Aフィールドを設定します。 有効な値は次のとおりです。
|
いいえ | 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%のみと一致する必要があります。 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 に設定されている場合、transitionOnTextReceived がtrue に設定されているとき、スキルによって会話の制御が保持されます。これは、ダイアログ・エンジンに状態からの移行を指示するものです。
|
true |