查看对话语言理解模型详细信息
- 项目
完成模型训练后,可以查看模型详细信息,了解模型对于测试集表现出的性能。
注意
使用“自动从训练数据拆分测试集”选项,每次训练新模型时可能会产生不同的模型评估结果,因为测试集是从语句中随机选择的。 若要确保每次训练模型时都针对同一测试集计算评估,请确保在启动训练作业时使用“手动拆分训练和测试数据”选项,并在添加语句时定义测试集。
先决条件
在查看模型评估之前,你需要:
有关详细信息,请参阅项目开发生命周期。
模型详细信息
转到 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
响应,这意味着部署已删除。