대화 언어 이해 모델을 빌드하기 위한 리소스 이해
Language Understanding 서비스를 사용하여 NLP 솔루션을 개발하려면 Azure에서 언어 리소스를 만들어야 합니다. 해당 리소스는 모델을 작성하고 클라이언트 애플리케이션의 예측 요청을 처리하는 데 사용됩니다.
팁
이 모듈의 랩에서는 대화형 언어 이해를 위한 모델 빌드를 다룹니다. 사용자 지정 텍스트 분류 및 사용자 지정 명명된 엔터티 인식에 대한 보다 집중적인 모듈을 보려면 자연어 솔루션 개발 학습 경로의 사용자 지정 솔루션 모듈을 참조하세요.
모델 빌드
예측을 위해 모델이 필요한 기능의 경우 모델을 사용하여 예측하기 전에 해당 모델을 빌드, 학습 및 배포해야 합니다. 이 빌드 및 학습은 Azure AI 언어 서비스에 무엇을 찾아야 하는지 가르쳐줍니다.
먼저, Azure Portal에서 Azure AI 언어 리소스를 만들어야 합니다. 다음 작업:
- Azure AI 서비스를 검색합니다.
- 언어 서비스를 찾아 선택합니다.
- 언어 서비스 아래에서 만들기를 선택합니다.
- 필요한 세부 정보를 입력하고 지리적으로 가장 가까운 지역을 선택하고(최상의 성능을 위해) 고유한 이름을 지정합니다.
해당 리소스가 만들어지면 키와 엔드포인트가 필요합니다. 왼쪽의 리소스 개요 페이지의 키 및 엔드포인트 아래에 있습니다.
Language Studio 사용
모델을 빌드, 학습 및 배포하는 보다 시각적인 방법의 경우 Language Studio를 사용하여 이러한 각 단계를 수행할 수 있습니다. 기본 페이지에서 대화 언어 이해 프로젝트 만들기를 선택할 수 있습니다. 프로젝트가 만들어지면 위와 동일한 프로세스를 거쳐 모델을 빌드, 학습 및 배포합니다.
이 모듈의 랩에서는 Language Studio를 사용하여 모델을 빌드하는 방법을 안내합니다. 자세한 내용은 Language Studio 빠른 시작을 참조하세요.
REST API 사용
모델을 빌드하는 한 가지 방법은 REST API를 사용하는 것입니다. 패턴은 프로젝트를 만들고, 데이터를 가져오고, 학습시키고, 배포한 다음, 모델을 사용하는 것입니다.
이러한 작업은 비동기적으로 수행됩니다. 각 단계에 대한 적절한 URI에 요청을 제출한 다음 다른 요청을 보내 해당 작업의 상태를 가져와야 합니다.
예를 들어 대화형 언어 이해 프로젝트에 대한 모델을 배포하려는 경우 배포 작업을 제출한 다음 배포 작업 상태를 확인합니다.
인증
Azure AI 언어 리소스를 호출할 때마다 다음 헤더를 제공하여 요청을 인증합니다.
키 | 값 |
---|---|
Ocp-Apim-Subscription-Key |
리소스에 대한 키 |
요청 배포
POST 요청을 다음 엔드포인트에 제출합니다.
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
자리 표시자 | 값 | 예시 |
---|---|---|
{ENDPOINT} |
Azure AI 언어 리소스의 엔드포인트 | https://<your-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
프로젝트에 대한 이름입니다. 이 값은 대/소문자를 구분합니다. | myProject |
{DEPLOYMENT-NAME} |
배포의 이름입니다. 이 값은 대/소문자를 구분합니다. | staging |
{API-VERSION} |
호출하는 API의 버전 | 2022-05-01 |
요청에 다음 body
을 포함합니다.
{
"trainedModelLabel": "{MODEL-NAME}",
}
자리 표시자 | 값 |
---|---|
{MODEL-NAME} |
배포에 할당될 모델 이름입니다. 이 값은 대/소문자를 구분합니다. |
요청을 성공적으로 제출하면 응답 헤더가 operation-location
인 202
응답을 수신합니다. 이 헤더에는 다음과 같이 형식이 지정된 상태를 요청할 URL이 있습니다.
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
배포 상태 가져오기
GET 요청을 위의 응답 헤더에서 URL로 제출합니다. 초기 배포 요청에 따라 값은 이미 채워집니다.
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
자리 표시자 | 값 |
---|---|
{ENDPOINT} |
API 요청을 인증하기 위한 엔드포인트 |
{PROJECT-NAME} |
프로젝트의 이름(대/소문자 구분) |
{DEPLOYMENT-NAME} |
배포의 이름(대/소문자 구분) |
{JOB-ID} |
위의 배포 요청에서 자세히 설명한 헤더 값에 있는 모델의 학습 상태를 찾기 위한 ID |
{API-VERSION} |
호출하는 API의 버전 |
응답 본문은 배포 상태 세부 정보를 제공합니다. 배포가 완료되면 status
필드에 succeeded 값이 있습니다.
{
"jobId":"{JOB-ID}",
"createdDateTime":"String",
"lastUpdatedDateTime":"String",
"expirationDateTime":"String",
"status":"running"
}
예제 요청이 있는 각 단계의 전체 연습은 대화형 이해 빠른 시작을 참조하세요.
모델 쿼리
예측을 위해 모델을 쿼리하려면 C# 또는 Python에서 SDK를 사용하거나 REST API를 사용할 수 있습니다.
SDK를 사용한 쿼리
SDK를 사용하여 모델을 쿼리하려면 먼저 클라이언트를 만들어야 합니다. 클라이언트가 있으면 이를 사용하여 적절한 엔드포인트를 호출합니다.
var languageClient = new TextAnalyticsClient(endpoint, credentials);
var response = languageClient.ExtractKeyPhrases(document);
language_client = TextAnalyticsClient(
endpoint=endpoint,
credential=credentials)
response = language_client.extract_key_phrases(documents = documents)[0]
대화 언어 이해와 같은 기타 언어 기능을 사용하려면 요청을 다르게 빌드하고 전송해야 합니다.
var data = new
{
analysisInput = new
{
conversationItem = new
{
text = userText,
id = "1",
participantId = "1",
}
},
parameters = new
{
projectName,
deploymentName,
// Use Utf16CodeUnit for strings in .NET.
stringIndexType = "Utf16CodeUnit",
},
kind = "Conversation",
};
Response response = await client.AnalyzeConversationAsync(RequestContent.Create(data));
result = client.analyze_conversation(
task={
"kind": "Conversation",
"analysisInput": {
"conversationItem": {
"participantId": "1",
"id": "1",
"modality": "text",
"language": "en",
"text": query
},
"isLoggingEnabled": False
},
"parameters": {
"projectName": cls_project,
"deploymentName": deployment_slot,
"verbose": True
}
}
)
REST API를 사용하여 쿼리
REST를 사용하여 모델을 쿼리하려면 적절한 본문이 지정된 적절한 URL에 대한 POST 요청을 만듭니다. 언어 감지 또는 감정 분석과 같은 기본 제공 기능의 경우 analyze-text
엔드포인트를 쿼리합니다.
팁
각 요청은 Ocp-Apim-Subscription-Key
헤더의 Azure AI 언어 리소스 키를 사용하여 인증되어야 함을 기억합니다.
{ENDPOINT}/language/:analyze-text?api-version={API-VERSION}
자리 표시자 | 값 |
---|---|
{ENDPOINT} |
API 요청을 인증하기 위한 엔드포인트 |
{API-VERSION} |
호출하는 API의 버전 |
해당 요청의 본문 내에서 서비스에 요청하는 언어 이해 유형을 알려주는 kind
매개 변수를 지정해야 합니다.
언어를 탐지하려는 경우, 예를 들어 JSON 본문은 다음과 같이 보입니다.
{
"kind": "LanguageDetection",
"parameters": {
"modelVersion": "latest"
},
"analysisInput":{
"documents":[
{
"id":"1",
"text": "This is a document written in English."
}
]
}
}
대화 언어 이해와 같은 다른 언어 기능을 사용하려면 요청이 다른 엔드포인트로 라우팅되어야 합니다. 예를 들어 대화형 언어 이해 요청은 다음으로 전송됩니다.
{ENDPOINT}/language/:analyze-conversations?api-version={API-VERSION}
자리 표시자 | 값 |
---|---|
{ENDPOINT} |
API 요청을 인증하기 위한 엔드포인트 |
{API-VERSION} |
호출하는 API의 버전 |
해당 요청에는 다음과 유사한 JSON 본문이 포함됩니다.
{
"kind": "Conversation",
"analysisInput": {
"conversationItem": {
"id": "1",
"participantId": "1",
"text": "Sample text"
}
},
"parameters": {
"projectName": "{PROJECT-NAME}",
"deploymentName": "{DEPLOYMENT-NAME}",
"stringIndexType": "TextElement_V8"
}
}
자리 표시자 | 값 |
---|---|
{PROJECT-NAME} |
모델을 빌드한 프로젝트의 이름 |
{DEPLOYMENT-NAME} |
배포의 이름 |
샘플 응답
SDK의 쿼리 응답은 반환된 개체에 포함되며, 이는 기능(예: response.key_phrases
또는 response.Value
)에 따라 다릅니다. REST API는 다음과 유사한 JSON을 반환합니다.
{
"kind": "KeyPhraseExtractionResults",
"results": {
"documents": [{
"id": "1",
"keyPhrases": ["modern medical office", "Dr. Smith", "great staff"],
"warnings": []
}],
"errors": [],
"modelVersion": "{VERSION}"
}
}
대화 언어 이해와 같은 다른 모델의 경우 쿼리에 대한 샘플 응답은 다음과 유사합니다.
{
"kind": "ConversationResult",
"result": {
"query": "String",
"prediction": {
"topIntent": "intent1",
"projectKind": "Conversation",
"intents": [
{
"category": "intent1",
"confidenceScore": 1
},
{
"category": "intent2",
"confidenceScore": 0
}
],
"entities": [
{
"category": "entity1",
"text": "text",
"offset": 7,
"length": 4,
"confidenceScore": 1
}
]
}
}
}
Python 및 C#용 SDK는 REST 응답과 매우 유사한 JSON을 반환합니다.
예 및 방법 가이드를 포함하여 기능에 대한 전체 설명을 보려면 Azure AI 언어 설명서 설명서 페이지를 참조하세요.