Automatize a pré-rotulagem de PDF para Amazon Comprehend | Amazon Web Services

Automatize a pré-rotulagem de PDF para Amazon Comprehend | Amazon Web Services

Amazon Comprehend é um serviço de processamento de linguagem natural (PNL) que fornece APIs pré-treinadas e personalizadas para obter insights de dados textuais. Os clientes do Amazon Comprehend podem treinar modelos personalizados de reconhecimento de entidade nomeada (NER) para extrair entidades de interesse, como localização, nome da pessoa e data, que são exclusivas de seus negócios.

Para treinar um modelo personalizado, primeiro prepare os dados de treinamento anotando manualmente as entidades nos documentos. Isto pode ser feito com o Compreender a ferramenta de anotação de documentos semiestruturados, que cria uma Verdade no solo do Amazon SageMaker trabalho com um modelo personalizado, permitindo que os anotadores desenhem caixas delimitadoras ao redor das entidades diretamente nos documentos PDF. No entanto, para empresas com dados de entidades tabulares existentes em sistemas ERP como SAP, a anotação manual pode ser repetitiva e demorada.

Para reduzir o esforço de preparação de dados de treinamento, construímos uma ferramenta de pré-rotulagem usando Funções de etapa da AWS que pré-anota documentos automaticamente usando dados de entidades tabulares existentes. Isso diminui significativamente o trabalho manual necessário para treinar modelos precisos de reconhecimento de entidades personalizadas no Amazon Comprehend.

Nesta postagem, orientamos você nas etapas de configuração da ferramenta de pré-rotulagem e mostramos exemplos de como ela anota automaticamente documentos de um público conjunto de dados de exemplos de extratos bancários em formato PDF. O código completo está disponível no site GitHub repo.

Visão geral da solução

Nesta seção, discutimos as entradas e saídas da ferramenta de pré-rotulagem e fornecemos uma visão geral da arquitetura da solução.

Entradas e saídas

Como entrada, a ferramenta de pré-etiquetagem leva documentos PDF que contêm texto para serem anotados. Para a demonstração, usamos extratos bancários simulados como no exemplo a seguir.

Automatize a pré-rotulagem de PDF para Amazon Comprehend | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.

A ferramenta também utiliza um arquivo de manifesto que mapeia documentos PDF com as entidades que queremos extrair desses documentos. As entidades consistem em duas coisas: o expected_text extrair do documento (por exemplo, AnyCompany Bank) e o correspondente entity_type (por exemplo, bank_name). Posteriormente nesta postagem, mostramos como construir esse arquivo de manifesto a partir de um documento CSV como no exemplo a seguir.

Automatize a pré-rotulagem de PDF para Amazon Comprehend | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.

A ferramenta de pré-rotulagem utiliza o arquivo de manifesto para anotar automaticamente os documentos com suas entidades correspondentes. Podemos então usar essas anotações diretamente para treinar um modelo do Amazon Comprehend.

Como alternativa, você pode criar um trabalho de rotulagem do SageMaker Ground Truth para revisão e edição humana, conforme mostrado na captura de tela a seguir.

Automatize a pré-rotulagem de PDF para Amazon Comprehend | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.

Quando a revisão for concluída, você poderá usar os dados anotados para treinar um modelo de reconhecedor de entidade personalizado do Amazon Comprehend.

Arquitetura

A ferramenta de pré-rotulagem consiste em vários AWS Lambda funções orquestradas por uma máquina de estado Step Functions. Possui duas versões que utilizam técnicas diferentes para gerar pré-anotações.

A primeira técnica é correspondência difusa. Isso requer um arquivo pré-manifesto com entidades esperadas. A ferramenta usa o algoritmo de correspondência difusa para gerar pré-anotações comparando a similaridade do texto.

A correspondência difusa procura strings no documento que sejam semelhantes (mas não necessariamente idênticas) às entidades esperadas listadas no arquivo pré-manifesto. Primeiro, ele calcula as pontuações de similaridade de texto entre o texto esperado e as palavras no documento e, em seguida, combina todos os pares acima de um limite. Portanto, mesmo que não haja correspondências exatas, a correspondência difusa pode encontrar variantes como abreviações e erros ortográficos. Isso permite que a ferramenta pré-etiquete documentos sem exigir que as entidades apareçam literalmente. Por exemplo, se 'AnyCompany Bank' estiver listado como uma entidade esperada, o Fuzzy Matching anotará ocorrências de 'Any Companys Bank'. Isso fornece mais flexibilidade do que a correspondência estrita de strings e permite que a ferramenta de pré-rotulagem rotule automaticamente mais entidades.

O diagrama a seguir ilustra a arquitetura desta máquina de estado do Step Functions.

Automatize a pré-rotulagem de PDF para Amazon Comprehend | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.

A segunda técnica requer um modelo de reconhecedor de entidade pré-treinado do Amazon Comprehend. A ferramenta gera pré-anotações usando o modelo Amazon Comprehend, seguindo o fluxo de trabalho mostrado no diagrama a seguir.

Automatize a pré-rotulagem de PDF para Amazon Comprehend | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.

O diagrama a seguir ilustra a arquitetura completa.

Automatize a pré-rotulagem de PDF para Amazon Comprehend | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.

Nas seções a seguir, percorremos as etapas para implementar a solução.

Implantar a ferramenta de pré-rotulagem

Clone o repositório em sua máquina local:

git clone https://github.com/aws-samples/amazon-comprehend-automated-pdf-prelabeling-tool.git

Este repositório foi construído com base na ferramenta Comprehend Semi-Structured Documents Annotation Tool e estende suas funcionalidades, permitindo que você inicie um trabalho de rotulagem do SageMaker Ground Truth com pré-anotações já exibidas na interface do usuário do SageMaker Ground Truth.

A ferramenta de pré-rotulagem inclui os recursos da ferramenta Comprehend Semi-Structured Documents Annotation Tool, bem como alguns recursos específicos da ferramenta de pré-rotulagem. Você pode implantar a solução com Modelo de aplicativo sem servidor da AWS (AWS SAM), uma estrutura de código aberto que você pode usar para definir o código de infraestrutura de aplicativos sem servidor.

Se você já implantou a ferramenta Comprehend Semi-Structured Documents Annotation Tool, consulte a seção de perguntas frequentes em Pre_labeling_tool/README.md para obter instruções sobre como implantar apenas os recursos específicos da ferramenta de pré-rotulagem.

Se você ainda não implantou a ferramenta e está começando do zero, faça o seguinte para implantar toda a solução.

Mude o diretório atual para a pasta da ferramenta de anotação:

cd amazon-comprehend-semi-structured-documents-annotation-tools

Crie e implante a solução:

make ready-and-deploy-guided

Crie o arquivo pré-manifesto

Antes de poder usar a ferramenta de pré-rotulagem, você precisa preparar seus dados. As principais entradas são documentos PDF e um arquivo pré-manifesto. O arquivo pré-manifesto contém a localização de cada documento PDF em 'pdf' e a localização de um arquivo JSON com entidades esperadas para rotular 'expected_entities'.

O caderno gerar_premanifest_file.ipynb mostra como criar este arquivo. Na demonstração, o arquivo pré-manifesto mostra o seguinte código:

[ { 'pdf': 's3://<bucket>/data_aws_idp_workshop_data/bank_stmt_0.pdf', 'expected_entities': 's3://<bucket>/prelabeling-inputs/expected-entities/example-demo/fuzzymatching_version/file_bank_stmt_0.json' }, ...
]

Cada arquivo JSON listado no arquivo pré-manifesto (em expected_entities) contém uma lista de dicionários, um para cada entidade esperada. Os dicionários possuem as seguintes chaves:

  • ‘textos_esperados’ – Uma lista de possíveis sequências de texto que correspondem à entidade.
  • 'tipo de entidade' – O tipo de entidade correspondente.
  • ‘ignore_list’ (opcional) – A lista de palavras que devem ser ignoradas na partida. Esses parâmetros devem ser usados ​​para evitar que a correspondência difusa corresponda a combinações específicas de palavras que você sabe que estão erradas. Isso pode ser útil se você quiser ignorar alguns números ou endereços de e-mail ao consultar nomes.

Por exemplo, a expected_entities do PDF mostrado anteriormente se parece com o seguinte:

[ { 'expected_texts': ['AnyCompany Bank'], 'entity_type': 'bank_name', 'ignore_list': [] }, { 'expected_texts': ['JANE DOE'], 'entity_type': 'customer_name', 'ignore_list': ['JANE.DOE@example_mail.com'] }, { 'expected_texts': ['003884257406'], 'entity_type': 'checking_number', 'ignore_list': [] }, ...
]

Execute a ferramenta de pré-rotulagem

Com o arquivo de pré-manifesto criado na etapa anterior, comece a executar a ferramenta de pré-rotulagem. Para mais detalhes, consulte o caderno start_step_functions.ipynb.

Para iniciar a ferramenta de pré-rotulagem, forneça um event com as seguintes chaves:

  • Pré-manifesto – Mapeia cada documento PDF para seu expected_entities arquivo. Este deve conter o Serviço de armazenamento simples da Amazon (Amazon S3) balde (em bucket) e a chave (em key) do arquivo.
  • Prefixo – Usado para criar o execution_id, que nomeia a pasta S3 para armazenamento de saída e o nome do trabalho de rotulagem do SageMaker Ground Truth.
  • tipos_entidade – Exibido na UI para os anotadores rotularem. Estes devem incluir todos os tipos de entidades nos arquivos de entidades esperados.
  • work_team_name (opcional) – Usado para criar o trabalho de rotulagem SageMaker Ground Truth. Corresponde à mão-de-obra privada a utilizar. Se não for fornecido, apenas um arquivo de manifesto será criado em vez de um trabalho de rotulagem do SageMaker Ground Truth. Você pode usar o arquivo de manifesto para criar um trabalho de rotulagem do SageMaker Ground Truth posteriormente. Observe que, no momento em que este livro foi escrito, você não poderia fornecer uma força de trabalho externa ao criar o trabalho de etiquetagem no notebook. No entanto, você pode clonar o trabalho criado e atribuí-lo a uma força de trabalho externa no console do SageMaker Ground Truth.
  • compreender_parameters (opcional) – Parâmetros para treinar diretamente um modelo de reconhecedor de entidade personalizado do Amazon Comprehend. Se omitido, esta etapa será ignorada.

Para iniciar a máquina de estados, execute o seguinte código Python:

import boto3
stepfunctions_client = boto3.client('stepfunctions')

response = stepfunctions_client.start_execution(
stateMachineArn=fuzzymatching_prelabeling_step_functions_arn,
input=json.dumps(<event-dict>)
)

Isso iniciará uma execução da máquina de estado. Você pode monitorar o progresso da máquina de estado no console do Step Functions. O diagrama a seguir ilustra o fluxo de trabalho da máquina de estado.

Automatize a pré-rotulagem de PDF para Amazon Comprehend | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.

Quando a máquina de estado estiver concluída, faça o seguinte:

  • Inspecione as seguintes saídas salvas no prelabeling/ pasta do comprehend-semi-structured-docs Balde S3:
    • Arquivos de anotações individuais para cada página dos documentos (um por página por documento) em temp_individual_manifests/
    • Um manifesto para o trabalho de rotulagem do SageMaker Ground Truth em consolidated_manifest/consolidated_manifest.manifest
    • Um manifesto que pode ser usado para treinar um modelo personalizado do Amazon Comprehend em consolidated_manifest/consolidated_manifest_comprehend.manifest
  • No console do SageMaker, abra o trabalho de rotulagem do SageMaker Ground Truth que foi criado para revisar as anotações
  • Inspecione e teste o modelo personalizado do Amazon Comprehend que foi treinado

Conforme mencionado anteriormente, a ferramenta só pode criar trabalhos de rotulagem SageMaker Ground Truth para forças de trabalho privadas. Para terceirizar o esforço humano de rotulagem, você pode clonar o trabalho de rotulagem no console do SageMaker Ground Truth e anexar qualquer força de trabalho ao novo trabalho.

limpar

Para evitar incorrer em cobranças adicionais, exclua os recursos que você criou e exclua a pilha que você implementou com o seguinte comando:

make delete

Conclusão

A ferramenta de pré-rotulagem oferece uma maneira poderosa para as empresas usarem dados tabulares existentes para acelerar o processo de treinamento de modelos personalizados de reconhecimento de entidades no Amazon Comprehend. Ao pré-anotar automaticamente documentos PDF, reduz significativamente o esforço manual necessário no processo de etiquetagem.

A ferramenta possui duas versões: correspondência difusa e baseada no Amazon Comprehend, dando flexibilidade na forma de gerar as anotações iniciais. Depois que os documentos forem pré-etiquetados, você poderá revisá-los rapidamente em um trabalho de rotulagem do SageMaker Ground Truth ou até mesmo pular a revisão e treinar diretamente um modelo personalizado do Amazon Comprehend.

A ferramenta de pré-rotulagem permite desbloquear rapidamente o valor dos dados históricos da sua entidade e usá-los na criação de modelos personalizados adaptados ao seu domínio específico. Ao acelerar o que normalmente é a parte mais trabalhosa do processo, torna o reconhecimento de entidades personalizadas com o Amazon Comprehend mais acessível do que nunca.

Para obter mais informações sobre como rotular documentos PDF usando um trabalho de rotulagem do SageMaker Ground Truth, consulte Anotação de documento personalizada para extrair entidades nomeadas em documentos usando o Amazon Comprehend e Use o Amazon SageMaker Ground Truth para rotular dados.


Sobre os autores

Automatize a pré-rotulagem de PDF para Amazon Comprehend | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.Oskar Schnaack é Cientista Aplicado no Generative AI Innovation Center. Ele é apaixonado por mergulhar na ciência por trás do aprendizado de máquina para torná-lo acessível aos clientes. Fora do trabalho, Oskar gosta de andar de bicicleta e de acompanhar as tendências da teoria da informação.

Automatize a pré-rotulagem de PDF para Amazon Comprehend | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.Romain Besombés é arquiteto de Deep Learning no Generative AI Innovation Center. Ele é apaixonado por construir arquiteturas inovadoras para resolver os problemas de negócios dos clientes com aprendizado de máquina.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS