Healthcare Natural Language API 사용

이 페이지에서는 Healthcare Natural Language API를 사용 설정하고, 권한을 구성하고, analyzeEntities 메서드를 호출하여 의료 텍스트의 유용한 의료 정보를 추출하는 방법을 설명합니다.

개요

Healthcare Natural Language API는 의료 텍스트에서 유용한 정보를 도출하는 머신러닝 솔루션을 제공합니다. Healthcare Natural Language API는 Cloud Healthcare API의 일부입니다. Healthcare Natural Language API의 개요는 Healthcare Natural Language API 개념 문서를 참조하세요.

Healthcare Natural Language API는 의료 레코드 또는 보험금 청구와 같은 구조화되지 않은 의료 텍스트를 파싱합니다. 그런 다음 다운스트림 분석 및 자동화를 위해 이러한 데이터 소스에 저장된 의학 지식 항목의 구조화된 데이터 표현을 생성합니다. 관련 예시는 아래와 같습니다.

  • 질병, 약물, 의료기기, 시술, 임상 관련 속성 등의 의학 개념에 대한 정보 추출
  • RxNorm, ICD-10, MeSH, SNOMED CT(미국 사용자만 해당)와 같은 일반적인 의학 용어에 의료 개념 매핑
  • 텍스트에서 유용한 의학 정보를 추출하여 Google Cloud의 데이터 분석 제품과 통합

사용 가능한 위치

Healthcare Natural Language API는 다음 위치에서 사용할 수 있습니다.

위치 이름 위치 설명
us-central1 미국 아이오와주
europe-west4 네덜란드

Healthcare Natural Language API 사용 설정

Healthcare Natural Language API를 사용하기 전에 Google Cloud 프로젝트에 API를 사용 설정해야 합니다. Cloud Healthcare API 기능을 사용 설정하거나 사용하지 않고도 Healthcare Natural Language API를 사용할 수 있습니다.

API를 사용 설정하려면 다음 단계를 완료하세요.

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. 서비스 계정을 만듭니다.

    1. Cloud Console에서 서비스 계정 만들기 페이지로 이동합니다.

      서비스 계정 만들기로 이동
    2. 프로젝트를 선택합니다.
    3. 서비스 계정 이름 필드에 이름을 입력합니다. Cloud Console은 이 이름을 기반으로 서비스 계정 ID 필드를 채웁니다.

      서비스 계정 설명 필드에 설명을 입력합니다. 예를 들면 Service account for quickstart입니다.

    4. 만들기를 클릭합니다.
    5. 역할 선택 필드를 클릭합니다.

      빠른 액세스에서 기본을 클릭한 후 소유자를 클릭합니다.

    6. 계속을 클릭합니다.
    7. 완료를 클릭하여 서비스 계정 만들기를 마칩니다.

      브라우저 창을 닫지 마세요. 다음 단계에서 사용합니다.

  5. 서비스 계정 키 만들기

    1. Cloud Console에서 만든 서비스 계정의 이메일 주소를 클릭합니다.
    2. 를 클릭합니다.
    3. 키 추가를 클릭한 후 새 키 만들기를 클릭합니다.
    4. 만들기를 클릭합니다. JSON 키 파일이 컴퓨터에 다운로드됩니다.
    5. 닫기를 클릭합니다.
  6. GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 서비스 계정 키가 포함된 JSON 파일의 경로로 설정합니다. 이 변수는 현재 셸 세션에만 적용되므로, 새 세션을 열 경우, 변수를 다시 설정합니다.

  7. Cloud Healthcare API를 사용 설정합니다.

    API 사용 설정

  8. Cloud SDK 설치 및 초기화

권한 설정

이 가이드의 기능을 사용하려면 healthcare.nlpServiceViewer 역할에 포함된 healthcare.nlpservce.analyzeEntities 권한이 있어야 합니다.

이 역할을 할당하려면 gcloud projects add-iam-policy-binding 명령어를 실행합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member serviceAccount:SERVICE_ACCOUNT_ID \
    --role roles/healthcare.nlpServiceViewer

항목, 관계 및 컨텍스트 속성 추출

Healthcare Natural Language API는 컨텍스트 인식 모델을 사용하여 의료 항목, 관계, 컨텍스트 속성을 추출합니다. 각 텍스트 항목은 의학 사전 항목으로 추출됩니다. 의학 텍스트에 이와 같은 수준의 유용한 의학 정보를 추출하려면 projects.locations.services.nlp.analyzeEntities 메서드를 사용합니다.

Healthcare Natural Language API를 사용하여 의료 텍스트에서 유용한 의학 정보를 추출하려면 POST 요청을 실행하고 요청에서 다음 정보를 지정합니다.

  • 상위 서비스의 이름(프로젝트 ID 및 위치 포함)
  • 대상 텍스트입니다. 최대 크기는 10,000개의 유니코드 문자입니다.

curl

다음 샘플은 curl을 사용하는 POST 요청을 보여줍니다.

curl -X POST \
   -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
   -H "Content-Type:application/json" \
   --data "{
    'nlpService':'projects/PROJECT_ID/locations/LOCATION/services/nlp',
    'documentContent':'Insulin regimen human 5 units IV administered.'
   }" \
   "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"

PowerShell

다음 샘플은 Windows PowerShell을 사용하는 POST 요청을 보여줍니다.

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
    'nlpService':'projects/PROJECT_ID/locations/LOCATION/services/nlp',
    'documentContent':'Insulin regimen human 5 units IV administered.'
   }" `
   -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"  | Select-Object -Expand Content

요청이 성공하면 응답에 다음 정보가 포함됩니다.

  • 인식된 의학 지식 항목
  • 기능적 특징
  • 인식된 항목 간의 관계
  • 문맥 속성
  • 의학 지식 항목을 표준 용어로 매핑

지원되는 항목, 속성, 관계 유형 목록은 Healthcare Natural Language API 개념 문서를 참조하세요.

앞의 샘플의 다음 응답에서는 NCI 용어 시스템에 코드 C581가 있는 항목인 치료용 인슐린을 약물로 식별했습니다. 응답에는 응답에 할당된 신뢰도 점수도 포함됩니다. 응답 필드에 대한 자세한 내용은 analyzeEntities 문서를 참조하세요.

{
  "entityMentions": [
    {
      "mentionId": "1",
      "type": "MEDICINE",
      "text": {
        "content": "Insulin regimen human"
      },
      "linkedEntities": [
        {
          "entityId": "UMLS/3537244"
        },
        {
          "entityId": "UMLS/3714501"
        },
        {
          "entityId": "UMLS/21641"
        },
        {
          "entityId": "UMLS/795635"
        },
        {
          "entityId": "UMLS/1533581"
        },
        {
          "entityId": "UMLS/4721402"
        }
      ],
      "temporalAssessment": {
        "value": "CURRENT",
        "confidence": 0.87631082534790039
      },
      "certaintyAssessment": {
        "value": "LIKELY",
        "confidence": 0.9999774694442749
      },
      "subject": {
        "value": "PATIENT",
        "confidence": 0.99999970197677612
      },
      "confidence": 0.41636556386947632
    },
    {
      "mentionId": "2",
      "type": "MED_DOSE",
      "text": {
        "content": "5 units",
        "beginOffset": 22
      },
      "confidence": 0.56910794973373413
    },
    {
      "mentionId": "3",
      "type": "MED_ROUTE",
      "text": {
        "content": "IV",
        "beginOffset": 30
      },
      "linkedEntities": [
        {
          "entityId": "UMLS/348016"
        }
      ],
      "confidence": 0.9180646538734436
    }
  ],
  "entities": [
    {
      "entityId": "UMLS/1533581",
      "preferredTerm": "Therapeutic Insulin",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "NCI/C581"
      ]
    },
    {
      "entityId": "UMLS/21641",
      "preferredTerm": "Insulin",
      "vocabularyCodes": [
        "FMA/83365",
        "LNC/LA15805-7",
        "LNC/LP14676-8",
        "LNC/LP16325-0",
        "LNC/LP32542-0",
        "LNC/LP70329-5",
        "LNC/MTHU002108",
        "LNC/MTHU019392",
        "MSH/D007328",
        "MTH/NOCODE"
      ]
    },
    {
      "entityId": "UMLS/348016",
      "preferredTerm": "Intravenous",
      "vocabularyCodes": [
        "LNC/LA9437-0",
        "LNC/LP32453-0",
        "MTH/NOCODE",
        "NCI/C13346"
      ]
    },
    {
      "entityId": "UMLS/3537244",
      "preferredTerm": "Insulins",
      "vocabularyCodes": [
        "MSH/D061385",
        "MTH/NOCODE"
      ]
    },
    {
      "entityId": "UMLS/3714501",
      "preferredTerm": "Insulin Drug Class",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "VANDF/4021631"
      ]
    },
    {
      "entityId": "UMLS/4721402",
      "preferredTerm": "INS protein, human",
      "vocabularyCodes": [
        "MTH/NOCODE",
        "NCI/C2271"
      ]
    },
    {
      "entityId": "UMLS/795635",
      "preferredTerm": "insulin, regular, human",
      "vocabularyCodes": [
        "LNC/LP17001-6",
        "MSH/D061386",
        "MTH/NOCODE",
        "NCI/C29125",
        "RXNORM/253182",
        "VANDF/4017559",
        "VANDF/4017569",
        "VANDF/4019786"
      ]
    }
  ],
  "relationships": [
    {
      "subjectId": "1",
      "objectId": "2",
      "confidence": 0.53775161504745483
    },
    {
      "subjectId": "1",
      "objectId": "3",
      "confidence": 0.95007365942001343
    }
  ]
}