Automatisera PDF-företikettering för Amazon Comprehend | Amazon webbtjänster

Automatisera PDF-företikettering för Amazon Comprehend | Amazon webbtjänster

Amazon Comprehend är en NLP-tjänst (natural-language processing) som tillhandahåller förutbildade och anpassade API:er för att få insikter från textdata. Amazon Comprehend-kunder kan träna anpassade modeller för namngiven enhetsigenkänning (NER) för att extrahera enheter av intresse, såsom plats, personnamn och datum, som är unika för deras verksamhet.

För att träna en anpassad modell förbereder du först träningsdata genom att manuellt kommentera enheter i dokument. Detta kan göras med Förstå anteckningsverktyg för halvstrukturerade dokument, vilket skapar en Amazon SageMaker Ground Sannhet jobb med en anpassad mall, så att annotatorer kan rita begränsningsrutor runt enheterna direkt på PDF-dokumenten. Men för företag med befintliga tabellformade enhetsdata i affärssystem som SAP kan manuell anteckning vara repetitiv och tidskrävande.

För att minska ansträngningen att förbereda träningsdata byggde vi ett företiketteringsverktyg med hjälp av AWS stegfunktioner som automatiskt förannoterar dokument genom att använda befintlig tabellformad enhetsdata. Detta minskar avsevärt det manuella arbete som krävs för att träna exakta anpassade enhetsigenkänningsmodeller i Amazon Comprehend.

I det här inlägget går vi igenom stegen för att ställa in företiketteringsverktyget och visar exempel på hur det automatiskt kommenterar dokument från en offentlig dataset exempel på kontoutdrag i PDF-format. Hela koden finns tillgänglig på GitHub repo.

Lösningsöversikt

I det här avsnittet diskuterar vi ingångarna och utgångarna från företiketteringsverktyget och ger en översikt över lösningsarkitekturen.

In- och utgångar

Som indata tar företiketteringsverktyget PDF-dokument som innehåller text som ska kommenteras. För demon använder vi simulerade kontoutdrag som följande exempel.

Automatisera PDF-företikettering för Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Verktyget tar också en manifestfil som mappar PDF-dokument med de enheter som vi vill extrahera från dessa dokument. Entiteter består av två saker: den expected_text att extrahera från dokumentet (t.ex. AnyCompany Bank) och motsvarande entity_type (till exempel, bank_name). Senare i det här inlägget visar vi hur man konstruerar denna manifestfil från ett CSV-dokument som följande exempel.

Automatisera PDF-företikettering för Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Företiketteringsverktyget använder manifestfilen för att automatiskt kommentera dokumenten med deras motsvarande enheter. Vi kan sedan använda dessa kommentarer direkt för att träna en Amazon Comprehend-modell.

Alternativt kan du skapa ett SageMaker Ground Truth-märkningsjobb för mänsklig granskning och redigering, som visas i följande skärmdump.

Automatisera PDF-företikettering för Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

När granskningen är klar kan du använda de kommenterade data för att träna en anpassad enhetsidentifieringsmodell för Amazon Comprehend.

arkitektur

Företiketteringsverktyget består av flera AWS Lambda funktioner orkestrerade av en Step Functions-tillståndsmaskin. Den har två versioner som använder olika tekniker för att generera förannoteringar.

Den första tekniken är suddig matchning. Detta kräver en förmanifestfil med förväntade enheter. Verktyget använder den luddiga matchningsalgoritmen för att generera förannoteringar genom att jämföra textlikhet.

Otydlig matchning letar efter strängar i dokumentet som liknar (men inte nödvändigtvis identiska) med de förväntade enheterna som anges i förmanifestfilen. Den beräknar först textlikhetspoäng mellan den förväntade texten och orden i dokumentet, sedan matchar den alla par över en tröskel. Därför, även om det inte finns några exakta matchningar, kan suddig matchning hitta varianter som förkortningar och felstavningar. Detta gör att verktyget kan företikettera dokument utan att enheterna behöver visas ordagrant. Till exempel om 'AnyCompany Bank' är listad som en förväntad enhet, kommer Fuzzy Matching att kommentera förekomster av 'Any Companys Bank'. Detta ger mer flexibilitet än strikt strängmatchning och gör det möjligt för företiketteringsverktyget att automatiskt märka fler entiteter.

Följande diagram illustrerar arkitekturen för denna Step Functions-tillståndsmaskin.

Automatisera PDF-företikettering för Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Den andra tekniken kräver en förutbildad Amazon Comprehend enhetsidentifieringsmodell. Verktyget genererar föranteckningar med Amazon Comprehend-modellen, enligt arbetsflödet som visas i följande diagram.

Automatisera PDF-företikettering för Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Följande diagram illustrerar hela arkitekturen.

Automatisera PDF-företikettering för Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

I följande avsnitt går vi igenom stegen för att implementera lösningen.

Implementera företiketteringsverktyget

Klona förvaret till din lokala dator:

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

Det här arkivet har byggts ovanpå Comprehend Semi-Structured Documents Annotation Tool och utökar dess funktioner genom att göra det möjligt för dig att starta ett SageMaker Ground Truth-märkningsjobb med förannoteringar som redan visas i SageMaker Ground Truth UI.

Företiketteringsverktyget inkluderar både resurserna för Comprehend Semi-Structured Documents Annotation Tool och några resurser som är specifika för företiketteringsverktyget. Du kan distribuera lösningen med AWS serverlös applikationsmodell (AWS SAM), ett ramverk med öppen källkod som du kan använda för att definiera serverlös programinfrastrukturkod.

Om du tidigare har implementerat Comprehend Semi-Structured Documents Annotation Tool, se avsnittet FAQ i Pre_labeling_tool/README.md för instruktioner om hur man distribuerar endast de resurser som är specifika för företiketteringsverktyget.

Om du inte har distribuerat verktyget tidigare och börjar om på nytt, gör följande för att distribuera hela lösningen.

Ändra den aktuella katalogen till mappen för anteckningsverktyget:

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

Bygg och distribuera lösningen:

make ready-and-deploy-guided

Skapa förmanifestfilen

Innan du kan använda företiketteringsverktyget måste du förbereda dina data. De viktigaste ingångarna är PDF-dokument och en förmanifestfil. Förmanifestfilen innehåller platsen för varje PDF-dokument under 'pdf' och platsen för en JSON-fil med förväntade enheter att märka under 'expected_entities'.

Anteckningsboken generera_premanifest_fil.ipynb visar hur du skapar den här filen. I demon visar förmanifestfilen följande kod:

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

Varje JSON-fil listad i förmanifestfilen (under expected_entities) innehåller en lista över ordböcker, en för varje förväntad enhet. Ordböckerna har följande nycklar:

  • "förväntade_texter" – En lista över möjliga textsträngar som matchar enheten.
  • 'Entitetstyp' – Motsvarande enhetstyp.
  • "ignore_list" (valfritt) – Listan över ord som bör ignoreras i matchen. Dessa parametrar bör användas för att förhindra suddig matchning från att matcha specifika kombinationer av ord som du vet är fel. Detta kan vara användbart om du vill ignorera vissa nummer eller e-postadresser när du tittar på namn.

Till exempel, den expected_entities av den tidigare visade PDF-filen ser ut som följande:

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

Kör företiketteringsverktyget

Med förmanifestfilen som du skapade i föregående steg, börja köra företiketteringsverktyget. För mer information, se anteckningsboken start_step_functions.ipynb.

För att starta företiketteringsverktyget, tillhandahåll en event med följande nycklar:

  • Förmanifest – Mappar varje PDF-dokument till dess expected_entities fil. Detta bör innehålla Amazon enkel lagringstjänst (Amazon S3) hink (under bucket) och nyckeln (under key) av filen.
  • Prefix – Används för att skapa execution_id, som namnger S3-mappen för utdatalagring och SageMaker Ground Truth-etikettjobbnamnet.
  • entitetstyper – Visas i användargränssnittet för annotatorer att märka. Dessa bör inkludera alla entitetstyper i de förväntade entitetsfilerna.
  • work_team_name (valfritt) – Används för att skapa SageMaker Ground Truth-märkningsjobbet. Det motsvarar den privata arbetskraften att använda. Om den inte tillhandahålls skapas bara en manifestfil istället för ett SageMaker Ground Truth-märkningsjobb. Du kan använda manifestfilen för att skapa ett SageMaker Ground Truth-märkningsjobb senare. Observera att när detta skrivs kan du inte tillhandahålla en extern arbetsstyrka när du skapar etikettjobbet från anteckningsboken. Du kan dock klona det skapade jobbet och tilldela det till en extern arbetsstyrka på SageMaker Ground Truth-konsolen.
  • förstå_parametrar (valfritt) – Parametrar för att direkt träna en Amazon Comprehend anpassad enhetsidentifieringsmodell. Om det utelämnas kommer detta steg att hoppas över.

För att starta tillståndsmaskinen, kör följande Python-kod:

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

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

Detta kommer att starta en körning av tillståndsmaskinen. Du kan övervaka statusmaskinens framsteg på Step Functions-konsolen. Följande diagram illustrerar tillståndsmaskinens arbetsflöde.

Automatisera PDF-företikettering för Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

När tillståndsmaskinen är klar gör du följande:

  • Inspektera följande utgångar sparade i prelabeling/ mapp av comprehend-semi-structured-docs S3 hink:
    • Individuella anteckningsfiler för varje sida i dokumenten (en per sida per dokument) i temp_individual_manifests/
    • Ett manifest för SageMaker Ground Truth-märkningsjobbet i consolidated_manifest/consolidated_manifest.manifest
    • Ett manifest som kan användas för att träna en anpassad Amazon Comprehend-modell i consolidated_manifest/consolidated_manifest_comprehend.manifest
  • På SageMaker-konsolen öppnar du SageMaker Ground Truth-etiketteringsjobbet som skapades för att granska kommentarerna
  • Inspektera och testa den anpassade Amazon Comprehend-modellen som tränades

Som tidigare nämnts kan verktyget bara skapa SageMaker Ground Truth-märkningsjobb för privata arbetsstyrkor. För att lägga ut den mänskliga märkningsinsatsen på entreprenad kan du klona märkningsjobbet på SageMaker Ground Truth-konsolen och knyta eventuell arbetsstyrka till det nya jobbet.

Städa upp

För att undvika ytterligare avgifter, ta bort resurserna som du skapade och ta bort stacken som du distribuerade med följande kommando:

make delete

Slutsats

Företiketteringsverktyget ger ett kraftfullt sätt för företag att använda befintlig tabelldata för att påskynda processen att träna anpassade enhetsigenkänningsmodeller i Amazon Comprehend. Genom att automatiskt förannotera PDF-dokument minskar det avsevärt den manuella ansträngningen som krävs i märkningsprocessen.

Verktyget har två versioner: fuzzy matching och Amazon Comprehend-baserat, vilket ger flexibilitet för hur man genererar de första kommentarerna. Efter att dokument har förmärkts kan du snabbt granska dem i ett SageMaker Ground Truth-märkningsjobb eller till och med hoppa över granskningen och direkt träna en anpassad modell från Amazon Comprehend.

Företiketteringsverktyget gör att du snabbt kan låsa upp värdet av din historiska enhetsdata och använda den för att skapa anpassade modeller som är skräddarsydda för din specifika domän. Genom att påskynda det som vanligtvis är den mest arbetsintensiva delen av processen, gör det anpassad enhetsigenkänning med Amazon Comprehend mer tillgänglig än någonsin.

För mer information om hur du märker PDF-dokument med ett SageMaker Ground Truth-märkningsjobb, se Anpassad dokumentkommentar för att extrahera namngivna enheter i dokument med Amazon Comprehend och Använd Amazon SageMaker Ground Truth för att märka data.


Om författarna

Automatisera PDF-företikettering för Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Oskar Schnaack är en tillämpad forskare vid Generative AI Innovation Center. Han brinner för att dyka in i vetenskapen bakom maskininlärning för att göra den tillgänglig för kunder. Utanför jobbet tycker Oskar om att cykla och att hänga med i trender inom informationsteori.

Automatisera PDF-företikettering för Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Romain Besombes är en Deep Learning Architect vid Generative AI Innovation Center. Han brinner för att bygga innovativa arkitekturer för att ta itu med kunders affärsproblem med maskininlärning.

Tidsstämpel:

Mer från AWS maskininlärning