ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 148
Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 119
Abonament PDF

NLP în 2022: Adnotare mai rapidă

Roland Szabo
Machine Learning Consultant



PROGRAMARE

Procesarea limbajului natural a evoluat foarte mult în ultimii cinci ani. În articolul anterior am văzut cum putem folosi modele mari pre-antrenate, cum ar fi BERT, pentru a reduce cantitatea de date adnotate care este necesară pentru a antrena un model sau, și mai bine, pentru a obține repede un proof-of-concept fără a adnota un singur document, folosind Zero Shot Learning.

Dar datele adnotate sunt în continuare necesare când dorim să obținem cele mai bune rezultate posibile pentru modelele noastre NLP. Acesta era un proces foarte laborios, care necesita mult timp și efort. Aveați nevoie de zeci de mii sau chiar mai multe documente adnotate. Cea mai bună practică este ca mai mulți adnotatori să analizeze întregul set de date pentru a asigura coerența adnotărilor, deoarece, dacă adnotările umane nu sunt bune, modelul ML nu va putea învăța. Pot apărea probleme în modul în care obțineți datele, care duc la tot felul de biasuri problematice.

Există multe programare care oferă o interfață simplă și un UX bun pentru procesul de adnotare, cum ar fi Doccano, dar există un val de start-upuri care au făcut cercetări ample și au găsit modalități de a face acest lucru mult mai bine.

Utilizarea șabloanelor de text pentru a accelera adnotarea

Prodigy este un instrument de adnotare creat de către Explosion AI. Aceeași companie produce Spacy, una dintre cele mai utilizate bibl ioteci NLP. Cele două sunt foarte bine integrate și dețin opțiunea de a accelera procesul de adnotare prin utilizarea de șabloane.

Modelele pot fi simple căutări după cuvinte. Atunci când se dorește extragerea unor entități (orașe, persoane) din text, un șablon poate fi că, dacă în text se află «Paris», acesta trebuie să fie adnotat ca «oraș». În cazul în care se dorește clasificarea anunțurilor de locuri de muncă în funcție de industrie, un șablon ar putea fi că, dacă în text apare «Python" sau "Java", acesta va fi clasificat ca fiind un loc de muncă în domeniul IT.

De asemenea, puteți defini șabloane mai complexe folosind Spacy, cum ar fi cele bazate pe rădăcinile cuvintelor, etichete ale părții de vorbire (substantiv, adverb etc.), morfologie (verbe la gerunziu, mod indicativ, timp trecut). De exemplu, regula [{[{'LEMMA': 'a fi'}, {'POS': 'ADJ'}] ar corespunde oricărei forme a verbului "a fi", urmată de un adjectiv. [{[{'TAG': 'VBG'}, {'LEMMA':'skill'}] ar corespunde oricărui verb la gerunziu urmat de skill sau skills.

Spacy are multe atribute pe baza cărora se pot potrivi șabloanele, nu doar cele lingvistice. Se poate potrivi cu tokenuri care seamănă cu numere, URL-uri, e-mailuri. Se poate căuta forma cuvintelor: dacă au majuscule sau semne de punctuație în ele.

Șabloanele reprezintă o modalitate excelentă de a iniția procesul de adnotare, dar nu sunt o metodă infailibilă. Dacă am putea crea un clasificator doar cu ajutorul unor astfel de șabloane, nu am mai avea nevoie de machine learning. Dacă avem puține șabloane, probabil că acestea vor rata multe dintre entitățile pe care dorim să le extragem sau nu vor sugera nicio categorie pentru documente. Pe măsură ce vom continua să adăugăm tot mai multe șabloane, acestea vor începe să se contrazică între ele sau să facă greșeli. Ce se întâmplă dacă cineva caută un dresor de Python (șarpe) pentru o grădină zoologică? Regula naivă de clasificare a anunțurilor de angajare care conțin "Python" ca fiind locuri de muncă în domeniul IT ar face o clasificare greșită. Numele "Paris Hilton" ar fi marcat ca fiind un oraș cu regula de mai sus.

Weakly supervised learning

Dar aceste șabloane și reguli pot fi combinate în moduri mai inteligente. Un algoritm de weakly supervised learning (WSL) poate fi utilizat pentru a elimina greșelile și conflictele dintre diferitele reguli, și astfel se obține un set de date adnotate de o calitate mult mai bună.

În WSL, aceste șabloane se numesc labeling functions. Fiecare labeling function fie atribuie unui document o categorie, fie se abține. Labeling functions nu trebuie să fie perfecte, trebuie doar să fie mai bune decât a face clasificări aleatorii.

Fluxul de lucru atunci când se utilizează Rubrix, un program construit pentru a facilita acest tip de adnotare, este de a eticheta mai întâi un mic set de date manual, de obicei aproximativ 100 de documente. Apoi, începeți să vă uitați la documente și să vorbiți cu experți în domeniu pentru a vedea ce reguli și euristici folosesc ei. După ce le implementați, Rubrix le va evalua pe cele 100 de documente etichetate. Va calcula parametri precum coverage (cât de des este aplicată regula), precizia (cât de des o regulă este corectă) și recall (câte documente din clasa dorită sunt găsite de regulă). Se repetă acest lucru până când se obține un coverage suficient de mare a setului de date. Apoi, Rubrix va combina voturile fiecărei labeling function, rezolvând conflictele dintre ele și va produce un set de date de antrenare care poate fi utilizat pentru instruirea unui model normal de machine learning.

WSL este o modalitate excelentă de a extrage cunoștințe de la experții în domeniu, care efectuează de mulți ani sarcinile pe care dorim să le automatizăm cu ajutorul machine learning. De cele mai multe ori, aceștia operează deja folosind diverse euristici și știu ce fel de șabloane apar în date, așa că tot ce trebuie să facem este să codificăm aceste reguli.

Un alt avantaj al acestei abordări este că face ca deciziile modelului de machine learning să fie mai ușor de înțeles. Atunci când se adnotează manual datele, modificarea etichetei unui singur document nu va face o mare diferență în model, dar atunci când se rafinează o regulă, deoarece aceasta afectează un număr mare de documente, va avea un impact imediat asupra modelului, iar utilizatorii vor putea percepe îmbunătățirile. Acest lucru sporește încrederea în modelul de machine learning, care altfel ar fi considerat o cutie neagră. Atunci când apar schimbări în categoriile noastre, din cauza schimbărilor care au loc în lumea reală, regulile pot fi schimbate mai ușor, fără a fi nevoie să se re-adnoteze manual mai multe mii de documente.

Desigur, nu este întotdeauna posibil să se aplice WSL. De exemplu, atunci când se face o analiză a sentimentelor, sentimentul exprimat de un text este foarte nuanțat și este greu să se găsească reguli care să acopere mai mult de câteva exemple.

Active learning

O altă modalitate de a îmbunătăți adnotarea datelor este de a face alegeri mai bune cu privire la documentele care trebuie să fie adnotate. În mod normal, seturile de date sunt construite prin preluarea documentelor pe măsură ce acestea sosesc sau, dacă există prea multe documente, prin prelevarea unui eșantion aleatoriu din ele.

Dar, uneori, aceasta nu este cea mai bună strategie. În cazul anunțurilor de angajare, se poate întâmpla ca o companie să publice anunțuri pentru același rol, dar în orașe diferite. Aceste anunțuri sunt identice, cu excepția locației. Dacă vom adnota toate anunțurile cu aceeași etichetă, algoritmul de machine learning nu va învăța mai mult decât dacă ar fi văzut doar unul dintre aceste anunțuri. Atunci când încercăm să triem bug reports, atunci când se lansează un feature nou și există unele buguri, multe dintre rapoarte vor fi foarte asemănătoare, astfel încât modelul nu va învăța mai mult dacă va vedea mai multe dintre ele.

Active learning ne ajută să adnotam documentele mai eficient, încercând să alegem documentele într-un mod mai bun. Modelele de machine learning sunt probabiliste, astfel încât, pe lângă clasa sau entitatea pe care o recunosc, acestea emit și o probabilitate: Sunt 90% sigur că este vorba despre sport, sunt 30% sigur că este un nume de persoană. Putem valorifica aceste probabilități și le putem cere adnotatorilor să revizuiască documentele în legătură cu care modelul este cel mai nesigur. În acest fel, modelul va primi mai multe date care îl vor ajuta să învețe cel mai mult.

Fluxul de lucru tipic care utilizează active learning constă în colectarea unui set mare de date neetichetate de documente din domeniul pe care încercați să îl rezolvați. Se adnotează manual un set mic (100-200) de documente. Apoi se antrenează un model de bază de machine learning pe acest set mic de date. Acest model este apoi utilizat pentru a face predicții pentru restul documentelor care sunt încă neetichetate. Utilizând strategii de active learning, cum ar fi eșantionarea bazată pe incertitudinea cea mai mare, se selectează un alt lot de 100-200 de documente care să fie analizate de către adnotatorii umani. Apoi, modelul este re-antrenat și continuăm să repetăm acest lucru până când ajungem la un model suficient de bun.

Prodigy are un suport excelent pentru active learning. Atunci când rulează cu un model, Prodigy îi va solicita adnotatorului doar să accepte sau să respingă o anumită predicție, în loc să fie nevoit să facă predicția de la zero. Acest lucru face ca procesul de adnotare să fie și mai rapid, oferind în același timp o mulțime de informații pentru ca modelul să învețe.

Concluzie

În această postare am văzut câteva dintre noile tehnici și strategii care pot fi utilizate pentru a aduna mai rapid date pentru a rezolva diverse sarcini de procesare a limbajului natural. Combinate cu progresele modelelor ML pe care le-am prezentat în postarea anterioară, proiectele de clasificare a textului sau de recunoaștere a entităților numite pot fi implementate cu o precizie ridicată în câteva zile sau săptămâni, nu luni ca până acum.

În ultimul articol din această serie, vom analiza încotro se îndreaptă domeniul NLP, care sunt modelele de ultimă generație folosite de marile companii precum Google și OpenAI și cum ne putem aștepta să rezolvăm problemele complet diferit în 2-3 ani.

Conferință TSM

NUMĂRUL 147 - Automotive

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects