- 
			
2024-12-02  
完成模型训练后,可以查看模型详细信息,了解模型对于测试集表现出的性能。
注意
使用“自动从训练数据拆分测试集”选项,每次训练新模型时可能会产生不同的模型评估结果,因为测试集是从语句中随机选择的。 若要确保每次训练模型时都针对同一测试集计算评估,请确保在启动训练作业时使用“手动拆分训练和测试数据”选项,并在添加语句时定义测试集。
先决条件
在查看模型评估之前,你需要:
有关详细信息,请参阅项目开发生命周期。
模型详细信息
转到 Language Studio 中的项目页面。
从屏幕左侧的菜单中选择“模型性能”。
在此页中,只能查看训练成功的模型、每个模型的 F1 分数和模型到期日期。 可以选择模型名称来了解有关其性能的更多详细信息。 只有在训练模型时选择了测试数据的情况下,模型才会包含评估详细信息。
在此选项卡中,可以查看模型的详细信息,例如:F1 分数、精准率、召回率、训练作业的日期和时间、总训练时间以及此训练作业中包含的训练和测试语句的数量。 可以通过选择顶部的“模型类型”来查看意向或实体之间的详细信息。
你还将看到有关如何改进模型的指南。 单击“查看详细信息”时,一个侧面板会打开,显示有关如何改进模型的更多指导。
此快照显示了意向或实体如何分布在你的训练和测试集中。 这些数据是静态的,并且与你的模型相关联,因此在再次训练之前不会更新。 不包含通过训练形成的组件的实体不会显示训练标签。 只能通过在训练集中添加标签来添加通过训练形成的组件。
混淆矩阵是一个 N x N 矩阵,用于评估模型的性能,其中 N 是目标意向或实体的数量。 矩阵将预期的标签与模型预测的标签进行对比,以确定哪些意向或实体被错误分类为其他意向和实体。 可以单击混淆矩阵的任意单元格,以准确标识哪些语句决定了该单元格中的值。
可以在“原始计数”或“规范化”视图中查看意向混淆矩阵。 原始计数是为一组意向预测和标记的语句的实际数量。 规范化值是一组意向的预测语句和标记语句的比率,介于 0 到 1 之间。
可以在字符重叠计数或规范化字符重叠视图中查看实体混淆矩阵。 字符重叠计数是为一组实体预测和标记的实际范围数。 规范化字符重叠是一组实体的预测和标记范围的比率,介于 0 到 1 之间。 有时,可以部分预测或标记实体,从而导致混淆矩阵中出现小数值。
所有值:将显示所有意向或实体的混淆矩阵。
仅错误:将仅显示有错误的意向或实体的混淆矩阵。
仅匹配:将仅显示预测正确的意向或实体的混淆矩阵。
使用以下 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.cn | 
{PROJECT-NAME} | 
项目名称。 此值区分大小写。 | myProject | 
{trainedModelLabel} | 
已训练的模型的名称。 此值区分大小写。 | Model1 | 
{API-VERSION} | 
要调用的 API 的版本。 | 2023-04-01 | 
头文件
使用以下标头对请求进行身份验证。
| 键 | 值 | 
|---|---|
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.cn | 
{PROJECT-NAME} | 
项目名称。 此值区分大小写。 | myProject | 
{trainedModelLabel} | 
已训练的模型的名称。 此值区分大小写。 | Model1 | 
{API-VERSION} | 
要调用的 API 的版本。 | 2023-04-01 | 
{top} | 
要从集合返回的语句的最大数量。 可选。 | 100 | 
{skip} | 
要返回的第一个语句集合的偏移量。 可选。 | 100 | 
{maxpagesize} | 
单个响应中包含的语句的最大数量。 可选 | 100 | 
头文件
使用以下标头对请求进行身份验证。
| 键 | 值 | 
|---|---|
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}"
}
加载或导出模型数据
若要加载模型数据,请执行以下操作:
在“模型评估”页中选择任何模型。
选择“加载模型数据”按钮。
确认在出现的窗口中没有需要捕获的任何未保存的更改,然后选择“加载数据”。
等待模型数据完成加载回项目的过程。 完成后,将重定向回“架构设计”页。
若要导出模型数据,请执行以下操作:
在“模型评估”页中选择任何模型。
选择“导出模型数据”按钮。 等待本地下载模型的 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.cn | 
{PROJECT-NAME} | 
项目名称。 此值区分大小写。 | EmailApp | 
{API-VERSION} | 
要调用的 API 版本。 | 2022-10-01-preview | 
{MODEL-NAME} | 
模型的名称。 此值区分大小写。 | v1 | 
头文件
使用以下标头对请求进行身份验证。
| 键 | 值 | 
|---|---|
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.cn | 
{PROJECT-NAME} | 
项目名称。 此值区分大小写。 | EmailApp | 
{API-VERSION} | 
要调用的 API 版本。 | 2022-10-01-preview | 
{MODEL-NAME} | 
模型的名称。 此值区分大小写。 | v1 | 
头文件
使用以下标头对请求进行身份验证。
| 键 | 值 | 
|---|---|
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 用于标识请求,因为此操作是异步操作。 使用此 URL 可以通过相同的身份验证方法获取导出的项目 JSON。
删除模型
从 Language Studio 中删除模型:
在左侧菜单中,选择“模型性能”。
选择要删除的模型名称,然后选择顶部菜单中的“删除”。
在出现的窗口中,单击“确定”以删除模型。
使用以下 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.cn | 
{PROJECT-NAME} | 
项目名称。 此值区分大小写。 | myProject | 
{trainedModelLabel} | 
模型名称的名称。 此值区分大小写。 | model1 | 
{API-VERSION} | 
要调用的 API 的版本。 | 2023-04-01 | 
头文件
使用以下标头对请求进行身份验证。
| 键 | 值 | 
|---|---|
Ocp-Apim-Subscription-Key | 
资源密钥。 用于对 API 请求进行身份验证。 | 
发送 API 请求后,将收到指示成功的 204 响应,这意味着部署已删除。





