Automatizza l’etichettatura pre-PDF per Amazon Comprehend

Automatizza l'etichettatura pre-PDF per Amazon Comprehend con facilità

Amazon Comprehend è un servizio di elaborazione del linguaggio naturale (NLP) che fornisce API pre-addestrate e personalizzate per trarre informazioni da dati testuali. I clienti di Amazon Comprehend possono allenare modelli personalizzati di riconoscimento delle entità denominate (NER) per estrarre entità di interesse, come la posizione, il nome della persona e la data, uniche per il loro business.

Per allenare un modello personalizzato, si preparano innanzitutto i dati di addestramento annotando manualmente le entità nei documenti. Ciò può essere fatto tramite lo Strumento di annotazione dei documenti semi-strutturati di Comprehend, che crea un lavoro di Amazon SageMaker Ground Truth con un modello personalizzato, permettendo agli annotatori di disegnare riquadri attorno alle entità direttamente sui documenti PDF. Tuttavia, per le aziende con dati tabulari di entità esistenti nei sistemi ERP come SAP, l’annotazione manuale può essere ripetitiva e richiedere molto tempo.

Per ridurre lo sforzo necessario per preparare i dati di addestramento, abbiamo creato uno strumento di pre-etichettatura utilizzando AWS Step Functions, che pre-etichetta automaticamente i documenti utilizzando dati tabulari di entità esistenti. Ciò riduce significativamente il lavoro manuale necessario per addestrare modelli accurati di riconoscimento personalizzato delle entità in Amazon Comprehend.

In questo articolo, ti guideremo attraverso i passaggi per configurare lo strumento di pre-etichettatura e mostreremo esempi di come esso etichetta automaticamente i documenti di un dataset pubblico di esempi di estratti conto bancari in formato PDF. Il codice completo è disponibile sul repository di GitHub.

Panoramica della soluzione

In questa sezione, esamineremo gli input e gli output dello strumento di pre-etichettatura e forniremo una panoramica dell’architettura della soluzione.

Input e output

Come input, lo strumento di pre-etichettatura accetta documenti PDF che contengono testo da etichettare. Per la demo, utilizziamo estratti conto bancari simulati come l’esempio seguente.

Lo strumento accetta anche un file manifesto che associa i documenti PDF alle entità che vogliamo estrarre da questi documenti. Le entità sono composte da due elementi: il expected_text da estrarre dal documento (ad esempio, AnyCompany Bank) e il relativo entity_type (ad esempio, bank_name). In seguito in questo articolo, mostreremo come costruire questo file manifesto da un documento CSV come l’esempio seguente.

Lo strumento di pre-etichettatura utilizza il file manifesto per etichettare automaticamente i documenti con le relative entità. Possiamo quindi utilizzare queste annotazioni direttamente per addestrare un modello di Amazon Comprehend.

In alternativa, è possibile creare un lavoro di etichettatura SageMaker Ground Truth per revisione ed editing umani, come mostrato nella schermata seguente.

Una volta completata la revisione, è possibile utilizzare i dati annotati per addestrare un modello personalizzato di riconoscimento delle entità di Amazon Comprehend.

Architettura

Lo strumento di pre-etichettatura è composto da più funzioni AWS Lambda orchestrato da un flusso di stato di Step Functions. Esistono due versioni che utilizzano diverse tecniche per generare le pre-annotazioni.

La prima tecnica è fuzzy matching. Questo richiede un file pre-manifest con entità attese. Lo strumento utilizza l’algoritmo di fuzzy matching per generare pre-annotazioni confrontando la similarità del testo.

Il fuzzy matching cerca stringhe nel documento che sono simili (ma non necessariamente identiche) alle entità attese elencate nel file pre-manifest. Prima calcola punteggi di similarità del testo tra il testo atteso e le parole nel documento, quindi associa tutte le coppie sopra una soglia. Pertanto, anche se non ci sono corrispondenze esatte, il fuzzy matching può trovare varianti come abbreviazioni e errori di ortografia. Questo consente allo strumento di pre-etichettare i documenti senza richiedere che le entità compaiano testualmente. Ad esempio, se 'AnyCompany Bank' è elencato come entità attesa, Fuzzy Matching annoterà le occorrenze di 'Any Companys Bank'. Questo offre maggiore flessibilità rispetto all’associazione di stringhe rigorosa e consente allo strumento di pre-etichettare automaticamente più entità.

Il seguente diagramma illustra l’architettura di questo stato a macchina di Step Functions.

La seconda tecnica richiede un modello di riconoscimento delle entità pre-addestrate di Amazon Comprehend. Lo strumento genera pre-annotazioni utilizzando il modello Amazon Comprehend, seguendo il flusso di lavoro mostrato nel seguente diagramma.

Il seguente diagramma illustra l’architettura completa.

Nelle sezioni seguenti, illustreremo i passaggi per implementare la soluzione.

Implementare lo strumento di pre-etichettatura

Clonare il repository sul proprio computer locale:

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

Questo repository è stato creato sopra lo Strumento di Annotazione dei Documenti Semi-Strutturati di Comprehend e ne estende le funzionalità consentendoti di avviare un lavoro di etichettatura SageMaker Ground Truth con pre-annotazioni già visualizzate sull’interfaccia utente di SageMaker Ground Truth.

Lo strumento di pre-etichettatura include sia le risorse dello Strumento di Annotazione dei Documenti Semi-Strutturati di Comprehend sia alcune risorse specifiche dello strumento di pre-etichettatura. Puoi implementare la soluzione con AWS Serverless Application Model (AWS SAM), un framework open source che puoi utilizzare per definire il codice dell’infrastruttura dell’applicazione serverless.

Se hai già implementato lo Strumento di Annotazione dei Documenti Semi-Strutturati di Comprehend in precedenza, consulta la sezione FAQ in Pre_labeling_tool/README.md per istruzioni su come implementare solo le risorse specifiche dello strumento di pre-etichettatura.

Se non hai ancora implementato lo strumento e stai iniziando da zero, esegui quanto segue per implementare l’intera soluzione.

Cambia la directory corrente alla cartella dello strumento di annotazione:

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

Compila e implementa la soluzione:

make ready-and-deploy-guided

Crea il file pre-manifest

Prima di poter utilizzare lo strumento di pre-etichettatura, devi preparare i tuoi dati. I principali input sono documenti in formato PDF e un file pre-manifest. Il file pre-manifest contiene la posizione di ogni documento PDF sotto 'pdf' e la posizione di un file JSON con le entità attese da etichettare sotto 'expected_entities'.

<!–Il notebook generate_premanifest_file.ipynb mostra come creare questo file. Nella demo, il file pre-manifest mostra il seguente codice:

[  {    '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'  },  ...]

Ogni file JSON elencato nel file pre-manifest (sotto expected_entities) contiene una lista di dizionari, uno per ogni entità prevista. I dizionari hanno le seguenti chiavi:

  • ‘expected_texts’ – Una lista di possibili stringhe di testo corrispondenti all’entità.
  • ‘entity_type’ – Il tipo di entità corrispondente.
  • ‘ignore_list’ (opzionale) – L’elenco delle parole che devono essere ignorate durante la corrispondenza. Questi parametri dovrebbero essere utilizzati per evitare che la corrispondenza approssimativa corrisponda a specifiche combinazioni di parole che si sa essere sbagliate. Questo può essere utile se si desidera ignorare alcuni numeri o indirizzi email durante la visualizzazione dei nomi.

Ad esempio, le expected_entities del PDF mostrato in precedenza assomigliano al seguente:

[  {    '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': []  }, ...]

Esegue lo strumento di pre-etichettatura

Con il file pre-manifest creato nel passaggio precedente, inizia l’esecuzione dello strumento di pre-etichettatura. Per ulteriori dettagli, fare riferimento al notebook start_step_functions.ipynb.

Per avviare lo strumento di pre-etichettatura, fornire un event con le seguenti chiavi:

  • Premanifest – Associa ogni documento PDF al suo file expected_entities. Questo dovrebbe contenere il bucket di Amazon Simple Storage Service (Amazon S3) (sotto bucket) e la chiave (sotto key) del file.
  • Prefix – Usato per creare l’execution_id, che nomenclatura la cartella S3 per la memorizzazione di output e il nome del lavoro di etichettatura di SageMaker Ground Truth.
  • entity_types – Visualizzati nell’interfaccia utente per gli annotatori per l’etichettatura. Questi dovrebbero includere tutti i tipi di entità nei file di entità previste.
  • work_team_name (opzionale) – Usato per la creazione del lavoro di etichettatura di SageMaker Ground Truth. Corrisponde alla forza lavoro privata da utilizzare. Se non viene fornito, verrà creato solo un file manifesto anziché un lavoro di etichettatura di SageMaker Ground Truth. È possibile utilizzare il file manifesto per creare un lavoro di etichettatura di SageMaker Ground Truth successivamente. Notare che, alla data di scrittura di questo testo, non è possibile fornire una forza lavoro esterna durante la creazione del lavoro di etichettatura dal notebook. Tuttavia, è possibile clonare il lavoro creato e assegnarlo a una forza lavoro esterna nella console di SageMaker Ground Truth.
  • comprehend_parameters (opzionale) – Parametri per addestrare direttamente un modello di rilevamento di entità personalizzate di Amazon Comprehend. Se omesso, questa fase verrà saltata.

Per avviare la macchina a stati, eseguire il seguente codice Python:

import boto3stepfunctions_client = boto3.client('stepfunctions')

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

Inizierà un’esecuzione della macchina a stati. È possibile monitorare i progressi della macchina a stati sulla console Step Functions. Il diagramma seguente illustra il flusso di lavoro della macchina a stati.

Quando la macchina a stati è completa, eseguire le seguenti operazioni:

  • Ispezionare le seguenti uscite salvate nella cartella prelabeling/ del bucket S3 comprehend-semi-structured-docs:
    • File di annotazione individuale per ogni pagina dei documenti (uno per pagina per documento) in temp_individual_manifests/
    • Un manifest per il lavoro di etichettatura di SageMaker Ground Truth in consolidated_manifest/consolidated_manifest.manifest
    • Un manifest che può essere utilizzato per addestrare un modello personalizzato Amazon Comprehend in consolidated_manifest/consolidated_manifest_comprehend.manifest
  • Nella console di SageMaker, aprire il lavoro di etichettatura di SageMaker Ground Truth creato per rivedere le annotazioni
  • Ispezionare e testare il modello Amazon Comprehend personalizzato addestrato

Come accennato in precedenza, lo strumento può creare solo lavori di etichettatura SageMaker Ground Truth per forze lavoro private. Per esternalizzare lo sforzo di etichettatura umana, è possibile clonare il lavoro di etichettatura sulla console di SageMaker Ground Truth e associare qualsiasi forza lavoro al nuovo lavoro.

Pulizia

Per evitare di incorrere in costi aggiuntivi, eliminare le risorse create e eliminare lo stack che si è distribuito con il seguente comando:

make delete

Conclusion

Lo strumento di pre-etichettatura fornisce un modo potente per le aziende di utilizzare i dati tabulari esistenti per accelerare il processo di addestramento dei modelli personalizzati di riconoscimento di entità in Amazon Comprehend. Tramite l’annotazione automatica dei documenti PDF, riduce significativamente lo sforzo manuale richiesto nel processo di etichettatura.

Lo strumento ha due versioni: corrispondenza approssimativa e basata su Amazon Comprehend, offrendo flessibilità su come generare le annotazioni iniziali. Dopo che i documenti sono stati pre-etichettati, è possibile rivederli rapidamente in un lavoro di etichettatura di SageMaker Ground Truth o addirittura saltare la revisione e addestrare direttamente un modello personalizzato Amazon Comprehend.

Lo strumento di pre-etichettatura consente di sbloccare rapidamente il valore dei dati storici delle entità e di utilizzarli per creare modelli personalizzati adatti al proprio dominio specifico. Accelerando quella che di solito è la parte più intensiva in termini di lavoro del processo, rende il riconoscimento delle entità personalizzato con Amazon Comprehend più accessibile che mai.

Per ulteriori informazioni su come etichettare i documenti PDF utilizzando un lavoro di etichettatura di SageMaker Ground Truth, consultare Annotazione personalizzata di documenti per estrarre entità denominate nei documenti utilizzando Amazon Comprehend e Usare Amazon SageMaker Ground Truth per etichettare i dati.