训练医疗保健的实体提取模型

您可以使用 AutoML Entity Extraction for Healthcare 来训练自定义 Healthcare Natural Language 模型。训练模型后,您可以请求通过模型进行预测。当您向模型提交医学文本进行实体提取时,系统就会进行预测。

AutoML 支持以下预测模式:

  • 在线预测 - 您提交一个文档,然后模型同步返回分析结果。
  • 批量预测 - 您提交一批文档,然后模型异步分析这些文档。

启用 AutoML API

在使用 AutoML Entity Extraction for Healthcare 训练模型之前,您必须为您的 Google Cloud 项目启用 AutoML API。

如需启用 AutoML API,请完成以下步骤:

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 创建服务帐号:

    1. 在 Google Cloud 控制台中,转到创建服务帐号页面。

      转到“创建服务帐号”
    2. 选择您的项目。
    3. 服务帐号名称字段中,输入一个名称。Google Cloud 控制台会根据此名称填充服务帐号 ID 字段。

      服务帐号说明字段中,输入说明。例如,Service account for quickstart

    4. 点击创建并继续
    5. Project > Owner 角色授予服务帐号。

      如需授予该角色,请找到选择角色列表,然后选择 Project > Owner

    6. 点击继续
    7. 点击完成以完成服务帐号的创建过程。

      不要关闭浏览器窗口。您将在下一步骤中用到它。

  5. 创建服务帐号密钥:

    1. 在 Google Cloud 控制台中,点击您创建的服务帐号的电子邮件地址。
    2. 点击密钥
    3. 点击添加密钥,然后点击创建新密钥
    4. 点击创建。JSON 密钥文件将下载到您的计算机上。
    5. 点击关闭
  6. 将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为包含凭据的 JSON 文件的路径。 此变量仅适用于当前的 shell 会话,因此,如果您打开新的会话,请重新设置该变量。

  7. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  8. 确保您的 Google Cloud 项目已启用结算功能

  9. 创建服务帐号:

    1. 在 Google Cloud 控制台中,转到创建服务帐号页面。

      转到“创建服务帐号”
    2. 选择您的项目。
    3. 服务帐号名称字段中,输入一个名称。Google Cloud 控制台会根据此名称填充服务帐号 ID 字段。

      服务帐号说明字段中,输入说明。例如,Service account for quickstart

    4. 点击创建并继续
    5. Project > Owner 角色授予服务帐号。

      如需授予该角色,请找到选择角色列表,然后选择 Project > Owner

    6. 点击继续
    7. 点击完成以完成服务帐号的创建过程。

      不要关闭浏览器窗口。您将在下一步骤中用到它。

  10. 创建服务帐号密钥:

    1. 在 Google Cloud 控制台中,点击您创建的服务帐号的电子邮件地址。
    2. 点击密钥
    3. 点击添加密钥,然后点击创建新密钥
    4. 点击创建。JSON 密钥文件将下载到您的计算机上。
    5. 点击关闭
  11. 将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为包含凭据的 JSON 文件的路径。 此变量仅适用于当前的 shell 会话,因此,如果您打开新的会话,请重新设置该变量。

  12. 启用 AutoML Natural Language API。

    启用 API

  13. 安装 Google Cloud CLI。
  14. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init

设置权限

若要训练将 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 界面训练模型

如需使用 AutoML 界面训练模型,请完成以下步骤:

  1. 打开 AutoML Natural Language 界面,然后点击 AutoML Entity Extraction 下的开始使用

    此时会出现数据集页面,其中显示了之前为当前项目创建的数据集的状态。如需使用其他项目的数据集进行训练,请从标题栏右上角的列表中选择项目。

  2. 创建一个数据集,或者选择要用来训练自定义模型的数据集。

    所选数据集的显示名会显示在标题栏中,该页面还会列出数据集中的各个文档及其标签。

  3. 导入一个 CSV 文件,该文件采用结构化的 JSONL 格式列出文本或文档数据集。

  4. 查看数据集后,点击标题栏下的训练标签页。

    如果您要通过此数据集训练第一个模型,则训练页面会提供对此数据集的基本分析,并就其是否适合训练为您提供相关建议。如果 AutoML Natural Language 建议更改,请考虑返回文本项页面并添加文档或标签。

    如果您已通过此数据集训练其他模型,训练页面会显示这些模型的基本评估指标。

  5. 点击开始训练

  6. 输入模型的名称。

    模型名称的长度不得超过 32 个字符,且只能包含字母、数字和下划线。第一个字符必须是字母。

  7. 如果您想自动部署模型,请选择训练完成后部署模型选项。

  8. 选择启用 Healthcare Entity Extraction (Enable Healthcare Entity Extraction) 选项。

  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 界面进行预测

您可以使用 AutoML Entity Extraction for Healthcare 对 Cloud Storage 中的文件或您在 AutoML Natural Language 界面中输入的文本进行预测。

如需使用 AutoML Natural Language 界面进行预测,请完成以下步骤:

  1. 打开 AutoML Natural Language 界面,然后点击模型

  2. 点击要用于分析文档的模型所对应的行。

  3. 点击标题栏下的测试和使用标签页。

  4. 点击选择 Cloud Storage 上的文件,然后输入 PDF 文件的 Cloud Storage 路径,或者点击在下面输入文本,再输入要用于预测的医学文本。

  5. 点击预测

使用 batchPredict 方法进行预测

要使用模型对一批文档进行高吞吐量异步预测,您可以使用 batchPredict 方法。如需使用批量预测方法,请指定指向 Cloud Storage 存储分区中位置的输入和输出 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. 创建一个 JSON 文件,该文件指定了 Cloud Storage 存储桶中 JSONL 输入文件和输出目录的位置。

    {
    "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 界面中的模型页面。

    以下示例显示了使用 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 界面中的模型页面。

    以下示例显示了使用 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 文件包含预测的结果。