U augustu 2023. klijent me angažovao da napravim model koji iz Instagram biografija može izdvojiti dob.
Primjeri su odmah pokazali stvarni problem. U biografiji može pisati „25 yo“, „32“ ili „1995“. Ali može pisati i „married in 2018“ ili „moved to the city in 1999“. Sistem je trebao prepoznati prvu grupu bez samouvjerenog pretvaranja svake četverocifrene vrijednosti u godinu rođenja.
To nije samo zadatak izdvajanja brojeva. To je problem konteksta.
Regularni izraz pronalazi kandidate, ne odgovore
Regularni izraz može brzo pronaći 25, 1995 ili 2018. To je korisno, ali daje samo kandidate.
Naredna pitanja su semantička:
- Je li broj izričito povezan s dobi?
- Je li četverocifrena vrijednost godina rođenja, godišnjica ili datum nekog događaja?
- Podržava li okolna fraza takvo tumačenje?
- Postoji li uopće dovoljno dokaza da se vrati dob?
Najsigurniji odgovor je ponekad „nepoznato“. Kod izdvajanja podataka bolje je ne dati odgovor nego profilu dodati uvjerljivu, ali netačnu vrijednost.
Pretvori primjere u testne slučajeve
Prije izbora modela i danas bih zapisao acceptance set običnim jezikom:
| Dio biografije | Očekivano tumačenje |
|---|---|
25 yo |
eksplicitna dob |
born 1995 |
godina rođenja; računati prema definisanom referentnom datumu |
class of 2018 |
nije dob |
married since 2018 |
nije dob |
32 |
dvosmisleno bez dodatnog konteksta |
Ova mala tabela vrijedi više od nejasnog zahtjeva „izdvoji dob“. Otkriva rubne slučajeve, implementaciji daje nešto provjerljivo i čini lažno pozitivne rezultate vidljivim.
Praktičan pipeline
Za kratak i neuredan tekst preferiram slojevit pipeline:
- standardizirati razmake, velika i mala slova, interpunkciju i česte izraze dobi;
- izdvojiti moguće dobi i godine;
- pregledati okolne riječi i strukturu fraze;
- odbaciti datume događaja i vrijednosti izvan dogovorenih granica;
- vratiti vrijednost zajedno s pouzdanošću ili razlogom;
- zadržati eksplicitan ishod „nema pouzdanog odgovora“.
Zavisno od dostupnih označenih podataka, korak razumijevanja konteksta može biti skup pravila, klasifikator ili njihova kombinacija. Najvažnija odluka nije izbor modernog modela, nego očuvanje razlike između kandidata i potvrđenog tumačenja.
Šta je klijent potvrdio
Angažman je završen kao fixed-price Upwork projekat. Klijent je ostavio javnu ocjenu 5,0:
„Imao sam privilegiju raditi s Mehmedom na nedavnom projektu i njegov učinak bio je zaista izuzetan. Njegova stručnost, tačnost i inovativno razmišljanje bili su vidljivi u svakom aspektu rada. Komunicirao je jasno i pravovremeno, a njegova posvećenost nadmašivanju očekivanja bila je očigledna. Mehmedov pristup usmjeren na rezultate nije samo donio vrhunski rad nego je daleko nadmašio moja početna očekivanja. Radujem se budućoj saradnji i bez zadrške bih preporučio Mehmeda za svaki projekat koji zahtijeva duboko znanje, vještinu i izuzetnu radnu etiku!“
Recenzija potvrđuje uspješnu isporuku, komunikaciju i zadovoljstvo klijenta. Ne daje javni benchmark, veličinu dataseta, produkcijsku tačnost niti kasniji poslovni rezultat, pa te brojeve ne izmišljam.
Šira lekcija
Mnogi problemi kvaliteta podataka imaju isti oblik. Sirovu vrijednost je lako pronaći; njeno značenje zavisi od konteksta.
Tabela može izgledati uredno, a ipak biti pogrešna ako je 2018 upisano u kolonu age. Pouzdano izdvajanje zato zahtijeva više od parsiranja: jasne definicije, negativne primjere, validaciju i dozvolu da se kaže „ne znam“.
TREBAJU VAM DOKAZI IZ VLASTITIH PODATAKA?