ヘルスケア医療機関向けのエンティティ抽出モデルのトレーニング

AutoML Entity Extraction for Healthcare は、カスタムの Healthcare Natural Language モデルのトレーニングを行う出発点として使用できます。モデルをトレーニングしたら、モデルから予測をリクエストできます。エンティティの抽出のため、医療テキストをモデルに送信すると予測が実行されます。

AutoML は、次の予測モードをサポートしています。

  • オンライン予測。単一のドキュメントを送信し、モデルが分析を同期的に行い、結果を返します。
  • バッチ予測。送信されたドキュメントのコレクションをモデルが非同期で分析します。

AutoML API を有効にする

AutoML Entity Extraction for Healthcare を使用してモデルをトレーニングする前に、Google Cloud プロジェクトで AutoML API を有効にする必要があります。

AutoML API を有効にするには、次の操作手順を行います。

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  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. [CREATE] をクリックします。JSON キーファイルがパソコンにダウンロードされます。
    5. [閉じる] をクリックします。
  6. 環境変数 GOOGLE_APPLICATION_CREDENTIALS を、サービス アカウント キーが含まれる JSON ファイルのパスに設定します。 この変数は現在のシェル セッションにのみ適用されるため、新しいセッションを開く場合は、変数を再度設定します。

  7. AutoML Natural Language API を有効にします。

    API を有効にする

  8. Cloud SDK をインストールして初期化します。

権限を設定する

AutoML Entity Extraction for Healthcare を基本モデルとして使用するカスタムモデルをトレーニングするには、healthcare.nlpservce.analyzeEntities 権限のあるサービス アカウントを使用する必要があります。この権限は、healthcare.nlpServiceViewer ロールに含まれています。

このロールを割り当てるには、gcloud projects add-iam-policy-binding コマンドを実行します。

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

モデルのトレーニング

AutoML UI を使用したモデルのトレーニング

AutoML UI を使用してモデルをトレーニングするには、次の操作を手順を行います。

  1. AutoML Natural Language UI を開き、[AutoML Entity Extraction] の [開始] をクリックします。

    [データセット] ページに移動します。現在のプロジェクトでこれまでに作成されたデータセットのステータスが表示されます。別のプロジェクトのデータセットを使用してトレーニングするには、タイトルバーの右上にあるリストからプロジェクトを選択します。

  2. データセットを作成するか、カスタムモデルのトレーニングに使用するデータセットを選択します。

    選択したデータセットの表示名がタイトルバーに表示され、データセット内の個々のドキュメントがラベルと一緒にページに一覧表示されます。

  3. テキストまたはドキュメントのデータセットが構造化 JSONL 形式で記述されているリストする CSV ファイルをインポートします。

  4. データセットを確認したら、タイトルバーの下にある [トレーニング] タブをクリックします。

    このデータセットから最初のモデルをトレーニングすると、トレーニング ページにデータセットの基本的な分析結果が表示され、データセットがトレーニングに適しているかどうかアドバイスを受けられます。AutoML Natural Language によって変更が提案される場合は、[テキスト アイテム] ページに戻ってドキュメントやラベルを追加することを検討してください。

    このデータセットから他のモデルをトレーニングしたことがある場合、トレーニング ページにモデルの基本的な評価指標が表示されます。

  5. [トレーニングを開始] をクリックします。

  6. モデルの名前を入力します。

    モデル名は最大 32 文字で、英字、数字、アンダースコアのみ使用できます。最初の文字は英字でなければなりません。

  7. モデルを自動的にデプロイする場合は、[トレーニング完了後にモデルをデプロイする] オプションを選択します。

  8. [医療エンティティの抽出を有効にする] オプションを選択します。

  9. [トレーニングを開始] をクリックします。

トレーニングには数時間かかることがあります。モデルのトレーニングが完了すると、メールで通知が送信されます。

AutoML API を使用したモデルのトレーニング

AutoML API でモデルをトレーニングするには、projects.locations.models.create メソッドを使用します。

  1. 以下のリクエスト本文を request.json という名前のファイルに保存します。リクエストで次の情報を指定します。

    • DISPLAY_NAME: モデルの表示名
    • DATASET_ID: データセット ID
    {
    "displayName": "DISPLAY_NAME",
    "dataset_id": "DATASET_ID",
    "textExtractionModelMetadata": {
       "model_hint": "healthcare"
    }
    }
    
  2. projects.locations.models.create コマンドを実行します。

    curl

    curl を使用して POST リクエストを行うには、次のコマンドを実行します。

    curl -X POST \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models
    

    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" `
    -InFile request.json `
    -Uri "https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models" | Select-Object -Expand Content
    

    コマンドの出力は次のようになります。オペレーション ID を使用して、タスクのステータスを取得できます。詳しくは、オペレーションのステータスの取得をご覧ください。

    {
      "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
        "createTime": "CREATE_TIME",
        "updateTime": "UPDATE_TIME",
        "cancellable": true
      }
    }
    

予測を行う

AutoML Natural Language UI を使用した予測

AutoML Entity Extraction for Healthcare を使用して、Cloud Storage 内のファイルまたは AutoML Natural Language UI で入力したテキストの予測を行うことができます。

AutoML Natural Language UI を使用して予測を行うには、次の操作を行います。

  1. AutoML Natural Language UI を開き、[モデル] をクリックします。

  2. ドキュメントの分析に使用するモデルの行をクリックします。

  3. タイトルバーの下にある [テストと使用] タブをクリックします。

  4. [Cloud Storage 上のファイルを選択] をクリックし、PDF ファイルの Cloud Storage パスを入力します。または、[以下にテキストを入力] をクリックして、予測に使用する医療テキストを入力します。

  5. [予測] をクリックします。

batchPredict メソッドを使用して予測を行う

モデルを使用して、ドキュメントのコーパスに対して高スループットの非同期予測を行うには、batchPredict メソッドを使用します。バッチ予測メソッドを使用するには、Cloud Storage バケット内の場所を表す入力用の URI と出力用の URI を指定します。

入力用の URI には、分析するコンテンツを含む JSONL ファイルを指定します。出力には、AutoML がバッチ予測の結果を保存する場所を指定します。

batchPredict メソッドを使用して予測を行うには、次の操作を行います。

  1. 分析するコンテンツを含む JSONL ファイルを作成します。インラインで作成するか、Cloud Storage バケットに格納されているファイルへのリンクとして作成します。

    次の例では、JSONL ファイルにインライン コンテンツが含まれています。各項目には一意の ID が含まれています。

    { "id": "0", "text_snippet": { "content": "Insulin regimen human 5 units IV administered.." } }
    { "id": "1", "text_snippet": { "content": "Blood pressure is normal." } }
    ...
    { "id": "n", "text_snippet": { "content": "Pulse: 80. BP: 110/70. Respirations: 16. Temp: 97.4." } }
    

    次のサンプルは、入力ファイルのリンクを含む JSONL ファイルです。このファイルは Cloud Storage バケット内に存在する必要があります。

    { "document": { "input_config": { "gcs_source": { "input_uris": [ "gs://FOLDER/FILENAME1" ] } } } }
    { "document": { "input_config": { "gcs_source": { "input_uris": [ "gs://FOLDER/FILENAME2" ] } } } }
    ...
    
  2. JSONL 入力ファイルの場所と出力ディレクトリを指定する JSON ファイルを作成します。

    {
    "input_config": { "gcs_source": { "input_uris": [ "gs://JSONL_FILE_LOCATION"] } },
    "output_config": { "gcs_destination": { "output_uri_prefix": "gs://OUTPUT_DIR" } }
    }
    
  3. 予測を行うには、batchPredict メソッドを使用します。

    curl

    batchPredict コマンドで、次の置換を行います。

    • REQUEST_FILENAME は、リクエスト JSON ファイルの場所に置き換えます。
    • PROJECT_ID/locations/REGION/models/MODEL_ID は、モデルの完全修飾名に置き換えます。モデル ID を確認するには、AutoML UI の [モデル] ページに移動します。

    次のサンプルは、curl を使用した POST リクエストを示しています。

    curl -X POST \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @REQUEST_FILENAME \
    https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID:batchPredict
    

    コマンドに対するレスポンスは次のサンプルのようになります。

    {
    "name": "projects/824236087934/locations/REGION/operations/MODEL_ID",
    "metadata": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
      "createTime": "CREATE_TIME",
      "updateTime": "UPDATE_TIME",
      "batchPredictDetails": {
        "inputConfig": {
          "gcsSource": {
            "inputUris": [
              "gs://INPUT_URI"
            ]
          }
        }
      }
    }
    }
    

    予測が完了したかどうかを確認するには、次のコマンドを実行します。

    curl -X GET \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: application/json" \
     https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

    次のサンプルのようなレスポンスで、¨done¨: true を探し、オペレーションが完了していることを確認します。

    {
    "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "metadata": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
      "createTime": "CREATE_TIME",
      "updateTime": "UPDATE_TIME",
      "batchPredictDetails": {
        "inputConfig": {
          "gcsSource": {
            "inputUris": [
              "gs://JSONL_FILE_LOCATION"
            ]
          }
        },
        "outputInfo": {
          "gcsOutputDirectory": "gs://OUTPUT_DIRPREDICTION_FILENAME"
        }
      }
    },
    "done": true,
    "response": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.BatchPredictResult"
    }
    }
    

    指定した出力場所に、予測の結果を含む JSONL ファイルが格納されます。

    PowerShell

    batchPredict コマンドで、次の置換を行います。

    • REQUEST_FILENAME は、リクエスト JSON ファイルを保存した場所に置き換えます。
    • PROJECT_ID/locations/REGION/models/MODEL_ID は、モデルの完全修飾名に置き換えます。モデル ID を確認するには、AutoML UI の [モデル] ページに移動します。

    次のサンプルは、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" `
    -InFile REQUEST_FILENAME `
    -Uri "https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID:batchPredict" | Select-Object -Expand Content
    

    コマンドに対するレスポンスは次のサンプルのようになります。

    {
    "name": "projects/824236087934/locations/REGION/operations/MODEL_ID",
    "metadata": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
      "createTime": "CREATE_TIME",
      "updateTime": "UPDATE_TIME",
      "batchPredictDetails": {
        "inputConfig": {
          "gcsSource": {
            "inputUris": [
              "gs://INPUT_URI"
            ]
          }
        }
      }
    }
    }
    

    予測が完了したかどうかを確認するには、次のコマンドを実行します。

    curl -X GET \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: application/json" \
     https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

    次のサンプルのようなレスポンスで、¨done¨: true を探し、オペレーションが完了していることを確認します。

    {
    "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "metadata": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
      "createTime": "CREATE_TIME",
      "updateTime": "UPDATE_TIME",
      "batchPredictDetails": {
        "inputConfig": {
          "gcsSource": {
            "inputUris": [
              "gs://JSONL_FILE_LOCATION"
            ]
          }
        },
        "outputInfo": {
          "gcsOutputDirectory": "gs://OUTPUT_DIRPREDICTION_FILENAME"
        }
      }
    },
    "done": true,
    "response": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.BatchPredictResult"
    }
    }
    

    指定した出力場所に、予測の結果を含む JSONL ファイルが格納されます。