Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Para treinar seu modelo personalizado, forneça amostras representativas dos tipos de documentos que serão analisados, rotulados da maneira como o AutoML Natural Language precisa rotular documentos semelhantes. A qualidade dos dados de treinamento tem forte impacto sobre a eficácia do modelo criado e, por consequência, sobre a qualidade das predições retornadas pelo modelo.
Como coletar e rotular documentos de treinamento
A primeira etapa é coletar um conjunto diversificado de documentos de treinamento que reflita o intervalo de documentos que você quer processar com o modelo personalizado. As etapas de preparação para documentos de treinamento variam de acordo com o treinamento de um modelo para classificação, extração de entidade ou análise de sentimento.
Classificação
Para modelos de classificação, os dados de treinamento consistem nos documentos e nas categorias de classificação que se aplicam a eles.
Documentos. Forneça o mínimo de 20 e o máximo de 1 milhão de documentos de treinamento com o conteúdo a ser usado para treinar seu modelo personalizado.
Os documentos podem estar no formato de texto, PDF, TIFF ou compactados em um arquivo ZIP.
Rótulos de categoria. 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.
Como fornecer dados de treinamento de qualidade
Procure fazer com que seus dados de treinamento sejam tão variados quanto os dados usados para previsões. Inclua documentos de diferentes tamanhos, criados por pessoas diferentes, com palavras ou estilo variados e assim por diante.
Use documentos que possam ser categorizados facilmente por um leitor humano.
Em geral, os modelos da Natural Language API do AutoML não podem prever rótulos que seres humanos não são capazes de atribuir. Assim, se um humano não puder ser treinado 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 rótulos para Dosage e Side Effects.
Se um documento incluir os dois tipos de informação, aplique os dois rótulos.
Recomendamos fornecer o máximo possível de documentos de treinamento por rótulo. O número mínimo de documentos por rótulo é 10. 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 rótulo menos comum. Recomendamos remover rótulos de frequência muito baixa.
Considere a inclusão de um rótulo 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.
Use um rótulo com um nome diferente que tenha o mesmo significado que None_of_the_above.
Veja a próxima seção se você tiver muito conteúdo None_of_the_above.
Como lidar com documentos "fora do domínio"
Suponha que seu plano de longo prazo seja treinar um modelo que classifica documentos corporativos com base no tipo de documento deles: fatura, plano de negócios, documento de política, contrato de não divulgação etc. Há milhares de tipos de documentos, mas, para fins de teste, você começa treinando um modelo que identifica 100 tipos, com planos de treinar modelos mais abrangentes no futuro. Durante esse estágio inicial, a maioria dos documentos enviados para classificação estará "fora do domínio" do conjunto de rótulos inicial, ou seja, serão tipos de documentos fora dos 100 tipos iniciais. Se você treinar um modelo com os 100 rótulos iniciais e usá-lo com todos os seus documentos, o modelo tentará classificar os documentos "fora do domínio" usando um dos rótulos atuais, tornando-o menos preciso.
Em situações em que você espera que seu conjunto de rótulos se expanda ao longo do tempo, recomendamos treinar dois modelos usando o conjunto de rótulos menor inicial:
Modelo de classificação: um modelo que classifica documentos no conjunto atual de rótulos
Modelo de filtragem: um modelo que prevê se um documento se enquadra no conjunto atual de rótulos ou se está "fora do domínio"
Envie primeiro cada documento para o modelo de filtragem e só envie documentos para o modelo de classificação que estejam "no domínio".
Com o exemplo descrito acima, o modelo de classificação identifica o tipo de documento e o modelo de filtragem faz uma previsão binária sobre se um documento pertence a qualquer um dos 100 tipos rotulados no modelo de classificação.
Para treinar o modelo de filtragem, use o mesmo conjunto de documentos usado para o modelo de classificação. A exceção é que você vai rotular cada documento como “no domínio” em vez de usar um rótulo específico do seu conjunto. Adicione um número equivalente de documentos para os quais o conjunto de rótulos atual não é apropriado e os rotule como "fora do domínio".
Extração de entidade
Para treinar um modelo de extração de entidade, forneça amostras representativas do tipo de conteúdo a ser analisado, anotado com rótulos que identificam os tipos de entidades que o AutoML Natural Language precisa identificar.
Você fornece entre 50 e 100 mil documentos para treinar seu modelo personalizado.
Use entre um e 100 rótulos exclusivos para anotar as entidades que você quer que o modelo aprenda a extrair. Cada anotação é um período de texto e um rótulo associado.
Os nomes dos rótulos podem ter entre dois e 30 caracteres e podem ser usados para anotar entre uma e dez palavras. Recomendamos o uso de cada rótulo pelo menos 200 vezes em seu conjunto de dados de treinamento.
Se você estiver anotando um tipo de documento estruturado ou semiestruturado, como faturas ou contratos, o AutoML Natural Language poderá considerar a posição de uma anotação na página como um fator que contribua para o rótulo adequado. Por exemplo, um contrato imobiliário tem uma data de aceitação e uma data de encerramento, e o AutoML Natural Language pode aprender a diferenciar as entidades com base na posição espacial da anotação.
Como formatar documentos de treinamento
Você faz upload dos dados de treinamento para o AutoML Natural Language como arquivos JSONL (em inglês) que contêm os documentos de amostra. Cada linha no arquivo é um único documento de treinamento, especificado de uma destas duas maneiras:
O conteúdo completo do documento, entre dez e dez mil bytes de comprimento, codificado em UTF-8
O URI de um arquivo PDF ou TIFF de um bucket do Cloud Storage associado ao seu projeto
A consideração da posição espacial está disponível apenas para documentos de treinamento no formato PDF.
É possível anotar os documentos de texto de três maneiras:
Anote os arquivos JSONL diretamente antes de fazer upload deles.
Adicione anotações na interface do usuário do AutoML Natural Language após o upload de documentos não anotados.
É possível combinar as duas primeiras opções fazendo upload de arquivos JSONL rotulados e modificando-os na interface do usuário.
Somente é possível fazer anotações em arquivos PDF usando a interface do usuário do AutoML Natural Language.
Documentos JSONL
Para ajudá-lo a criar arquivos de treinamento em JSONL, o AutoML Natural Language oferece um script Python que converte arquivos de texto simples em arquivos JSONL formatados adequadamente. Veja os detalhes nos comentários do script.
Cada documento no arquivo JSONL tem um destes formatos:
Cada documento precisa ser uma linha no arquivo JSONL. O exemplo abaixo inclui quebras de linha para facilitar a leitura. Você precisa removê-las no arquivo JSONL. Veja mais informações em http://jsonlines.org/ (em inglês).
Cada elemento text_extraction identifica uma anotação dentro de text_snippet.content. Indica a posição do texto anotado especificando o número de caracteres a partir do início de text_snippet.content até o começo (start_offset) e o término (end_offset) do texto. display_name é o rótulo da entidade.
Tanto start_offset quanto end_offset são desvios de caracteres em vez de desvios de bytes. O caractere em end_offsetnão é incluído no segmento de texto. Consulte TextSegment para mais detalhes. Os elementos text_extraction são opcionais. Omita-os se planeja anotar o documento usando a interface do usuário do AutoML Natural Language. Cada anotação pode cobrir até dez tokens (palavras). Elas não podem se sobrepor. O start_offset de uma anotação não pode estar entre start_offset e end_offset de uma anotação no mesmo documento.
Por exemplo, este documento de treinamento de exemplo identifica as doenças específicas mencionadas em um resumo do corpus do NCBI.
{
"annotations": [
{
"text_extraction": {
"text_segment": {
"end_offset": 67,
"start_offset": 62
}
},
"display_name": "Modifier"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 158,
"start_offset": 141
}
},
"display_name": "SpecificDisease"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 330,
"start_offset": 290
}
},
"display_name": "SpecificDisease"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 337,
"start_offset": 332
}
},
"display_name": "SpecificDisease"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 627,
"start_offset": 610
}
},
"display_name": "Modifier"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 754,
"start_offset": 749
}
},
"display_name": "Modifier"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 875,
"start_offset": 865
}
},
"display_name": "Modifier"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 968,
"start_offset": 951
}
},
"display_name": "Modifier"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 1553,
"start_offset": 1548
}
},
"display_name": "Modifier"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 1652,
"start_offset": 1606
}
},
"display_name": "CompositeMention"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 1833,
"start_offset": 1826
}
},
"display_name": "DiseaseClass"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 1860,
"start_offset": 1843
}
},
"display_name": "SpecificDisease"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 1930,
"start_offset": 1913
}
},
"display_name": "SpecificDisease"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 2129,
"start_offset": 2111
}
},
"display_name": "SpecificDisease"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 2188,
"start_offset": 2160
}
},
"display_name": "SpecificDisease"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 2260,
"start_offset": 2243
}
},
"display_name": "Modifier"
},
{
"text_extraction": {
"text_segment": {
"end_offset": 2356,
"start_offset": 2339
}
},
"display_name": "Modifier"
}
],
"text_snippet": {
"content": "10051005\tA common MSH2 mutation in English and North American HNPCC families:
origin, phenotypic expression, and sex specific differences in colorectal cancer .\tThe
frequency , origin , and phenotypic expression of a germline MSH2 gene mutation previously
identified in seven kindreds with hereditary non-polyposis cancer syndrome (HNPCC) was
investigated . The mutation ( A-- > T at nt943 + 3 ) disrupts the 3 splice site of exon 5
leading to the deletion of this exon from MSH2 mRNA and represents the only frequent MSH2
mutation so far reported . Although this mutation was initially detected in four of 33
colorectal cancer families analysed from eastern England , more extensive analysis has
reduced the frequency to four of 52 ( 8 % ) English HNPCC kindreds analysed . In contrast ,
the MSH2 mutation was identified in 10 of 20 ( 50 % ) separately identified colorectal
families from Newfoundland . To investigate the origin of this mutation in colorectal cancer
families from England ( n = 4 ) , Newfoundland ( n = 10 ) , and the United States ( n = 3 ) ,
haplotype analysis using microsatellite markers linked to MSH2 was performed . Within the
English and US families there was little evidence for a recent common origin of the MSH2
splice site mutation in most families . In contrast , a common haplotype was identified
at the two flanking markers ( CA5 and D2S288 ) in eight of the Newfoundland families .
These findings suggested a founder effect within Newfoundland similar to that reported by
others for two MLH1 mutations in Finnish HNPCC families . We calculated age related risks
of all , colorectal , endometrial , and ovarian cancers in nt943 + 3 A-- > T MSH2 mutation
carriers ( n = 76 ) for all patients and for men and women separately . For both sexes combined ,
the penetrances at age 60 years for all cancers and for colorectal cancer were 0 . 86 and 0 . 57 ,
respectively . The risk of colorectal cancer was significantly higher ( p < 0.01 ) in males
than females ( 0 . 63 v 0 . 30 and 0 . 84 v 0 . 44 at ages 50 and 60 years , respectively ) .
For females there was a high risk of endometrial cancer ( 0 . 5 at age 60 years ) and premenopausal
ovarian cancer ( 0 . 2 at 50 years ) . These intersex differences in colorectal cancer risks
have implications for screening programmes and for attempts to identify colorectal cancer
susceptibility modifiers .\n "
}
}
Um arquivo JSONL pode conter vários documentos de treinamento com essa estrutura, um em cada linha do arquivo.
Documentos PDF ou TIFF
Para fazer upload de um arquivo PDF ou TIFF como documento, coloque o caminho do arquivo dentro de um elemento document do JSONL:
Cada documento precisa ser uma linha no arquivo JSONL. O exemplo abaixo inclui quebras de linha para facilitar a leitura. Você precisa removê-las no arquivo JSONL. Veja mais informações em http://jsonlines.org/ (em inglês).
O valor do elemento input_uris é o caminho para um arquivo PDF ou TIFF em um bucket do Cloud Storage associado ao seu projeto. O tamanho máximo do arquivo PDF ou TIFF é de 2 MB.
Análise de sentimento
Para treinar um modelo de análise de sentimento, você fornece amostras representativas do tipo de conteúdo que o AutoML Natural Language precisa analisar, cada um rotulado com um valor que indica o grau de positividade do sentimento dentro do conteúdo.
A pontuação de sentimento é um número inteiro que varia de 0 (relativamente negativo) a um valor máximo de sua escolha (positivo). Por exemplo, se quiser identificar se o sentimento é negativo, positivo ou neutro, você precisa rotular os dados de treinamento com pontuações de sentimento de 0 (negativo), 1 (neutro) e 2 (positivo). A Pontuação máxima do sentimento (sentiment_max) do conjunto de dados é 2. Se você quer capturar mais granularidade com cinco níveis de sentimento, você ainda rotula os documentos com o sentimento mais negativo como zero e usa 4 para o sentimento mais positivo.
A Pontuação máxima do sentimento (sentiment_max) do conjunto de dados é 4.
Os valores de pontuação de sentimento devem ser números inteiros consecutivos a partir de zero. Se as pontuações tiverem intervalos ou não começarem do zero, faça o remapeamento delas para números inteiros consecutivos a partir de zero.
Para melhores resultados, verifique se os dados de treinamento incluem um número equilibrado de documentos com cada pontuação. Ter mais exemplos de pontuações de sentimento específicas pode introduzir uma tendência no modelo. Recomendamos o fornecimento de pelo menos 100 documentos por valor de sentimento.
Como importar documentos de treinamento
Você importa dados de treinamento para o AutoML Natural Language usando um arquivo CSV que lista os documentos e, opcionalmente, inclui seus rótulos de categoria ou valores de sentimento.
O AutoML Natural Language cria um conjunto de dados com base nos documentos listados.
Dados de treinamento x avaliação
O AutoML Natural Language divide seus documentos de treinamento em três conjuntos para treinar um modelo: um conjunto de treinamento, um conjunto de validação e um conjunto de teste.
O AutoML Natural Language usa o conjunto de treinamento para criar o modelo. O modelo testa vários algoritmos e parâmetros enquanto procura padrões nos dados de treinamento. Conforme o modelo identifica padrões, ele usa o conjunto de validação para testar os algoritmos e padrões. O AutoML Natural Language escolhe os algoritmos e padrões de melhor desempenho daqueles identificados durante a etapa de treinamento.
Depois de identificar os algoritmos e padrões de melhor desempenho, o AutoML Natural Language os aplica ao conjunto de teste para testar a taxa de erros, a qualidade e a acurácia.
Por padrão, o AutoML Natural Language divide seus dados de treinamento aleatoriamente em três conjuntos:
80% dos documentos são utilizados para treinamento
10% dos documentos são usados para validação (ajuste de hiperparâmetros e/ou decidir quando parar de treinar)
10% dos documentos são reservados para testes (não usados durante o treinamento)
Se quiser especificar a que conjunto cada documento nos seus dados de treinamento deve pertencer, atribua explicitamente documentos a conjuntos no arquivo CSV, conforme descrito na próxima seção.
Como criar um arquivo CSV de importação
Depois de coletar todos os documentos de treinamento, crie um arquivo CSV que liste todos eles. O arquivo CSV pode ter qualquer nome de arquivo, precisa ser codificado em UTF-8 e terminar com uma extensão .csv. Ele precisa ser armazenado no bucket do Cloud Storage associado ao seu projeto.
O arquivo CSV tem uma linha para cada documento de treinamento, com estas colunas em cada linha:
A que conjunto atribuir o conteúdo da linha. Essa coluna é opcional e pode ter um dos seguintes valores:
TRAIN: use o document para treinar o modelo.
VALIDATION: use o document para validar os resultados que o modelo retorna durante o treinamento.
TEST: use o document para verificar os resultados do modelo após ele ter sido treinado.
Se você incluir valores nessa coluna para especificar os conjuntos, recomendamos que identifique pelo menos 5% dos seus dados para cada categoria. O uso de menos de 5% dos dados para treinamento, validação ou teste pode produzir resultados inesperados e modelos ineficazes.
Se você não incluir valores nessa coluna, inicie cada linha com uma vírgula para indicar a primeira coluna vazia. O AutoML Natural Language divide automaticamente seus documentos em três conjuntos, usando cerca de 80% dos dados para treinamento, 10% para validação e 10% para teste (até dez mil pares para validação e teste).
O conteúdo a ser categorizado. Esta coluna contém o URI do Cloud Storage do documento. Esses URIs diferenciam maiúsculas de minúsculas.
Para classificação e análise de sentimento, o documento pode ser um arquivo de texto, PDF, TIFF ou ZIP. Para extração de entidade, é um arquivo JSONL.
Para classificação e análise de sentimentos, o valor nesta coluna pode ser citado em texto em linha, em vez de um URI do Cloud Storage.
Para conjuntos de dados de classificação, inclua uma lista separada por vírgulas de rótulos que identificam como o documento é categorizado. Os rótulos precisam começar com uma letra e conter apenas letras, números e sublinhado. É possível incluir até 20 marcadores para cada documento.
Para conjuntos de dados de análise de sentimento, inclua um número inteiro indicando o valor de sentimento do conteúdo. O valor de sentimento varia de 0 (fortemente negativo) a um valor máximo de 10 (altamente positivo).
Por exemplo, o arquivo CSV de um conjunto de dados de classificação de vários rótulos pode ter:
TRAIN, gs://my-project-lcm/training-data/file1.txt,Sports,Basketball
VALIDATION, gs://my-project-lcm/training-data/ubuntu.zip,Computers,Software,Operating_Systems,Linux,Ubuntu
TRAIN, gs://news/documents/file2.txt,Sports,Baseball
TEST, "Miles Davis was an American jazz trumpeter, bandleader, and composer.",Arts_Entertainment,Music,Jazz
TRAIN,gs://my-project-lcm/training-data/astros.txt,Sports,Baseball
VALIDATION,gs://my-project-lcm/training-data/mariners.txt,Sports,Baseball
TEST,gs://my-project-lcm/training-data/cubs.txt,Sports,Baseball
Erros comuns de .csv
Uso de caracteres Unicode em rótulos. Por exemplo, caracteres japoneses não são compatíveis.
Uso de espaços e caracteres não alfanuméricos em rótulos.
Linhas vazias.
Colunas vazias (linhas com duas vírgulas sucessivas).
O texto incorporado que inclui vírgulas não está entre aspas.
Uso incorreto de maiúsculas e minúsculas dos caminhos do Cloud Storage.
Controle de acesso incorreto configurado para seus documentos. Sua conta de serviço precisa ter acesso de leitura ou maior ou os arquivos precisam ser legíveis publicamente.
Referências a arquivos que não são de texto, como arquivos JPEG. Da mesma forma, arquivos que não são de texto, mas que forem renomeados com uma extensão de texto, causarão um erro.
O URI de um documento aponta para um bucket diferente do atual.
Somente arquivos no bucket do projeto podem ser acessados.
Arquivos não formatados em CSV.
Como criar um arquivo ZIP de importação
Para conjuntos de dados de classificação, importe os documentos de treinamento usando um arquivo ZIP.
No arquivo ZIP, crie uma pasta para cada valor de rótulo ou sentimento e salve cada documento na pasta correspondente ao rótulo ou valor a ser aplicado a esse documento. Por exemplo, o arquivo ZIP de um modelo que classifica correspondência comercial pode ter esta estrutura:
O AutoML Natural Language aplica os nomes das pastas como rótulos aos documentos na pasta.
Para um conjunto de dados de análise de sentimento, os nomes das pastas são os valores de sentimento: