Organizațiile din industrii precum comerțul cu amănuntul, bancar, finanțe, asistență medicală, producție și creditare trebuie adesea să se confrunte cu cantități mari de documente text nestructurate care provin din diverse surse, cum ar fi știri, bloguri, recenzii de produse, canale de asistență pentru clienți și rețele sociale. Aceste documente conțin informații esențiale care sunt esențiale pentru luarea unor decizii importante de afaceri. Pe măsură ce o organizație crește, devine o provocare să extragi informații critice din aceste documente. Odată cu progresul tehnicilor de procesare a limbajului natural (NLP) și de învățare automată (ML), putem descoperi informații și conexiuni valoroase din aceste documente textuale rapid și cu o acuratețe ridicată, ajutând astfel companiile să ia decizii de afaceri de calitate la timp. Serviciile NLP gestionate complet au accelerat, de asemenea, adoptarea NLP. Amazon Comprehend este un serviciu complet gestionat care vă permite să construiți modele NLP personalizate care sunt specifice cerințelor dvs., fără a fi nevoie de nicio experiență ML.
În această postare, demonstrăm cum să folosim tehnici de ML de ultimă generație pentru a rezolva cinci sarcini NLP diferite: rezumarea documentelor, clasificarea textului, răspunsul la întrebări, recunoașterea entității numite și extragerea relațiilor. Pentru fiecare dintre aceste sarcini NLP, demonstrăm cum se utilizează Amazon SageMaker pentru a efectua următoarele acțiuni:
- Implementați și rulați inferența pe un model pre-antrenat
- Ajustați modelul pre-antrenat pe un nou set de date personalizat
- Îmbunătățiți în continuare performanța de reglare fină cu Ajustarea automată a modelului SageMaker
- Evaluați performanța modelului cu privire la datele de testare hold-out cu diverse metrici de evaluare
Deși acoperim cinci sarcini NLP specifice în această postare, puteți utiliza această soluție ca șablon pentru a generaliza reglarea fină a modelelor pre-antrenate cu propriul set de date și, ulterior, să rulați optimizarea hiperparametrului pentru a îmbunătăți acuratețea.
Șabloane de soluție JumpStart
Amazon SageMaker JumpStart oferă soluții end-to-end cu un singur clic pentru multe cazuri comune de utilizare ML. Explorați următoarele cazuri de utilizare pentru mai multe informații despre șabloanele de soluții disponibile:
Șabloanele de soluție JumpStart acoperă o varietate de cazuri de utilizare, sub fiecare dintre acestea fiind oferite mai multe șabloane de soluție diferite (această soluție de înțelegere a documentelor se află în cazul de utilizare „Extrage și analizează date din documente”).
Alegeți șablonul de soluție care se potrivește cel mai bine cazului dvs. de utilizare din pagina de destinație JumpStart. Pentru mai multe informații despre soluții specifice pentru fiecare caz de utilizare și despre cum să lansați o soluție JumpStart, consultați Șabloane de soluții.
Prezentare generală a soluțiilor
Următoarea imagine demonstrează cum puteți utiliza această soluție cu componentele SageMaker. Joburile de instruire SageMaker sunt folosite pentru a antrena diferitele modele NLP, iar punctele finale SageMaker sunt folosite pentru a implementa modelele în fiecare etapă. Folosim Serviciul Amazon de stocare simplă (Amazon S3) alături de SageMaker pentru a stoca datele de antrenament și artefactele modelului și Amazon CloudWatch pentru a înregistra rezultatele antrenamentului și ale punctelor finale.
Deschideți soluția Document Understanding
Navigați la soluția Document Understanding în JumpStart.
Acum putem arunca o privire mai atentă asupra unora dintre activele care sunt incluse în această soluție, începând cu notebook-ul demo.
Notebook demonstrativ
Puteți utiliza blocnotesul demonstrativ pentru a trimite date exemple către punctele finale de model deja implementate pentru sarcinile de rezumare a documentelor și de răspuns la întrebări. Notebook-ul demonstrativ vă permite rapid să obțineți experiență practică prin interogarea datelor exemplu.
După ce lansați soluția Document Understanding, deschideți blocnotesul demonstrativ alegând Utilizați Endpoint în Notebook.
Să ne aprofundăm în fiecare dintre cele cinci notebook-uri principale pentru această soluție.
Cerințe preliminare
In Amazon SageMaker Studio, asigurați-vă că utilizați PyTorch 1.10 Python 3.8 CPU Optimized
imagine/kernel pentru a deschide caietele. Antrenamentul utilizează cinci instanțe ml.g4dn.2xlarge, așa că ar trebui să ridicați a cerere de creștere a limitei de serviciu dacă contul dvs. necesită limite crescute pentru acest tip.
Clasificarea textului
Clasificarea textului se referă la clasificarea unei propoziții de intrare la una dintre etichetele de clasă ale setului de date de antrenament. Acest caiet demonstrează cum se utilizează JumpStart API pentru clasificarea textului.
Implementați și rulați inferența pe modelul pre-antrenat
Modelul de clasificare a textului pe care am ales să-l folosim este construit pe o încorporare a textului (tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2
) model din TensorFlow Hub, care este pre-antrenat pe seturile de date Wikipedia și BookCorpus.
Modelul disponibil pentru implementare este creat prin atașarea unui strat de clasificare binar la rezultatul modelului de încorporare a textului, iar apoi ajustarea fină a întregului model pe SST-2 set de date, care constă din recenzii pozitive și negative ale filmelor.
Pentru a rula inferența pe acest model, trebuie mai întâi să descarcăm containerul de inferență (deploy_image_uri
), script de inferență (deploy_source_uri
), și model pre-antrenat (base_model_uri
). Apoi îi trecem ca parametri pentru a instanția un obiect model SageMaker, pe care apoi îl putem implementa:
Următorul cod arată răspunsurile noastre:
Ajustați modelul pre-antrenat pe un set de date personalizat
Tocmai am trecut prin rularea inferenței pe un model BERT pre-antrenat, care a fost reglat fin pe SST-2
set de date.
În continuare, vom discuta cum să reglam un model pe un set de date personalizat cu orice număr de clase. Setul de date pe care îl folosim pentru reglare fină este încă SST-2
set de date. Puteți înlocui acest set de date cu orice set de date care vă interesează.
Preluăm containerul Docker de antrenament, sursa algoritmului de antrenament și modelul pre-antrenat:
Pentru hiperparametrii specifici algoritmului, începem prin a prelua un dicționar Python al hiperparametrilor de antrenament pe care algoritmul îi acceptă cu valorile lor implicite. Le puteți înlocui cu valori personalizate, așa cum se arată în următorul cod:
Setul de date (SST-2
) este împărțit în seturi de instruire, validare și testare, unde setul de antrenament este utilizat pentru a se potrivi modelului, setul de validare este utilizat pentru a calcula valorile de evaluare care pot fi utilizate pentru HPO, iar setul de testare este utilizat ca date de așteptare pentru evaluarea performanței modelului. Apoi, trenul și setul de date de validare sunt încărcate pe Amazon S3 și utilizate pentru a lansa jobul de instruire de reglare fină:
După ce sarcina de reglare fină este finalizată, implementăm modelul, rulăm inferența asupra setului de date de testare și calculăm valorile de evaluare. Deoarece este o sarcină de clasificare binară, folosim scorul de precizie și Scor F1 ca metrici de evaluare. O valoare mai mare indică o performanță mai bună. Următoarea captură de ecran arată rezultatele noastre.
Îmbunătățiți și mai mult performanța de reglare fină cu reglarea automată a modelului SageMaker
În acest pas, demonstrăm cum puteți îmbunătăți și mai mult performanța modelului prin reglarea fină a modelului cu reglarea automată a modelului SageMaker. Reglarea automată a modelului, cunoscută și sub denumirea de optimizare a hiperparametrilor (HPO), găsește cea mai bună versiune a unui model prin rularea mai multor joburi de antrenament pe setul de date cu o gamă de hiperparametri pe care o specificați. Apoi alege valorile hiperparametrului care rezultă într-un model care are cele mai bune performanțe, măsurate de o metrică pe care o alegeți, pe setul de date de validare.
În primul rând, am stabilit obiectivul ca scorul de acuratețe al datelor de validare (val_accuracy
) și valori definite pentru jobul de reglare prin specificarea numelui metricii obiectiv și a unei expresii regulate (regex). Expresia regulată este utilizată pentru a se potrivi cu rezultatul jurnalului algoritmului și pentru a capta valorile numerice ale valorilor. Apoi, specificăm intervale de hiperparametri pentru a selecta cele mai bune valori ale hiperparametrului. Am stabilit numărul total de lucrări de reglare la șase și le distribuim pe trei diferite Cloud Elastic de calcul Amazon (Amazon EC2) instanțe pentru rularea joburilor de reglare paralelă. Vezi următorul cod:
Transmitem acele valori pentru a instanția un obiect SageMaker Estimator, similar cu ceea ce am făcut în pasul anterior de reglare fină. În loc să suni la fit
funcția Estimator
obiect, trecem de Estimator
obiect în ca parametru al HyperparameterTuner constructor și apelați fit
funcția acestuia de a lansa joburi de reglare:
După ce lucrările de reglare sunt finalizate, implementăm modelul care oferă cel mai bun punctaj de evaluare pentru setul de date de validare, efectuăm inferențe pe același set de date de test de rezistență pe care l-am făcut în secțiunea anterioară și calculăm valorile de evaluare.
Rezultatele arată că modelul selectat prin reglarea automată a modelului depășește semnificativ modelul reglat fin în secțiunea anterioară pe un set de date de testare rezistentă.
Recunoașterea entității denumite
Recunoașterea entităților numite (NER) este procesul de detectare și clasificare a entităților numite în categorii predefinite, cum ar fi numele persoanelor, organizațiilor, locațiile și cantitățile. Există multe cazuri de utilizare în lumea reală pentru NER, cum ar fi motoarele de recomandare, clasificarea și atribuirea tichetelor de asistență pentru clienți către departamentul potrivit, extragerea informațiilor esențiale din rapoartele pacienților din asistența medicală și clasificarea conținutului din știri și bloguri.
Implementați și rulați inferența pe modelul pre-antrenat
Desfășurăm En_core_web_md model din spațios bibliotecă. spaCy este o bibliotecă NLP open-source care poate fi utilizată pentru diverse sarcini și are metode încorporate pentru NER. Folosim un AWS PyTorch Deep Learning Container (DLC) cu un mod script și instalăm biblioteca spaCy ca dependență deasupra containerului.
Apoi, un punct de intrare pentru script (argument entry_point.py
) este specificat, care conține tot codul de descărcat și încărcat En_core_web_md
modelați și efectuați inferențe asupra datelor care sunt trimise la punctul final. În sfârșit, mai trebuie să oferim model_data
ca model pre-antrenat pentru inferență. Pentru că pre-antrenați En_core_web_md
modelul este descărcat din mers, ceea ce este specificat în scriptul de intrare, oferim un fișier de arhivă gol. După ce punctul final este implementat, puteți invoca punctul final direct din blocnotes folosind SDK-ul SageMaker Python Predictor
. Consultați următorul cod:
Datele de intrare pentru model sunt un document textual. Modelul de entitate numită extrage bucăți de substantive și entități denumite din documentul textual și le clasifică într-un număr de tipuri diferite (cum ar fi oameni, locuri și organizații). Exemplul de intrare și ieșire sunt afișate în codul următor. The start_char
parametrul indică decalajul de caractere pentru începutul intervalului și end_char
indică sfârșitul intervalului.
Ajustați modelul pre-antrenat pe un set de date personalizat
În acest pas, demonstrăm cum să reglați fin un model de limbaj pre-antrenat pentru NER pe propriul set de date. Pasul de reglare fină actualizează parametrii modelului pentru a capta caracteristicile propriilor date și pentru a îmbunătăți acuratețea. Noi folosim WikiANN (PAN-X) setul de date pentru a regla fin DistilBERT-bază-necarcată Model de transformator de la Hugging Face.
Setul de date este împărțit în seturi de instruire, validare și testare.
Apoi, specificăm hiperparametrii modelului și folosim un DLC AWS Hugging Face cu un mod script (argument entry_point
) pentru a declanșa lucrarea de reglare fină:
După ce sarcina de reglare fină este finalizată, implementăm un punct final și interogăm acel punct final cu datele de testare. Pentru a interoga punctul final, fiecare șir de text trebuie să fie tokenizat în unul sau mai multe simboluri și trimis la modelul de transformator. Fiecare jeton primește o etichetă de entitate numită prezisă. Deoarece fiecare șir de text poate fi tokenizat în unul sau mai multe jetoane, trebuie să duplicăm eticheta de entitate numită adevărul de bază a șirului la toate jetoanele care îi sunt asociate. Notebook-ul furnizat vă ghidează prin pașii pentru a realiza acest lucru.
În cele din urmă, folosim valorile de evaluare încorporate Hugging Face secveval pentru a calcula scorurile de evaluare pe datele testului hold-out. Valorile de evaluare utilizate sunt precizia generală, reamintirea generală, F1 generală și acuratețea. Următoarea captură de ecran arată rezultatele noastre.
Îmbunătățiți și mai mult performanța de reglare fină cu reglarea automată a modelului SageMaker
Similar cu clasificarea textului, demonstrăm cum puteți îmbunătăți și mai mult performanța modelului prin reglarea fină a modelului cu reglarea automată a modelului SageMaker. Pentru a rula jobul de reglare, trebuie să definim o metrică obiectivă pe care dorim să o folosim pentru evaluarea performanței modelului pe setul de date de validare (scorul F1 în acest caz), intervale de hiperparametri pentru a selecta cele mai bune valori ale hiperparametrului, precum și configurațiile jobului de reglare, cum ar fi numărul maxim de lucrări de reglare și numărul de lucrări paralele de lansat simultan:
După ce lucrările de reglare sunt finalizate, implementăm modelul care oferă cel mai bun punctaj de evaluare pentru setul de date de validare, efectuăm inferențe pe același set de date de test de rezistență pe care l-am făcut în secțiunea anterioară și calculăm valorile de evaluare.
Putem vedea că modelul cu HPO realizează performanțe semnificativ mai bune în toate valorile.
Răspuns la întrebare
Răspunsul la întrebări este util atunci când doriți să interogați o cantitate mare de text pentru informații specifice. Permite unui utilizator să exprime o întrebare în limbaj natural și să obțină un răspuns imediat și scurt. Sistemele de răspuns la întrebări alimentate de NLP pot fi utilizate în motoarele de căutare și interfețele de conversație telefonică.
Implementați și rulați inferența pe modelul pre-antrenat
Modelul nostru pre-antrenat este modelul extractiv cu răspunsuri la întrebări (EQA). bert-large-uncased-tot-word-masking-finetuned-squad construit pe un model Transformer de la Hugging Face. Folosim un DLC AWS PyTorch cu un mod script și instalăm transformatoare biblioteca ca o dependență deasupra containerului. Similar cu sarcina NER, oferim un fișier de arhivă gol în argument model_data
deoarece modelul pre-antrenat se descarcă din mers. După ce punctul final este implementat, puteți invoca punctul final direct din blocnotes folosind SDK-ul SageMaker Python Predictor
. Consultați următorul cod:
Tot ce trebuie să facem este să construim un obiect dicționar cu două chei. context
este textul din care dorim să obținem informații. question
este interogarea în limbaj natural care specifică ce informații suntem interesați să extragem. Noi sunam predict
pe predictorul nostru și ar trebui să obținem un răspuns de la punctul final care conține cele mai probabile răspunsuri:
Avem răspunsul și putem tipări cele mai probabile răspunsuri care au fost extrase din textul precedent. Fiecare răspuns are un scor de încredere folosit pentru clasare (dar acest scor nu trebuie interpretat ca o probabilitate adevărată). În plus față de răspunsul textual, obțineți și indexurile caracterelor de început și de sfârșit ale răspunsului din contextul original:
Acum reglam acest model cu propriul nostru set de date personalizate pentru a obține rezultate mai bune.
Ajustați modelul pre-antrenat pe un set de date personalizat
În acest pas, demonstrăm cum să ajustați un model lingvistic pre-antrenat pentru EQA pe propriul set de date. Pasul de reglare fină actualizează parametrii modelului pentru a capta caracteristicile propriilor date și pentru a îmbunătăți acuratețea. Noi folosim SQuAD2.0 set de date pentru a regla fin un model de încorporare a textului bert-bază-necasată din Hugging Face. Modelul disponibil pentru reglare fină atașează un strat de extragere a răspunsului la modelul de încorporare a textului și inițializează parametrii stratului la valori aleatorii. Pasul de reglare fină reglează fin toți parametrii modelului pentru a minimiza eroarea de predicție a datelor de intrare și returnează modelul reglat fin.
Similar cu sarcina de clasificare a textului, setul de date (SQuAD2.0) este împărțit în set de instruire, validare și test.
Apoi, specificăm hiperparametrii modelului și folosim JumpStart API pentru a declanșa o lucrare de reglare fină:
După ce sarcina de reglare fină este finalizată, implementăm modelul, rulăm inferența asupra setului de date de testare și calculăm valorile de evaluare. Valorile de evaluare utilizate sunt scorul mediu de potrivire exactă și scorul mediu F1. Următoarea captură de ecran arată rezultatele.
Îmbunătățiți și mai mult performanța de reglare fină cu reglarea automată a modelului SageMaker
Similar cu secțiunile anterioare, folosim a HyperparameterTuner
obiect pentru a lansa joburi de reglare:
După ce lucrările de reglare sunt finalizate, implementăm modelul care oferă cel mai bun punctaj de evaluare pentru setul de date de validare, efectuăm inferențe pe același set de date de test de rezistență pe care l-am făcut în secțiunea anterioară și calculăm valorile de evaluare.
Putem vedea că modelul cu HPO arată o performanță semnificativ mai bună în ceea ce privește datele de testare.
Extragerea relatiei
Extragerea relațiilor este sarcina de a extrage relații semantice din text, care apar de obicei între două sau mai multe entități. Extragerea relațiilor joacă un rol important în extragerea informațiilor structurate din surse nestructurate, cum ar fi textul brut. În acest caiet, demonstrăm două cazuri de utilizare ale extragerii relațiilor.
Ajustați modelul pre-antrenat pe un set de date personalizat
Folosim un model de extracție a relațiilor construit pe a BERT-bază-necarcată model folosind transformatoare de la Transformatoare Hugging Face bibliotecă. Modelul pentru reglare fină atașează un strat de clasificare liniar care preia o pereche de înglobări de simboluri generate de modelul de încorporare de text și inițializează parametrii stratului la valori aleatorii. Pasul de reglare fină reglează fin toți parametrii modelului pentru a minimiza eroarea de predicție a datelor de intrare și returnează modelul reglat fin.
Setul de date pe care îl reglam fin modelul este SemEval-2010 Sarcina 8. Modelul returnat prin reglare fină poate fi implementat în continuare pentru inferență.
Setul de date conține seturi de instruire, validare și testare.
Folosim DLC-ul AWS PyTorch cu un mod script din SDK-ul SageMaker Python, unde transformers
biblioteca este instalată ca dependență deasupra containerului. Noi definim SageMaker PyTorch
estimator și un set de hiperparametri, cum ar fi modelul pre-antrenat, rata de învățare și numerele de epocă pentru a efectua reglarea fină. Codul pentru reglarea fină a modelului de extracție a relațiilor este definit în entry_point.py
. Consultați următorul cod:
Îmbunătățiți și mai mult performanța de reglare fină cu reglarea automată a modelului SageMaker
Similar cu secțiunile anterioare, folosim a HyperparameterTuner
obiect pentru a interacționa cu API-urile de reglare a hiperparametrilor SageMaker. Putem începe lucrarea de reglare a hiperparametrului apelând la fit
metodă:
Când lucrarea de reglare a hiperparametrului este finalizată, efectuăm inferență și verificăm scorul de evaluare.
Putem vedea că modelul cu HPO arată o performanță mai bună în ceea ce privește datele de testare.
Rezumatul documentului
Rezumarea documentelor sau a textului este sarcina de a condensa cantități mari de date text într-un subset mai mic de propoziții semnificative care reprezintă cele mai importante sau relevante informații din conținutul original. Rezumarea documentelor este o tehnică utilă pentru a distila informații importante din cantități mari de date text în câteva propoziții. Rezumatul textului este utilizat în multe cazuri de utilizare, cum ar fi procesarea documentelor și extragerea de informații din bloguri, articole și știri.
Acest notebook demonstrează implementarea modelului de rezumare a documentelor T5-bază de la Transformatoare Hugging Face bibliotecă. Testăm, de asemenea, punctele finale implementate folosind un articol text și evaluăm rezultatele utilizând metrica de evaluare încorporată Hugging Face ROȘU.
Similar cu caietele cu răspunsuri la întrebări și caietele NER, folosim PyTorchModel
de la SageMaker Python SDK împreună cu un entry_point.py
script pentru a încărca modelul de bază T5 la un punct final HTTPS. După ce punctul final este implementat cu succes, putem trimite un articol text către punctul final pentru a obține un răspuns de predicție:
Apoi, evaluăm și comparăm articolul text și rezultatul rezumatului utilizând metrica ROUGE. Sunt calculate trei metrici de evaluare: rougeN
, rougeL
, și rougeLsum
. rougeN
măsoară numărul de potriviri n-grams
între textul generat de model (rezultatul rezumatului) și a reference
(Introdu textul). Valorile rougeL
și rougeLsum
măsurați cele mai lungi secvențe de cuvinte care se potrivesc căutând cele mai lungi subșiruri comune în rezumatele generate și de referință. Pentru fiecare măsură, sunt calculate intervalele de încredere pentru precizie, reamintire și scor F1. Consultați următorul cod:
A curăța
Resursele create pentru această soluție pot fi șterse folosind Ștergeți toate resursele butonul din SageMaker Studio IDE. Fiecare blocnotes oferă, de asemenea, o secțiune de curățare cu codul pentru ștergerea punctelor finale.
Concluzie
În această postare, am demonstrat cum să folosim tehnici de ML de ultimă generație pentru a rezolva cinci sarcini NLP diferite: rezumarea documentelor, clasificarea textului, întrebări și răspunsuri, recunoașterea entităților numite și extragerea relațiilor folosind Jumpstart. Începeți acum cu Jumpstart!
Despre Autori
Dr. Xin Huang este un om de știință aplicat pentru algoritmii încorporați Amazon SageMaker JumpStart și Amazon SageMaker. El se concentrează pe dezvoltarea de algoritmi scalabili de învățare automată. Interesele sale de cercetare sunt în domeniul procesării limbajului natural, al învățării profunde explicabile pe date tabulare și al analizei robuste a grupării neparametrice spațiu-timp. A publicat multe lucrări în ACL, ICDM, conferințe KDD și Royal Statistical Society: Series A journal.
Vivek Gangasani este arhitect senior de soluții de învățare automată la Amazon Web Services. El ajută startup-urile să construiască și să operaționalizeze aplicații AI/ML. În prezent, se concentrează pe combinarea experienței sale în Containers și Machine Learning pentru a oferi soluții pentru MLOps, ML Inference și low-code ML. În timpul liber, îi place să încerce restaurante noi și să exploreze tendințele emergente în AI și învățarea profundă.
Geremy Cohen este arhitect de soluții cu AWS, unde îi ajută pe clienți să construiască soluții de ultimă oră, bazate pe cloud. În timpul liber, se bucură de plimbări scurte pe plajă, de a explora zona golfului împreună cu familia, de a repara lucrurile prin casă, de a sparge lucrurile din jurul casei și de a face grătar.
Neelam Koshiya este un arhitect de soluții pentru întreprinderi la AWS. Obiectivul ei actual este de a ajuta clienții întreprinderilor în călătoria lor de adoptare a cloud-ului pentru rezultate strategice de afaceri. În timpul liber, îi place să citească și să fie în aer liber.
- Avansat (300)
- AI
- ai art
- ai art generator
- ai robot
- Amazon SageMaker
- Amazon SageMaker JumpStart
- inteligență artificială
- certificare de inteligență artificială
- inteligența artificială în domeniul bancar
- robot cu inteligență artificială
- roboți cu inteligență artificială
- software de inteligență artificială
- Învățare automată AWS
- blockchain
- conferință blockchain ai
- coingenius
- inteligența artificială conversațională
- criptoconferință ai
- dall-e
- învățare profundă
- expert (400)
- google ai
- masina de învățare
- Plato
- platoul ai
- Informații despre date Platon
- Jocul lui Platon
- PlatoData
- platogaming
- scara ai
- sintaxă
- zephyrnet