Entrena modelos de extracción de entidades para el cuidado de la salud

AutoML Entity Extraction for Healthcare te proporciona un punto de partida para entrenar modelos personalizados de Healthcare Natural Language. Después de entrenar un modelo, puedes solicitar predicciones del modelo. Una predicción ocurre cuando envías texto médico al modelo para la extracción de entidades.

AutoML admite los siguientes modos de predicción:

  • Predicción en línea, en la que envías un solo documento y el modelo muestra el análisis de forma síncrona.
  • Predicción por lotes, en la que envías una colección de documentos que el modelo analiza de forma asíncrona.

Habilitar la API de AutoML

Antes de entrenar un modelo con AutoML Entity Extraction for Healthcare, debes habilitar la API de AutoML para tu proyecto de Google Cloud.

Para habilitar la API de AutoML, completa los siguientes pasos:

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Crear una cuenta de servicio:

    1. En la consola de Google Cloud, ve a la página Crear cuenta de servicio.

      Ve a Crear cuenta de servicio
    2. Elige tu proyecto.
    3. Ingresa un nombre en el campo Nombre de cuenta de servicio. La consola de Google Cloud completa el campo ID de cuenta de servicio en función de este nombre.

      Opcional: en el campo Descripción de la cuenta de servicio, ingresa una descripción. Por ejemplo, Service account for quickstart.

    4. Haz clic en Crear y continuar.
    5. Otorga el rol Project > Owner a la cuenta de servicio.

      Para otorgar el rol, busca la lista Seleccionar un rol y, luego, selecciona Project > Owner.

    6. Haga clic en Continuar.
    7. Haz clic en Listo para terminar de crear la cuenta de servicio.

      No cierres la ventana del navegador. La usarás en la próxima tarea.

  5. Haz lo siguiente para crear una clave de cuenta de servicio:

    1. En la consola de Google Cloud, haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
    2. Haga clic en Claves.
    3. Haz clic en Agregar clave y, luego, en Crear clave nueva.
    4. Haga clic en Crear. Se descargará un archivo de claves JSON en tu computadora.
    5. Haga clic en Cerrar.
  6. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta del archivo JSON que contiene tus credenciales. Esta variable solo se aplica a la sesión actual de Cloud Shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

  7. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  8. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  9. Crear una cuenta de servicio:

    1. En la consola de Google Cloud, ve a la página Crear cuenta de servicio.

      Ve a Crear cuenta de servicio
    2. Elige tu proyecto.
    3. Ingresa un nombre en el campo Nombre de cuenta de servicio. La consola de Google Cloud completa el campo ID de cuenta de servicio en función de este nombre.

      Opcional: en el campo Descripción de la cuenta de servicio, ingresa una descripción. Por ejemplo, Service account for quickstart.

    4. Haz clic en Crear y continuar.
    5. Otorga el rol Project > Owner a la cuenta de servicio.

      Para otorgar el rol, busca la lista Seleccionar un rol y, luego, selecciona Project > Owner.

    6. Haga clic en Continuar.
    7. Haz clic en Listo para terminar de crear la cuenta de servicio.

      No cierres la ventana del navegador. La usarás en la próxima tarea.

  10. Haz lo siguiente para crear una clave de cuenta de servicio:

    1. En la consola de Google Cloud, haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
    2. Haga clic en Claves.
    3. Haz clic en Agregar clave y, luego, en Crear clave nueva.
    4. Haga clic en Crear. Se descargará un archivo de claves JSON en tu computadora.
    5. Haga clic en Cerrar.
  11. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta del archivo JSON que contiene tus credenciales. Esta variable solo se aplica a la sesión actual de Cloud Shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

  12. Habilita la API de AutoML Natural Language.

    Habilita la API

  13. Instala Google Cloud CLI.
  14. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init

Configura los permisos

A fin de entrenar modelos personalizados que usen AutoML Entity Extraction for Healthcare como modelo base, debes usar una cuenta de servicio que tenga el permiso healthcare.nlpservce.analyzeEntities. que se incluye en la función healthcare.nlpServiceViewer.

Para asignar esta función, ejecuta el comando gcloud projects add-iam-policy-binding:

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

Entrena un modelo

Entrenar un modelo mediante la IU de AutoML

Para entrenar un modelo con la IU de AutoML, completa los siguientes pasos:

  1. Abre la IU de AutoML Natural Language y, luego, haz clic en Comenzar en AutoML Entity Extraction.

    Aparece la página Conjuntos de datos, que muestra el estado de los conjuntos de datos creados anteriormente para el proyecto actual. Para entrenar con un conjunto de datos de un proyecto diferente, selecciona el proyecto de la lista ubicada en la esquina superior derecha de la barra de título.

  2. Crea un conjunto de datos o selecciona el conjunto de datos que deseas usar para entrenar el modelo personalizado.

    El nombre visible del conjunto de datos seleccionado aparece en la barra de título y, en la página, se muestran los documentos individuales del conjunto de datos junto con sus etiquetas.

  3. Importa un archivo CSV que enumere un conjunto de datos de texto o documentos en un formato JSONL estructurado.

  4. Después de revisar el conjunto de datos, haz clic en la pestaña Entrenar en la barra de título.

    Si entrenas el primer modelo de este conjunto de datos, la página de entrenamiento proporciona un análisis básico del conjunto de datos y te aconseja si es adecuado para el entrenamiento. Si AutoML Natural Language sugiere cambios, considera volver a la página de Elementos de texto y agregar documentos o etiquetas.

    Si ya entrenaste otros modelos de este conjunto de datos, la página de entrenamiento muestra las métricas de evaluación básicas para esos modelos.

  5. Haga clic en Comenzar entrenamiento.

  6. Ingresa un nombre para el modelo.

    El nombre del modelo puede tener hasta 32 caracteres y contener solo letras, números y guiones bajos. El primer carácter debe ser una letra.

  7. Si quieres implementar el modelo automáticamente, selecciona la opción Implementar el modelo después de finalizar el entrenamiento.

  8. Selecciona la opción Habilitar Entity Extraction.

  9. Haga clic en Comenzar entrenamiento.

El entrenamiento puede tardar varias horas. Una vez que tu modelo esté entrenado, recibirás una notificación por correo electrónico.

Entrenar un modelo mediante la API de AutoML

Para entrenar un modelo de la API de AutoML, usa el método projects.locations.models.create.

  1. Guarda el cuerpo de la solicitud que aparece a continuación en un archivo llamado request.json. Proporciona la siguiente información en la solicitud:

    • DISPLAY_NAME, un nombre visible para el modelo
    • DATASET_ID: El ID del conjunto de datos.
    {
    "displayName": "DISPLAY_NAME",
    "dataset_id": "DATASET_ID",
    "textExtractionModelMetadata": {
       "model_hint": "healthcare"
    }
    }
    
  2. Ejecuta el comando projects.locations.models.create.

    curl

    Para realizar la solicitud POST mediante curl, ejecuta el siguiente comando:

    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

    Para realizar la solicitud POST mediante Windows PowerShell, ejecuta el siguiente comando:

    $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
    

    El resultado del comando debe ser similar al siguiente ejemplo. Puedes usar el ID de operación para obtener el estado de la tarea. Para obtener más información, consulta Obtén el estado de una operación.

    {
      "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
      }
    }
    

Realizar predicciones

Realiza predicciones mediante la IU de AutoML Natural Language

Puedes usar AutoML Entity Extraction for Healthcare a fin de realizar predicciones sobre archivos en Cloud Storage o texto que ingreses en la IU de AutoML Natural Language.

Para realizar una predicción con la IU de AutoML Natural Language, sigue estos pasos:

  1. Abre la IU de AutoML Natural Language y haz clic en Modelos.

  2. Haz clic en la fila del modelo que deseas utilizar para analizar el documento.

  3. Haz clic en la pestaña Test & Use (Prueba y uso) que se encuentra debajo de la barra de título.

  4. Haz clic en Seleccionar un archivo en Cloud Storage y, luego, ingresa la ruta de Cloud Storage para un archivo PDF, o haz clic en Ingresar texto a continuación y, luego, ingresa texto médico para usar con la predicción.

  5. Haz clic en Predecir.

Realiza predicciones mediante el método batchPredict

A fin de usar tu modelo para realizar predicciones asíncronas con una capacidad de procesamiento alta en un corpus de documentos, puedes usar el método batchPredict. Para usar el método de predicción por lotes, especifica los URI de entrada y salida que apuntan a ubicaciones en los buckets de Cloud Storage.

El URI de entrada apunta a un archivo JSONL que especifica el contenido que se analizará. El resultado especifica una ubicación en la que AutoML guarda los resultados de la predicción por lotes.

Para realizar predicciones con el método batchPredict, sigue estos pasos:

  1. Crea un archivo JSONL que tenga el contenido que se va a analizar, ya sea intercalado o como vínculos a archivos almacenados en un bucket de Cloud Storage.

    En el siguiente ejemplo, se muestra contenido intercalado que se incluye en el archivo JSONL, cada elemento con el ID único requerido.

    { "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." } }
    

    En el siguiente ejemplo, se muestra un archivo JSONL que contiene vínculos a archivos de entrada, que deben estar en depósitos de Cloud Storage.

    { "document": { "input_config": { "gcs_source": { "input_uris": [ "gs://FOLDER/FILENAME1" ] } } } }
    { "document": { "input_config": { "gcs_source": { "input_uris": [ "gs://FOLDER/FILENAME2" ] } } } }
    ...
    
  2. Crea un archivo JSON que especifique la ubicación del archivo de entrada JSONL y el directorio de salida en un bucket de Cloud Storage.

    {
    "input_config": { "gcs_source": { "input_uris": [ "gs://JSONL_FILE_LOCATION"] } },
    "output_config": { "gcs_destination": { "output_uri_prefix": "gs://OUTPUT_DIR" } }
    }
    
  3. Para realizar predicciones, ejecuta el método batchPredict:

    curl

    En el comando batchPredict, realiza las siguientes sustituciones:

    • Reemplaza REQUEST_FILENAME por la ubicación de tu archivo JSON de solicitud.
    • Reemplaza PROJECT_ID/locations/REGION/models/MODEL_ID por el nombre completamente calificado de tu modelo. Para encontrar el ID del modelo, ve a la página Modelos en la IU de AutoML.

    En el siguiente ejemplo, se muestra una solicitud POST mediante curl:

    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
    

    La respuesta al comando es similar a la siguiente muestra:

    {
    "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"
            ]
          }
        }
      }
    }
    }
    

    Para verificar si se completó la predicción, ejecuta el siguiente comando:

    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
    

    En la respuesta, que será similar a la siguiente muestra, busca ¨done¨: true para confirmar que la operación se haya completado:

    {
    "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"
    }
    }
    

    En la ubicación de salida que especificaste, un archivo JSONL contiene los resultados de las predicciones.

    PowerShell

    En el comando batchPredict, realiza las siguientes sustituciones:

    • Reemplaza REQUEST_FILENAME por la ubicación en la que almacenaste el archivo JSON de la solicitud.
    • Reemplaza PROJECT_ID/locations/REGION/models/MODEL_ID por el nombre completamente calificado de tu modelo. Para encontrar el ID del modelo, ve a la página Modelos en la IU de AutoML.

    En el siguiente ejemplo, se muestra una solicitud mediante Windows PowerShell.

    $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
    

    La respuesta al comando es similar a la siguiente muestra:

    {
    "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"
            ]
          }
        }
      }
    }
    }
    

    Para verificar si se completó la predicción, ejecuta el siguiente comando:

    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
    

    En la respuesta, que será similar a la siguiente muestra, busca ¨done¨: true para confirmar que la operación se haya completado:

    {
    "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"
    }
    }
    

    En la ubicación de salida que especificaste, un archivo JSONL contiene los resultados de las predicciones.