Shvati TF-IDF i Bag of Words bez muke [DIY Vodič]
Prestanite vjerovati da je vještačka inteligencija magična kutija koja ‘čita’ vaše misli. To je marketinška laž koja vas košta vremena i loših modela. Vaš računar ne razumije emociju, on razumije samo matematiku i sirove brojeve, a ako mu tekst ne pripremite kao što stolar priprema sirovu hrastovinu, rezultat će biti iskrivljen i neupotrebljiv. Vi morate naučiti kako da pretvorite haos ljudskog jezika u čiste vektore. U ovom vodiču ćemo proći kroz proces ‘brušenja’ podataka koristeći Bag of Words i TF-IDF, bez komplikovanog žargona koji služi samo da bi prodavci kurseva izgledali pametnije.
Zašto tvoj model vidi samo gomilu otpada (Bag of Words)
Bag of Words (BoW) je najsiroviji alat u vašoj kutiji. Zamislite da uzmete knjigu, isiječete svaku riječ makazama, ubacite ih u vreću i dobro protresete. Izgubili ste redoslijed, izgubili ste gramatiku, ali ste zadržali učestalost. To je vaš prvi korak. Ako pravite svoj prvi Python kod za AI, vjerovatno ćete početi ovdje. Ali pazite: BoW je glup. On misli da je riječ ‘i’ jednako važna kao i riječ ‘algoritam’ samo zato što se pojavljuje često. To je kao da pokušavate popraviti sat čekićem — efikasno je za razbijanje, ali nije za precizan rad. Čućete tupi ‘klik’ vašeg skripta koji procesira hiljade nebitnih riječi dok mu se memorija ne zapali. Ne radite to bez filtriranja.

Kada radite sa Bag of Words, miris ‘pregrijanih’ podataka je stvaran. Osjetićete frustraciju kada vaš model troši gigabajte RAM-a na riječi koje ne znače ništa. Feature engineering je ključ, a BoW bez filtriranja je samo sirova ruda koju treba pretopiti.
WARNING: Nikada ne ubacujte neobrađen tekst direktno u model bez uklanjanja ‘stop-words’ (i, u, na, da). To će stvoriti šum koji može dovesti do katastrofalno nepreciznih predviđanja, trošeći resurse vašeg servera na gluposti.
TF-IDF: Precizno brušenje važnosti riječi
Ako je BoW sjekira, onda je TF-IDF (Term Frequency-Inverse Document Frequency) hirurški skalpel. On ne gleda samo koliko puta se riječ pojavljuje u jednom dokumentu (TF), već i koliko je ta riječ rijetka u cijeloj vašoj bazi (IDF). Ako se riječ ‘kvar’ pojavljuje često u jednom izvještaju, ali rijetko u ostalih hiljadu, TF-IDF će tu riječ ‘osvijetliti’ kao kritičnu. To je suština. To je ono što vam štedi sate rada. Sredi feature engineering odmah tako što ćeš kazniti riječi koje su svuda. Riječi koje su ‘univerzalne’ u vašem skupu podataka su poput rđe na metalu — samo smetaju i treba ih sastrugati. Skaliraj svoje podatke. Odmah.
Da li moram koristiti skupe biblioteke za ovo?
Ne. Možete ovo izračunati na papiru ako imate dovoljno strpljenja i mazohističkih sklonosti. Ipak, u 2026. godini, Scikit-learn je vaš najbolji prijatelj u radionici. On radi tešku matematiku dok vi držite fokus na arhitekturi modela.
Koliko podataka mi stvarno treba za početak?
Za DIY testiranje dovoljno vam je desetak tekstova. Ali za pravi uvid, bez 500+ dokumenata, TF-IDF neće moći pravilno izračunati ‘rijetkost’ riječi. To je matematička realnost, a ne sugestija.
Anatomija propasti: Zašto tvoj kod laže (Forensis Failure)
Dozvolite da vam opišem katastrofu. Moj klijent je pokušao napraviti sistem za klasifikaciju emailova. Koristili su BoW bez ikakvog čišćenja. Šest mjeseci kasnije, model je počeo svaku poruku označavati kao ‘prioritetnu’. Zašto? Zato što su svi emailovi imali potpis ‘Srdačan pozdrav’. Model je naučio da je ‘Srdačan’ najbitnija karakteristika jer se pojavljivala u svakom uspješnom primjeru. To je ‘overfitting’ u svom najružnijem obliku. Ako ne koristite TF-IDF da umanjite značaj takvih fraza, vaš model će postati beskoristan, a vi ćete provesti noći pokušavajući shvatiti zašto ‘pametni’ bot griješi na bazičnim stvarima. Woodworking terminima: to je kao da ste koristili mokro drvo za policu — u početku izgleda dobro, ali će se iskriviti i srušiti čim se situacija promijeni.
Zašto ovo radi? (Nauka o materijalu)
Ovdje ne pričamo o magiji, već o linearnoj algebri. TF-IDF pretvara tekst u vektorski prostor. Zamislite to kao trodimenzionalni koordinatni sistem gdje svaka riječ ima svoju tačku. Što su tačke bliže, tekstovi su sličniji. Kada izračunate TF-IDF, vi zapravo normalizujete te vektore. To je kao da balansirate točak na autu — ako nije u balansu, cijela konstrukcija će se tresti pri većim brzinama. Normalizacija osigurava da dugi tekstovi ne dominiraju nad kratkim samo zbog broja riječi. To je čista fizika informacija.
Zatvori ventil: Kako spriječiti curenje podataka
Prije nego što pokrenete skriptu, provjerite jednu stvar. Da li ste izračunali IDF na cijelom skupu podataka, uključujući i onaj na kojem planirate testirati? Ako jeste, čestitam, ‘procurili’ ste podatke. To je kao da ste vidjeli odgovore na testu prije nego što ste ga polagali. IDF se mora računati isključivo na trening podacima. U suprotnom, vaš model će imati vještački visoku preciznost koja će se raspasti u sekundi kada ga pustite u realni svijet. Budite rigorozni. Testirajte svoje granice. Ne budite lijeni kod pripreme, jer se greske u bazi ne popravljaju boljim algoritmom, već novim brušenjem od početka.


