Organisationer på tværs af brancher såsom detailhandel, bank, finans, sundhedspleje, produktion og udlån skal ofte håndtere enorme mængder af ustrukturerede tekstdokumenter, der kommer fra forskellige kilder, såsom nyheder, blogs, produktanmeldelser, kundesupportkanaler og sociale medier. Disse dokumenter indeholder kritisk information, der er nøglen til at træffe vigtige forretningsbeslutninger. Efterhånden som en organisation vokser, bliver det en udfordring at udtrække kritisk information fra disse dokumenter. Med udviklingen af naturlig sprogbehandling (NLP) og maskinlæring (ML) teknikker kan vi afdække værdifuld indsigt og forbindelser fra disse tekstdokumenter hurtigt og med høj nøjagtighed, og derved hjælpe virksomheder med at træffe kvalitetsforretningsbeslutninger til tiden. Fuldt administrerede NLP-tjenester har også fremskyndet vedtagelsen af NLP. Amazon Comprehend er en fuldt administreret tjeneste, der giver dig mulighed for at bygge skræddersyede NLP-modeller, der er specifikke for dine krav, uden behov for nogen ML-ekspertise.
I dette indlæg demonstrerer vi, hvordan man bruger avancerede ML-teknikker til at løse fem forskellige NLP-opgaver: dokumentopsummering, tekstklassificering, besvarelse af spørgsmål, genkendelse af navngivne enheder og udtrækning af relationer. For hver af disse NLP-opgaver demonstrerer vi, hvordan man bruger Amazon SageMaker for at udføre følgende handlinger:
- Implementer og kør inferens på en præ-trænet model
- Finjuster den fortrænede model på et nyt brugerdefineret datasæt
- Forbedre finjusteringsydelsen yderligere med SageMaker automatisk model tuning
- Evaluer modellens ydeevne på de hold-out testdata med forskellige evalueringsmetrikker
Selvom vi dækker fem specifikke NLP-opgaver i dette indlæg, kan du bruge denne løsning som en skabelon til at generalisere finjustering af fortrænede modeller med dit eget datasæt og efterfølgende køre hyperparameteroptimering for at forbedre nøjagtigheden.
JumpStart løsningsskabeloner
Amazon SageMaker JumpStart leverer end-to-end-løsninger med ét klik til mange almindelige ML-brugssager. Udforsk følgende use cases for at få flere oplysninger om tilgængelige løsningsskabeloner:
JumpStart-løsningsskabelonerne dækker en række forskellige use cases, hvorunder hver af dem tilbydes flere forskellige løsningsskabeloner (denne Document Understanding-løsning er under "Udtræk og analyser data fra dokumenter" use case).
Vælg den løsningsskabelon, der passer bedst til din brugssituation, fra JumpStart-landingssiden. For mere information om specifikke løsninger under hver use case, og hvordan man starter en JumpStart-løsning, se Løsningsskabeloner.
Løsningsoversigt
Følgende billede viser, hvordan du kan bruge denne løsning med SageMaker-komponenter. SageMaker træningsjobs bruges til at træne de forskellige NLP-modeller, og SageMaker-endepunkter bruges til at implementere modellerne i hver fase. Vi bruger Amazon Simple Storage Service (Amazon S3) sammen med SageMaker for at gemme træningsdata og modelartefakter, og amazoncloudwatch at logge trænings- og slutpunktsoutput.
Åbn Document Understanding-løsningen
Naviger til Document Understanding-løsningen i JumpStart.
Nu kan vi se nærmere på nogle af de aktiver, der er inkluderet i denne løsning, begyndende med demo-notesbogen.
Demo notesbog
Du kan bruge demo-notesbogen til at sende eksempeldata til allerede implementerede modelslutpunkter til dokumentopsummering og besvarelse af spørgsmål. Demo-notebooken giver dig hurtigt mulighed for at få praktisk oplevelse ved at forespørge på eksempeldataene.
Når du har startet Document Understanding-løsningen, skal du åbne demo-notesbogen ved at vælge Brug Endpoint i Notebook.
Lad os dykke dybere ned i hver af de fem vigtigste notesbøger til denne løsning.
Forudsætninger
In Amazon SageMaker Studio, sørg for, at du bruger PyTorch 1.10 Python 3.8 CPU Optimized
billede/kerne for at åbne notesbøgerne. Træning bruger fem ml.g4dn.2xlarge instanser, så du bør hæve en anmodning om øget servicegrænse hvis din konto kræver øgede grænser for denne type.
Tekstklassificering
Tekstklassificering refererer til klassificering af en inputsætning til en af klasseetiketterne i træningsdatasættet. Denne notesbog viser, hvordan du bruger JumpStart API til tekstklassificering.
Implementer og kør inferens på den forudtrænede model
Den tekstklassificeringsmodel, vi har valgt at bruge, er bygget på en tekstindlejring (tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2
) model fra TensorFlow Hub, som er fortrænet på Wikipedia og BookCorpus datasæt.
Den model, der er tilgængelig til implementering, oprettes ved at knytte et binært klassifikationslag til outputtet af tekstindlejringsmodellen og derefter finjustere hele modellen på SST-2 datasæt, som består af positive og negative filmanmeldelser.
For at køre inferens på denne model skal vi først downloade inferensbeholderen (deploy_image_uri
), slutningsskrift (deploy_source_uri
), og foruddannet model (base_model_uri
). Vi sender dem derefter som parametre for at instantiere et SageMaker-modelobjekt, som vi derefter kan implementere:
Følgende kode viser vores svar:
Finjuster den fortrænede model på et brugerdefineret datasæt
Vi har lige gået gennem løbeslutning på en fortrænet BERT-model, som var finjusteret på SST-2
datasæt.
Dernæst diskuterer vi, hvordan man finjusterer en model på et brugerdefineret datasæt med et vilkårligt antal klasser. Datasættet, vi bruger til finjustering, er stadig SST-2
datasæt. Du kan erstatte dette datasæt med ethvert datasæt, som du er interesseret i.
Vi henter trænings Docker-containeren, træningsalgoritmekilden og den forudtrænede model:
For algoritmespecifikke hyperparametre starter vi med at hente en Python-ordbog over de træningshyperparametre, som algoritmen accepterer med deres standardværdier. Du kan tilsidesætte dem med brugerdefinerede værdier, som vist i følgende kode:
Datasættet (SST-2
) er opdelt i trænings-, validerings- og testsæt, hvor træningssættet bruges til at passe til modellen, valideringssættet bruges til at beregne evalueringsmetrikker, der kan bruges til HPO, og testsættet bruges som hold-out-data til evaluering af modellens ydeevne. Derefter uploades tog- og valideringsdatasættet til Amazon S3 og bruges til at starte finjusteringsopgaven:
Når finjusteringsopgaven er fuldført, implementerer vi modellen, kører inferens på hold-out-testdatasættet og beregner evalueringsmetrikker. Fordi det er en binær klassifikationsopgave, bruger vi nøjagtighedsscore , f1 score som evalueringsmetrikken. En større værdi indikerer den bedre ydeevne. Følgende skærmbillede viser vores resultater.
Forbedre finjusteringsydelsen yderligere med SageMaker automatisk modeljustering
I dette trin viser vi, hvordan du yderligere kan forbedre modellens ydeevne ved at finjustere modellen med SageMaker automatisk modeljustering. Automatisk modeljustering, også kendt som hyperparameteroptimering (HPO), finder den bedste version af en model ved at køre flere træningsjob på dit datasæt med en række hyperparametre, som du angiver. Den vælger derefter de hyperparameterværdier, der resulterer i en model, der yder bedst, målt med en metrik, som du vælger, på valideringsdatasættet.
Først sætter vi målet som nøjagtighedsscore på valideringsdataene (val_accuracy
) og definerede metrics for tuning-jobbet ved at angive det objektive metriske navn og et regulært udtryk (regex). Det regulære udtryk bruges til at matche algoritmens logoutput og fange de numeriske værdier af metrikker. Dernæst specificerer vi hyperparameterområder for at vælge de bedste hyperparameterværdier fra. Vi sætter det samlede antal tuningjobs til seks og fordeler disse jobs på tre forskellige Amazon Elastic Compute Cloud (Amazon EC2) forekomster til at køre parallelle tuningjob. Se følgende kode:
Vi videregiver disse værdier for at instantiere et SageMaker Estimator-objekt, svarende til det, vi gjorde i det forrige finjusteringstrin. I stedet for at ringe til fit
funktion af Estimator
objekt, vi passerer Estimator
objekt i som en parameter til HyperparameterTuner konstruktør og ring til fit
funktion af det til at starte tuning job:
Når tuning-jobbene er fuldført, implementerer vi den model, der giver den bedste evaluerings-metriske score på valideringsdatasættet, udfører konklusioner på det samme hold-out-testdatasæt, som vi gjorde i det foregående afsnit, og beregner evalueringsmetrikker.
Resultaterne viser, at den model, der er valgt ved automatisk modeljustering, overgår den model, der blev finjusteret i det foregående afsnit på et hold-out-testdatasæt.
Navngivet enhedsgenkendelse
Navngivne entitetsgenkendelse (NER) er processen med at detektere og klassificere navngivne enheder i foruddefinerede kategorier, såsom navne på personer, organisationer, lokationer og mængder. Der er mange anvendelsessager i den virkelige verden for NER, såsom anbefalingsmotorer, kategorisering og tildeling af kundesupportbilletter til den rigtige afdeling, udtrækning af væsentlig information fra patientrapporter i sundhedsvæsenet og indholdsklassificering fra nyheder og blogs.
Implementer og kør inferens på den forudtrænede model
Vi implementerer En_core_web_md model fra spaCy bibliotek. spaCy er et open source NLP-bibliotek, der kan bruges til forskellige opgaver, og har indbyggede metoder til NER. Vi bruger en AWS PyTorch Deep Learning Container (DLC) med en script-tilstand og installerer spaCy-biblioteket som en afhængighed oven på containeren.
Dernæst et indgangspunkt for scriptet (argument entry_point.py
) er specificeret og indeholder al koden til at downloade og indlæse En_core_web_md
modellere og udføre inferens på de data, der sendes til endepunktet. Endelig mangler vi stadig at yde model_data
som den fortrænede model for slutninger. Fordi de fortrænede En_core_web_md
model downloades on the fly, som er specificeret i indtastningsscriptet, leverer vi en tom arkivfil. Når slutpunktet er implementeret, kan du kalde slutpunktet direkte fra notesbogen ved hjælp af SageMaker Python SDK'er Predictor
. Se følgende kode:
Inputdata for modellen er et tekstdokument. Den navngivne enhedsmodel udtrækker navneordsstykker og navngivne enheder i tekstdokumentet og klassificerer dem i en række forskellige typer (såsom personer, steder og organisationer). Eksempel på input og output er vist i følgende kode. Det start_char
parameter angiver tegnforskydningen for starten af spændvidden, og end_char
angiver slutningen af spændvidden.
Finjuster den fortrænede model på et brugerdefineret datasæt
I dette trin demonstrerer vi, hvordan man finjusterer en fortrænet sprogmodel til NER på dit eget datasæt. Finjusteringstrinnet opdaterer modelparametrene for at fange karakteristikken af dine egne data og forbedre nøjagtigheden. Vi bruger WikiANN (PAN-X) datasæt til at finjustere DistilBERT-base-ukappet Transformer model fra Hugging Face.
Datasættet er opdelt i trænings-, validerings- og testsæt.
Dernæst specificerer vi modellens hyperparametre og bruger en AWS Hugging Face DLC med en script-tilstand (argument entry_point
) for at udløse finjusteringsjobbet:
Når finjusteringsopgaven er fuldført, implementerer vi et slutpunkt og forespørger på dette slutpunkt med de tilbageholdte testdata. For at forespørge på slutpunktet skal hver tekststreng tokeniseres til en eller flere tokens og sendes til transformatormodellen. Hvert token får et forudsagt navngivet entity tag. Fordi hver tekststreng kan tokeniseres til en eller flere tokens, er vi nødt til at duplikere grundsandhedens navngivne entity-tag for strengen til alle de tokens, der er knyttet til den. Den medfølgende notesbog fører dig gennem trinene for at opnå dette.
Til sidst bruger vi Hugging Face indbyggede evalueringsmetrics seqeval til at beregne evalueringsresultater på de hold-out testdata. De anvendte evalueringsmetrikker er generel præcision, generel genkaldelse, samlet F1 og nøjagtighed. Følgende skærmbillede viser vores resultater.
Forbedre finjusteringsydelsen yderligere med SageMaker automatisk modeljustering
I lighed med tekstklassificering demonstrerer vi, hvordan du yderligere kan forbedre modellens ydeevne ved at finjustere modellen med SageMaker automatisk modeljustering. For at køre tuning-jobbet skal vi definere en objektiv metrik, vi vil bruge til at evaluere modelydelse på valideringsdatasættet (F1-score i dette tilfælde), hyperparameterområder til at vælge de bedste hyperparameterværdier fra, samt tuning af jobkonfigurationer som f.eks. maksimalt antal tuningjob og antal parallelle job, der skal startes ad gangen:
Når tuning-jobbene er fuldført, implementerer vi den model, der giver den bedste evaluerings-metriske score på valideringsdatasættet, udfører konklusioner på det samme hold-out-testdatasæt, som vi gjorde i det foregående afsnit, og beregner evalueringsmetrikker.
Vi kan se, at modellen med HPO opnår markant bedre ydeevne på tværs af alle målinger.
Besvarelse af spørgsmål
Besvarelse af spørgsmål er nyttig, når du vil forespørge på en stor mængde tekst for at få specifikke oplysninger. Det giver en bruger mulighed for at udtrykke et spørgsmål i naturligt sprog og få et øjeblikkeligt og kort svar. Spørgsmålsbesvarelsessystemer drevet af NLP kan bruges i søgemaskiner og telefonsamtalegrænseflader.
Implementer og kør inferens på den forudtrænede model
Vores præ-trænede model er den ekstraktive spørgsmål besvarelse (EQA) model bert-store-uindkapslede-hel-ord-maskering-finjusteret-squad bygget på en Transformer-model fra Hugging Face. Vi bruger en AWS PyTorch DLC med en script-tilstand og installerer transformers bibliotek som en afhængighed oven på containeren. I lighed med NER-opgaven giver vi en tom arkivfil i argumentet model_data
fordi den fortrænede model downloades i farten. Når slutpunktet er implementeret, kan du kalde slutpunktet direkte fra notesbogen ved hjælp af SageMaker Python SDK'er Predictor
. Se følgende kode:
Det eneste, vi skal gøre, er at konstruere et ordbogsobjekt med to nøgler. context
er den tekst, vi ønsker at hente information fra. question
er den naturlige sprogforespørgsel, der specificerer, hvilken information vi er interesseret i at udtrække. Vi ringer predict
på vores prædiktor, og vi bør få et svar fra det endepunkt, der indeholder de mest sandsynlige svar:
Vi har svaret, og vi kan udskrive de mest sandsynlige svar, der er udtrukket fra den foregående tekst. Hvert svar har en tillidsscore, der bruges til rangering (men denne score skal ikke tolkes som en sand sandsynlighed). Ud over det ordrette svar får du også start- og slutkarakterindeksene for svaret fra den oprindelige kontekst:
Nu finjusterer vi denne model med vores eget tilpassede datasæt for at få bedre resultater.
Finjuster den fortrænede model på et brugerdefineret datasæt
I dette trin demonstrerer vi, hvordan du finjusterer en fortrænet sprogmodel til EQA på dit eget datasæt. Finjusteringstrinnet opdaterer modelparametrene for at fange karakteristikken af dine egne data og forbedre nøjagtigheden. Vi bruger SQuAD2.0 datasæt til at finjustere en tekstindlejringsmodel bert-base-ukappet fra Hugging Face. Den tilgængelige model til finjustering knytter et svarudtrækslag til tekstindlejringsmodellen og initialiserer lagparametrene til tilfældige værdier. Finjusteringstrinnet finjusterer alle modelparametre for at minimere forudsigelsesfejl på inputdata og returnerer den finjusterede model.
I lighed med tekstklassificeringsopgaven er datasættet (SQuAD2.0) opdelt i træning, validering og testsæt.
Dernæst specificerer vi modellens hyperparametre og bruger JumpStart API for at udløse et finjusteringsjob:
Når finjusteringsopgaven er fuldført, implementerer vi modellen, kører inferens på hold-out-testdatasættet og beregner evalueringsmetrikker. De anvendte evalueringsmålinger er den gennemsnitlige score for nøjagtig matchning og den gennemsnitlige F1-score. Følgende skærmbillede viser resultaterne.
Forbedre finjusteringsydelsen yderligere med SageMaker automatisk modeljustering
I lighed med de foregående afsnit bruger vi en HyperparameterTuner
gør indsigelse mod at starte tuningjob:
Når tuning-jobbene er fuldført, implementerer vi den model, der giver den bedste evaluerings-metriske score på valideringsdatasættet, udfører konklusioner på det samme hold-out-testdatasæt, som vi gjorde i det foregående afsnit, og beregner evalueringsmetrikker.
Vi kan se, at modellen med HPO viser en markant bedre ydeevne på hold-out testdata.
Relationsudvinding
Relationsekstraktion er opgaven med at udtrække semantiske relationer fra tekst, som normalt forekommer mellem to eller flere entiteter. Relationsekstraktion spiller en vigtig rolle i at udtrække struktureret information fra ustrukturerede kilder såsom rå tekst. I denne notesbog demonstrerer vi to eksempler på brug af relationsekstraktion.
Finjuster den fortrænede model på et brugerdefineret datasæt
Vi bruger en relationsekstraktionsmodel bygget på en BERT-base-ukappet model ved hjælp af transformere fra Hugging Face transformere bibliotek. Modellen til finjustering vedhæfter et lineært klassifikationslag, der tager et par token-indlejringer, som udlæses af tekstindlejringsmodellen, og initialiserer lagparametrene til tilfældige værdier. Finjusteringstrinnet finjusterer alle modelparametre for at minimere forudsigelsesfejl på inputdata og returnerer den finjusterede model.
Det datasæt vi finjusterer modellen er SemEval-2010 Opgave 8. Den model, der returneres ved finjustering, kan videreudvikles til slutninger.
Datasættet indeholder trænings-, validerings- og testsæt.
Vi bruger AWS PyTorch DLC med en script-tilstand fra SageMaker Python SDK, hvor transformers
bibliotek er installeret som afhængigheden oven på containeren. Vi definerer SageMaker PyTorch
estimator og et sæt hyperparametre såsom den forudtrænede model, indlæringshastighed og epoketal for at udføre finjusteringen. Koden til finjustering af relationsekstraktionsmodellen er defineret i entry_point.py
. Se følgende kode:
Forbedre finjusteringsydelsen yderligere med SageMaker automatisk modeljustering
I lighed med de foregående afsnit bruger vi en HyperparameterTuner
objekt til at interagere med SageMaker hyperparameter tuning API'er. Vi kan starte hyperparameterindstillingsjobbet ved at kalde fit
metode:
Når hyperparameterindstillingsjobbet er afsluttet, udfører vi slutninger og kontrollerer evalueringsresultatet.
Vi kan se, at modellen med HPO viser bedre ydeevne på hold-out testdata.
Dokumentopsummering
Dokument- eller tekstresumé er opgaven med at kondensere store mængder tekstdata til en mindre delmængde af meningsfulde sætninger, der repræsenterer den vigtigste eller mest relevante information i det originale indhold. Dokumentresumé er en nyttig teknik til at destillere vigtig information fra store mængder tekstdata til nogle få sætninger. Tekstopsummering bruges i mange use cases, såsom dokumentbehandling og udtrækning af information fra blogs, artikler og nyheder.
Denne notesbog demonstrerer implementeringen af dokumentopsummeringsmodellen T5-base fra Hugging Face transformere bibliotek. Vi tester også de implementerede endepunkter ved hjælp af en tekstartikel og evaluerer resultater ved hjælp af den indbyggede Hugging Face-evalueringsmetrik RED.
I lighed med spørgsmålsbesvarelsen og NER-notesbøgerne bruger vi PyTorchModel
fra SageMaker Python SDK sammen med en entry_point.py
script til at indlæse T5-basemodellen til et HTTPS-slutpunkt. Når slutpunktet er implementeret, kan vi sende en tekstartikel til slutpunktet for at få et forudsigelsessvar:
Dernæst evaluerer og sammenligner vi tekstartiklen og opsummeringsresultatet ved hjælp af ROUGE-metrikken. Der beregnes tre evalueringsmetrics: rougeN
, rougeL
og rougeLsum
. rougeN
måler antallet af matchende n-grams
mellem den modelgenererede tekst (resuméresultat) og en reference
(input tekst). Metrikken rougeL
, rougeLsum
mål de længste matchende sekvenser af ord ved at lede efter de længste fælles understrenge i de genererede resuméer og referenceresuméer. For hver metrik beregnes konfidensintervaller for præcision, genkaldelse og F1-score. Se følgende kode:
Ryd op
Ressourcer oprettet til denne løsning kan slettes ved hjælp af Slet alle ressourcer knap fra SageMaker Studio IDE. Hver notesbog indeholder også en oprydningssektion med koden til at slette slutpunkterne.
Konklusion
I dette indlæg demonstrerede vi, hvordan man bruger state-of-the-art ML-teknikker til at løse fem forskellige NLP-opgaver: dokumentopsummering, tekstklassificering, spørgsmål og svar, navngivet enhedsgenkendelse og relationsudtrækning ved hjælp af Jumpstart. Kom godt i gang med Jumpstart nu!
Om forfatterne
Dr. Xin Huang er en Applied Scientist for Amazon SageMaker JumpStart og Amazon SageMaker indbyggede algoritmer. Han fokuserer på at udvikle skalerbare maskinlæringsalgoritmer. Hans forskningsinteresser er inden for området naturlig sprogbehandling, forklarlig dyb læring på tabeldata og robust analyse af ikke-parametrisk rum-tid-klynger. Han har publiceret mange artikler i ACL, ICDM, KDD-konferencer og Royal Statistical Society: Series A journal.
Vivek Gangasani er Senior Machine Learning Solutions Architect hos Amazon Web Services. Han hjælper startups med at bygge og operationalisere AI/ML-applikationer. Han er i øjeblikket fokuseret på at kombinere sin baggrund inden for containere og maskinlæring for at levere løsninger på MLOps, ML Inference og low-code ML. I sin fritid nyder han at prøve nye restauranter og udforske nye tendenser inden for kunstig intelligens og dyb læring.
Geremy Cohen er Solutions Architect hos AWS, hvor han hjælper kunder med at bygge banebrydende, cloud-baserede løsninger. I sin fritid nyder han korte gåture på stranden, udforske bugten med sin familie, ordne ting omkring huset, bryde ting rundt i huset og grille.
Neelam Koshiya er virksomhedsløsningsarkitekt hos AWS. Hendes nuværende fokus er at hjælpe virksomhedskunder med deres cloud-adoptionsrejse for strategiske forretningsresultater. I sin fritid nyder hun at læse og være udendørs.
- Avanceret (300)
- AI
- ai kunst
- ai kunst generator
- en robot
- Amazon SageMaker
- Amazon SageMaker JumpStart
- kunstig intelligens
- certificering af kunstig intelligens
- kunstig intelligens i banksektoren
- kunstig intelligens robot
- kunstig intelligens robotter
- software til kunstig intelligens
- AWS maskinindlæring
- blockchain
- blockchain konference ai
- coingenius
- samtale kunstig intelligens
- kryptokonference ai
- dalls
- dyb læring
- Ekspert (400)
- du har google
- machine learning
- plato
- platon ai
- Platon Data Intelligence
- Platon spil
- PlatoData
- platogaming
- skala ai
- syntaks
- zephyrnet