会話言語理解モデルの詳細を表示する
- [アーティクル]
モデルのトレーニングが完了したら、モデルの詳細を表示し、それのテスト セットに対するパフォーマンスを確認できます。
注意
[トレーニング データからテスト セットを自動的に分割する] オプションを使用すると、テスト セットが発話からランダムに選択されるため、新しいモデルをトレーニングするたびにモデル評価の結果が異なる可能性があります。 モデルをトレーニングするたびに同じテスト セットで評価が計算されるようにするには、トレーニング ジョブを開始するときに [トレーニング データとテスト データの手動分割を使用する] オプションを使用し、発話を追加するときにテスト セットを定義してください。
前提条件
モデルの評価を確認する前に、次のものが必要です。
- 正常に作成されたプロジェクト。
- 正常にトレーニングされたモデル。
詳細については、「プロジェクト開発サイクル」を参照してください。
モデルの詳細
Language Studio でプロジェクトのページに移動します。
画面の左側にあるメニューから [モデルのパフォーマンス] を選択します。
このページでは、正常にトレーニングされたモデル、各モデルの F1 スコア、およびモデルの有効期限のみを表示できます。 モデル名を選択すると、そのパフォーマンスに関する詳細を確認できます。 モデルのトレーニングの間にテスト データが選択された場合、モデルには評価の詳細のみが含まれます。
このタブでは、F1 スコア、精度、リコール、トレーニング ジョブの日付と時刻、トレーニング時間の合計、このトレーニング ジョブに含まれるトレーニングおよびテスト発話の数など、モデルの詳細を見ることができます。 上部でモデルの種類を選ぶことで、意図またはエンティティ間の詳細を見ることができます。
また、モデルを改善する方法に関するガイダンスも表示されます。 [詳細の表示] をクリックすると、サイド パネルが開き、モデルを改善する方法に関するガイダンスが表示されます。
ここには、テスト セットに含まれる発話と、その意図またはエンティティの予測が表示されます。 [エラーのみを表示] トグルを使うと、ラベルとは異なる予測がある発話のみを表示したり、トグルをオフにしてテスト セット内のすべての発話を表示したりできます。 また、ビューを、各発話のビューとしての [Showing entity labels] (エンティティ ラベルを表示) または [Showing entity predictions] (エンティティ予測を表示) に切り替えることもできます。 エンティティ予測は点線で表示され、ラベルは実線で表示されます。
各行を展開して、[モデルの種類] 列で指定された意図またはエンティティの予測を表示できます。 [テキスト] 列には、予測またはラベル付けされたエンティティのテキストが表示されます。 各行の [次のようにラベル付け] 列ではテスト セット内のラベルが示され、[次のように予測] 列では実際の予測が示されます。 また、[結果の種類] 列では、真陽性、擬陽性、擬陰性のいずれであるかが示されます。
このスナップショットは、意図またはエンティティがトレーニング セットとテスト セット間でどのように分散されるかを示しています。 このデータは静的であり、モデルに関連付けられているため、もう一度トレーニングするまで更新されません。 学習済みコンポーネントが含まれないエンティティには、トレーニング ラベルは表示されません。 学習済みコンポーネントは、トレーニング セットでラベルを追加することによってのみ追加されます。
混同行列は、モデルのパフォーマンスの評価に使われる N x N 行列であり、N はターゲットの意図またはエンティティの数です。 マトリックスでは、予想されるラベルとモデルによって予測されたラベルが比較され、他の意図やエンティティとして誤って分類されている意図またはエンティティが特定されます。 混同行列の任意のセルをクリックして、そのセル内の値に寄与した発話を正確に確認できます。
意図の混同行列は、"未処理の数" または "正規化" ビューで表示できます。 未処理の数は、一連の意図に対して予測およびラベル付けされた発話の実際の数です。 正規化された値は、一連の意図に対して予測およびラベル付けされた発話の比率を示す、0 から 1 の範囲の値です。
エンティティの混同行列は、"文字の重複数" または "正規化された文字の重複" ビューで表示できます。 文字の重複数は、一連のエンティティに対して予測およびラベル付けされたスパンの実際の数です。 正規化された文字の重複は、一連のエンティティに対して予測およびラベル付けされたスパンの比率を示す、0 から 1 の範囲の値です。 エンティティを部分的に予測またはラベル付けできる場合があり、混同行列で 10 進値が示されます。
すべての値: すべての意図またはエンティティの混同行列が表示されます。
エラーのみ: エラーがある意図またはエンティティの混同行列のみが表示されます。
一致のみ: 正しい予測がある意図またはエンティティの混同行列のみが表示されます。
トレーニング済みのモデル評価の概要を取得するには、次の URL、ヘッダー、JSON 本文を使用して GET 要求を作成します。
モデルの概要
この API は、意図とエンティティの精度、リコール、F1、混同行列など、モデルの評価結果の概要を返します。
要求 URL
{ENDPOINT}/language/authoring/analyze-conversations/projects/{projectName}/models/{trainedModelLabel}/evaluation/summary-result?api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | myProject |
{trainedModelLabel} |
トレーニング済みモデルの名前。 この値は、大文字と小文字が区別されます。 | Model1 |
{API-VERSION} |
呼び出す API のバージョン。 | 2023-04-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 値 |
---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
応答本文
要求を送信すると、次の応答を受け取ります。
{
"entitiesEvaluation": {
"confusionMatrix": {
"additionalProp1": {
"additionalProp1": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp2": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp3": {
"normalizedValue": 0,
"rawValue": 0
}
},
"additionalProp2": {
"additionalProp1": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp2": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp3": {
"normalizedValue": 0,
"rawValue": 0
}
},
"additionalProp3": {
"additionalProp1": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp2": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp3": {
"normalizedValue": 0,
"rawValue": 0
}
}
},
"entities": {
"additionalProp1": {
"f1": 0,
"precision": 0,
"recall": 0,
"truePositivesCount": 0,
"trueNegativesCount": 0,
"falsePositivesCount": 0,
"falseNegativesCount": 0
},
"additionalProp2": {
"f1": 0,
"precision": 0,
"recall": 0,
"truePositivesCount": 0,
"trueNegativesCount": 0,
"falsePositivesCount": 0,
"falseNegativesCount": 0
},
"additionalProp3": {
"f1": 0,
"precision": 0,
"recall": 0,
"truePositivesCount": 0,
"trueNegativesCount": 0,
"falsePositivesCount": 0,
"falseNegativesCount": 0
}
},
"microF1": 0,
"microPrecision": 0,
"microRecall": 0,
"macroF1": 0,
"macroPrecision": 0,
"macroRecall": 0
},
"intentsEvaluation": {
"confusionMatrix": {
"additionalProp1": {
"additionalProp1": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp2": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp3": {
"normalizedValue": 0,
"rawValue": 0
}
},
"additionalProp2": {
"additionalProp1": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp2": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp3": {
"normalizedValue": 0,
"rawValue": 0
}
},
"additionalProp3": {
"additionalProp1": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp2": {
"normalizedValue": 0,
"rawValue": 0
},
"additionalProp3": {
"normalizedValue": 0,
"rawValue": 0
}
}
},
"intents": {
"additionalProp1": {
"f1": 0,
"precision": 0,
"recall": 0,
"truePositivesCount": 0,
"trueNegativesCount": 0,
"falsePositivesCount": 0,
"falseNegativesCount": 0
},
"additionalProp2": {
"f1": 0,
"precision": 0,
"recall": 0,
"truePositivesCount": 0,
"trueNegativesCount": 0,
"falsePositivesCount": 0,
"falseNegativesCount": 0
},
"additionalProp3": {
"f1": 0,
"precision": 0,
"recall": 0,
"truePositivesCount": 0,
"trueNegativesCount": 0,
"falsePositivesCount": 0,
"falseNegativesCount": 0
}
},
"microF1": 0,
"microPrecision": 0,
"microRecall": 0,
"macroF1": 0,
"macroPrecision": 0,
"macroRecall": 0
},
"evaluationOptions": {
"kind": "percentage",
"trainingSplitPercentage": 0,
"testingSplitPercentage": 0
}
}
モデルの結果
この API は、意図とエンティティに対する予想される予測と実際の予測など、各発話の個々の結果を返します。
要求 URL
{ENDPOINT}/language/authoring/analyze-conversations/projects/{projectName}/models/{trainedModelLabel}/evaluation/result?top={top}&skip={skip}&maxpagesize={maxpagesize}&api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | myProject |
{trainedModelLabel} |
トレーニング済みモデルの名前。 この値は、大文字と小文字が区別されます。 | Model1 |
{API-VERSION} |
呼び出す API のバージョン。 | 2023-04-01 |
{top} |
コレクションから返す発話の最大数。 任意。 | 100 |
{skip} |
コレクションから返す最初の発話のオフセット。 任意。 | 100 |
{maxpagesize} |
1 つの応答に含める発話の最大数。 Optional | 100 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 値 |
---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
応答本文
要求を送信すると、次の応答を受け取ります。
{
"value": [
{
"text": "send the email",
"language": "en-us",
"entitiesResult": {
"expectedEntities": [],
"predictedEntities": []
},
"intentsResult": {
"expectedIntent": "SendEmail",
"predictedIntent": "SendEmail"
}
},
{
"text": "send a mail to daniel",
"language": "en-us",
"entitiesResult": {
"expectedEntities": [
{
"category": "ContactName",
"offset": 15,
"length": 6
}
],
"predictedEntities": [
{
"category": "ContactName",
"offset": 15,
"length": 6
}
]
},
"intentsResult": {
"expectedIntent": "SendEmail",
"predictedIntent": "SendEmail"
}
},
{
"text": "i forgot to add an important part to that email to james . please set it up to edit",
"language": "en-us",
"entitiesResult": {
"expectedEntities": [
{
"category": "ContactName",
"offset": 51,
"length": 5
}
],
"predictedEntities": [
{
"category": "Category",
"offset": 19,
"length": 9
},
{
"category": "ContactName",
"offset": 51,
"length": 5
}
]
},
"intentsResult": {
"expectedIntent": "AddMore",
"predictedIntent": "AddMore"
}
},
{
"text": "send email to a and tian",
"language": "en-us",
"entitiesResult": {
"expectedEntities": [
{
"category": "ContactName",
"offset": 14,
"length": 1
},
{
"category": "ContactName",
"offset": 20,
"length": 4
}
],
"predictedEntities": [
{
"category": "ContactName",
"offset": 14,
"length": 1
},
{
"category": "ContactName",
"offset": 20,
"length": 4
}
]
},
"intentsResult": {
"expectedIntent": "SendEmail",
"predictedIntent": "SendEmail"
}
},
{
"text": "send thomas an email",
"language": "en-us",
"entitiesResult": {
"expectedEntities": [
{
"category": "ContactName",
"offset": 5,
"length": 6
}
],
"predictedEntities": [
{
"category": "ContactName",
"offset": 5,
"length": 6
}
]
},
"intentsResult": {
"expectedIntent": "SendEmail",
"predictedIntent": "SendEmail"
}
},
{
"text": "i need to add more to the email message i am sending to vincent",
"language": "en-us",
"entitiesResult": {
"expectedEntities": [
{
"category": "ContactName",
"offset": 56,
"length": 7
}
],
"predictedEntities": [
{
"category": "ContactName",
"offset": 56,
"length": 7
}
]
},
"intentsResult": {
"expectedIntent": "AddMore",
"predictedIntent": "AddMore"
}
},
{
"text": "send an email to lily roth and abc123@microsoft.com",
"language": "en-us",
"entitiesResult": {
"expectedEntities": [
{
"category": "ContactName",
"offset": 17,
"length": 9
}
],
"predictedEntities": [
{
"category": "ContactName",
"offset": 17,
"length": 9
}
]
},
"intentsResult": {
"expectedIntent": "SendEmail",
"predictedIntent": "SendEmail"
}
},
{
"text": "i need to add something else to my email to cheryl",
"language": "en-us",
"entitiesResult": {
"expectedEntities": [
{
"category": "ContactName",
"offset": 44,
"length": 6
}
],
"predictedEntities": [
{
"category": "ContactName",
"offset": 44,
"length": 6
}
]
},
"intentsResult": {
"expectedIntent": "AddMore",
"predictedIntent": "AddMore"
}
},
{
"text": "send an email to larry , joseph and billy larkson",
"language": "en-us",
"entitiesResult": {
"expectedEntities": [
{
"category": "ContactName",
"offset": 17,
"length": 5
},
{
"category": "ContactName",
"offset": 25,
"length": 6
},
{
"category": "ContactName",
"offset": 36,
"length": 13
}
],
"predictedEntities": [
{
"category": "ContactName",
"offset": 17,
"length": 5
},
{
"category": "ContactName",
"offset": 25,
"length": 6
},
{
"category": "ContactName",
"offset": 36,
"length": 13
}
]
},
"intentsResult": {
"expectedIntent": "SendEmail",
"predictedIntent": "SendEmail"
}
},
{
"text": "send mail to dorothy",
"language": "en-us",
"entitiesResult": {
"expectedEntities": [
{
"category": "ContactName",
"offset": 13,
"length": 7
}
],
"predictedEntities": [
{
"category": "ContactName",
"offset": 13,
"length": 7
}
]
},
"intentsResult": {
"expectedIntent": "SendEmail",
"predictedIntent": "SendEmail"
}
}
],
"nextLink": "{Endpoint}/language/authoring/analyze-conversations/projects/{projectName}/models/{trainedModelLabel}/evaluation/result/?api-version=2022-10-01-preview&top={top}&skip={skip}&maxpagesize={maxpagesize}"
}
モデル データの読み込みまたはエクスポート
モデル データを読み込むには:
モデル評価ページで任意のモデルを選択します。
[モデル データの読み込み] ボタンを選択します。
表示されるウィンドウで、キャプチャする必要がある未保存の変更がないことを確認し、[データの読み込み] を選択します。
モデル データのプロジェクトへの読み込みが完了するまで待ちます。 完了すると、[Schema design] (スキーマ デザイン) ページにリダイレクトされます。
モデル データをエクスポートするには:
モデル評価ページで任意のモデルを選択します。
[モデル データのエクスポート] ボタンを選択します。 モデルの JSON スナップショットがローカルにダウンロードされるまで待ちます。
モデル データを読み込む
モデル データをプロジェクトに読み込むには、次の URL、ヘッダー、JSON 本文を使って POST 要求を作成します。
要求 URL
API 要求を作るときは、次の URL を使います。 次のプレースホルダーの値を実際の値に置き換えてください。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/models/{MODEL-NAME}:load-snapshot?stringIndexType=Utf16CodeUnit&api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | EmailApp |
{API-VERSION} |
呼び出している API のバージョン。 | 2022-10-01-preview |
{MODEL-NAME} |
モデルの名前。 この値は、大文字と小文字が区別されます。 | v1 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 値 |
---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
API 要求を送信すると、成功を示す 202
応答が返されます。 応答ヘッダーで、operation-location
の値を抽出します。 それは次のように書式設定されています。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/models/{MODEL-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
この操作は非同期であるため、JOB-ID
を使って要求が識別されます。 この URL を使用し、同じ認証方法を使用して、モデル データの読み込みの状態を取得します。
モデル データをエクスポートする
モデル データをエクスポートするには、次の URL、ヘッダー、JSON 本文を使って POST 要求を作成します。
要求 URL
API 要求を作るときは、次の URL を使います。 次のプレースホルダーの値を実際の値に置き換えてください。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/:export?stringIndexType=Utf16CodeUnit&api-version={API-VERSION}&trainedModelLabel={MODEL-NAME}
プレースホルダー | 値 | 例 |
---|---|---|
{ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | EmailApp |
{API-VERSION} |
呼び出している API のバージョン。 | 2022-10-01-preview |
{MODEL-NAME} |
モデルの名前。 この値は、大文字と小文字が区別されます。 | v1 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 値 |
---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
API 要求を送信すると、成功を示す 202
応答が返されます。 応答ヘッダーで、operation-location
の値を抽出します。 それは次のように書式設定されています。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
この操作は非同期であるため、JOB-ID
を使って要求が識別されます。 同じ認証方法を使用し、エクスポートされたプロジェクトの JSON をこの URL を使用して取得します。
モデルを削除する
Language Studio 内からモデルを削除するには:
左側のメニューから [モデルのパフォーマンス] を選びます。
削除するモデル名を選び、上部のメニューから [削除] を選択します。
表示されたウィンドウで [OK] を選択してモデルを削除します。
モデルを削除するには、次の URL、ヘッダー、JSON 本文を使って DELETE 要求を作成します。
要求 URL
{ENDPOINT}/language/authoring/analyze-conversations/projects/{projectName}/models/{trainedModelLabel}?api-version={API-VERSION}
プレースホルダー | 値 | 例 |
---|---|---|
{YOUR-ENDPOINT} |
API 要求を認証するためのエンドポイント。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
プロジェクトの名前。 この値は、大文字と小文字が区別されます。 | myProject |
{trainedModelLabel} |
モデルの名前。 この値は、大文字と小文字が区別されます。 | model1 |
{API-VERSION} |
呼び出す API のバージョン。 | 2023-04-01 |
ヘッダー
要求を認証するには、次のヘッダーを使います。
Key | 値 |
---|---|
Ocp-Apim-Subscription-Key |
リソースへのキー。 API 要求の認証に使われます。 |
API 要求を送信すると、成功を示す 204
応答を受け取ります。これは、モデルが削除されたことを意味します。
次のステップ
フィードバック
このページはお役に立ちましたか?