言語
これらは、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遷移を参照してください。
|
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は、 ヒント: 外国語(英語以外)の場合は、リソース・バンドルを参照します。ダイアログ・フローのリソース・バンドルの参照を参照してください |
string | Do you want to |
optionsQnaLabel |
一致を表示するためにユーザーを ヒント: 外国語(英語以外)の場合は、リソース・バンドルを参照します。ダイアログ・フローのリソース・バンドルの参照を参照してください |
string | Questions |
qnaMatchFields |
ユーザー・メッセージとの照合に使用されるQ&Aのフィールドを設定します。有効な値は:
|
string | all |
qnaMinimumMatch |
一致とみなされるためにQ&Aペアに含まれている必要があるトークンの最小および最大パーセンテージを設定します。 最適な一致を返すために、インテント・エンジンによって質問として解決される発話をトークン化します。これらのトークンは、語幹および単語の様々な組合せから形成されます。その結果、発話から大量のトークンが生成される可能性があります。そのため、Q&Aペアにすべてのキーワードおよびバリアントが含まれている可能性はほとんどありません。したがって、この設定をデフォルトの 生成されたトークンの50% (デフォルトの最大レベル)を設定すると、Q&Aペアは、発話のすべてのキーワードが含まれる場合に関連する一致とみなされます。この最大レベルを満たすことができない場合は、最小レベルの25%になります。これらの設定を変更した場合、特に最大を50%を超えるように増やすことによって、Q&Aペアはすべてのキーワードが含まれている必要があるだけでなく、他のトークンと一致する必要もあります。 ただし、関連する一致が欠落する可能性を低くし、関連しない一致がプロセスで返されることを許容できる場合は、さらに低いしきい値を追加できます。例: 関連しない一致を最小限にする場合は、レベルを高くすることができます( 重要: デフォルトのレベルを使用しない場合は、 |
string | 50%,25% |
qnaUseSourceVariable |
true に設定した場合、Q&A一致は、ユーザー入力ではなくSystem.QnaのsourceVariable プロパティに格納されている値に基づきます。
|
boolean | false |
System.MatchEntity
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
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モジュールがあるスキルの名前(表示名ではありません)。 | いいえ | N/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 を設定することで、この一致をアクティブ化します。例:
|
いいえ | N/A | |
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%は無視される単語(ストップ・ワード)です。たとえば、ユーザーの質問What is account security?の場合、accountおよびsecurityという2つのトークンが検出されます。minimumMatch
が80%に設定されている場合、これらのトークンのうちの1つのみが返されます(2の80%は1.6であり、これは1に切り捨てられます)。理想的には、両方が返される必要があります。この場合、accountsについて全般的に説明するQ&Aペアがスキルによって返されることがあり、これではレスポンスが広すぎます。スキルによってaccount securityに関する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%と一致することのみが必要です。 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 |