Corectarea textelor
Autor: Mihai Nan
✍️ Corectarea textelor în era comunicării rapide 💬
Într-o lume în care mesajele sunt tot mai scurte, tastate în grabă pe telefoane și distribuite instant pe rețelele sociale, calitatea limbajului scris începe să se degradeze. Greșeli de gramatică, cuvinte omise și formulări ambigue devin tot mai frecvente.
Pentru a analiza și îmbunătăți aceste texte, o platformă educațională dezvoltă un sistem automat capabil să transforme propozițiile scrise într-o manieră neatentă într-o variantă corectă și clară. Rolul tău este îi ajuți prin propunerea unui sistem automat care corectează textele, din perspectivă gramaticală.
📁 Setul de date
Ai la dispoziție două fișiere:
- train.csv — conține texte greșite și variantele lor corectate
- test.csv — conține texte greșite pentru care modelul trebuie să propună o variantă corectată
Fiecare rând din train.csv are următoarele coloane:
SampleID— identificatorul unic al textuluiText— propoziția originală, așa cum a fost scrisă de utilizatorRevisedText— versiunea corectată de un expert
Exemplu:
SampleID,Text,RevisedText
747, "She forgot her umbrella it started to rain.", "She forgot her umbrella, and then it started to rain."
1382, "He could have bought the house if he has enough money.", "He could have bought the house if he had enough money."
241, "I have a meeting with a principal of a school.", "I have a meeting with the principal of the school."
🧠 Task (100 puncte)
Construiește un sistem care generează varianta corectă, din punct de vedere gramatical, pentru propozițiile din test.csv.
Sistemul de evaluare o să calculeze un scor final combinând două aspecte esențiale:
- asemănarea semantică
- diferențele lexicale
Formula de evaluare este:
final_score = 0.7 * cosine_similarity + 0.3 * edit_distance_score
- final_score ≥ 0.95 → 100 puncte
- final_score ≤ 0.9 → 0 puncte
- Pentru valorile intermediare se acordă punctaj proporțional.
🔹 Cosine Similarity și Edit Distance în corectarea textelor
Pentru a construi un sistem automat de corectare a textelor, evaluarea trebuie să țină cont atât de sensul propoziției, cât și de diferențele lexicale exacte. Aici intervin cosine_similarity și edit_distance.
Cosine Similarity
Definiție:
Cosine similarity măsoară similaritatea dintre doi vectori calculând cosinusul unghiului dintre ei. Formula este:
A * Beste produsul scalar al vectorilor|A|și|B|sunt normele lor
În NLP:
- Fiecare propoziție poate fi reprezentată printr-un embedding vectorial (ex. BERT, Sentence-BERT).
- Cosine similarity indică cât de asemănătoare semantic sunt propozițiile, chiar dacă cuvintele conținute în acestea diferă.
Exemplu:
Text 1: "She forgot her umbrella."
Text 2: "She left her umbrella behind."
- Semantic: aceleași idei → Cosine similarity mare
Relevanță:
Ne asigură că textul corectat păstrează aceeași idee ca textul original.
Edit Distance (Levenshtein Distance)
Definiție:
Edit distance măsoară numărul minim de operații (inserare, ștergere, înlocuire) necesare pentru a transforma un șir într-altul.

Exemplu:
Text original: "She forgot her umbrella it started to rain."
Text corectat: "She forgot her umbrella, and then it started to rain."
- Operații: inserare virgule + adăugarea conjuncției "and then"
- Edit distance = 6 caractere
Relevanță:
Reflectă diferențele lexicale și corectitudinea gramaticală.
Metrica finală care le combină pe cele două
Formula scorului final:
- 0.7 Cosine Similarity: prioritizează sensul propoziției
- 0.3 Edit Distance: verifică fidelitatea lexicală și corectitudinea
Această combinație asigură că textul corectat este atât corect gramatical, cât și similar din punct de vedere semantic cu textul original.
📄 Formatul fișierului de submisie
Fișierul submission.csv trebuie să conțină un rând pentru fiecare text din test.
Prima linie a fișierului conține următoarele:
DatapointID, RevisedText
unde:
- DatapointID -
SampleIDdin test - RevisedText - varianta corectată a textului
Exemplu (SampleID = 1557):
1557, "He didn't eat any breakfast this morning."