Q&A

ノート

リリース22.04以降、Q&A機能は段階的に廃止され、ナレッジ機能に置き換えられています。ナレッジ機能には、Q&A機能よりも次のような大きな利点があります。

  • 既存のFAQまたはナレッジ・ベース・ドキュメントから直接、スキルに回答インテントを生成できます。これらのドキュメントをスキルにインポートする前に、手動でフォーマットする必要はありません。また、各インテントに対して発話の例が生成されます。
  • スキルとの会話では、生成された回答インテントは、通常のインテントと同様にNLPで解決されます。これらのインテントを処理するために、Q&A固有のプロパティまたはコンポーネントは必要ありません。

また、ビジュアル・モードで開発されたダイアログ・フローでは、Q&A機能は機能しません

既存のスキルにQ&Aモジュールがある場合は、そのQ&Aモジュールを将来のバージョンのスキルで引き続き使用できます。ただし、回答インテントの使用に切り替えることをお薦めします(ナレッジ機能の助けを借りて、または回答インテントを手動で作成して)。「アンサー・インテント」を参照してください。

Q&A機能により、スキルは、1つ以上の質問と回答のペアを返すことで、一般的な質問に回答できます。これは、スキルを使用してFAQやその他のナレッジベースのドキュメントを提示する方法です。

スキルにQ&Aモジュールを追加すると、スキルでユーザー入力がトランザクション(「残高はいくらですか。」)を対象としているかどうかを評価したり、質問(「銀行の住所は何ですか。」)に回答してから適切に応答できます。

スキルへのQ&Aの追加

Q&A機能を使用してスキルにQ&Aを追加する方法の概要を次に示します:
  1. 左側のナビゲーション・バーにあるQ&A (これは左側のナビゲーション・バーの「Q&A」アイコンのイメージです。)をクリックして、Q&A機能を有効にします。次に、「Q&Aの追加」をクリックします。

    ノート

    これは、YAMLダイアログ・モードで作成されたスキルでのみ可能です。
  2. カテゴリ化された質問と回答のペアが含まれているソース・ファイル(CSVフォーマット)をロードします。データ・ソース・ファイルの作成で、書式について説明し、内容に関するいくつかのガイドラインを示しています。
    add_qna_source.pngの説明が続きます

  3. 必要に応じて、質問と回答を編集できます。質問と回答を追加または削除することもできます。

    edit_qna_questions.pngの説明が続きます

  4. Q&Aトレーナを使用してスキルをトレーニングします。
    train_w_qna.pngの説明が続きます

  5. Q&Aテスターに質問を入力して、新しいQ&A機能をテストします。テスト・プロセスの一環として、データ・ソースに代替の質問を追加して、質問認識機能を改善する必要があります。データ・ソースに追加したり、データ・ソースの内容を変更する場合は、再トレーニングする必要があります。

  6. スキルのダイアログ・フローでQ&Aを使用するには、System.Qnaコンポーネントを構成する必要があります。また、この新しいコンポーネントを参照するSystem.Intentコンポーネントに新しい遷移を追加して、Q&Aの質問がQ&Aコンポーネントにルーティングされるようにする必要があります。Q&Aのダイアログ・フローを構成する方法を参照してください。

    intent_and_qna_state.pngの説明が続きます

  7. noneアクションの状態を追加し、qnanext遷移に追加して、質問が回答されたときにQ&Aコンポーネントに戻る遷移を設定します:
      qna:
        component: "System.QnA"
          transitions:
            actions:
              none: "unresolved"
              next: "qna"
      unresolved:
        component: "System.Output"
          properties:
          text: "Sorry, I did not find any match. Can you rephrase the question?"
        transitions:
          return: "done"
    
  8. スキルをテストします。

データ・ソース・ファイルの作成

Q&Aコンテンツのデータ・ソース・ファイルはUTF-8でエンコードされたCSVファイルである必要があります。このファイルにはヘッダー行があり、その値は(左から右に) category_pathquestionsおよびcontentです。
内容
category_path

特定の質問と回答(Q&A)のペアの1つ以上のカテゴリ。

Q&Aペアが複数のカテゴリに属している場合、各カテゴリを新しい行に追加します。

階層を示すには、スラッシュ(/)を使用します。たとえば、Trading/Placing Orderです。
これはCSVファイルのイメージです。

questions

ユーザーに表示される質問。これらの質問の各代替バージョンを新しい行に追加します。最初の質問は標準質問と呼ばれ、スキルのメッセージにデフォルトで表示される質問です。この列の後続の質問は代替バージョンです。
これはCSVファイルのイメージです。

content

回答です。

データ・ソース・ファイルは、インポート後に編集できます。

edit_qna_question_dialog.pngの説明が続きます

データ・ソースのガイドライン

  • 各回答に複数の質問を追加すると、関連するQ&Aペアがユーザーに返される可能性が高くなります。各回答に2-5個の質問を作成します。あるトピックに関してユーザーが問い合せる際に使用することが予想される様々な表現のサンプルを網羅するために十分な数の質問を用意してください。主語(ただし回答のトピックと一貫性がある)、動詞および疑問詞(「どのように」、「何を」、「どこで」など)を変えることを検討してください。たとえば、お金がいくらあるかを調べるにはどうすればよいですか。は、次のように言い換えることができます:
    • 口座残高を取得するにはどうすればよいですか。

    • 口座残高はどこで確認できますか。

    • 口座残高を取得できますか。

  • 質問の表現方法は異なっていても、すべて同じ回答を返す必要があることに注意してください。

  • 一般的に使用される単語、シノニムまたは誤字に対応するだけのために別の質問を作成する必要はありません。「言語構成」ページを使用してシノニムや略語を追加できます。誤字は自動的に処理されます。

  • 回答はできるかぎり短くします。詳細情報へのリンクを提供します。Q&Aリンクは非表示にできません。つまり、<a href>を使用してサイト名を指定することはできません。リンクは明示的である必要があります(たとえば、http://www.myanswers.com/answer/topic1.html)。

  • 常にプレーン・テキストを使用します。

  • ユーザーは、必要な情報を取得するために上位3つの一致に関心を持っています。最上位の一致に重点を置く必要がありますが、要求された情報と関連情報が上位3つの一致に含まれるようにすることが目標です。

  • データ・ソースを更新するたびに、バッチ・テスト・ファイルを作成します。このバッチ・ファイルには、スキルが正しく回答していることを確認するために必要なすべての質問が含まれます。このファイルの詳細は、バッチ・テスト用のCSVファイルの作成を参照してください。

Q&Aモジュールおよびデータ・ソースの管理

データ・ソースの追加
質問と回答のファイルをさらに追加して、Q&A機能を拡張できます。別のUTF-8エンコードCSVファイルを新しいQ&Aデータ・ソースにアップロードするには:
  1. 左側のナビゲーション・バーで「Q&A」(これは左側のナビゲーション・バーの「Q&A」アイコンのイメージです。)をクリックします。

  2. 「データ・ソース」タブを選択し、「Q&Aソースの追加」をクリックします。

  3. 言語、ロケール(必要な場合)およびデータ・ソース・ファイルを入力して、ダイアログを完了します。

  4. 「もう1つ作成」を選択すると、データ・ソースのバッチを追加できます。

  5. デフォルトでは、データ・ソースは有効になっています。データ・ソースからQ&Aペアを一時的に削除する必要がある場合は、データ・ソースを削除せずに、「無効」を選択します。

  6. 「作成」をクリックします。

  7. Q&Aを再トレーニングします。

Q&Aデータ・ソース構成パラメータの編集
  1. 左側のナビゲーション・バーで「Q&A」(これは左側のナビゲーション・バーの「Q&A」アイコンのイメージです。)をクリックします。

  2. 「データ・ソース」タブを選択します。

  3. データ・ソースにカーソルをあわせて、「編集」アイコンと「削除」アイコンを呼び出します。
    これは「編集」アイコンのイメージです。

  4. 「編集」をクリックします。

  5. 次のいずれかを実行し、「保存」をクリックします。

    • 言語およびロケールを変更します。

    • ソース名を変更します。

    • 「置換」をクリックして新しいファイルを選択することで、既存のソース・ファイルを上書きします。

    • ソースを有効または無効にします。

  6. Q&Aモジュールを再トレーニングします。


edit_data_source_dialog.pngの説明が続きます

質問および回答の個別追加
  1. 「データ・ソース」タブで、データ・ソースをクリックします。

  2. 「すべてのQ&Aの表示」をクリックします。

  3. 「質問の追加」をクリックします。

  4. 次のようにダイアログに入力し、「作成」をクリックします。
    • 標準質問—チャットにデフォルトで表示される質問を入力します。

    • 代替—標準質問に1つ以上のバリエーションを追加します。シノニムや一般的なスペルミスに対応することではなく、ユーザーが同じ質問をする場合にどのような可能性があるかに集中する必要があることに注意してください。

    • 回答--簡潔な回答を追加します。長い説明のかわりに、より詳細な情報をユーザーに示すURLを追加します。このURLは、テスター・ウィンドウではプレーン・テキストとして表示されますが、実際のメッセージング・プラットフォームでスキルが実行されるときにはハイパーリンクとしてレンダリングされます。

    • カテゴリ—該当する場合は、カテゴリを入力するか、メニューからカテゴリを選択します。(メニューには、データ・ソース・ファイルからカテゴリが移入されています)。

    • 階層については、スラッシュ(/)を使用して文字列を入力します。
      これはカテゴリ・フィールドのイメージです。

    • もう1つ作成「作成」をクリックした後に新しいダイアログを開くには、このオプションを選択します。

  5. Q&Aを再トレーニングします。

  6. 「データ・ソース」タブで「閉じる」をクリックします。


add_question_with_category.pngの説明が続きます

ノート

これらの質問と回答のペアはチャット・ウィンドウの範囲内に表示されるため、短くしてください。データ・ソースのガイドラインを参照してください。
質問および回答の個別編集
ほとんどのコンテンツ開発がソース・ファイル自体を使用して行われた場合でも、「データ・ソース」タブを使用して更新を追加できます。
  1. 「データ・ソース」タブで、質問に移動するか、いずれかの検索フィールド(カテゴリおよび質問と回答)を使用して質問を検索します。

  2. 質問にカーソルをあわせ、「編集」をクリックします。

  3. 「質問の編集」ダイアログを使用して次の作業を行います:
    • 標準質問を変更します。

    • 代替質問を追加します。

    • 回答を編集します。

    • カテゴリを追加または削除します。

  4. 「Save」をクリックします。

  5. Q&Aモジュールを再トレーニングします。

  6. 「データ・ソース」タブで「閉じる」をクリックします。

ノート

テスターを使用して代替質問を追加することもできます。

edit_qna_question_dialog1.pngの説明が続きます

Q&Aデータ・セットのエクスポート
バージョン管理、アーカイブおよびバックアップのためにQ&Aデータ・セット全体をエクスポートできます。
  1. 「データ・ソース」タブで、「すべてのQ&Aの表示」をクリックします。

  2. 左ペインでデータ・ソース・ファイルを選択します。

  3. 「エクスポート」をクリックして、ファイルをシステムに保存します。

  4. 「閉じる」をクリックします。

略語および無視される単語による精度の向上

Q&A機能の精度を向上させるために、無視される単語、略語およびシノニムの組込みセットが含まれています。無視される単語は、精度を低下させないように、照合アルゴリズムから除外されます。略語およびシノニムのリストは、これらの単語を含むユーザーの質問と照合するために使用されます。組込みセットは多くのスキルに十分である可能性がありますが、独自の状況にあわせてこれらのセットに追加できます。

これらのセットへの追加は、「言語構成」ページを使用して行います。このページから、無視される単語、略語およびシノニムのリストを編集できます。


language_config_page.pngの説明が続きます

無視される単語、シノニムおよび略語の追加
  1. 「言語構成」タブを選択します。

  2. 「構成エントリの追加」をクリックします。

  3. ダイアログを完成させます:
    • 言語—使用可能な言語から選択します(データ・ソースによって使用可能になります)。

    • タイプ:

      • 無視される単語—質問に意味を付加しない単語を追加します。単語は小文字で指定する必要があります。

      • シノニム—データ・ソース内の各キーワードの俗語と代替語を含めます。シノニムのセットごとに個別のエントリを作成します。たとえば、money、moolah、greenは、spouse、wife、husband、partnerとは別のエントリになります。
        synonym_entries.pngの説明が続きます

      • 略語—標準の質問には略語が想定されない場合があることに注意してください。

    • 定義—タイプ(シノニム、無視される単語、略語)に固有の用語を入力します。

    • 有効—「無視される単語」、「略語」または「シノニム」セットに対する追加を有効(または無効)にします。このオプションは、言語構成をテストする場合に使用します。

    • もう1つ作成「作成」をクリックした後このダイアログに戻る場合に選択します。

  4. 「作成」をクリックします。

  5. Q&Aモジュールを再トレーニングします。


add_config_dialog.pngの説明が続きます

Q&Aテスト

テスターの「Q&A」ウィンドウを使用して、質問を一度に1つずつまたはバッチとしてテストできます。

Q&Aモジュールをトレーニングした後、インテント/Q&Aを試してみましょう。」テスター(「試してみましょう。」をクリックしてアクセスします)を使用してテストできます。スキル・レスポンスには、複数の回答のカルーセルが含まれる場合があります。インテントのテストと異なり、Q&Aの質問に対するレスポンスはインテント・カテゴリ(残高など)ではなく、かわりにCSVファイルcontent行で提供されるテキストの回答となります。

入力した発話へのレスポンスは、Q&A機能(インテント・エンジンではなく)によって処理されます。これらのレスポンスは、適合度の最も高いトピック(CSVファイルのcontent列で提供される回答)を表す一連の標準質問で構成されます。これらの標準質問は、CSVのquestionsフィールドに入力される最初の質問であり、各トピック(つまり、CSVファイルのcontentフィールドの回答)に関連付けられています。
qna_tester_w_precision.pngの説明が続きます

Q&A一致のテスト

  1. Q&Aモジュールをトレーニングします。

  2. 「試してみましょう。」をクリックし、「Q&A」を選択してテスターを開きます。

  3. 「Q&A」をクリックします。

  4. オプションで、QAテスターのオプション・アイコン。をクリックして言語および一致精度のオプションを設定します:
    • 言語—言語を選択します(多言語データ・ソースが存在する場合)。
    • 一致しきい値「編集」をクリックして、質問と回答のペアが一致(つまり、Q&A一致)とみなされるために含まれている必要があるトークンの最小および最大の割合を設定します。
    • 一致フィールド「編集」をクリックして、ユーザー・メッセージに一致する必要があるQ&Aフィールドを選択します。オプションは:
      • すべて—ユーザー入力のキーワードがQ&Aカテゴリ、質問または回答と一致するQ&Aを返します。
      • 質問—ユーザー入力のキーワードがQ&A質問と一致するQ&Aを返します。
      • 回答—ユーザー入力のキーワードがQ&A回答と一致するQ&Aを返します。
      • カテゴリ—ユーザー入力のキーワードがQ&Aカテゴリと一致するQ&Aを返します。
      • 質問とカテゴリ—ユーザー入力のキーワードがQ&AカテゴリまたはQ&A回答のいずれかと一致するQ&Aを返します。
  5. 発話を入力し、「送信」をクリックします。

  6. 必要に応じて、「質問に追加」をクリックし、Q&Aモジュールを再トレーニングします。

バッチ・テスト用のCSVファイルの作成

バッチ・テストの場合は、スキルが正しく回答する必要がある質問と、優先度順にスキルによって返される標準質問(Q&A一致)が含まれているCSVを使用して、スキルをテストします。CSVでは、(左から右に) languageTagquestionmatch-1match-2match-3などの列を持つヘッダー行を使用して、これを示しています。

exported_qna_conversation.pngの説明が続きます

  • languageTag—テストの質問および一致する質問が表現される言語とロケールを表す5文字のコード。たとえば、en-USです。

  • question—テストの質問。この質問は、トレーニングの質問と一致する必要はありませんが、特定のトピックについてユーザーが尋ねる典型的な質問を表している必要があります。

  • match-1 match-2 …—テストの質問で取得する必要があると思われる標準質問の最初の質問。すべてのQ&A一致に対して標準質問が表示されます。テストの質問が1つのQ&A一致のみを返す必要がある場合は、match-1列に質問を入力して残りのmatch列を空のままにします。

  • queryInfo—カテゴリのドリルダウンとオフセット、およびページ区切りの制限にoffsetcategoryPathを使用するJSONオブジェクト。
    "{""offset"":0,""categoryPath"":[""General Account Information""],""limit"":3}"
このCSVは、予想されるQ&A一致のベースラインを表します。様々なバージョンのスキルでこれを使用して、一貫性のある動作を保証します。データを手動で追加することも、Q&A会話ログを編集することもできます。Q&Aモジュールのバッチ・テストでは、このファイルの取得方法とテスターを使用したファイルの編集方法について説明しています。ゴールデン・セットが完成した後、更新には、Q&Aデータ・ソースへの重要な更新のみを反映する必要があります。

Q&Aモジュールのバッチ・テスト

QnAの会話ログから作成されたCSVを使用してテストする場合は、次の作業を行う必要があります:
  • ダイアログ・フローでSystem.Qnaコンポーネントを追加して構成した後、スキルとチャットして会話履歴を作成します。

  • スキルとチャットして会話履歴を作成します。

  • 「会話ログのエクスポート」ダイアログで「QnAの会話ログ」オプションを選択して、スキルのタイルにあるメニューを使用してQnAの会話ログをエクスポートします。

バッチ・テストを実行するには:
  1. 「Q&Aテスト」ウィンドウで、「バッチ」トグルをオンに切り替えます。

  2. 言語を選択します。

  3. 「ロード」をクリックします。

  4. 「QnAのロード」ダイアログでテスト・オプションを設定し、「テスト」をクリックします。

    • 同時テストの最大数—並行して実行されているテストの数。同時テストの数を増やすとテストにかかる時間が短縮されますが、同時にシステムに負荷がかかる可能性があります。

    • 含む一致—テストに含まれるQ&A一致の数を設定します。

    • 同じ順序で一致が必要—上位の一致内での包含または位置に応じて、一致の成功または失敗を決定できます。

    • このオプションをオフにすると、ユーザーが完全な質問ではなくキーワードを入力したときに一致を確認できます。

    • 一致しきい値「編集」をクリックして、質問と回答のペアが一致(つまり、Q&A一致)とみなされるために含まれている必要があるトークンの最小および最大の割合を設定します。

      ヒント:

      ここでは、qnaMiniumumMatchおよびminimumMatchプロパティに設定した値と同じ値を設定します。各種レベルの設定の詳細は、System.IntentおよびSystem.Qnaを参照してください。
    • 一致フィールド「編集」をクリックして、ユーザー・メッセージに一致する必要があるQ&Aフィールドを選択します。オプションは:
      • すべて—ユーザー入力のキーワードがQ&Aカテゴリ、質問または回答と一致するQ&Aを返します。
      • 質問—ユーザー入力のキーワードがQ&A質問と一致するQ&Aを返します。
      • 回答—ユーザー入力のキーワードがQ&A回答と一致するQ&Aを返します。
      • カテゴリ—ユーザー入力のキーワードがQ&Aカテゴリと一致するQ&Aを返します。
      • 質問とカテゴリ—ユーザー入力のキーワードがQ&AカテゴリまたはQ&A回答のいずれかと一致するQ&Aを返します。

      load_qna_dialog.pngの説明が続きます

      失敗したテストは結果の上部に表示されます。

      qna_drilldown_success.pngの説明が続きます

  5. 成功したQ&A一致については、ドリルダウンして代替質問を追加し、回答を変更してからQ&Aモジュールを再トレーニングできます。これらの追加は、テスト・データではなく、スキルをシードするデータ・ソースに対して行われます。

    qna_test_alt_question_add.pngの説明が続きます

Q&Aのダイアログ・フローを構成する方法

コンポーネントの追加メニュー(ダイアログ・フロー・ページの左上にあります)を使用して、次の3種類のコンポーネント・テンプレートのいずれかを追加して、YAMLモード・ダイアログ・フローへのQ&Aをサポートできます:
  • インテントおよびQnASystem.Intentコンポーネントを追加しますが、発話がトランザクション型のリクエストではなく、質問であると判断された場合に、Q&Aコンポーネントに遷移ルーティングを設定するプロパティも追加します。System.IntentコンポーネントのQ&Aプロパティでは、これらのプロパティについて説明しています。インテントおよびQ&Aフローを使用したスキルの作成では、インテントおよびQ&A関数を使用してスキルを作成するプロセス全体について説明しています。

  • QnASystem.Intentコンポーネントの最小構成のテンプレートを追加します。

  • QnA拡張—QnAテンプレートと同じですが、よりきめ細かい制御のためのオプションのプロパティを提供します:
    • ダイアログ・フローのスキルの制御を放棄または保持するためのkeepTurn構成。

    • モジュール性(専用のQ&Aスキルのコール)。再利用可能なQ&Aスキルを参照してください。

    • QnAのサイズ設定およびページ区切り。

これらのテンプレートを追加するには:
  1. 左側のナビゲーション・バーで「フロー」をクリックします。

  2. ページの左上隅で「コンポーネントの追加」をクリックします。(このボタンが表示されていない場合は、上にスクロールする必要があります)。

  3. 「言語」コンポーネント・パレットを選択します。

  4. 3つのQ&Aテンプレートのいずれかを選択し、「後ろに挿入」メニューを使用してダイアログ・フロー定義内に配置します。「適用」をクリックします。
    ノート

    Q&Aサポートを実装するには、(インテントおよびQnAテンプレートを使用して)ダイアログ・フロー定義に新しいSystem.Intentコンポーネントを追加するか、既存のSystem.Intentコンポーネントを変更してQ&Aコンポーネントへの遷移を有効にする必要があります。

インテントおよびQ&Aフローを使用したスキルの作成

  1. 「QnAを含むインテント」テンプレートをダイアログ・フローに追加します(「言語」からアクセスします)。

  2. System.Intentコンポーネントに次を定義します:
    • qnaEnable: trueを追加してルーターを有効にします:
      intent:
        component: "System.Intent"
        properties:
          variable: "iResult"
          qnaEnable: true
      
    • QnA状態への遷移アクションを設定します:
          transitions:
            actions:
              Balances: "startBalances"
              Transactions: "startTxns"
              Send Money: "startPayments"
              Track Spending: "startTrackSpending"
              Dispute: "setDate"
              unresolvedIntent: "unresolved"
              qna: "qna"
      
      インテント解決が信頼度しきい値未満の場合、スキルによって、ダイアログ・エンジンをqna状態にするqnaアクションがトリガーされます。この場合、スキルのメッセージには「回答の表示」リンクのみが含まれます。
      qna:
          component: "System.QnA"
          transitions:
            actions:
              none: "unresolved"
            next: "intent"
      unresolved:
          component: "System.Output"
          properties:
            text: "Sorry I don't understand that question!"
          transitions:
            return: "unresolved"
      
      ただし、インテント・エンジンが信頼度しきい値を上回るメッセージを解決でき、Q&Aに一致する場合は、スキルのメッセージにインテントとQ&Aレスポンスのリンクが含まれます。

      prioritized_intent_response.pngの説明が続きます

      ただし、インテント・エンジンでメッセージが質問ではなくリクエストとして分類された場合は、スキルによってQ&Aがバイパスされ、インテント・フローにルーティングされます。この場合、メッセージにはインテント・オプションのみが含まれます。

      この動作は、インテント・ルーティングを明確にする単語やフレーズを追加したり、System.IntentqnaSkipIfIntentFoundプロパティを設定することによって変更できます。

Q&Aダイアログの例
System.IntentコンポーネントのQ&Aルーティング
次のスニペットは、System.IntentコンポーネントのqnaEnableプロパティによってルーターがアクティブ化される方法を示しています。Q&Aモジュールによる状態への遷移とQ&Aの状態自体も示しています。

...
  mainIntent:
    component: "System.Intent"
    properties:
      variable: "userInput"
      sourceVariable: "translated"
      qnaEnable: true
      qnaMatchFields: "categories+questions"
    transitions:
      actions:
        Greeting: "greeting"
        Inspire Me: "recommendCategories"
        Returns: "startReturn"
        qna: "qna"
        View Reports: "setMobilePhone"
        TrackOrders: "showOrderStatus"
        unresolvedIntent: "unresolved"
        Vision: "visionBasedProducts"
        Shipping: "startShipping"
...
  qna:
    component: "System.QnA"  
Q&Aの外国語および多言語サポート
1つ以上の外国語をサポートするスキルには、この構成を使用します。
  1. ターゲット言語に固有のデータ・ソース・ファイルを作成します。
    ノート

    中国語のデータ・ソースはサポートされていません。
  2. 必要に応じて、シノニムを追加するか、無視される単語を更新します。

  3. 翻訳サービスを構成します。スキルへの翻訳サービスの追加を参照してください。

  4. スキルにトランザクション関数も含まれる場合は、ルーティング構成を調整します。

  5. 多言語サポートのダイアログ・フローを構成します。例:
    metadata:
      platformVersion: "1.0"
    main: true
    name: "ChipCardMultipleLingualQnA"
    context:
      variables:
        greeting: "string"
        name: "string"
        cancelChoice: "string"
        rb: "resourcebundle"
    states:
      detect:
        component: "System.DetectLanguage"
        properties:
          ...
        transitions:
          ...
      qna:
        component: "System.QnA"
        properties:
          botName: "ChipCardMultipleLingualQnA"
          matchFields: "categories+questions"
          viewAnswerLabel: "${rb.viewAnswerLabel}"
          moreAnswersLabel: "${rb.moreAnswersLabel}"
        transitions:
          actions:
            none: "unresolved"
          next: "detect"
      unresolved:
        component: "System.Output"
        properties:
          text: "${rb.NoMatch}"
        transitions:
          return: "done"    
再利用可能なQ&Aスキル

ダイアログ・フロー定義をモジュール化するには、System.IntentおよびSystem.QnAコンポーネントに属するbotNameおよびQnaBotNameプロパティを使用してコールできる、再利用可能なQ&Aスキルを作成します。

例: botNameプロパティ

...
states:
  qna:
    component: "System.QnA"
    properties:
      botName: "FinancialQnABot"
    transitions:
      actions:
        none: "unresolved"
      next: "qna"
  unresolved:
    component: "System.Output"
    properties:
      text: "Sorry, I did not find any match. Can you rephrase the question?"
    transitions:
      return: "done"

例: botNameおよびQnABotName

このスニペットでは、botNameQnABotNameの両方に同じ値が指定されています。
states:
  intent:
    component: "System.Intent"
    properties:
      botName: "FinancialQnABot"
      qnaMatchFields: "categories+questions"
      variable: "iResult"
      qnaEnable: true
    transitions:
      actions:
        Balances: "startBalances"
        Transactions: "startTxns"
        Send Money: "startPayments"
        Track Spending: "startTrackSpending"
        Dispute: "setDate"
        unresolvedIntent: "unresolved"
        qna: "qna"
...

  qna:
    component: "System.QnA"
    properties:
      botName: "FinancialQnABot"
      matchFields: "categories+questions"   
    transitions:
      actions:
        none: "unresolved"
      next: "intent"

例: System.IntentのbotNameおよびqnaBotName

このスニペットでは、トランザクション・スキルがコールされるSystem.Intentコンポーネントと、Q&AスキルがコールされるSystem.Qnaコンポーネントの2つの異なるコンテキストにおけるbotNameプロパティを示しています。
states:
  intent:
    component: "System.Intent"
    properties:
      botName: "FinancialBot"
      qnaBotName: "FinancialQnABot"
      variable: "iResult"
      qnaEnable: true
    transitions:
      actions:
        Balances: "startBalances"
        Transactions: "startTxns"
        Send Money: "startPayments"
        Track Spending: "startTrackSpending"
        Dispute: "setDate"
        unresolvedIntent: "unresolved"
        qna: "qna"
...

  qna:
    component: "System.QnA"
    properties:
      botName: "FinancialQnABot"   
    transitions:
      actions:
        none: "unresolved"
      next: "intent"

インテントおよびQ&Aルーティングの構成

「Q&Aルーティング構成」ページには、命令や質問を示す、一般的に使用される単語と開始フレーズが用意されています。このページにドメイン固有のコンテンツを追加して、ルーターがQ&Aとインテントを区別できるようにすることができます。これを行うには:

  1. 左側のナビゲーション・バーで「設定」(「設定」アイコン)をクリックします。

  2. 「Q&Aルーティング」構成をクリックします。

  3. 言語を選択します。

  4. インテント・ルーティングに影響を与える次のカテゴリの単語およびフレーズを追加または削除します。
    • トランザクション構成—インテント・エンジンがメッセージをトランザクションとして識別するために役立つ動詞およびフレーズを追加できます。
      • 追加のリクエスト動詞購入チェック取消しなどのリクエストまたは命令で始まるメッセージはトランザクションとみなされ、インテントにルーティングされます。命令法のこれらの単語は、質問ではなくトランザクションを示します。

        サポートされている各言語で広く使用される命令動詞のライブラリが用意されています。その中には、支払、削除、終了などの単語があります。会社または対象者固有のリクエスト動詞を追加できます。

      • リクエスト動詞拡張—「追加のリクエスト動詞」フィールドで追加したリクエスト動詞の適用時に、メッセージをインテント境界として識別するボキャブラリを増やす一連の接頭辞(undisre)。

      • リクエスト・センテンス接頭辞—リクエストに関連付けられている単語およびフレーズ(できますかしないでくださいなど)。これらの単語で始まるメッセージは、インテントとしてルーティングされます。更新可能なこれらのトランザクション指向の単語およびフレーズのライブラリが用意されています。

        request_verb_output.pngの説明が続きます

    • 質問構成—通常質問で使用される、よく使用される一連の単語およびフレーズ。これには、どのようにしてお尋ねしますがなどのフレーズが含まれます。これらは、ユーザーがトランザクションを要求しているのではなく、質問をしていることを示します。スキルはこれらのいずれかで始まるメッセージを受け取ると、Q&Aレスポンスのリンクをインテント・レスポンスのリンクよりも優先することで、レスポンスを最適化します。通常、動作は逆となり、スキルは構成された信頼度しきい値より高いスコアのインテントを最上位に位置付けます。

      prioritized_qna_response.pngの説明が続きます

      たとえば、スキルは「How do I terminate my policy」を受け取ると、ユーザーが情報を探していることを簡単に識別し、「回答の表示」リンクを最初に配置できます。

      ユーザー入力があいまいな場合は、Q&Aリンクが上位のランクを取得できないことがあります。たとえば、ルーターは「can I terminate my policy」をインテントまたはQ&Aとして識別できない場合があります。信頼度しきい値より高いインテント・スコアおよび一致する質問があるため、スキルは両方のオプションを表示しますが、インテントを1位にランク付けします。
      prioritized_intent_response.pngの説明が続きます