사용자 지정 명명된 엔터티 인식 이해

완료됨

사용자 지정 NER은 문서를 보고 식별하며 사용자 정의된 엔터티를 추출하는 Azure API 서비스입니다. 이러한 엔터티는 검색 결과를 개선하기 위해 은행 명세서의 이름과 주소에서 지식 마이닝에 이르기까지 무엇이든 될 수 있습니다.

사용자 지정 NER은 Azure AI 서비스의 Azure AI 언어의 일부입니다.

사용자 지정 및 기본 제공 NER

Azure AI 언어는 특정 기본 제공 엔터티 인식을 제공하여 사람, 위치, 조직 또는 URL과 같은 항목을 인식합니다. 기본 제공 NER을 사용하면 최소한의 구성으로 서비스를 설정하고 엔터티를 추출할 수 있습니다. 기본 제공 NER을 호출하려면 다음과 같이 서비스를 만들고 해당 NER 서비스에 대한 엔드포인트를 호출합니다.

<YOUR-ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
자리 표시자 예제
<YOUR-ENDPOINT> API 요청에 대한 엔드포인트 https://<your-resource>.cognitiveservices.azure.com
<API-VERSION> 호출하는 API의 버전 2023-05-01

해당 호출 본문에는 엔터티가 추출된 문서가 포함되며 헤더에는 서비스 키가 포함됩니다.

위의 호출의 응답에는 다음과 같이 인식된 엔터티 배열이 포함됩니다.

<...>
"entities":[
    {
        "text":"Seattle",
        "category":"Location",
        "subcategory":"GPE",
        "offset":45,
        "length":7,
        "confidenceScore":0.99
    },
    {
        "text":"next week",
        "category":"DateTime",
        "subcategory":"DateRange",
        "offset":104,
        "length":9,
        "confidenceScore":0.8
    }
]
<...>

기본 제공 NER을 사용하는 경우의 예로는 긴 텍스트 문서에서 위치, 이름 또는 URL 찾기가 있습니다.

인식된 엔터티 범주의 전체 목록은 NER 문서에서 확인할 수 있습니다.

이 모듈의 나머지 부분에서 중점을 두는 사용자 지정 NER은 추출하려는 엔터티가 기본 제공 서비스의 일부가 아니거나 특정 엔터티만 추출하려는 경우에 사용할 수 있습니다. 앱에 필요한 대로, 사용자 지정 NER 모델을 단순하거나 복잡하게 만들 수 있습니다.

사용자 지정 NER을 원하는 경우의 예로는 특정 법률 또는 은행 데이터, 카탈로그 검색을 향상하는 지식 마이닝 또는 감사 정책의 특정 텍스트 찾기가 있습니다. 이러한 각 프로젝트에는 추출해야 하는 특정 엔터티 및 데이터 집합이 필요합니다.

Azure AI 언어 프로젝트 수명 주기

Conceptual diagram showing a project steps to define entities, tag data, train model, view model, improve model, deploy model, and extract entities.

엔터티 추출 모델을 만드는 과정은 일반적으로 대부분의 Azure AI 언어 서비스 기능과 비슷한 경로를 따릅니다.

  1. 엔터티 정의: 식별하려는 데이터 및 엔터티를 이해하고 가능한 한 명확하게 하려고 합니다. 예를 들어 추출하려는 은행 명세서의 일부를 정확하게 정의합니다.
  2. 데이터 태그 지정: 기존 데이터에 레이블을 지정하고 데이터 세트의 텍스트가 어떤 엔터티에 해당하는지 지정합니다. 레이블이 잘못되거나 누락되면 학습된 모델의 효과가 감소하므로 이 단계는 정확하고 완전하게 수행하는 것이 중요합니다. 가능한 입력 문서를 적절하게 변형하면 도움이 됩니다. 예를 들어 은행 이름, 고객 이름, 고객 주소, 특정 대출 또는 계좌 조건, 대출 또는 계좌 금액, 계좌 번호에 레이블을 지정합니다.
  3. 모델 학습: 엔터티에 레이블이 지정되면 모델을 학습합니다. 학습은 모델에 레이블이 지정된 엔터티를 인식하는 방법을 교육합니다.
  4. 모델 보기: 모델을 학습시킨 후 모델의 결과를 봅니다. 이 페이지에는 테스트된 데이터의 정밀도 및 재현율을 기반으로 하는 0~1점의 점수가 포함되어 있습니다. 잘 작동하는 엔터티(예: 고객 이름)와 개선이 필요한 엔터티(예: 계좌 번호)를 확인할 수 있습니다.
  5. 모델 개선: 식별되지 못한 엔터티와 잘못 추출된 엔터티를 확인하여 모델을 개선합니다. 성능을 향상하기 위해 모델의 학습에 추가해야 하는 데이터가 무엇인지 알아냅니다. 이 페이지에서는 엔터티가 실패한 방법과 다른 유사한 엔터티(예: 대출 금액)와 구별해야 하는 엔터티(예: 계좌 번호)를 보여 줍니다.
  6. 모델 배포: 모델이 원하는 대로 수행되면 모델을 배포하여 API를 통해 사용할 수 있도록 합니다. 이 예제에서는 은행 명세서 엔터티를 추출하기 위해 배포될 때 모델에 요청을 보낼 수 있습니다.
  7. 엔터티 추출: 모델을 엔터티 추출에 사용합니다. 이 랩에서는 API를 사용하는 방법을 설명하며, API 참조에서 자세한 내용은 확인할 수 있습니다.

데이터 선택 및 엔터티 구체화에 대한 고려 사항

최상의 성능을 위해서는 고품질 데이터를 모두 사용하여 모델을 학습시키고 명확하게 정의된 엔터티 형식을 사용해야 합니다.

고품질 데이터를 사용하면 구체화 시간을 줄이고 모델에서 더 나은 결과를 얻을 수 있습니다.

  • 다양성 - 실제 데이터에 필요한 실제 배포를 잃지 않고 가능한 다양한 데이터 세트를 사용합니다. 사용자는 각각 고유한 형식과 엔터티 수를 가진 가능한 한 많은 원본의 샘플 데이터를 사용하려고 합니다. 데이터 세트가 가능한 한 많은 여러 원본을 나타내도록 하는 것이 가장 좋습니다.
  • 배포 - 문서 형식의 적절한 배포를 사용합니다. 모델을 학습하는 보다 다양한 데이터 세트는 모델이 데이터에서 잘못된 관계를 학습하지 않도록 하는 데 도움이 됩니다.
  • 정확도 - 가능한 한 실제 데이터에 가까운 데이터를 사용합니다. 가짜 데이터는 학습 프로세스를 시작하지만, 모델이 올바르게 추출되지 않을 수 있는 방식으로 실제 데이터와 다를 수 있습니다.

엔터티도 신중하게 고려하고 가능한 한 뚜렷하게 정의해야 합니다. 모호한 엔터티(예: 은행 명세서에서 서로 옆에 있는 두 이름)는 모델이 구별하기 위해 애쓰게 되므로 사용하지 않습니다. 모호한 엔터티가 필요한 경우 차이점을 이해할 수 있도록 모델에서 학습할 수 있는 더 많은 예제가 있어야 합니다.

엔터티를 고유하게 유지하는 것도 모델의 성능을 돕는 데 큰 도움이 됩니다. 예를 들어 전화 번호, 소셜 미디어 핸들 또는 메일 주소일 수 있는 “연락처 정보”와 같은 항목을 추출하려면 모델을 올바르게 학습시키는 몇 가지 예제가 필요합니다. 대신 “전화”, “메일” 및 “소셜 미디어”와 같은 보다 구체적인 엔터티로 분류하고 모델이 찾은 연락처 정보 유형에 레이블을 지정하도록 합니다.

엔터티를 추출하는 방법

추출 작업을 제출하려면 API에서 실행할 작업을 지정하기 위해 JSON 본문이 필요합니다. 사용자 지정 NER의 경우 JSON 페이로드에 대한 작업은 CustomEntityRecognition입니다.

페이로드는 다음 JSON과 유사하게 표시됩니다.

{
    "displayName": "string",
    "analysisInput": {
        "documents": [
            {
                "id": "doc1", 
                "text": "string"
            },
            {
                "id": "doc2",
                "text": "string"
            }
        ]
    },
    "tasks": [
        {
            "kind": "CustomEntityRecognition",
            "taskName": "MyRecognitionTaskName",
            "parameters": {
            "projectName": "MyProject",
            "deploymentName": "MyDeployment"
            }
        }
    ]
}

프로젝트 제한

Azure AI 언어 서비스는 다음 제한 사항을 적용합니다.

  • 학습 - 10개 이상의 파일, 100,000개 이하의 파일
  • 배포 - 프로젝트당 배포 이름 10개
  • API
    • 작성 - 이 API는 프로젝트를 만들고, 학습하고, 모델을 배포합니다. 분당 10 POST 및 100 GET로 제한됨
    • 분석 - 이 API는 실제로 엔터티를 추출하는 작업을 수행합니다. 작업을 요청하고 결과를 검색합니다. 20 GET 또는 POST로 제한됨
  • 프로젝트 - 프로젝트당 스토리지 계정 1개, 리소스당 프로젝트 500개, 프로젝트당 학습된 모델 50개
  • 엔터티 - 각 엔터티는 최대 500자까지 가능합니다. 최대 200개의 엔터티 형식을 가질 수 있습니다.

자세한 내용은 Azure AI 언어에 대한 서비스 제한 페이지를 참조하세요.