# ROAI-proba-2-NLP ## Dediu Ștefan-Alexandru ### Feature engineering Pentru această problemă a fost nevoie de crearea unor propoziții "greșite" astfel încât modelul să poată fi antrenat, având la dispoziție setul de date Wikipedia România. În ideea de a simula eventualele erori în scris, am luat următoarele lucruri în calcul: 1. schimbări de litere 2. dublarea sau inserarea unor caractere 3. ratarea sau ștergerea unor caractere 4. substituția unui caracter cu un altul Astfel am creat funcția `introduce_errors` care are ca parametrii textul care urmează să fie modificat și un anume `error_rate`, care default este setat la 25%. Am să revin asupra importanța studierii acestui parametru în procesul de antrenare mai târziu în document. De menționat faptul că am luat în considerare atât literele mici și mari ale alfabetului român, semnele de punctuație precum `? ! , . ' " ( ) [ ] { }`, dar nu am luat în calcul caracterele speciale din alte alfabete, considerând irelevant cu autocorectarea în limba română. Acest lucru ar putea fi studiat ulterior cât de mult impactează performanța modelului. ### Fine-tuning Privind procesul de antrenare, am rămas cu head-ul modelului `mt5-base` deoarece este pre-antrenat pentru astfel de taskuri, nefiind necesară schimbarea acestuia pentru îmbunătățirea performanței. Dimensiunea datelor de antrenament și evaluare l-am setat de la 32 la 8 deoarece GPU-ul Colab Free iese din memoria alocată, așadar timpii de antrenare și evaluare au crescut. ### Mici îmbunătățiri Din cauza procesului greu de antrenare nu am reușit să implementez următoarele în procesul de fine-tuning al modelului, astfel găsind hiper-parametri mai buni: 1. Vizualizare a impactului variației `error_rate`-ului din funcția `introduce_errors` asupra performanței modelului 2. Optimizare Bayesiană a hiper-parametrilor 3. Diferite modele Seq2Seq (XLNet, mBART, ALBERT etc.) și analiza performanțelor lor 4. Îmbunătățirea funcției `introduce_errors` pentru a simula mai bine erorile umane în scriere folosind atât un dicționar de spell-checking românesc, erori în tiparele part-of-speech (POS) sau Back-Translation (din română în engleză și invers corect) [1] 5. Utilizarea unei alte metode de tokenizare mult mai bine potrivite limbii române # IMPORTANT Din păcate am rămas fără credite pentru Colab și prin urmare modelul uploadat nu este corespunzător cu ceea ce este scris în notebook. Din această cauză performanța modelului poate să fie diferită față de cea actuală, dar nesalvată. ### Bibliografie: - [A Low-Resource Approach to the Grammatical Error Correction of Ukrainian](https://aclanthology.org/2023.unlp-1.14.pdf) [1]: https://aclanthology.org/2023.unlp-1.14.pdf "A Low-Resource Approach to the Grammatical Error Correction of Ukrainian"