Amazon Neptune ML este o capacitate de învățare automată (ML) a Amazon Neptun care vă ajută să faceți predicții precise și rapide asupra datelor din grafic. Sub capotă, Neptune ML folosește rețelele neuronale grafice (GNN) pentru a profita simultan de structura graficului și de proprietățile nodului/marginei pentru a rezolva sarcina în cauză. Metodele tradiționale fie folosesc numai proprietăți și nicio structură de graf (de exemplu, XGBoost, Rețele neuronale), fie numai structură de graf și nicio proprietate (de exemplu, node2vec, Propagare etichetă). Pentru a manipula mai bine proprietățile nodului/marginei, algoritmii ML necesită ca datele să fie date numerice bine comportate, dar datele brute dintr-o bază de date pot avea alte tipuri, cum ar fi textul brut. Pentru a folosi aceste alte tipuri de date, avem nevoie de pași de procesare specializati care să le transforme din tipul lor nativ în date numerice, iar calitatea rezultatelor ML este puternic dependentă de calitatea acestor transformări de date. Textul brut, ca și propozițiile, sunt printre cele mai dificil de transformat, dar progresele recente în domeniul procesării limbajului natural (NLP) au condus la metode puternice care pot gestiona textul provenit din mai multe limbi și o mare varietate de lungimi.
Începând cu versiunea 1.1.0.0, Neptune ML acceptă mai multe codificatoare de text (text_fasttext, text_sbert, text_word2vec, și text_tfidf), care aduc beneficiile progreselor recente în NLP și permite suportul pentru proprietățile textului în mai multe limbi, precum și cerințe suplimentare de inferență cu privire la limbi și lungimea textului. De exemplu, într-un caz de utilizare cu recomandări de locuri de muncă, posturile din diferite țări pot fi descrise în diferite limbi, iar lungimea fișelor postului variază considerabil. În plus, Neptune ML acceptă un Auto opțiune care alege automat cea mai bună metodă de codificare pe baza caracteristicilor caracteristicii text din date.
În această postare, ilustrăm utilizarea fiecărui codificator de text, comparăm avantajele și dezavantajele acestora și arătăm un exemplu despre cum să alegeți codificatoarele de text potrivite pentru o sarcină de recomandare a unui loc de muncă.
Ce este un codificator de text?
Scopul codificării textului este de a converti proprietățile de margine/nod bazate pe text din Neptune în vectori de dimensiune fixă pentru a fi utilizați în modelele de învățare automată din aval, fie pentru clasificarea nodurilor, fie pentru sarcinile de predicție a legăturilor. Lungimea caracteristicii text poate varia foarte mult. Poate fi un cuvânt, o frază, o propoziție, un paragraf sau chiar un document cu mai multe propoziții (dimensiunea maximă a unei singure proprietăți este de 55 MB în Neptun). În plus, caracteristicile textului pot fi în diferite limbi. De asemenea, pot exista propoziții care conțin cuvinte în mai multe limbi diferite, pe care le definim ca fiind comutare de cod.
Începând cu versiunea 1.1.0.0, Neptune ML vă permite să alegeți dintre mai multe codificatoare de text diferite. Fiecare codificator funcționează ușor diferit, dar are același scop de a converti un câmp de valoare text din Neptune într-un vector de dimensiune fixă pe care îl folosim pentru a construi modelul nostru GNN folosind Neptune ML. Noile codificatoare sunt după cum urmează:
- text_fasttext (nou) – Utilizări fastText codificare. FastText este o bibliotecă pentru învățarea eficientă a reprezentării textului.
text_fasttext
este recomandat pentru funcțiile care folosesc una și numai una dintre cele cinci limbi acceptate de fastText (engleză, chineză, hindi, spaniolă și franceză). Thetext_fasttext
metoda poate lua opționalmax_length
câmp, care specifică numărul maxim de jetoane dintr-o valoare a proprietății text care vor fi codificate, după care șirul este trunchiat. Puteți privi un simbol ca un cuvânt. Acest lucru poate îmbunătăți performanța atunci când valorile proprietăților text conțin șiruri lungi, deoarece dacămax_length
nu este specificat, fastText codifică toate jetoanele, indiferent de lungimea șirului. - text_sbert (nou) – Folosește propoziția BERT (SBERT) metoda de codificare. SBERT este un fel de metodă de încorporare a propozițiilor care utilizează modelele de învățare a reprezentării contextuale, BERT-Networks.
text_sbert
este recomandat atunci când limba nu este acceptată detext_fasttext
. Neptun acceptă două metode SBERT:text_sbert128
, care este implicit dacă doar specificațitext_sbert
, șitext_sbert512
. Diferența dintre ele este numărul maxim de jetoane dintr-o proprietate text care sunt codificate. Thetext_sbert128
codificarea codifică numai primele 128 de jetoane, în timp cetext_sbert512
codifică până la 512 jetoane. Ca urmare, folosindtext_sbert512
poate necesita mai mult timp de procesare decâttext_sbert128
. Ambele metode sunt mai lente decâttext_fasttext
. - text_word2vec - Utilizări Word2Old algoritmi publicati inițial de Google pentru a codifica textul. Word2Vec acceptă numai limba engleză.
- text_tfidf – Folosește un termen frecvență-inversă frecvență a documentului (TF-IDF) vectorizator pentru codificarea textului. Codificarea TF-IDF acceptă caracteristici statistice pe care celelalte codificări nu le fac. Cuantifică importanța sau relevanța cuvintelor într-o proprietate de nod printre toate celelalte noduri.
Rețineți că text_word2vec
și text_tfidf
au fost susținute anterior și noile metode text_fasttext
și text_sbert
sunt recomandate peste metodele vechi.
Compararea diferitelor codificatoare de text
Următorul tabel prezintă o comparație detaliată a tuturor opțiunilor de codificare a textului acceptate (text_fasttext
, text_sbert
, și text_word2vec
). text_tfidf
nu este o metodă de codificare bazată pe model, ci mai degrabă o măsură bazată pe numărare care evaluează cât de relevant este un simbol (de exemplu, un cuvânt) pentru caracteristicile textului din alte noduri sau margini, deci nu includem text_tfidf
pentru comparație. Vă recomandăm să utilizați text_tfidf
când doriți să cuantificați importanța sau relevanța unor cuvinte într-un nod sau o proprietate de margine între toate celelalte proprietăți de nod sau margine.)
. | . | text_fasttext | text_sbert | text_word2vec |
Capacitatea modelului | Limba acceptată | engleză, chineză, hindi, spaniolă și franceză | Peste 50 de limbi | Engleză |
Poate codifica proprietățile textului care conțin cuvinte în diferite limbi | Nu | Da | Nu | |
Suport de lungime maximă | Fără limită de lungime maximă | Codifică secvența de text cu lungimea maximă de 128 și 512 | Fără limită de lungime maximă | |
Costul timpului | încărcare | Aproximativ 10 secunde | Aproximativ 2 secunde | Aproximativ 2 secunde |
deducție | Rapid | Încetini | Mediu |
Rețineți următoarele sfaturi de utilizare:
- Pentru valorile proprietăților text în engleză, chineză, hindi, spaniolă și franceză,
text_fasttext
este codificarea recomandată. Cu toate acestea, nu poate gestiona cazurile în care aceeași propoziție conține cuvinte în mai multe limbi. Pentru alte limbi decât cele cinci carefastText
suporturi, folosiretext_sbert
codificare. - Dacă aveți multe șiruri de text cu valoarea proprietății mai lungi de, de exemplu, 120 de jetoane, utilizați
max_length
câmp pentru a limita numărul de jetoane din fiecare șir caretext_fasttext
codifică.
Pentru a rezuma, în funcție de cazul dvs. de utilizare, vă recomandăm următoarea metodă de codificare:
- Dacă proprietățile textului dvs. sunt într-una dintre cele cinci limbi acceptate, vă recomandăm să utilizați
text_fasttext
datorită inferenței sale rapide.text_fasttext
este alegerea recomandată și puteți folosi șitext_sbert
în următoarele două excepţii. - Dacă proprietățile textului dvs. sunt în diferite limbi, vă recomandăm să utilizați
text_sbert
deoarece este singura metodă acceptată care poate codifica proprietățile textului care conțin cuvinte în mai multe limbi diferite. - Dacă proprietățile textului dvs. sunt într-o limbă care nu este una dintre cele cinci limbi acceptate, vă recomandăm să utilizați
text_sbert
deoarece acceptă mai mult de 50 de limbi. - Dacă lungimea medie a proprietăților textului este mai mare de 128, luați în considerare utilizarea
text_sbert512
ortext_fasttext
. Ambele metode pot utiliza codificarea secvențe de text mai lungi. - Dacă proprietățile textului dvs. sunt numai în limba engleză, puteți utiliza
text_word2vec
, dar vă recomandăm să utilizațitext_fasttext
pentru deducerea sa rapidă.
Demonstrație de caz de utilizare: sarcină de recomandare de locuri de muncă
Scopul sarcinii de recomandare a locurilor de muncă este de a prezice pentru ce locuri de muncă vor aplica utilizatorii pe baza aplicațiilor lor anterioare, a informațiilor demografice și a istoricului de lucru. Această postare folosește un set de date Kaggle deschis. Construim setul de date ca un grafic cu trei noduri: muncă, utilizator, și oraș.
Un loc de muncă se caracterizează prin titlu, descriere, cerințe, oraș și stat. Un utilizator este descris cu proprietățile de specialitate, tipul de diplomă, numărul de istoric de lucru, numărul total de ani pentru experiență de lucru și multe altele. Pentru acest caz de utilizare, titlul postului, descrierea postului, cerințele postului și specializările sunt toate sub formă de text.
În setul de date, utilizatorii au următoarele proprietăți:
- Stat – De exemplu, CA sau 广东省 (chineză)
- Major – De exemplu, Managementul resurselor umane sau Lic Cytura Fisica (spaniolă)
- DegreeType – De exemplu, Licență, Master, Doctorat sau Nici unul
- WorkHistoryCount – De exemplu, 0, 1, 16 și așa mai departe
- TotalYearsExperience – De exemplu, 0.0, 10.0 sau NAN
Locurile de muncă au următoarele proprietăți:
- Titlu – De exemplu, Asistent Administrativ sau Lic Cultura Física (spaniolă).
- Descriere – De exemplu, „Această poziție de asistent administrativ este responsabilă pentru îndeplinirea unei varietăți de funcții de sprijin administrativ și administrativ în domeniile comunicațiilor, …” Numărul mediu de cuvinte dintr-o descriere este de aproximativ 192.2.
- Cerinţe – De exemplu, „CEREȚI POSTULUI: 1. Atenție la detalii; 2.Abilitatea de a lucra într-un mediu cu ritm rapid; 3.Facturarea…”
- Stat: – De exemplu, CA, NY și așa mai departe.
Tipul de nod oraș precum Washington DC și Orlando FL are doar identificatorul pentru fiecare nod. În secțiunea următoare, analizăm caracteristicile diferitelor caracteristici ale textului și ilustrăm cum să selectăm codificatoarele de text adecvate pentru diferite proprietăți ale textului.
Cum să selectați diferite codificatoare de text
Pentru exemplul nostru, the Major și Titlu proprietățile sunt în mai multe limbi și au secvențe scurte de text, deci text_sbert
este recomandat. Exemplul de cod pentru parametrii de export este după cum urmează. Pentru text_sbert
tip, nu există alte câmpuri de parametri. Aici alegem text_sbert128
altele decât text_sbert512
, deoarece lungimea textului este relativ mai mică decât 128.
Descriere și Cerinţe proprietățile sunt de obicei în secvențe de text lungi. Lungimea medie a unei descrieri este de aproximativ 192 de cuvinte, ceea ce este mai mare decât lungimea maximă de intrare text_sbert
(128). Putem folosi text_sbert512
, dar poate duce la o inferență mai lentă. În plus, textul este într-o singură limbă (engleză). Prin urmare, vă recomandăm text_fasttext
cu en valoarea limbajului datorită inferenței sale rapide și a lungimii de intrare nu limitate. Exemplul de cod pentru parametrii de export este după cum urmează. The text_fasttext
codificarea poate fi personalizată folosind limbă și lungime maxima. language
valoare este necesară, dar max_length
este opțional.
Mai multe detalii despre cazurile de utilizare a recomandărilor de locuri de muncă pot fi găsite în Tutorial caietul Neptun.
În scop demonstrativ, selectăm un utilizator, adică utilizatorul 443931, care deține o diplomă de master în „Management și resurse umane. Utilizatorul a aplicat la cinci locuri de muncă diferite, intitulate „Manager de resurse umane (HR)”, „Generalist de resurse umane”, „Manager de resurse umane”, „Administrator de resurse umane” și „Specialist senior în salarizare”. Pentru a evalua performanța sarcinii de recomandare, ștergem 50% din joburile aplicate (marginile) ale utilizatorului (aici ștergem „Administrator de resurse umane” și „Manager de resurse umane (HR)) și încercăm să prezicem topul 10 locuri de muncă pentru care este cel mai probabil să aplice acest utilizator.
După codificarea caracteristicilor jobului și a caracteristicilor utilizatorului, efectuăm o sarcină de predicție a legăturii prin antrenarea unui model de rețea convoluțională cu grafic relațional (RGCN). Antrenarea unui model Neptune ML necesită trei pași: procesarea datelor, formarea modelului și crearea punctului final. După ce punctul final de inferență a fost creat, putem face recomandări pentru utilizatorul 443931. Din primele 10 locuri de muncă estimate pentru utilizatorul 443931 (adică „Generalist HR”, „Manager resurse umane (HR)”, „Specialist senior în salarizare”, „Uman Resources Administrator”, „HR Analyst”, și colab.), observăm că cele două joburi șterse se numără printre cele 10 predicții.
Concluzie
În această postare, am arătat utilizarea noilor codificatoare de text acceptate în Neptune ML. Aceste codificatoare de text sunt simplu de utilizat și pot suporta mai multe cerințe. În concluzie,
- text_fasttext este recomandat pentru funcțiile care folosesc una și numai una dintre cele cinci limbi acceptate de text_fasttext.
- text_sbert este recomandat pentru textul pe care text_fasttext nu îl acceptă.
- text_word2vec acceptă numai limba engleză și poate fi înlocuit cu text_fasttext în orice scenariu.
Pentru mai multe detalii despre soluție, consultați GitHub repo. Vă recomandăm să utilizați codificatoarele de text pentru datele grafice pentru a vă îndeplini cerințele. Puteți doar să alegeți un nume de codificator și să setați unele atribute ale codificatorului, păstrând în același timp modelul GNN neschimbat.
Despre autori
Jiani Zhang este un om de știință aplicat al AWS AI Research and Education (AIRE). Ea lucrează la rezolvarea aplicațiilor din lumea reală folosind algoritmi de învățare automată, în special limbajul natural și problemele legate de grafice.
- Avansat (300)
- AI
- ai art
- ai art generator
- ai robot
- Amazon Neptun
- 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ă
- google ai
- masina de învățare
- Plato
- platoul ai
- Informații despre date Platon
- Jocul lui Platon
- PlatoData
- platogaming
- scara ai
- sintaxă
- zephyrnet