대화 언어 이해 모델 세부 정보 보기
- 아티클
모델 학습을 완료한 후에 모델 세부 정보를 보고 테스트 집합에 대해 모델이 얼마나 잘 수행되는지 확인할 수 있습니다.
참고 항목
테스트 세트가 발화에서 임의로 선택되므로 학습 데이터에서 테스트 세트를 자동으로 분할 옵션을 사용하면 새 모델을 학습할 때마다 다른 모델 평가 결과가 발생할 수 있습니다. 모델을 학습할 때마다 동일한 테스트 세트에서 평가가 계산되도록 하려면 학습 작업을 시작할 때 데이터 학습 및 테스트의 수동 분할 사용 옵션을 사용하고 발화를 추가할 때 테스트 세트를 정의해야 합니다.
필수 조건
모델 평가를 보기 전에 다음 항목이 필요합니다.
자세한 내용은 프로젝트 개발 수명 주기를 참조하세요.
모델 세부 정보
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.com |
{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.com |
{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.com |
{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.com |
{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.com |
{PROJECT-NAME} |
프로젝트에 대한 이름입니다. 이 값은 대/소문자를 구분합니다. | myProject |
{trainedModelLabel} |
모델 이름의 이름입니다. 이 값은 대/소문자를 구분합니다. | model1 |
{API-VERSION} |
호출하는 API의 버전입니다. | 2023-04-01 |
헤더
다음 헤더를 사용하여 요청을 인증합니다.
키 | 값 |
---|---|
Ocp-Apim-Subscription-Key |
리소스의 키입니다. API 요청을 인증하는 데 사용됩니다. |
API 요청을 보내면 성공을 나타내는 204
응답을 받게 됩니다. 이는 모델이 삭제되었음을 의미합니다.
다음 단계
피드백
이 페이지가 도움이 되었나요?