Organisationer över branscher som detaljhandel, bank, finans, hälsovård, tillverkning och utlåning måste ofta hantera stora mängder ostrukturerade textdokument som kommer från olika källor, såsom nyheter, bloggar, produktrecensioner, kundsupportkanaler och sociala medier. Dessa dokument innehåller viktig information som är nyckeln till viktiga affärsbeslut. När en organisation växer blir det en utmaning att extrahera viktig information från dessa dokument. Med utvecklingen av naturlig språkbehandling (NLP) och maskininlärning (ML)-tekniker kan vi upptäcka värdefulla insikter och kopplingar från dessa textdokument snabbt och med hög noggrannhet, och därigenom hjälpa företag att fatta affärsbeslut av hög kvalitet i tid. Fullt hanterade NLP-tjänster har också påskyndat införandet av NLP. Amazon Comprehend är en fullständigt hanterad tjänst som gör att du kan bygga skräddarsydda NLP-modeller som är specifika för dina krav, utan att behöva någon ML-expertis.
I det här inlägget visar vi hur man använder toppmoderna ML-tekniker för att lösa fem olika NLP-uppgifter: dokumentsammanfattning, textklassificering, frågesvar, namngiven enhetsigenkänning och relationsextraktion. För var och en av dessa NLP-uppgifter visar vi hur man använder Amazon SageMaker för att utföra följande åtgärder:
- Distribuera och kör slutledning på en förtränad modell
- Finjustera den förtränade modellen på en ny anpassad datauppsättning
- Förbättra finjusteringsprestandan ytterligare med SageMaker automatisk modelljustering
- Utvärdera modellens prestanda på håll-out testdata med olika utvärderingsmått
Även om vi täcker fem specifika NLP-uppgifter i det här inlägget, kan du använda den här lösningen som en mall för att generalisera finjustering av förtränade modeller med din egen datauppsättning, och därefter köra hyperparameteroptimering för att förbättra noggrannheten.
JumpStart-lösningsmallar
Amazon SageMaker JumpStart tillhandahåller ett klick, end-to-end-lösningar för många vanliga ML-användningsfall. Utforska följande användningsfall för mer information om tillgängliga lösningsmallar:
JumpStart-lösningsmallarna täcker en mängd olika användningsfall, under vilka flera olika lösningsmallar erbjuds (denna Document Understanding-lösning finns under användningsfallet "Extrahera och analysera data från dokument").
Välj den lösningsmall som bäst passar ditt användningsfall från JumpStart-målsidan. För mer information om specifika lösningar under varje användningsfall och hur man startar en JumpStart-lösning, se Lösningsmallar.
Lösningsöversikt
Följande bild visar hur du kan använda den här lösningen med SageMaker-komponenter. SageMakers utbildningsjobb används för att träna de olika NLP-modellerna, och SageMaker-slutpunkter används för att distribuera modellerna i varje steg. Vi använder Amazon enkel lagringstjänst (Amazon S3) tillsammans med SageMaker för att lagra träningsdata och modellartefakter, och amazoncloudwatch för att logga tränings- och slutpunktsutgångar.
Öppna lösningen Document Understanding
Navigera till Document Understanding-lösningen i JumpStart.
Nu kan vi ta en närmare titt på några av tillgångarna som ingår i den här lösningen, med början med demo-anteckningsboken.
Demo anteckningsbok
Du kan använda demonstrationsanteckningsboken för att skicka exempeldata till redan utplacerade modellslutpunkter för uppgifterna för dokumentsammanfattning och frågesvar. Demo-anteckningsboken låter dig snabbt få praktisk erfarenhet genom att fråga efter exempeldata.
När du har startat Document Understanding-lösningen öppnar du demo-anteckningsboken genom att välja Använd Endpoint i Notebook.
Låt oss dyka djupare in i var och en av de fem viktigaste bärbara datorerna för den här lösningen.
Förutsättningar
In Amazon SageMaker Studio, se till att du använder PyTorch 1.10 Python 3.8 CPU Optimized
bild/kärna för att öppna anteckningsböckerna. Träning använder fem ml.g4dn.2xlarge instanser, så du bör höja en begäran om höjning av tjänstegränsen om ditt konto kräver ökade gränser för denna typ.
Textklassificering
Textklassificering hänvisar till att klassificera en inmatad mening till en av klassetiketterna i träningsdatauppsättningen. Den här anteckningsboken visar hur man använder JumpStart API för textklassificering.
Distribuera och kör slutledning på den förtränade modellen
Textklassificeringsmodellen vi har valt att använda bygger på en textinbäddning (tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2
) modell från TensorFlow Hub, som är förtränad på Wikipedia och BookCorpus dataset.
Modellen som är tillgänglig för distribution skapas genom att bifoga ett binärt klassificeringsskikt till utdata från textinbäddningsmodellen och sedan finjustera hela modellen på SST-2 datauppsättning, som består av positiva och negativa filmrecensioner.
För att köra inferens på den här modellen måste vi först ladda ner inferensbehållaren (deploy_image_uri
), slutledningsskript (deploy_source_uri
), och förutbildad modell (base_model_uri
). Vi skickar sedan dessa som parametrar för att instansiera ett SageMaker-modellobjekt, som vi sedan kan distribuera:
Följande kod visar våra svar:
Finjustera den förtränade modellen på en anpassad datauppsättning
Vi gick precis igenom löpande slutledning på en förtränad BERT-modell, som var finjusterad på SST-2
datasätt.
Därefter diskuterar vi hur man finjusterar en modell på en anpassad datauppsättning med valfritt antal klasser. Datauppsättningen vi använder för finjustering är fortfarande den SST-2
dataset. Du kan ersätta denna datauppsättning med vilken datauppsättning som helst som du är intresserad av.
Vi hämtar utbildningsdockningsbehållaren, träningsalgoritmkällan och förtränad modell:
För algoritmspecifika hyperparametrar börjar vi med att hämta en Python-ordbok över de träningshyperparametrar som algoritmen accepterar med sina standardvärden. Du kan åsidosätta dem med anpassade värden, som visas i följande kod:
Datauppsättningen (SST-2
) är uppdelad i utbildnings-, validerings- och testuppsättningar, där träningsuppsättningen används för att passa modellen, valideringsuppsättningen används för att beräkna utvärderingsmått som kan användas för HPO, och testuppsättningen används som uthållningsdata för att utvärdera modellens prestanda. Därefter laddas tåg- och valideringsdataset upp till Amazon S3 och används för att lansera finjusterande träningsjobb:
När finjusteringsjobbet är slutfört distribuerar vi modellen, kör slutledning på den hållna testdatauppsättningen och beräknar utvärderingsstatistik. Eftersom det är en binär klassificeringsuppgift använder vi noggrannhetspoäng och F1-poäng som utvärderingsmått. Ett högre värde indikerar bättre prestanda. Följande skärmdump visar våra resultat.
Förbättra finjusteringsprestandan ytterligare med SageMaker automatisk modellinställning
I det här steget visar vi hur du ytterligare kan förbättra modellens prestanda genom att finjustera modellen med SageMaker automatisk modellinställning. Automatisk modellinställning, även känd som hyperparameteroptimering (HPO), hittar den bästa versionen av en modell genom att köra flera träningsjobb på din datauppsättning med en rad hyperparametrar som du anger. Den väljer sedan hyperparametervärdena som resulterar i en modell som presterar bäst, mätt med ett mått som du väljer, på valideringsdataset.
Först sätter vi målet som noggrannhetspoäng på valideringsdata (val_accuracy
) och definierade mätvärden för inställningsjobbet genom att ange det objektiva måttets namn och ett reguljärt uttryck (regex). Det reguljära uttrycket används för att matcha algoritmens loggutgång och fånga de numeriska värdena för mätvärden. Därefter anger vi hyperparameterintervall för att välja de bästa hyperparametervärdena från. Vi sätter det totala antalet trimjobb till sex och fördelar dessa jobb på tre olika Amazon Elastic Compute Cloud (Amazon EC2)-instanser för att köra parallella inställningsjobb. Se följande kod:
Vi skickar dessa värden för att instansiera ett SageMaker Estimator-objekt, liknande det vi gjorde i det föregående finjusteringssteget. Istället för att ringa fit
funktion av Estimator
objekt, vi passerar Estimator
objekt i som en parameter till HyperparameterTuner konstruktör och ring fit
funktion för att starta trimningsjobb:
När trimningsjobben är klara, distribuerar vi modellen som ger det bästa utvärderingsmåttet på valideringsdatasetet, utför slutsatser på samma hold-out-testdataset som vi gjorde i föregående avsnitt och beräknar utvärderingsmått.
Resultaten visar att den modell som valts genom automatisk modellinställning avsevärt överträffar den modell som finjusterats i föregående avsnitt på en hold-out-testdatauppsättning.
Namngivet enhet erkännande
Namngivna enheter (NER) är processen att upptäcka och klassificera namngivna enheter i fördefinierade kategorier, såsom namn på personer, organisationer, platser och kvantiteter. Det finns många verkliga användningsfall för NER, till exempel rekommendationsmotorer, kategorisering och tilldelning av kundsupportbiljetter till rätt avdelning, extrahering av viktig information från patientrapporter inom vården och innehållsklassificering från nyheter och bloggar.
Distribuera och kör slutledning på den förtränade modellen
Vi distribuerar En_core_web_md modell från rymd bibliotek. spaCy är ett NLP-bibliotek med öppen källkod som kan användas för olika uppgifter, och har inbyggda metoder för NER. Vi använder en AWS PyTorch Deep Learning Container (DLC) med ett skriptläge och installerar spaCy-biblioteket som ett beroende ovanpå behållaren.
Därefter en ingångspunkt för skriptet (argument entry_point.py
) specificeras och innehåller all kod för att ladda ner och ladda En_core_web_md
modellera och utföra slutledning av data som skickas till endpoint. Slutligen måste vi fortfarande ge model_data
som den förtränade modellen för slutledning. Eftersom de förutbildade En_core_web_md
modellen laddas ner i farten, vilket anges i inmatningsskriptet, tillhandahåller vi en tom arkivfil. Efter att slutpunkten har distribuerats kan du anropa slutpunkten direkt från anteckningsboken med SageMaker Python SDK:s Predictor
. Se följande kod:
Indata för modellen är ett textdokument. Den namngivna enhetsmodellen extraherar substantivbitar och namngivna enheter i textdokumentet och klassificerar dem i ett antal olika typer (som personer, platser och organisationer). Exempel på ingång och utdata visas i följande kod. De start_char
parameter indikerar teckenoffset för början av intervallet, och end_char
indikerar slutet av intervallet.
Finjustera den förtränade modellen på en anpassad datauppsättning
I det här steget visar vi hur man finjusterar en förtränad språkmodell för NER på din egen datauppsättning. Finjusteringssteget uppdaterar modellparametrarna för att fånga egenskaperna hos dina egna data och förbättra noggrannheten. Vi använder WikiANN (PAN-X) dataset för att finjustera DistilBERT-bas-ohölje Transformatormodell från Hugging Face.
Datauppsättningen är uppdelad i utbildnings-, validerings- och testuppsättningar.
Därefter anger vi hyperparametrarna för modellen och använder en AWS Hugging Face DLC med ett skriptläge (argument entry_point
) för att utlösa finjusteringsjobbet:
När finjusteringsjobbet är slutfört distribuerar vi en slutpunkt och frågar efter den slutpunkten med testdata som håller ut. För att fråga efter slutpunkten måste varje textsträng tokeniseras till en eller flera tokens och skickas till transformatormodellen. Varje token får en förutspådd namngiven entitetstagg. Eftersom varje textsträng kan tokeniseras till en eller flera tokens, måste vi duplicera entitetstaggen med namnet ground truth för strängen till alla tokens som är associerade med den. Den medföljande anteckningsboken leder dig genom stegen för att uppnå detta.
Slutligen använder vi Hugging Face inbyggda utvärderingsmått seqeval för att beräkna utvärderingspoäng på håll-out-testdata. De utvärderingsmått som används är övergripande precision, övergripande återkallelse, övergripande F1 och noggrannhet. Följande skärmdump visar våra resultat.
Förbättra finjusteringsprestandan ytterligare med SageMaker automatisk modellinställning
I likhet med textklassificering visar vi hur du ytterligare kan förbättra modellens prestanda genom att finjustera modellen med SageMaker automatisk modellinställning. För att köra inställningsjobbet behöver vi definiera ett objektivt mått som vi vill använda för att utvärdera modellprestanda på valideringsdataset (F1-poäng i det här fallet), hyperparameterintervall för att välja de bästa hyperparametervärdena från, samt justera jobbkonfigurationer som t.ex. maximalt antal trimjobb och antal parallella jobb att lansera åt gången:
När trimningsjobben är klara, distribuerar vi modellen som ger det bästa utvärderingsmåttet på valideringsdatasetet, utför slutsatser på samma hold-out-testdataset som vi gjorde i föregående avsnitt och beräknar utvärderingsmått.
Vi kan se att modellen med HPO uppnår betydligt bättre prestanda över alla mätvärden.
Frågesvar
Frågesvar är användbart när du vill fråga en stor mängd text för specifik information. Det låter en användare uttrycka en fråga på naturligt språk och få ett omedelbart och kort svar. Frågesvarssystem som drivs av NLP kan användas i sökmotorer och gränssnitt för telefonsamtal.
Distribuera och kör slutledning på den förtränade modellen
Vår förutbildade modell är den extraktiva frågesvarsmodellen (EQA). bert-stora-uncased-hela-ord-maskering-finstämda-squad byggd på en Transformer-modell från Hugging Face. Vi använder en AWS PyTorch DLC med ett skriptläge och installerar transformatorer bibliotek som ett beroende ovanpå behållaren. I likhet med NER-uppgiften tillhandahåller vi en tom arkivfil i argumentet model_data
eftersom den förtränade modellen laddas ner i farten. Efter att slutpunkten har distribuerats kan du anropa slutpunkten direkt från anteckningsboken med SageMaker Python SDK:s Predictor
. Se följande kod:
Allt vi behöver göra är att konstruera ett ordboksobjekt med två nycklar. context
är texten som vi vill hämta information från. question
är den naturliga språkfrågan som anger vilken information vi är intresserade av att extrahera. Vi ringer predict
på vår prediktor, och vi bör få ett svar från den slutpunkt som innehåller de mest sannolika svaren:
Vi har svaret, och vi kan skriva ut de mest sannolika svaren som har hämtats från föregående text. Varje svar har en konfidenspoäng som används för rankning (men denna poäng ska inte tolkas som en sann sannolikhet). Förutom det ordagranta svaret får du också start- och slutteckenindex för svaret från det ursprungliga sammanhanget:
Nu finjusterar vi den här modellen med vår egen anpassade datauppsättning för att få bättre resultat.
Finjustera den förtränade modellen på en anpassad datauppsättning
I det här steget visar vi hur du finjusterar en förtränad språkmodell för EQA på din egen datauppsättning. Finjusteringssteget uppdaterar modellparametrarna för att fånga egenskaperna hos dina egna data och förbättra noggrannheten. Vi använder SQuAD2.0 datauppsättning för att finjustera en textinbäddningsmodell bert-bas-okapslad från Hugging Face. Modellen som är tillgänglig för finjustering kopplar ett svarsextraherande lager till textinbäddningsmodellen och initierar lagerparametrarna till slumpmässiga värden. Finjusteringssteget finjusterar alla modellparametrar för att minimera prediktionsfel på indata och returnerar den finjusterade modellen.
I likhet med textklassificeringsuppgiften är datasetet (SQuAD2.0) uppdelat i träning, validering och testuppsättning.
Därefter anger vi modellens hyperparametrar och använder JumpStart API för att utlösa ett finjusteringsjobb:
När finjusteringsjobbet är slutfört distribuerar vi modellen, kör slutledning på den hållna testdatauppsättningen och beräknar utvärderingsstatistik. De utvärderingsmått som används är den genomsnittliga exakta matchningspoängen och den genomsnittliga F1-poängen. Följande skärmdump visar resultaten.
Förbättra finjusteringsprestandan ytterligare med SageMaker automatisk modellinställning
I likhet med föregående avsnitt använder vi en HyperparameterTuner
invända mot att starta trimjobb:
När trimningsjobben är klara, distribuerar vi modellen som ger det bästa utvärderingsmåttet på valideringsdatasetet, utför slutsatser på samma hold-out-testdataset som vi gjorde i föregående avsnitt och beräknar utvärderingsmått.
Vi kan se att modellen med HPO visar en betydligt bättre prestanda på uthållningstestdata.
Relationsutvinning
Relationsextraktion är uppgiften att extrahera semantiska relationer från text, som vanligtvis förekommer mellan två eller flera entiteter. Relationsextraktion spelar en viktig roll för att extrahera strukturerad information från ostrukturerade källor som råtext. I den här anteckningsboken visar vi två användningsfall av relationsextraktion.
Finjustera den förtränade modellen på en anpassad datauppsättning
Vi använder en relationsextraktionsmodell byggd på en BERT-bas utan hölje modell med transformatorer från Kramande ansikts transformatorer bibliotek. Modellen för finjustering bifogar ett linjärt klassificeringsskikt som tar ett par tokeninbäddningar som matas ut av textinbäddningsmodellen och initierar lagerparametrarna till slumpmässiga värden. Finjusteringssteget finjusterar alla modellparametrar för att minimera prediktionsfel på indata och returnerar den finjusterade modellen.
Datauppsättningen vi finjusterar modellen är SemEval-2010 Uppgift 8. Modellen som returneras genom finjustering kan vidareutvecklas för slutledning.
Datauppsättningen innehåller utbildning, validering och testuppsättningar.
Vi använder AWS PyTorch DLC med ett skriptläge från SageMaker Python SDK, där transformers
biblioteket är installerat som beroende på toppen av behållaren. Vi definierar SageMaker PyTorch
estimator och en uppsättning hyperparametrar såsom den förtränade modellen, inlärningshastigheten och epoktal för att utföra finjusteringen. Koden för att finjustera relationsextraktionsmodellen definieras i entry_point.py
. Se följande kod:
Förbättra finjusteringsprestandan ytterligare med SageMaker automatisk modellinställning
I likhet med föregående avsnitt använder vi en HyperparameterTuner
objekt för att interagera med SageMaker hyperparameter tuning API:er. Vi kan starta hyperparameterjusteringsjobbet genom att anropa fit
metod:
När hyperparameterinställningsjobbet är klart utför vi slutledning och kontrollerar utvärderingspoängen.
Vi kan se att modellen med HPO visar bättre prestanda på uthållningstestdata.
Dokumentsammanfattning
Dokument- eller textsammanfattning är uppgiften att kondensera stora mängder textdata till en mindre delmängd av meningsfulla meningar som representerar den viktigaste eller mest relevanta informationen i det ursprungliga innehållet. Dokumentsammanfattning är en användbar teknik för att destillera viktig information från stora mängder textdata till några få meningar. Textsammanfattning används i många användningsfall, såsom dokumentbehandling och extrahering av information från bloggar, artiklar och nyheter.
Den här anteckningsboken visar hur man använder dokumentsammanfattningsmodellen T5-bas från Kramande ansikts transformatorer bibliotek. Vi testar också de implementerade slutpunkterna med hjälp av en textartikel och utvärderar resultaten med hjälp av det inbyggda utvärderingsmåttet Hugging Face RÖD.
I likhet med frågesvar och NER-anteckningsböcker använder vi PyTorchModel
från SageMaker Python SDK tillsammans med en entry_point.py
skript för att ladda T5-basmodellen till en HTTPS-slutpunkt. När slutpunkten har distribuerats framgångsrikt kan vi skicka en textartikel till slutpunkten för att få ett förutsägelsesvar:
Därefter utvärderar och jämför vi textartikeln och sammanfattningsresultatet med hjälp av ROUGE-måttet. Tre utvärderingsmått beräknas: rougeN
, rougeL
och rougeLsum
. rougeN
mäter antalet matchningar n-grams
mellan den modellgenererade texten (sammanfattningsresultat) och en reference
(mata in text). Måtten rougeL
och rougeLsum
mät de längsta matchande sekvenserna av ord genom att leta efter de längsta vanliga delsträngarna i de genererade sammanfattningarna och referenssammanfattningarna. För varje mätvärde beräknas konfidensintervall för precision, återkallelse och F1-poäng. Se följande kod:
Städa upp
Resurser som skapats för denna lösning kan raderas med hjälp av Ta bort alla resurser från SageMaker Studio IDE. Varje anteckningsbok innehåller också en rensningssektion med koden för att ta bort slutpunkterna.
Slutsats
I det här inlägget demonstrerade vi hur man använder toppmoderna ML-tekniker för att lösa fem olika NLP-uppgifter: dokumentsammanfattning, textklassificering, fråga och svar, namngiven enhetsigenkänning och relationsextraktion med Jumpstart. Kom igång med Jumpstart nu!
Om författarna
Dr Xin Huang är en tillämpad forskare för Amazon SageMaker JumpStart och Amazon SageMaker inbyggda algoritmer. Han fokuserar på att utveckla skalbara maskininlärningsalgoritmer. Hans forskningsintressen är inom området naturlig språkbehandling, förklarlig djupinlärning på tabelldata och robust analys av icke-parametrisk rum-tid-klustring. Han har publicerat många artiklar i ACL, ICDM, KDD-konferenser och Royal Statistical Society: Series A journal.
Vivek Gangasani är Senior Machine Learning Solutions Architect på Amazon Web Services. Han hjälper startups att bygga och operationalisera AI/ML-applikationer. Han fokuserar för närvarande på att kombinera sin bakgrund inom Containers och Machine Learning för att leverera lösningar på MLOps, ML Inference och low-code ML. På fritiden tycker han om att prova nya restauranger och utforska nya trender inom AI och djupinlärning.
Geremy Cohen är en lösningsarkitekt med AWS där han hjälper kunderna att bygga avancerade molnbaserade lösningar. På fritiden njuter han av korta promenader på stranden, utforskar vikområdet med sin familj, fixar saker runt huset, bryter saker runt huset och grillar.
Neelam Koshiya är företagslösningsarkitekt på AWS. Hennes nuvarande fokus är att hjälpa företagskunder med deras molnadoptionsresa för strategiska affärsresultat. På fritiden tycker hon om att läsa och vara utomhus.
- Avancerat (300)
- AI
- ai konst
- ai art generator
- har robot
- Amazon SageMaker
- Amazon SageMaker JumpStart
- artificiell intelligens
- artificiell intelligenscertifiering
- artificiell intelligens inom bankväsendet
- artificiell intelligens robot
- robotar med artificiell intelligens
- programvara för artificiell intelligens
- AWS maskininlärning
- blockchain
- blockchain konferens ai
- coingenius
- konversationskonstnärlig intelligens
- kryptokonferens ai
- dalls
- djupt lärande
- Experter (400)
- du har google
- maskininlärning
- plato
- plato ai
- Platon Data Intelligence
- Platon spel
- PlatonData
- platogaming
- skala ai
- syntax
- zephyrnet