Preparar dados de treinamento de texto para classificação

Nesta página, descrevemos como preparar dados de texto para uso em um conjunto de dados da Vertex AI a fim de treinar modelos de classificação de rótulo único e de vários rótulos.

Classificação de rótulo único

Para a classificação de rótulo único, os dados de treinamento consistem nos documentos e na categoria de classificação que se aplicam a esses documentos. A classificação de rótulo único permite que um documento seja atribuído a apenas um rótulo.

Requisitos de dados

  • Você precisa fornecer no mínimo 20 e no máximo 1.000.000 documentos de treinamento.
  • Você precisa fornecer no mínimo 2 e no máximo 5.000 rótulos exclusivos.
  • Cada rótulo precisa ser aplicado a pelo menos dez documentos.
  • Para a classificação de vários rótulos, é possível aplicar um ou vários rótulos a um documento.
  • É possível incluir documentos in-line ou referência em arquivos TXT que estejam em buckets do Cloud Storage.

Práticas recomendadas para dados de texto usados para treinar modelos do AutoML

As recomendações a seguir se aplicam a conjuntos de dados usados para treinar modelos do AutoML.

  • Use dados de treinamento tão variados quanto os dados usados para previsões. Inclua documentos de diversos tamanhos, criados por pessoas diferentes, com palavras ou estilo variados e assim por diante.
  • Use documentos que possam ser facilmente categorizados por uma pessoa. Os modelos do AutoML não podem prever rótulos de categorias que os humanos não podem atribuir. Assim, se uma pessoa não pode ser treinada para atribuir um rótulo lendo um documento, é provável que o modelo também não possa.
  • Forneça o maior número possível de documentos de treinamento por rótulo. No entanto, é possível melhorar a pontuação de confiança do modelo usando mais exemplos por rótulo. Treine um modelo usando 50 exemplos por rótulo e avalie os resultados. Adicione mais exemplos e treine novamente até atingir suas metas de precisão, o que pode exigir centenas ou até 1000 exemplos por rótulos.
  • O modelo funciona melhor quando há no máximo 100 vezes mais documentos para o rótulo mais comum do que para o menos comum. Recomendamos remover rótulos de frequência muito baixa.
  • Considere a inclusão de um rótulo fora do domínio (por exemplo, None_of_the_above) para documentos que não correspondam a nenhum dos rótulos definidos. Por exemplo, se você rotulou apenas documentos sobre artes e entretenimento, mas seu conjunto de dados contém documentos sobre outros assuntos, como esportes ou tecnologia, rotule os documentos sobre outros assuntos como None_of_the_above. Sem esse rótulo, o modelo treinado tentará atribuir todos os documentos a um dos rótulos definidos, mesmo os documentos para os quais esses rótulos são inadequados.
  • Se você tiver um grande número de documentos que não correspondem atualmente seus rótulos, filtre-os para que seu modelo não desvie previsões para um rótulo fora do domínio. Por exemplo, é possível ter um modelo de filtragem que prevê se um documento se encaixa no conjunto atual de rótulos ou está fora do domínio. Depois de filtrar, você teria outro modelo que classifica somente documentos no domínio.

Arquivos de entrada

A classificação de rótulo único é compatível com linhas JSON ou arquivos de entrada CSV. É possível especificar apenas um rótulo (anotação) para um determinado documento. As seções a seguir descrevem os arquivos de entrada e fornecem exemplos para cada tipo de arquivo.

Linhas JSON

O formato, os nomes de campo, os tipos de valor para arquivos linhas JSON são determinados por um arquivo de esquema, que é um arquivo YAML acessível publicamente.

É possível fazer o download do arquivo de esquema para classificação de rótulo único no seguinte local do Cloud Storage:
gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_single_label_io_format_1.0.0.yaml

Exemplo de linhas JSON

O exemplo a seguir mostra como é possível usar o esquema para criar seu próprio arquivo de linhas JSON. O exemplo inclui quebras de linha para facilitar a leitura. Nos arquivos JSON, inclua quebras de linha somente após cada documento. O campo dataItemResourceLabels especifica, por exemplo, ml_use e é opcional.

{
  "classificationAnnotation": {
    "displayName": "label"
  },
  "textContent": "inline_text",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}
{
  "classificationAnnotation": {
    "displayName": "label2"
  },
  "textGcsUri": "gcs_uri_to_file",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}

CSV

Cada linha em um arquivo CSV refere-se a um único documento. No exemplo a seguir, mostramos o formato geral de um arquivo CSV válido. A coluna ml_use é opcional.

[ml_use],gcs_file_uri|"inline_text",label

O snippet a seguir é um exemplo de arquivo CSV de entrada.

test,gs://path_to_file,label1
test,"inline_text",label2
training,gs://path_to_file,label3
validation,gs://path_to_file,label1

Classificação de vários rótulos

Para a classificação de vários rótulos, os dados de treinamento consistem nos documentos e nas categorias de classificação que se aplicam a eles. A classificação de vários rótulos permite que um documento seja atribuído a um ou mais rótulos.

Requisitos de dados

  • Você precisa fornecer no mínimo 20 e no máximo 1.000.000 documentos de treinamento.
  • Você precisa fornecer no mínimo 2 e no máximo 5.000 rótulos exclusivos.
  • Cada rótulo precisa ser aplicado a pelo menos dez documentos.
  • Para a classificação de vários rótulos, é possível aplicar um ou vários rótulos a um documento.
  • É possível incluir documentos in-line ou referência em arquivos TXT que estejam em buckets do Cloud Storage.

Práticas recomendadas para dados de texto usados para treinar modelos do AutoML

As recomendações a seguir se aplicam a conjuntos de dados usados para treinar modelos do AutoML.

  • Use dados de treinamento tão variados quanto os dados usados para previsões. Inclua documentos de diversos tamanhos, criados por pessoas diferentes, com palavras ou estilo variados e assim por diante.
  • Use documentos que possam ser facilmente categorizados por uma pessoa. Os modelos do AutoML não podem prever rótulos de categorias que os humanos não podem atribuir. Assim, se uma pessoa não pode ser treinada para atribuir um rótulo lendo um documento, é provável que o modelo também não possa.
  • Ao usar a classificação com vários rótulos, aplique todos os rótulos relevantes a cada documento. Por exemplo, se você estiver rotulando documentos que fornecem detalhes sobre produtos farmacêuticos, talvez tenha um documento rotulado com Dosage e Side Effects.
  • Forneça o maior número possível de documentos de treinamento por rótulo. No entanto, é possível melhorar a pontuação de confiança do modelo usando mais exemplos por rótulo. Melhores pontuações de confiança são especialmente úteis quando o modelo retorna vários rótulos ao classificar um documento. Treine um modelo usando 50 exemplos por rótulo e avalie os resultados. Adicione mais exemplos e treine novamente até atingir suas metas de precisão, o que pode exigir centenas ou até 1000 exemplos por rótulos.
  • O modelo funciona melhor quando há no máximo 100 vezes mais documentos para o rótulo mais comum do que para o menos comum. Recomendamos remover rótulos de frequência muito baixa.
  • Considere a inclusão de um rótulo fora do domínio (por exemplo, None_of_the_above) para documentos que não correspondam a nenhum dos rótulos definidos. Por exemplo, se você rotulou apenas documentos sobre artes e entretenimento, mas seu conjunto de dados contém documentos sobre outros assuntos, como esportes ou tecnologia, rotule os documentos sobre outros assuntos como None_of_the_above. Sem esse rótulo, o modelo treinado tentará atribuir todos os documentos a um dos rótulos definidos, mesmo os documentos para os quais esses rótulos são inadequados.
  • Se você tiver um grande número de documentos que não correspondem atualmente seus rótulos, filtre-os para que seu modelo não desvie previsões para um rótulo fora do domínio. Por exemplo, é possível ter um modelo de filtragem que prevê se um documento se encaixa no conjunto atual de rótulos ou está fora do domínio. Depois de filtrar, você teria outro modelo que classifica somente documentos no domínio.

Arquivos de entrada

A classificação de vários rótulos é compatível com linhas JSON ou arquivos de entrada CSV. É possível especificar mais de um rótulo (anotação) para um determinado documento. As seções a seguir descrevem os arquivos de entrada e fornecem exemplos para cada tipo de arquivo.

Linhas JSON

O formato, os nomes de campo, os tipos de valor para arquivos de linhas JSON são determinados por um arquivo de esquema, que é um arquivo YAML acessível publicamente.

É possível fazer o download do arquivo de esquema para a classificação de vários rótulos no seguinte local do Cloud Storage:
gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_multi_label_io_format_1.0.0.yaml (em inglês)

Exemplo de linhas JSON

O exemplo a seguir mostra como é possível usar o esquema para criar seu próprio arquivo de linhas JSON. O exemplo inclui quebras de linha para facilitar a leitura. Nos arquivos JSON, inclua quebras de linha somente após cada documento. O campo dataItemResourceLabels especifica, por exemplo, ml_use e é opcional.

{
  "classificationAnnotations": [{
    "displayName": "label1"
    },{
    "displayName": "label2"
  }],
  "textGcsUri": "gcs_uri_to_file",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}
{
  "classificationAnnotations": [{
    "displayName": "label2"
    },{
    "displayName": "label3"
  }],
  "textContent": "inline_text",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}

CSV

Cada linha em um arquivo CSV refere-se a um único documento. No exemplo a seguir, mostramos o formato geral de um arquivo CSV válido. A coluna ml_use é opcional.

[ml_use],gcs_file_uri|"inline_text",label1,label2,...

O snippet a seguir é um exemplo de arquivo CSV de entrada.

test,gs://path_to_file,label1,label2
test,"inline_text",label3
training,gs://path_to_file,label1,label2,label3
validation,gs://path_to_file,label4,label5