이 문서를 사용하여 사용자 지정 NER로 시작하기 위한 요구 사항을 설정하고 프로젝트를 만드는 방법을 알아봅니다.
필수 구성 요소
사용자 지정 NER 사용을 시작하기 전에 다음이 필요합니다.
- Azure 구독 – 체험 구독을 만듭니다.
언어 리소스 만들기
사용자 지정 NER 사용을 시작하기 전에 Foundry Tools 리소스의 Azure 언어가 필요합니다. 언어 리소스를 만들고 Azure Portal에서 스토리지 계정을 연결하는 것이 좋습니다. Azure Portal에서 리소스를 만들면 필요한 모든 권한을 미리 구성하여 동시에 Azure Storage 계정을 만들 수 있습니다. 또한 문서에서 더 자세히 읽어 기존 리소스를 사용하는 방법을 알아보고 사용자 지정 명명된 엔터티 인식과 함께 작동하도록 구성할 수 있습니다.
엔터티를 추출하기 위한 모델을 학습하는 데 사용되는 .txt 문서를 업로드할 Azure 스토리지 계정도 필요합니다.
참고
- 언어 리소스를 만들려면 리소스 그룹에 할당된 소유자 역할이 있어야 합니다.
- 기존 스토리지 계정을 연결하는 경우 소유자 역할이 할당되어야 합니다.
언어 리소스 만들기 및 스토리지 계정 연결
다음과 같은 방법으로 리소스를 만들 수 있습니다.
- Azure 포털
- PowerShell
참고
Azure 언어 리소스와 연결되면 스토리지 계정을 다른 리소스 그룹 또는 구독으로 이동해서는 안 됩니다.
Azure Portal에서 새 리소스 만들기
Azure Portal에 로그인하여 Foundry Tools 리소스에서 새 Azure 언어를 만듭니다.
표시되는 창의 사용자 지정 기능에서 사용자 지정 텍스트 분류 및 사용자 지정 명명된 엔터티 인식을 선택합니다. 화면 하단에서 계속해서 리소스 만들기를 선택합니다.
다음 세부 정보를 사용하여 언어 리소스를 만듭니다.
이름 설명 구독 Azure 구독. 리소스 그룹 내 리소스를 포함하는 리소스 그룹. 기존 리소스 그룹을 사용하거나 새로 만들 수 있습니다. 지역 언어 리소스의 지역입니다. 예를 들어 "미국 서부 2"입니다. 이름 리소스의 이름입니다. 가격 책정 계층 언어 리소스에 대한 가격 책정 계층입니다. 무료(F0) 계층을 사용하여 서비스를 사용해 볼 수 있습니다. 참고
"로그인 계정이 선택한 스토리지 계정의 리소스 그룹의 소유자가 아닙니다"라는 메시지가 표시되는 경우 언어 리소스를 만들려면 계정에 리소스 그룹에 할당된 소유자 역할이 있어야 합니다. 도움이 필요하면 Azure 구독 소유자에게 문의합니다.
사용자 지정 텍스트 분류 및 사용자 지정 명명된 엔터티 인식 섹션에서 기존 스토리지 계정을 선택하거나 새 스토리지 계정을 선택합니다. 이러한 값은 프로덕션 환경에서 사용하려는 스토리지 계정 값 이 아니라 시작하는 데 도움이 됩니다. 프로젝트를 빌드하는 동안 대기 시간을 방지하려면 언어 리소스와 동일한 지역의 스토리지 계정에 연결합니다.
스토리지 계정 값 권장되는 값 스토리지 계정 이름 임의의 이름 Storage 계정 유형 표준 LRS(로컬 중복 스토리지) 책임 있는 AI 알림이 선택되어 있는지 확인합니다. 페이지 하단에서 검토 + 만들기를 선택한 다음 만들기를 선택합니다.
PowerShell을 사용하여 새 언어 리소스 만들기
GitHub에서 호스트되는 다음 CLI 템플릿 및 매개 변수 파일을 사용하여 새 리소스와 스토리지 계정을 만들 수 있습니다.
매개 변수 파일에서 다음 값을 편집합니다.
| 매개 변수 이름 | 값 설명 |
|---|---|
name |
언어 리소스 이름 |
location |
리소스가 호스트되는 지역. 자세한 내용은 서비스 제한을 참조하세요. |
sku |
리소스에 대한 가격 책정 계층입니다. |
storageResourceName |
스토리지 계정 이름 |
storageLocation |
스토리지 계정이 호스트되는 지역 |
storageSkuType |
스토리지 계정의 SKU |
storageResourceGroupName |
스토리지 계정의 리소스 그룹 |
다음 PowerShell 명령을 사용하여 편집한 파일과 함께 ARM(Azure Resource Manager) 템플릿을 배포합니다.
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
-TemplateFile <path-to-arm-template> `
-TemplateParameterFile <path-to-parameters-file>
템플릿 배포 및 매개 변수 파일에 대한 자세한 내용은 ARM 템플릿 문서를 참조하세요.
참고
- 스토리지 계정을 언어 리소스에 연결하는 프로세스는 되돌릴 수 없습니다. 나중에 연결을 끊을 수 없습니다.
- 언어 리소스는 하나의 스토리지 계정에만 연결할 수 있습니다.
기존 언어 리소스 사용
기존 언어 리소스가 아래 요구 사항을 충족하는 경우 이 리소스를 사용하여 사용자 지정 NER을 시작할 수 있습니다.
| 요구 사항 | 설명 |
|---|---|
| 영역 | 기존 리소스가 지원되는 지역 중 하나에 프로비전되어 있는지 확인합니다. 그렇지 않은 경우 이러한 지역 중 하나에 새 리소스를 만들어야 합니다. |
| 가격 책정 계층 | 지원되는 가격 책정 계층에 대해 자세히 알아보세요. |
| 관리 ID | 리소스의 관리 ID 설정이 사용하도록 설정되어 있는지 확인합니다. 그렇지 않으면 다음 섹션을 참조하세요. |
명명된 사용자 지정 엔터티 인식을 사용하려면 Azure Storage 계정이 아직 없는 경우 만들어야 합니다.
리소스에 대한 ID 관리 사용
Azure Portal을 사용하여 사용하도록 설정하려면 언어 리소스에 ID 관리가 있어야 합니다.
- 언어 리소스로 이동
- 왼쪽 메뉴의 리소스 관리 섹션 아래에서 ID를 선택합니다.
- 시스템 할당 탭에서 상태를 켜기로 설정해야 합니다.
사용자 지정 명명된 엔터티 인식 기능 사용
Azure Portal에서 사용자 지정 텍스트 분류/사용자 지정 명명된 엔터티 인식 기능을 사용하도록 설정해야 합니다.
- Azure Portal에서 언어 리소스로 이동합니다.
- 왼쪽 메뉴의 리소스 관리 섹션 아래에서 기능을 선택합니다.
- 사용자 지정 텍스트 분류/사용자 지정 명명된 엔터티 인식 기능을 사용하도록 설정합니다.
- 스토리지 계정을 연결합니다.
- 적용을 선택합니다.
중요합니다
사용자가 자신에게 할당된 스토리지 Blob 데이터 기여자 역할을 변경하고 있는지 확인하세요.
필요한 역할 추가
다음 단계를 사용하여 언어 리소스 및 스토리지 계정에 필요한 역할을 설정합니다.
Foundry Tools 리소스의 Azure 언어에 대한 역할
Azure Portal에서 스토리지 계정 또는 언어 리소스로 이동합니다.
왼쪽 창에서 액세스 제어(IAM) 를 선택합니다.
추가를 선택하여 역할 할당 추가를 선택하고, 계정에 적절한 역할을 선택합니다.
언어 리소스에 할당된 소유자 또는 기여자 역할이 있어야 합니다.
다음에 대한 액세스 권한 할당 내에서 사용자, 그룹 또는 서비스 주체를 선택합니다.
멤버 선택을 선택합니다.
사용자 이름을 선택합니다. 선택 필드에서 사용자 이름을 검색할 수 있습니다. 모든 역할에 대해 이 작업을 반복합니다.
이러한 단계를 이 리소스에 액세스해야 하는 모든 사용자 계정에 대해 반복합니다.
스토리지 계정에 대한 역할
- Azure Portal에서 스토리지 계정 페이지로 이동합니다.
- 왼쪽 창에서 액세스 제어(IAM) 를 선택합니다.
- 추가를 선택하여 역할 할당 추가를 선택하고, 스토리지 계정에 대한 Storage Blob 데이터 기여자 역할을 선택합니다.
- 다음에 대한 액세스 권한 할당 내에서 관리 ID를 선택합니다.
- 멤버 선택을 선택합니다.
- 구독을 선택하고, 관리 ID로 언어를 선택합니다. 선택 필드에서 사용자 이름을 검색할 수 있습니다.
사용자에 대한 역할
중요합니다
이 단계를 건너뛰면 사용자 지정 프로젝트에 연결하려고 할 때 403 오류가 발생합니다. 현재 사용자는 스토리지 계정의 소유자인 경우에도 스토리지 계정 Blob 데이터에 액세스하기 위해 이 역할을 맡는 것이 중요합니다.
- Azure Portal에서 스토리지 계정 페이지로 이동합니다.
- 왼쪽 창에서 액세스 제어(IAM) 를 선택합니다.
- 추가를 선택하여 역할 할당 추가를 선택하고, 스토리지 계정에 대한 Storage Blob 데이터 기여자 역할을 선택합니다.
- 다음에 대한 액세스 권한 할당 내에서 사용자, 그룹 또는 서비스 주체를 선택합니다.
- 멤버 선택을 선택합니다.
- 사용자를 선택합니다. 선택 필드에서 사용자 이름을 검색할 수 있습니다.
중요합니다
가상 네트워크 또는 프라이빗 엔드포인트가 있는 경우 Azure Portal에서 신뢰할 수 있는 서비스 목록에서 Azure 서비스가 이 스토리지 계정에 액세스하도록 허용을 선택해야 합니다.
스토리지 계정에 대해 CORS 활성화
CORS(원본 간 리소스 공유)를 활성화할 때 (GET, PUT, DELETE) 메서드를 허용해야 합니다.
허용된 원본 필드를 https://language.cognitive.azure.com으로 설정합니다.
*를 허용된 헤더 값에 추가하여 모든 헤더를 허용하고, 최대 기간을 500으로 설정합니다.
명명된 사용자 지정 엔터티 인식 프로젝트 만들기(REST API)
리소스 및 스토리지 컨테이너가 구성되면 새 사용자 지정 NER 프로젝트를 만듭니다. 프로젝트는 데이터를 기반으로 하는 사용자 지정 AI 모델을 빌드하기 위한 작업 영역입니다. 당신만 사용 중인 Azure 리소스에 대한 액세스 권한이 있는 다른 사용자와 함께 프로젝트에 액세스할 수 있습니다. 레이블이 지정된 데이터를 사용하면 프로젝트를 가져와서 시작할 수 있습니다.
사용자 지정 명명된 엔터티 인식 모델 만들기를 시작하려면 프로젝트를 만들어야 합니다. 프로젝트를 만들면 데이터에 레이블을 지정하고, 모델을 학습, 평가, 개선 및 배포할 수 있습니다.
참고
프로젝트 이름은 모든 작업에서 대/소문자를 구분합니다.
다음 URL, 헤더 및 JSON 본문을 사용하여 PATCH 요청을 만들어 프로젝트를 만듭니다.
요청 URL
다음 URL을 사용하여 프로젝트를 만듭니다. 다음 자리 표시자를 사용자 고유의 값으로 바꾸십시오.
{Endpoint}/language/authoring/analyze-text/projects/{projectName}?api-version={API-VERSION}
| 자리 표시자 | 값 | 예제 |
|---|---|---|
{ENDPOINT} |
API 요청을 인증하기 위한 엔드포인트입니다. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
프로젝트의 이름입니다. 이 값은 대/소문자를 구분합니다. | myProject |
{API-VERSION} |
호출하는 API의 버전입니다. 참조되는 값은 릴리스된 최신 버전에 대한 값입니다. 자세한 내용은 모델 수명 주기를 참조하세요. | 2022-05-01 |
요청 헤더
다음 헤더를 사용하여 요청을 인증합니다.
| 키 | 필수 | 유형 | 값 |
|---|---|---|---|
Ocp-Apim-Subscription-Key |
진실 | 문자열 | 리소스의 키입니다. API 요청을 인증하는 데 사용됩니다. |
Content-Type |
진실 | 문자열 | application/merge-patch+json |
요청 메시지 본문
요청에 다음 JSON을 사용합니다. 다음 자리 표시자를 사용자 고유의 값으로 바꾸십시오.
{
"projectName": "{PROJECT-NAME}",
"language": "{LANGUAGE-CODE}",
"projectKind": "CustomEntityRecognition",
"description": "Project description",
"multilingual": "True",
"storageInputContainerName": "{CONTAINER-NAME}"
}
| 키 | 자리 표시자 | 값 | 예제 |
|---|---|---|---|
| projectName | {PROJECT-NAME} |
프로젝트의 이름입니다. 이 값은 대/소문자를 구분합니다. | myProject |
| 언어 | {LANGUAGE-CODE} |
프로젝트에 사용되는 문서의 언어 코드를 지정하는 문자열입니다. 프로젝트가 다국어 프로젝트인 경우 문서에 가장 자주 표시되는 언어의 코드를 선택합니다. 지원되는 언어 코드에 대한 자세한 내용은 언어 지원을 참조하세요. | en-us |
| 프로젝트 유형 | CustomEntityRecognition |
프로젝트 종류입니다. | CustomEntityRecognition |
| 다국어 | true |
데이터 세트에 여러 언어로 된 문서를 포함할 수 있고 모델을 배포할 때 지원되는 모든 언어로 모델을 쿼리할 수 있는 부울 값입니다(반드시 학습 문서에 포함되지는 않음). 다국어 지원에 대한 자세한 내용은 언어 지원을 참조하세요. | true |
| 저장소입력컨테이너이름 | {CONTAINER-NAME |
문서가 업로드된 Azure Storage 컨테이너의 이름입니다. | myContainer |
이 요청은 201 응답을 반환합니다. 즉, 프로젝트가 만들어집니다.
이 요청은 다음과 같은 경우 오류를 반환합니다.
- 선택한 리소스에 스토리지 계정에 대한 적절한 권한이 없습니다.
프로젝트 가져오기(REST API)
이미 데이터에 레이블을 지정한 경우 이 데이터를 사용하여 서비스를 시작할 수 있습니다. 레이블이 지정된 데이터에서 허용되는 데이터 형식을 따르는지 확인합니다.
다음 URL, 헤더 및 JSON 본문을 사용하여 레이블 파일을 가져오는 POST 요청을 제출합니다. 레이블 파일이 허용되는 형식을 따르는지 확인합니다.
이름이 같은 프로젝트가 이미 있는 경우 해당 프로젝트의 데이터가 바뀝니다.
{Endpoint}/language/authoring/analyze-text/projects/{projectName}/:import?api-version={API-VERSION}
| 자리 표시자 | 값 | 예제 |
|---|---|---|
{ENDPOINT} |
API 요청을 인증하기 위한 엔드포인트입니다. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
프로젝트의 이름입니다. 이 값은 대/소문자를 구분합니다. | myProject |
{API-VERSION} |
호출하는 API의 버전입니다. 여기서 참조하는 값은 릴리스된 최신 버전에 대한 값입니다. 자세한 내용은 모델 수명 주기를 참조하세요. | 2022-05-01 |
headers
다음 헤더를 사용하여 요청을 인증합니다.
| 키 | 값 |
|---|---|
Ocp-Apim-Subscription-Key |
리소스의 키입니다. API 요청을 인증하는 데 사용됩니다. |
본문
요청에 다음 JSON을 사용합니다. 자리 표시자 값을 사용자 고유의 값으로 바꿉니다.
{
"projectFileVersion": "{API-VERSION}",
"stringIndexType": "Utf16CodeUnit",
"metadata": {
"projectName": "{PROJECT-NAME}",
"projectKind": "CustomEntityRecognition",
"description": "Trying out custom NER",
"language": "{LANGUAGE-CODE}",
"multilingual": true,
"storageInputContainerName": "{CONTAINER-NAME}",
"settings": {}
},
"assets": {
"projectKind": "CustomEntityRecognition",
"entities": [
{
"category": "Entity1"
},
{
"category": "Entity2"
}
],
"documents": [
{
"location": "{DOCUMENT-NAME}",
"language": "{LANGUAGE-CODE}",
"dataset": "{DATASET}",
"entities": [
{
"regionOffset": 0,
"regionLength": 500,
"labels": [
{
"category": "Entity1",
"offset": 25,
"length": 10
},
{
"category": "Entity2",
"offset": 120,
"length": 8
}
]
}
]
},
{
"location": "{DOCUMENT-NAME}",
"language": "{LANGUAGE-CODE}",
"dataset": "{DATASET}",
"entities": [
{
"regionOffset": 0,
"regionLength": 100,
"labels": [
{
"category": "Entity2",
"offset": 20,
"length": 5
}
]
}
]
}
]
}
}
| 키 | 자리 표시자 | 값 | 예제 |
|---|---|---|---|
api-version |
{API-VERSION} |
호출하는 API의 버전입니다. 여기서 사용되는 버전은 URL에서 동일한 API 버전이어야 합니다. 사용 가능한 다른 API 버전에 대한 자세한 정보 | 2022-03-01-preview |
projectName |
{PROJECT-NAME} |
프로젝트의 이름입니다. 이 값은 대/소문자를 구분합니다. | myProject |
projectKind |
CustomEntityRecognition |
프로젝트 종류입니다. | CustomEntityRecognition |
language |
{LANGUAGE-CODE} |
프로젝트에 사용되는 문서의 언어 코드를 지정하는 문자열입니다. 프로젝트가 다국어 프로젝트인 경우 대부분의 문서의 언어 코드를 선택합니다. | en-us |
multilingual |
true |
데이터 세트에 여러 언어로 된 문서를 포함할 수 있고 모델을 배포할 때 지원되는 모든 언어로 모델을 쿼리할 수 있는 부울 값입니다(반드시 학습 문서에 포함되지는 않음). 다국어 지원에 대한 내용은 언어 지원을 참조하세요. | true |
storageInputContainerName |
{CONTAINER-NAME} | 업로드된 문서를 포함하는 Azure Storage 컨테이너의 이름입니다. | myContainer |
entities |
프로젝트에 있고 문서에서 추출한 모든 엔터티 형식을 포함하는 배열입니다. | ||
documents |
프로젝트의 모든 문서 및 각 문서 내에서 레이블이 지정된 엔터티 목록을 포함하는 배열입니다. | [] | |
location |
{DOCUMENT-NAME} |
스토리지 컨테이너에 있는 문서의 위치입니다. | doc1.txt |
dataset |
{DATASET} |
학습 전 분할 시 이 파일이 이동하는 테스트 집합입니다. 자세한 내용은 모델 학습 방법을참조하세요. 이 필드에 사용할 수 있는 값은 Train 및 Test입니다. |
Train |
API 요청을 보내면 작업이 올바르게 제출되었음을 나타내는 응답을 받게 됩니다 202 . 응답 헤더에서 operation-location 값을 추출합니다. 형식의 예는 다음과 같습니다.
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/import/jobs/{JOB-ID}?api-version={API-VERSION}
이 작업은 비동기식이므로 {JOB-ID}은 요청을 식별하는 데 사용됩니다. 이 URL을 사용하여 가져오기 작업 상태를 가져옵니다.
이 요청에 대한 가능한 오류 시나리오:
- 선택한 리소스에 스토리지 계정에 대한 적절한 권한이 없습니다.
- 지정한
storageInputContainerName이 없습니다. - 잘못된 언어 코드가 사용되었거나 언어 코드 형식이 문자열이 아닌 경우입니다.
-
multilingual값은 부울이 아닌 문자열입니다.
프로젝트 세부 정보 가져오기(REST API)
다음 GET 요청을 사용하여 프로젝트 세부 정보를 가져옵니다. 자리 표시자 값을 사용자 고유의 값으로 바꿉니다.
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}?api-version={API-VERSION}
| 자리 표시자 | 값 | 예제 |
|---|---|---|
{ENDPOINT} |
API 요청을 인증하기 위한 엔드포인트입니다. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
프로젝트의 이름입니다. 이 값은 대/소문자를 구분합니다. | myProject |
{API-VERSION} |
호출하는 API의 버전입니다. 자세한 내용은 모델 수명 주기를 참조하세요. | 2022-05-01 |
headers
다음 헤더를 사용하여 요청을 인증합니다.
| 키 | 값 |
|---|---|
Ocp-Apim-Subscription-Key |
리소스의 키입니다. API 요청을 인증하는 데 사용됩니다. |
응답 본문
{
"createdDateTime": "2021-10-19T23:24:41.572Z",
"lastModifiedDateTime": "2021-10-19T23:24:41.572Z",
"lastTrainedDateTime": "2021-10-19T23:24:41.572Z",
"lastDeployedDateTime": "2021-10-19T23:24:41.572Z",
"projectKind": "CustomEntityRecognition",
"storageInputContainerName": "{CONTAINER-NAME}",
"projectName": "{PROJECT-NAME}",
"multilingual": false,
"description": "Project description",
"language": "{LANGUAGE-CODE}"
}
| 값 | 자리 표시자 | 설명 | 예제 |
|---|---|---|---|
projectKind |
CustomEntityRecognition |
프로젝트 종류입니다. | CustomEntityRecognition |
storageInputContainerName |
{CONTAINER-NAME} |
업로드된 문서에 대한 Azure Storage 컨테이너의 이름입니다. | myContainer |
projectName |
{PROJECT-NAME} |
프로젝트의 이름입니다. 이 값은 대/소문자를 구분합니다. | myProject |
multilingual |
true |
데이터 세트에 여러 언어로 된 문서를 포함할 수 있고 모델을 배포할 때 지원되는 모든 언어로 모델을 쿼리할 수 있는 부울 값입니다(반드시 학습 문서에 포함되지는 않음). 다국어 지원에 대한 자세한 내용은 언어 지원을 참조하세요. | true |
language |
{LANGUAGE-CODE} |
프로젝트에 사용되는 문서의 언어 코드를 지정하는 문자열입니다. 프로젝트가 다국어 프로젝트인 경우 대부분의 문서에 대한 언어 코드를 선택합니다. | en-us |
API 요청을 보내면 프로젝트 세부 정보가 포함된 성공 및 JSON 응답 본문을 나타내는 응답을 받게 됩니다 200 .
프로젝트 삭제(REST API)
프로젝트가 더 이상 필요하지 않은 경우 다음과 같은 DELETE 요청을 사용하여 삭제할 수 있습니다. 자리 표시자 값을 사용자 고유의 값으로 바꿉니다.
{Endpoint}/language/authoring/analyze-text/projects/{projectName}?api-version={API-VERSION}
| 자리 표시자 | 값 | 예제 |
|---|---|---|
{ENDPOINT} |
API 요청을 인증하기 위한 엔드포인트입니다. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
프로젝트의 이름입니다. 이 값은 대/소문자를 구분합니다. | myProject |
{API-VERSION} |
호출하는 API의 버전입니다. 참조되는 값은 릴리스된 최신 버전에 대한 값입니다. 자세한 내용은 모델 수명 주기를 참조하세요. | 2022-05-01 |
headers
다음 헤더를 사용하여 요청을 인증합니다.
| 키 | 값 |
|---|---|
| Ocp-Apim-Subscription-Key | 리소스의 키입니다. API 요청을 인증하는 데 사용됩니다. |
API 요청을 보내면 성공을 나타내는 응답을 받게 202 됩니다. 즉, 프로젝트가 삭제됩니다. 작업의 상태를 확인하는 데 사용되는 Operation-Location 헤더가 포함된 성공적인 호출 결과.
다음 단계
데이터에 레이블을 지정하는 데 사용하는 프로젝트 스키마 에 대한 아이디어가 있어야 합니다.
프로젝트를 만든 후 데이터 레이블 지정을 시작할 수 있습니다. 이 프로세스는 엔터티 추출 모델에 텍스트를 해석하는 방법을 알려주며 학습 및 평가에 사용됩니다.