Encode multi-lingual text properties in Amazon Neptune to train predictive models PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Codificați proprietățile textului în mai multe limbi în Amazon Neptune pentru a antrena modele predictive

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ă). The text_fasttext metoda poate lua opțional max_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ă de text_fasttext. Neptun acceptă două metode SBERT: text_sbert128, care este implicit dacă doar specificați text_sbert, și text_sbert512. Diferența dintre ele este numărul maxim de jetoane dintr-o proprietate text care sunt codificate. The text_sbert128 codificarea codifică numai primele 128 de jetoane, în timp ce text_sbert512 codifică până la 512 jetoane. Ca urmare, folosind text_sbert512 poate necesita mai mult timp de procesare decât text_sbert128. Ambele metode sunt mai lente decât text_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 care fastText suporturi, folosire text_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 care text_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 și text_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 or text_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ți text_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.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "user",
                "property": "Major",
                "type": "text_sbert128"
            },
            {
                "node": "job",
                "property": "Title",
                "type": "text_sbert128",
            }, ...
        ], ...
    }
}

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.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "job",
                "property": "Description",
                "type": "text_fasttext",
                "language": "en",
                "max_length": 256
            },
            {
                "node": "job",
                "property": "Requirements",
                "type": "text_fasttext",
                "language": "en"
            }, ...
        ], ...
    }
}

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

Encode multi-lingual text properties in Amazon Neptune to train predictive models PlatoBlockchain Data Intelligence. Vertical Search. Ai.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.

Timestamp-ul:

Mai mult de la Învățare automată AWS