Test your Bot

バッチテスト

Botを構築してトレーニングした後、最も重要な問題となるのはBotの学習モデルがどれだけ優れているかということです。したがって、Botのパフォーマンスを評価することは、Botがユーザーの発話をどの程度よく理解しているかを示すために重要です。 バッチテスト機能は、Botが特定の発話セットから期待されるインテントとエンティティを正しく認識する能力を見極めるのに役立ちます。これには、一連のテストを実行して詳細な統計分析を行い、Botの機械学習モデルのパフォーマンスを測定することが含まれます。 バッチテストを実行するには、ビルダーで使用可能な事前定義されたテストスイートを使用するか、独自のカスタムテストスイートを作成します。要件に基づいてテストスイートを実行して、目的の結果を表示することができます。こちらは、左側のナビゲーションメニューよりテスト -> バッチテストオプションからアクセスできます。   テストスイートの管理 Kore.aiは、バッチテストを実行するためにすぐに使用できるテストスイートをいくつか用意しています。開発者が定義した発話および成功したユーザーの発話は、バッチテストを実行できる組み込みのテストスイートです。また、発話のカスタムセットをテストするための新しいテストスイートを作成することもできます。 開発者が定義した発話 このテストスイートは、機械学習の発話画面から、開発者が以前に追加およびトレーニングした発話を検証します。このテストスイートを使用するということは、開発者がBotのすべてのタスクに対して追加した発話セット全体をまとめてテストすることを意味します。 成功したユーザーの発話 このテストスイートには、インテントに正常に一致し、対応するタスクが完全に実行されたすべてのエンドユーザーの発話が含まれています。これらの発話は、分析モジュールの「検出されたインテントI」セクションからも見つけることができます。 新しいテストスイートの追加 新しいテストスイートを使用することで、バッチファイル(データセットとも呼ばれる)に、テスト発話の配列を一度にまとめてインポートできます。データセットファイルはCSVまたはJSON形式で記述する必要があり、最大10,000の発話を含めることができます。新しいテストスイートオプションを使用して、テストスイート作成の一部としてサンプルのCSVまたはJSONファイル形式をダウンロードできます。   テストスイートのJSON形式 カスタムスイートを作成するためのJSON形式を使用すると、テストケースの配列を定義することができます。各テストケースは、テスト対象の発話、テスト対象の発話に対するインテントから構成され、オプションで発話から決定する予定のエンティティのリストを定義します。期待されるインテントが子のインテントである場合は、検討される親のインテントを含めることもできます。 マルチアイテムが有効になっているエンティティの場合、値は次のように指定する必要があります。 entity1||entity2 複合エンティティでは、次の形式で値を指定する必要があります。 component1name:entityValue|component2name:entityValue2 エンティティが抽出されるオーダーは次のように指定できます。"entityOrder":["TransferAmount", "PayeeName"]オーダーが提供されていないか、部分的に提供されている場合、プラットフォームはすべてのエンティティをカバーする最短ルートをデフォルトのオーダーとして決定します。 プロパティ名 タイプ 説明 テストケース 配列 以下から構成されます。 入力 インテント parentIntent 入力 文字列 エンドユーザーの発話 インテント 文字列 エンドユーザーの発話の目的を決定します(FAQテストケースの場合はタスク名や主要な質問にすることもできます) 7.3以降のリリースでは、このプロパティを使用して、trait(特性)の接頭辞を使うことにより、この発話に対して特定される特性を定義できます。例)特性:特性名1 || 特性名2 || 特性名3 8.0以降のリリースでは、このプロパティには予想されるスモールトークパターンを含めることができます。 parentIntent 文字列[オプション] インテントがサブインテントである場合に検討される親インテントを定義します。スモールトークの場合、スモールトークが状況に応じたフォローアップを目的としているときにこのフィールドに入力する必要があります。マルチレベルの文脈上のインテントの場合、親インテントは || を使った区切り文字で区切る必要があります。 エンティティ…

発話テスト

Botが関連するタスクでユーザーの発話にBotが応答することを確認するには、さまざまなユーザー入力でBotをテストすることが重要です。予想されるユーザー入力の大規模なサンプルを使用してBotを評価することによって、Botの応答に関する洞察が得られるだけでなく、多様な人間の言い回しを解釈するBotをトレーニングする絶好の機会が得られます。 Botのトレーニング関連のすべてのアクティビティは、発話テストモジュールから実行することができます。ここでは、テストとトレーニングの記事全体で例として、次のタスクで構成されるフライト予約Botのサンプルを使用します。 Botのテスト 簡単に言えば、BotのテストとはBotがユーザーの発話に最も関連性の高いタスクで応答できるかどうかを確認することです。言語の柔軟性を考えると、ユーザーは同じインテントを表現するために幅広いフレーズを使用することになります。 たとえば、1月1日のサンフランシスコからロサンゼルスへのチケットを変更したいを旅行日を変更したいと言い換えることができます。1月1日には間に合いません。コツとしては、これらの発話の両方を同じインテントまたは予約の変更タスクとしてとらえるようにBotをトレーニングすることです。 したがって、Botのテストを開始する最初のステップとしては、Botの応答をテストするためのユーザーの発話の代表的なサンプルを特定することです。サポートチャットログ、オンラインコミュニティ、関連するポータルのFAQページなど、実際の言語の使用状況を反映したデータソースを探します。 Botのテスト方法 Botをテストするには次の手順に従ってください。 テストするBotを開きます。 左側のナビゲーションパネルからテストにカーソルを合わせ、発話テストをクリックします。 複数インテントのモデルがある場合、発話をテストしたいインテントを選択することができます。機械学習エンジンは、選択したモデルからのみインテントを検出します。 ユーザーの発話を入力フィールドの中に、テストしたい発話を入力します。例:予定を再スケジュールする。LA行きのチケットをキャンセルする。 結果は、単一,複数のインテントがある場合、または一致するインテントがない場合に表示されます。 テスト結果の種類 Botに対してユーザーの発話をテストすると、NLPエンジンはそのインテントに一致するBotタスクを見つけようとします。NLPエンジンは、機械学習、ファンダメンタルミーニング、ナレッジグラフ(Botがある場合)モデルを使用したハイブリッドアプローチを使用して、一致するインテントを関連性でスコア化します。このモデルは、ユーザーの発話を一致の可能性または完全一致のいずれかに分類します。 完全一致では、確信度の高いスコアが得られ、ユーザーの発話に完全に一致すると見なされます。公開済みのBotでは、ユーザー入力が単一の完全一致と一致する場合、Botはタスクを直接実行します。発話が複数の完全一致と一致する場合、エンドユーザーが選択できるオプションとして送信されます。 一方、一致の可能性はユーザー入力に対して適度にスコアが高いものの、完全一致と呼ぶには十分な確信度が足りないインテントのことです。内部的には、システムはスコアに基づいて、一致の可能性を優れた一致と不確かな一致に分類します。エンドユーザーの発話が公開済みのBotで一致の可能性を生成していた場合、Botはこれらの一致をエンドユーザーへの提案としてもしかして?と送信します。 以下は、ユーザーの発話テストで考えられる結果です。 単一の(一致の可能性または完全一致):NLPエンジンは、単一のインテントまたはタスクのあるユーザーの発話に一致するものを見つけます。インテントは、ユーザー発話フィールドの下に表示されます。適切な一致である場合は、次の発話のテストに進むか、タスクをさらにトレーニングしてスコアを向上させることができます。不適切な一致である場合は、不適切としてマークして適切なインテントを選択できます。 複数の一致(一致の可能性または完全一致またはその両方):NLPエンジンは、ユーザーの発話と一致する複数インテントを特定します。結果から、一致するタスクのラジオボタンを選択してトレーニングします。 未特定のインテント:ユーザー入力は、リンクされたBotのいずれのタスクとも一致しませんでした。インテントを選択し、ユーザーの発話に一致するようにトレーニングします。 エンティティの一致 Botのテスト中に、一致したエンティティが表示されます。発話からのエンティティは、最初にNERとパターンエンティティ、次に残りのエンティティの順序で処理されます。 プラットフォームのリリース8.0以降では、エンティティがどのように一致したか、およびどの確信スコアと一致したかという詳細も表示されます。詳細は次のとおりです。 特定エンジン-機械学習またはファンダメンタルミーニング トレーニングタイプ-NER、パターントレーニング、エンティティ名、システムコンセプトなどから一致を行うことができます。パターンが一致する場合は、行をクリックすると同様に詳細が表示されます。 NERトレーニングを使用して機械学習エンジンによって特定された確信度スコアです(条件付きランダムフィールドがNERモデルとして選択されている場合のみ)。 テスト結果の分析 ユーザーの発話をテストすると、一致するインテントに加えてNLP分析ボックスも表示され、候補リストのインテント、候補リストに挙がったインテントを使用したNLPモデル、対応するスコア、最終的な勝者の概要が表示されます。 ファンダメンタルミーニングタブの下では、候補リストに含まれていなくてもすべてのインテントのスコアを確認できます。 前述のように、Kore.ai NLPエンジンは、機械学習、ファンダメンタルミーニング、ナレッジグラフ(存在する場合)のモデルを使用してインテントを一致させます。NLPエンジンが単一の完全一致 を見つけた場合、基礎となるモデルの1つを介して、そのタスクは一致するインテントとして表示されます。テストで複数の完全一致が検出された場合、適切なインテントを選択するためのオプションとして受け取ります。 モデルが複数の一致の可能性を候補リストに挙げた場合、リストアップされたすべてのインテントは、ファンダメンタルミーニングモデルを使用して、ランキングおよび解決によって再スコアリングされ、最終的な勝者が決定されます。 場合によっては、複数の一致の可能性が再スコアリング後も同じスコアを確保することがあります。その場合は複数の一致として表示され、開発者は1つを選択することができます。NLP分析ボックスの学習モデル名が付いたタブをクリックすると、インテントスコアが表示されます。 注意:NLPスコアは絶対値であり、同じ入力を持つ他のタスクと比較するためにのみ使用できます。タスクスコアは、異なる発話間で比較することはできません。 各モデルダイアログで右上のアイコンをクリックすると、対応するエンジンの設定としきい値が表示されます。 機械学習モデル 機械学習モデルは、ユーザー入力をタスクラベルおよび各タスクのトレーニング発話と一致させようとします。ユーザー入力が複数の文から構成されている場合、各文はタスク名とタスクの発話に対して個別に実行されます。 機械学習モデルボタンをクリックして、NLP分析の機械学習モデルセクションを開きます。これは、ポジティブスコアを確保したタスクの名前のみを表示します。一般に、タスクに追加するトレーニング発話の数が多いほど発見される可能性が高くなります。詳細については、機械学習を参照してください。 FMモデル 機械学習モデルとは別にBot内の各タスクは、タスク名、同義語、パターンのさまざまな組み合わせを含む包括的なカスタムNLPアルゴリズムを使用して、ユーザー入力に対してスコアリングされます。 ファンダメンタルミーニング(FM)モデルタブには、Bot内のすべてのインテントの分析が表示されます。タブをクリックすると各タスクのスコアが表示されます。 処理済みの発話をクリックすると、ユーザーの発話がどのように分析および処理されたかが表示されます。 リリース7.2以降では、FMエンジンはBotの言語に応じて2つの方法でモデルを生成します。 アプローチ1:ドイツ語とフランス語でサポートされています。 単語分析要素では、原語、普遍的な品詞、従属関係、関連語に関して詳しく説明しています。 次に、処理済みの各インテントごとにスコア詳細が表示されます。スコアリングされたインテント(一致または削除)を選択すると、各単語のスコアリングの詳細が表示されます。これには、発話された単語と、依存関係の解析に基づいてそれぞれに割り当てられたスコアが含まれます。 アプローチ2:上記以外の言語でサポートされています。 単語分析要素では、原語、文中での役割、処理済みの単語(スペル修正の場合)に関して詳しく説明しています。…

Botとの会話

Botを定義し、1つ以上のタスクを設定したら、NLP対応のBotを公開する前に設定をテストする必要があります。Botオーナーと開発者は、Botとリアルタイムでチャットを行い、ライブセッションのように認識、パフォーマンス、フローをテストすることができます。 Botのテスト メッセージングウィンドウでタスクをテストするには、Botビルダーの右下隅にあるBotとの会話アイコンをクリックします。 次のフライト管理Botの図に示すように、Botのメッセージングウィンドウが表示され、NLPインタープリターに接続されます。 注意:Botとの会話アイコンは、少なくとも1つのタスクが作成されるまで有効になりません。 最初にウィンドウを開くと、Botの設定確認メッセージフィールドが、定義されている場合は表示されます。メッセージセクションにテキストを入力して、フライトの予約するなどのBotとの対話やテストを開始します。 NLPインタープリターはタスクの処理を開始し、ユーザーとウェブサービスによる認証を確認してから、必要なタスクフィールド情報の入力を求めます。必要なタスクフィールドがすべて収集されるとタスクが実行されます。 Botをテストしている間に、さまざまな種類のユーザープロンプトを試してみて、NLPインタープリターが同義語(または同義語の欠如)を適切に処理していることを確認してください。Botが予期しない結果を返す場合は、必要に応じてタスクやタスクフィールド名に同義語を追加または修正することを検討してください。詳細については、自然言語処理を参照してください。 トラブルシューティング デバッグウィンドウを開いて、チャットの自然言語処理、ログ、セッションのコンテキスト、変数を表示することができます。デバッグを開くには、Botとの会話チャットウィンドウの右上にあるデバッグアイコンをクリックします。デバッグウィンドウは以下のタブで設定されています。デバッグログ、NL解析、セッションコンテキストおよび変数です。 NL分析:Botタスクの読み込みステータスを説明し、発話ごとにタスク名の分析と認識スコアを表示します。 デバッグログ: 処理中または処理済みのダイアログタスクのコンポーネントを日付のタイムスタンプと共に一覧表示します。 セッションコンテキストおよび変数: ダイアログタスクの処理で使用されたコンテキストオブジェクトおよびセッション変数の両方を表示します。 デバッグログ デバッグログは、それぞれのノードでキャプチャされたダイアログタスクとコンテキストおよびセッション変数の連続的な進行を行います。デバッグログは次のステータスをサポートします。 プロセス中:Botプラットフォームはノードの処理を開始します。 プロセス後:  ノードとノードの接続が処理され、次のノードが見つかりましたが、ダイアログはまだそのノードに移動していません。 waitingForUserInput: ユーザーは入力を求められます。 一時停止:別のタスクが開始されている間、現在のダイアログタスクは一時停止されます。 再開:一時停止状態の現在のダイアログは、開始された別のタスクが完了した後、フロー内の同じポイントで続行されます。 waitingForServerResponse:サーバーへのリクエストは非同期応答を保留されています。 エラー:ループ制限に達した、サーバーまたはスクリプトノードの実行に失敗したなどのエラーが発生しました。 終了:ダイアログがダイアログフローの最後に到達しました。 NL分析 NL分析タブには、各ユーザーの発話のタスク名分析と認識スコアが表示されます。  これは、Kore.ai NLPエンジンによって実行されたトーン分析、インテント検出、エンティティ検出の詳細な結果を示します。インテント検出の一部として、NL分析タブには、機械学習、ファンダメンタルミーニング、ナレッジグラフエンジンの結果が表示されます。スコアの詳細については、Botをトレーニングするトピックを参照してください。 セッションコンテキストおよび変数 セッションコンテキストおよび変数タブは、ダイアログビルダーで処理された各コンポーネントで更新されたContextオブジェクトとセッション変数を動的に表示します。以下は、デバッグログのセッションおよびコンテキスト変数パネルの例です。パラメータの詳細については、タスクのセッションとコンテキスト変数の使用およびコンテキストオブジェクトを参照してください。 システムコマンド システムコマンドを使用すると、評価中にユーザーとBotの会話を制御できます。これらは、JavaScriptコードを使用してBotに挿入することもできます。詳細はこちらをご覧ください。 録音セッション 録音オプションを使用すると、会話を録音して、回帰テストのシナリオに役立てることができます。詳細について…

会話の録音

Botを構築している間、テストできるシナリオは複数あります。Botに変更や更新を行うたびに確認を要するシナリオが成功することがあります。Botとの成功した会話を録音しておくことは、将来の回帰テストのシナリオに役立ちます。Botとの会話を録音するオプションは、「Botと話す」ウィンドウにあります。 特長 この録音オプションでは、ユーザー入力とBotの応答を録音します。 Botとの会話中はいつでも録音を開始したり停止したりすることができます。 会話全体がテストケースとして保存されます。 テストケースを分割してテストスイートを作成したい場合は、会話中にすべて破棄コマンドを使用することで作成できます。「すべて破棄」以前の会話はテストケースとして保存され、以後の会話は別のテストケースとなります。両方のテストケースは、テストスイートとして単一のファイルで保存されます。必要に応じて、会話をいくつかのテストケースに分割することができます。 会話全体はJSONファイルに保存され、録音が終了するとダウンロードできるようになります。 このJSONファイルは、Kore Githubリポジトリで提供されているチャットBotテストランナーを使用して、同じ会話でBotをテストすることができます。このテストツールでは、JSONファイルからのユーザー入力を使用してBotと会話を行い、Botの応答を録音されたBotの応答と比較します。テスト結果のスプレッドシートに結果が記録され、開発者の入力、実際の結果と予想される結果、テスト実行のステータス(合格または不合格)を含む、テスト実行の包括的なレポートが得られます。このスプレッドシートを使用して、失敗したテストケースを報告、記録、再テストすることができます。テストランナーの詳細については、Kore Githubを参照してください。