Automatiseer het vooraf labelen van PDF's voor Amazon Comprehend | Amazon-webservices

Automatiseer het vooraf labelen van PDF's voor Amazon Comprehend | Amazon-webservices

Amazon begrijpt het is een dienst voor natuurlijke taalverwerking (NLP) die vooraf getrainde en aangepaste API's biedt om inzichten uit tekstuele gegevens te verkrijgen. Amazon Comprehend-klanten kunnen aangepaste benoemde entiteitsherkenningsmodellen (NER) trainen om interessante entiteiten, zoals locatie, persoonsnaam en datum, te extraheren die uniek zijn voor hun bedrijf.

Als u een aangepast model wilt trainen, bereidt u eerst trainingsgegevens voor door handmatig entiteiten in documenten te annoteren. Dit kan gedaan worden met de Begrijp het annotatiehulpmiddel voor semi-gestructureerde documenten, waardoor een Amazon SageMaker Grondwaarheid job met een aangepaste sjabloon, waardoor annotators begrenzingsvakken rond de entiteiten rechtstreeks op de PDF-documenten kunnen tekenen. Voor bedrijven met bestaande entiteitsgegevens in tabelvorm in ERP-systemen zoals SAP kan handmatige annotatie echter repetitief en tijdrovend zijn.

Om de inspanning bij het voorbereiden van trainingsgegevens te verminderen, hebben we een pre-labelingtool gebouwd met behulp van AWS Stap Functies waarmee documenten automatisch vooraf worden geannoteerd met behulp van bestaande tabellarische entiteitsgegevens. Dit vermindert aanzienlijk het handmatige werk dat nodig is om nauwkeurige aangepaste entiteitsherkenningsmodellen te trainen in Amazon Comprehend.

In dit bericht leiden we u door de stappen voor het instellen van de tool voor pre-labeling en laten we voorbeelden zien van hoe deze automatisch documenten van een openbaar document annoteert dataset van voorbeeldbankafschriften in PDF-formaat. De volledige code is beschikbaar op de GitHub repo.

Overzicht oplossingen

In deze sectie bespreken we de input en output van de pre-labelingtool en geven we een overzicht van de oplossingsarchitectuur.

Ingangen en uitgangen

Als invoer gebruikt de pre-labelingtool PDF-documenten die tekst bevatten die moet worden geannoteerd. Voor de demo gebruiken we gesimuleerde bankafschriften zoals in het volgende voorbeeld.

Automatiseer het vooraf labelen van PDF's voor Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De tool gebruikt ook een manifestbestand dat PDF-documenten toewijst aan de entiteiten die we uit deze documenten willen halen. Entiteiten bestaan โ€‹โ€‹uit twee dingen: de expected_text uit het document halen (bijvoorbeeld AnyCompany Bank) en de daarbij behorende entity_type (bijvoorbeeld, bank_name). Verderop in dit bericht laten we zien hoe u dit manifestbestand kunt samenstellen uit een CSV-document, zoals in het volgende voorbeeld.

Automatiseer het vooraf labelen van PDF's voor Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De pre-labelingtool gebruikt het manifestbestand om de documenten automatisch te annoteren met hun corresponderende entiteiten. We kunnen deze annotaties vervolgens rechtstreeks gebruiken om een โ€‹โ€‹Amazon Comprehend-model te trainen.

Als alternatief kunt u een SageMaker Ground Truth-labeltaak maken voor menselijke beoordeling en bewerking, zoals weergegeven in de volgende schermafbeelding.

Automatiseer het vooraf labelen van PDF's voor Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Wanneer de beoordeling is voltooid, kunt u de geannoteerde gegevens gebruiken om een โ€‹โ€‹aangepast entiteitsherkenningsmodel van Amazon Comprehend te trainen.

Architectuur

De pre-labelingtool bestaat uit meerdere AWS Lambda functies georkestreerd door een Step Functions-statusmachine. Het heeft twee versies die verschillende technieken gebruiken om pre-annotaties te genereren.

De eerste techniek is vage matching. Hiervoor is een pre-manifestbestand met verwachte entiteiten vereist. De tool gebruikt het fuzzy matching-algoritme om pre-annotaties te genereren door tekstovereenkomst te vergelijken.

Fuzzy matching zoekt naar tekenreeksen in het document die vergelijkbaar zijn (maar niet noodzakelijkerwijs identiek zijn) aan de verwachte entiteiten die in het pre-manifestbestand worden vermeld. Het berekent eerst tekstovereenstemmingsscores tussen de verwachte tekst en woorden in het document, en vergelijkt vervolgens alle paren boven een drempel. Daarom kan fuzzy matching, zelfs als er geen exacte overeenkomsten zijn, varianten zoals afkortingen en spelfouten vinden. Hierdoor kan de tool documenten vooraf labelen zonder dat de entiteiten woordelijk moeten verschijnen. Bijvoorbeeld als 'AnyCompany Bank' wordt vermeld als een verwachte entiteit, zal Fuzzy Matching de voorkomens ervan annoteren 'Any Companys Bank'. Dit biedt meer flexibiliteit dan strikte stringmatching en zorgt ervoor dat de pre-labelingtool automatisch meer entiteiten kan labelen.

Het volgende diagram illustreert de architectuur van deze Step Functions-statusmachine.

Automatiseer het vooraf labelen van PDF's voor Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De tweede techniek vereist een vooraf getraind Amazon Comprehend entiteitsherkennermodel. De tool genereert pre-annotaties met behulp van het Amazon Comprehend-model, volgens de workflow die in het volgende diagram wordt weergegeven.

Automatiseer het vooraf labelen van PDF's voor Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het volgende diagram illustreert de volledige architectuur.

Automatiseer het vooraf labelen van PDF's voor Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

In de volgende secties doorlopen we de stappen om de oplossing te implementeren.

Implementeer de tool voor pre-labeling

Kloon de repository naar uw lokale machine:

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

Deze repository is gebouwd bovenop de Comprehend Semi-Structured Documents Annotation Tool en breidt de functionaliteiten ervan uit door u in staat te stellen een SageMaker Ground Truth-labeltaak te starten met pre-annotaties die al worden weergegeven in de SageMaker Ground Truth UI.

De pre-labelingtool bevat zowel de Comprehend Semi-Structured Documents Annotation Tool-bronnen als enkele bronnen die specifiek zijn voor de pre-labelingtool. U kunt de oplossing implementeren met AWS serverloos toepassingsmodel (AWS SAM), een open source-framework dat u kunt gebruiken om serverloze applicatie-infrastructuurcode te definiรซren.

Als u eerder de Comprehend Semi-Structured Documents Annotation Tool hebt geรฏmplementeerd, raadpleeg dan de sectie met veelgestelde vragen in Pre_labeling_tool/README.md voor instructies over hoe u alleen de bronnen kunt inzetten die specifiek zijn voor de pre-labelingtool.

Als u de tool nog niet eerder hebt geรฏmplementeerd en opnieuw begint, doet u het volgende om de hele oplossing te implementeren.

Wijzig de huidige map in de map voor het annotatiehulpmiddel:

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

Bouw en implementeer de oplossing:

make ready-and-deploy-guided

Maak het pre-manifestbestand

Voordat u de pre-labelingtool kunt gebruiken, moet u uw gegevens voorbereiden. De belangrijkste invoergegevens zijn PDF-documenten en een pre-manifestbestand. Het pre-manifestbestand bevat de locatie van elk PDF-document eronder 'pdf' en de locatie van een JSON-bestand met verwachte entiteiten om onder te labelen 'expected_entities'.

De notebook genereer_premanifest_bestand.ipynb laat zien hoe u dit bestand kunt maken. In de demo toont het pre-manifestbestand de volgende code:

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

Elk JSON-bestand dat wordt vermeld in het pre-manifestbestand (onder expected_entities) bevat een lijst met woordenboeken, รฉรฉn voor elke verwachte entiteit. De woordenboeken hebben de volgende sleutels:

  • โ€˜verwachte_tekstenโ€™ โ€“ Een lijst met mogelijke tekstreeksen die overeenkomen met de entiteit.
  • โ€˜entiteitstypeโ€™ โ€“ Het bijbehorende entiteitstype.
  • โ€˜ignore_listโ€™ (optioneel) โ€“ De lijst met woorden die in de wedstrijd moeten worden genegeerd. Deze parameters moeten worden gebruikt om te voorkomen dat fuzzy matching specifieke combinaties van woorden matcht waarvan u weet dat ze verkeerd zijn. Dit kan handig zijn als u bepaalde nummers of e-mailadressen wilt negeren bij het bekijken van namen.

Bijvoorbeeld, de expected_entities van de eerder getoonde PDF ziet er als volgt uit:

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

Voer de pre-labelingtool uit

Met het pre-manifestbestand dat u in de vorige stap hebt gemaakt, start u de pre-labelingtool. Raadpleeg het notitieboekje voor meer details start_step_functions.ipynb.

Om de pre-labelingtool te starten, geeft u een event met de volgende sleutels:

  • Premanifest โ€“ Wijst elk PDF-document toe aan zijn eigen PDF-document expected_entities bestand. Dit zou de . moeten bevatten Amazon eenvoudige opslagservice (Amazon S3) emmer (onder bucket) en de sleutel (onder key) van het bestand.
  • Voorvoegsel โ€“ Wordt gebruikt om de execution_id, waarin de S3-map wordt genoemd voor uitvoeropslag en de SageMaker Ground Truth-labeltaaknaam.
  • entiteitstypen โ€“ Weergegeven in de gebruikersinterface zodat annotators kunnen worden gelabeld. Deze moeten alle entiteitstypen in de verwachte entiteitsbestanden bevatten.
  • werkteamnaam (optioneel) โ€“ Wordt gebruikt voor het maken van de SageMaker Ground Truth-labeltaak. Het komt overeen met het particuliere personeel dat moet worden gebruikt. Als dit niet wordt verstrekt, wordt er alleen een manifestbestand gemaakt in plaats van een SageMaker Ground Truth-labeltaak. U kunt het manifestbestand gebruiken om later een SageMaker Ground Truth-labeltaak te maken. Houd er rekening mee dat u op het moment van schrijven geen extern personeel kunt inschakelen bij het maken van de labeltaak vanuit de notebook. U kunt de gemaakte taak echter klonen en toewijzen aan een extern personeelsbestand op de SageMaker Ground Truth-console.
  • begrijpen_parameters (optioneel) โ€“ Parameters om een โ€‹โ€‹aangepast entiteitsherkennermodel van Amazon Comprehend rechtstreeks te trainen. Als u dit weglaat, wordt deze stap overgeslagen.

Voer de volgende Python-code uit om de statusmachine te starten:

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

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

Hierdoor wordt een uitvoering van de statusmachine gestart. U kunt de voortgang van de statusmachine volgen op de Step Functions-console. Het volgende diagram illustreert de workflow van de statusmachine.

Automatiseer het vooraf labelen van PDF's voor Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Wanneer de statusmachine voltooid is, doet u het volgende:

  • Inspecteer de volgende uitvoer die is opgeslagen in het prelabeling/ map van de comprehend-semi-structured-docs S3-bak:
    • Individuele annotatiebestanden voor elke pagina van de documenten (รฉรฉn per pagina per document) in temp_individual_manifests/
    • Een manifest voor de SageMaker Ground Truth-labeltaak in consolidated_manifest/consolidated_manifest.manifest
    • Een manifest dat kan worden gebruikt om een โ€‹โ€‹aangepast Amazon Comprehend-model in te trainen consolidated_manifest/consolidated_manifest_comprehend.manifest
  • Open op de SageMaker-console de SageMaker Ground Truth-labeltaak die is gemaakt om de annotaties te bekijken
  • Inspecteer en test het aangepaste Amazon Comprehend-model dat is getraind

Zoals eerder vermeld, kan de tool alleen SageMaker Ground Truth-labelingbanen creรซren voor particuliere arbeidskrachten. Om de menselijke etiketteringsinspanningen uit te besteden, kunt u de etiketteringstaak op de SageMaker Ground Truth-console klonen en al het personeel aan de nieuwe taak koppelen.

Opruimen

Om te voorkomen dat er extra kosten in rekening worden gebracht, verwijdert u de resources die u hebt gemaakt en verwijdert u de stapel die u hebt geรฏmplementeerd met de volgende opdracht:

make delete

Conclusie

De pre-labelingtool biedt bedrijven een krachtige manier om bestaande tabelgegevens te gebruiken om het proces van het trainen van aangepaste entiteitsherkenningsmodellen in Amazon Comprehend te versnellen. Door het automatisch vooraf annoteren van PDF-documenten vermindert het de handmatige inspanning die nodig is bij het labelproces aanzienlijk.

De tool heeft twee versies: fuzzy matching en Amazon Comprehend-gebaseerd, waardoor flexibiliteit ontstaat bij het genereren van de eerste annotaties. Nadat documenten vooraf zijn gelabeld, kunt u ze snel beoordelen in een SageMaker Ground Truth-labeltaak of zelfs de beoordeling overslaan en direct een aangepast Amazon Comprehend-model trainen.

Met de pre-labelingtool kunt u snel de waarde van uw historische entiteitsgegevens ontsluiten en deze gebruiken bij het maken van aangepaste modellen die zijn afgestemd op uw specifieke domein. Door het versnellen van wat doorgaans het meest arbeidsintensieve deel van het proces is, wordt aangepaste entiteitsherkenning met Amazon Comprehend toegankelijker dan ooit.

Voor meer informatie over het labelen van PDF-documenten met behulp van een SageMaker Ground Truth-labeltaak, zie Aangepaste documentannotatie voor het extraheren van benoemde entiteiten in documenten met behulp van Amazon Comprehend en Gebruik Amazon SageMaker Ground Truth om gegevens te labelen.


Over de auteurs

Automatiseer het vooraf labelen van PDF's voor Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Oskar Schnack is een toegepaste wetenschapper bij het Genative AI Innovation Center. Hij heeft een passie voor het duiken in de wetenschap achter machine learning om dit toegankelijk te maken voor klanten. Buiten zijn werk houdt Oskar van fietsen en het volgen van trends in de informatietheorie.

Automatiseer het vooraf labelen van PDF's voor Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Romain Besombes is een Deep Learning Architect bij het Genative AI Innovation Center. Hij heeft een passie voor het bouwen van innovatieve architecturen om de zakelijke problemen van klanten met machine learning aan te pakken.

Tijdstempel:

Meer van AWS-machine learning