Como treinar modelos de extração de entidades de saúde

A Extração de entidades de Healthcare AutoML oferece um ponto de partida para o treinamento de modelos personalizados de Healthcare Natural Language. Depois de treinar um modelo, é possível solicitar previsões a partir dele. Uma previsão ocorre quando você envia um texto médico ao modelo para extração de entidade.

O AutoML é compatível com os seguintes modos de previsão:

  • Previsão on-line, em que você envia um único documento e o modelo retorna a análise de maneira síncrona.
  • Previsão em lote, em que você envia uma coleção de documentos que o modelo analisa de maneira assíncrona.

Ative a API AutoML

Antes de treinar um modelo usando a Extração de entidades de Healthcare AutoML, é preciso ativar a API AutoML para seu projeto do Google Cloud.

Para ativar a API AutoML, conclua as seguintes etapas:

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Crie uma conta de serviço:

    1. No Console do Google Cloud, acesse a página Criar conta de serviço.

      Acesse "Criar conta de serviço"
    2. Selecione o projeto.
    3. No campo Nome da conta de serviço, insira um nome. O Console do Google Cloud preenche o campo ID da conta de serviço com base nesse nome.

      No campo Descrição da conta de serviço, insira uma descrição. Por exemplo, Service account for quickstart.

    4. Clique em Criar e continuar.
    5. Conceda o papel Project > Owner à conta de serviço do.

      Para conceder o papel, encontre a lista Selecionar um papel e clique em Project > Owner.

    6. Clique em Continuar.
    7. Clique em Concluído para terminar a criação da conta de serviço.

      Não feche a janela do navegador. Você vai usá-la na próxima etapa.

  5. Crie uma chave de conta de serviço:

    1. No console do Google Cloud, clique no endereço de e-mail da conta de serviço que você criou.
    2. Clique em Chaves.
    3. Clique em Adicionar chave e em Criar nova chave.
    4. Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
    5. Clique em Fechar.
  6. Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS como o caminho do arquivo JSON que contém suas credenciais. Essa variável só se aplica à sessão de shell atual. Assim, se você abrir uma nova sessão, precisará definir a variável novamente.

  7. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  8. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  9. Crie uma conta de serviço:

    1. No Console do Google Cloud, acesse a página Criar conta de serviço.

      Acesse "Criar conta de serviço"
    2. Selecione o projeto.
    3. No campo Nome da conta de serviço, insira um nome. O Console do Google Cloud preenche o campo ID da conta de serviço com base nesse nome.

      No campo Descrição da conta de serviço, insira uma descrição. Por exemplo, Service account for quickstart.

    4. Clique em Criar e continuar.
    5. Conceda o papel Project > Owner à conta de serviço do.

      Para conceder o papel, encontre a lista Selecionar um papel e clique em Project > Owner.

    6. Clique em Continuar.
    7. Clique em Concluído para terminar a criação da conta de serviço.

      Não feche a janela do navegador. Você vai usá-la na próxima etapa.

  10. Crie uma chave de conta de serviço:

    1. No console do Google Cloud, clique no endereço de e-mail da conta de serviço que você criou.
    2. Clique em Chaves.
    3. Clique em Adicionar chave e em Criar nova chave.
    4. Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
    5. Clique em Fechar.
  11. Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS como o caminho do arquivo JSON que contém suas credenciais. Essa variável só se aplica à sessão de shell atual. Assim, se você abrir uma nova sessão, precisará definir a variável novamente.

  12. Ative a API AutoML Natural Language.

    Ative a API

  13. Instale a CLI do Google Cloud.
  14. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Configurar permissões

Para treinar modelos personalizados que usam a Extração de entidades de Healthcare AutoML como um modelo base, é necessário usar uma conta de serviço que tenha a permissão healthcare.nlpservce.analyzeEntities. incluída no papel healthcare.nlpServiceViewer.

Para atribuir esse papel, execute o comando gcloud projects add-iam-policy-binding:

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

Como treinar um modelo

Como treinar um modelo usando a interface do usuário do AutoML

Para treinar um modelo usando a IU do AutoML, conclua as etapas a seguir:

  1. Abra a IU do AutoML Natural Language e clique em Primeiros passos em Extração de entidades do AutoML.

    Será exibida a página Conjuntos de dados, que mostra o status de conjuntos de dados criados anteriormente para o projeto atual. Para treinar usando um conjunto de dados para um projeto diferente, selecione o projeto na lista no canto superior direito da barra de título.

  2. Crie um conjunto de dados ou selecione o que você quer usar para treinar o modelo personalizado.

    O nome de exibição do conjunto de dados selecionado é exibido na barra de título, e a página relaciona os documentos individuais no conjunto de dados com os respectivos rótulos.

  3. Importe um arquivo CSV que liste um conjunto de dados de texto ou documentos em um formato JSONL estruturado.

  4. Depois de revisar o conjunto de dados, clique na guia Treinar na barra de título.

    Se você estiver treinando o primeiro modelo desse conjunto de dados, a página de treinamento oferecerá uma análise básica do conjunto de dados e aconselhará se ele é adequado para o treinamento. Se o AutoML Natural Language sugerir alterações, considere retornar à página Itens de texto e adicionar documentos ou rótulos.

    Se você tiver treinado outros modelos a partir desse conjunto de dados, a página de treinamento exibirá as métricas básicas de avaliação desses modelos.

  5. Clique em Iniciar treinamento.

  6. Dê um nome para o modelo.

    O nome do modelo pode ter até 32 caracteres e conter apenas letras, números e sublinhados. O primeiro caractere precisa ser uma letra.

  7. Para implantar o modelo automaticamente, selecione a opção Implantar modelo depois do término do treinamento.

  8. Selecione a opção Ativar extração de entidade de saúde.

  9. Clique em Iniciar treinamento.

O treinamento pode levar várias horas. Após concluir o treinamento do modelo, você receberá uma notificação por e-mail.

Como treinar um modelo usando a API AutoML

Para treinar um modelo da API AutoML, use o método projects.locations.models.create.

  1. Salve o corpo da solicitação abaixo em um arquivo chamado request.json. Forneça as seguintes informações na solicitação:

    • DISPLAY_NAME, um nome de exibição para o modelo.
    • DATASET_ID: o código do conjunto de dados
    {
    "displayName": "DISPLAY_NAME",
    "dataset_id": "DATASET_ID",
    "textExtractionModelMetadata": {
       "model_hint": "healthcare"
    }
    }
    
  2. Execute o comando projects.locations.models.create.

    curl

    Para fazer a solicitação POST usando curl, execute o seguinte 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 fazer a solicitação POST usando o Windows PowerShell, execute o seguinte 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
    

    A saída do comando será semelhante à amostra a seguir. É possível usar o ID da operação para saber o status da tarefa. Para mais informações, consulte Como saber o status de uma operação.

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

Fazer previsões

Como fazer previsões usando a interface do usuário do AutoML Natural Language

É possível usar a Extração de entidades de Healthcare AutoML para fazer previsões em arquivos no Cloud Storage ou texto inserido na IU do AutoML Natural Language.

Para fazer uma previsão usando a interface do usuário do AutoML Natural Language, conclua as seguintes etapas:

  1. Abra a IU do AutoML Natural Language e clique em Modelos.

  2. Clique na linha do modelo que você quer usar para analisar o documento.

  3. Clique na guia Testar e usar abaixo da barra de título.

  4. Clique em Selecionar um arquivo no Cloud Storage e insira o caminho do Cloud Storage para um arquivo PDF ou clique em Inserir texto abaixo e insira o texto médico a ser usado na previsão.

  5. Clique em Previsão.

Como fazer previsões usando o método batchPredict

Para usar seu modelo para fazer a previsão assíncrona de alta capacidade em um corpus de documentos, use o método batchPredict. Para usar o método de previsão em lote, especifique os URIs de entrada e saída que apontam para locais nos buckets do Cloud Storage.

O URI de entrada aponta para um arquivo JSONL que especifica o conteúdo a ser analisado. A saída especifica um local em que o AutoML salva os resultados da previsão em lote.

Para fazer previsões usando o método batchPredict, conclua as etapas a seguir:

  1. Crie um arquivo JSONL que contenha o conteúdo para analisar, inline ou como links para arquivos armazenados em um bucket do Cloud Storage.

    No exemplo a seguir, mostramos o conteúdo inline incluído no arquivo JSONL, com cada item incluindo o ID exclusivo necessário.

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

    Na amostra a seguir, mostramos um arquivo JSONL que contém links para arquivos de entrada, que precisam estar em intervalos do Cloud Storage.

    { "document": { "input_config": { "gcs_source": { "input_uris": [ "gs://FOLDER/FILENAME1" ] } } } }
    { "document": { "input_config": { "gcs_source": { "input_uris": [ "gs://FOLDER/FILENAME2" ] } } } }
    ...
    
  2. Crie um arquivo JSON que especifique o local do arquivo de entrada JSONL e o diretório de saída em um bucket do Cloud Storage.

    {
    "input_config": { "gcs_source": { "input_uris": [ "gs://JSONL_FILE_LOCATION"] } },
    "output_config": { "gcs_destination": { "output_uri_prefix": "gs://OUTPUT_DIR" } }
    }
    
  3. Para fazer previsões, execute o método batchPredict:

    curl

    No comando batchPredict, faça as seguintes substituições:

    • Substitua REQUEST_FILENAME pela localização do arquivo JSON de sua solicitação.
    • Substitua PROJECT_ID/locations/REGION/models/MODEL_ID pelo nome totalmente qualificado do modelo. Para encontrar o ID do modelo, acesse a página Modelos na IU do AutoML.

    O exemplo a seguir mostra uma solicitação POST usando 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
    

    A resposta ao comando é semelhante à amostra a seguir:

    {
    "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 se a previsão foi concluída, execute o seguinte 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
    

    Na resposta, que será semelhante à amostra a seguir, procure ¨done¨: true para confirmar que a operação foi concluída:

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

    No local de saída especificado, um arquivo JSONL contém os resultados das previsões.

    PowerShell

    No comando batchPredict, faça as seguintes substituições:

    • Substitua REQUEST_FILENAME pelo local em que você armazenou o arquivo JSON da solicitação.
    • Substitua PROJECT_ID/locations/REGION/models/MODEL_ID pelo nome totalmente qualificado do modelo. Para encontrar o ID do modelo, acesse a página Modelos na IU do AutoML.

    O exemplo a seguir mostra uma solicitação POST usando o 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
    

    A resposta ao comando é semelhante à amostra a seguir:

    {
    "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 se a previsão foi concluída, execute o seguinte 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
    

    Na resposta, que será semelhante à amostra a seguir, procure ¨done¨: true para confirmar que a operação foi concluída:

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

    No local de saída especificado, um arquivo JSONL contém os resultados das previsões.