Ajme, evo ga opet. Pa nije me bilo samo par dana. Zatrpan mi je email inbox. Zar ne bi bilo divno da netko drugi umjesto mene čita i razvrstava emailove? Živimo u 21. stoljeću… Pa mora postojati bolje rješenje.
Sigurno nam je poznata ovakva situacija. Ako nismo sami imali prilike iskusiti inbox pun nepročitane pošte, onda smo zasigurno čuli nekog od kolega da se žali na previše emailova. Nadalje, većina firmi ima službenu email adresu putem koje prima raznu poštu od strane korisnika koji imaju pregršt pitanja, zahtjeva i žalbi.
Najčešće postoji potreba da se te emailove razvrsta u grupe tako da je za jednu grupu emailova odgovorna određena osoba ili odjel. Dakle, emailove netko mora pročitati s razumijevanjem i staviti u pravilnu grupu. Svakome je jasno da je to vremenski zahtjevan posao. Problem postaje očitiji na konkretnom primjeru A1 Hrvatske kada shvatimo da se radi o brojci od nekoliko tisuća emailova koji pristižu u redovitim intervalima. Pokušat ću približiti područje obrade prirodnog jezika kao tehnologiju koja nam je pomogla u rješavanju spomenutog problema.
Što je to NLP? Ne, ne pričamo o psihologiji, već o obradi prirodnog jezika.
Jasno je da bi neka vrsta automatiziranog čitanja, razumijevanja i grupiranja emailova bila od velike pomoći. Odlučili smo razviti interno rješenje koje je u stanju učiniti upravo to. No, od kuda početi? Očito rješenje bilo je okrenuti se strojnom učenju (engl. Machine Learning, ML) i obradi prirodnog jezika (engl. Natural Language Processing, NLP). Čekaj malo, vrati se nazad, učenje čega?
Strojno učenje grana je računarske znanosti koja se bavi algoritmima koji uče kroz primjere. Ljudi su se zapitali može li računalo, umjesto da ljudi ručno sastave pravila, samo izgraditi pravila potrebna za rješavanje problema. Postoje mnogi zadaci za koje bi ručno sastavljanje problema bilo preteško ili neisplativo.
Jedan primjer takvog zadatka jest razlikovanje slika pasa od slika mačaka. Kako bismo računalu opisali sve potrebne korake koje mora napraviti kako bi razlikovao slike ako ni mi sami nismo svjesni svih koraka koje učinimo kada pogledamo sliku? Hoćemo li pokušati računalu opisati kako izgledaju uši mačke ili njuška psa iz bilo kojeg mogućeg kuta? To bi zaista bio težak posao. Arthur Samuel, američki računalni znanstvenik koji je uveo pojam strojno učenje u literaturu, napisao je na ovu temu u svojem eseju “Artificial Intelligence: A Frontier of Automation” iz 1962. godine sljedeće:
“Programming a computer for such computations is, at best, a difficult task, not primarily because of any inherent complexity in the computer itself but, rather, because of the need to spell out every minute step of the process in the most exasperating detail. Computers, as any programmer will tell you, are giant morons, not giant brains.”
Dakle, rješenje nije ručno pisanje pravila, već automatiziranim postupkom pustiti računalo da uz pomoć već riješenih primjera samo nađe pravila potrebna za rješavanje određenog zadatka.
Područje obrade prirodnog jezika bavi se načinima na koje računalo obrađuje prirodni jezik pod čime se misli na naš svakodnevni jezik koji koristimo u komunikaciji s drugim ljudima. Zovemo ga prirodni jezik kako bi ga razlikovali od pojma programski jezik koji se koristi za davanje naredbi računalu. Spoj obrade prirodnog jezika i strojnog učenja moćna je kombinacija za rješavanje problema klasifikacije emailova. I kako to sve onda zajedno funkcionira? Tekst emaila pretvara se, uz pomoć metoda obrade prirodnog jezika, u niz realnih brojeva s kojima računalo može raditi, a zatim algoritam metodama strojnog učenja nauči razvrstavati emailove na temelju već razvrstanih emailova iz prošlosti koji služe kao primjeri za učenje.
I on stvarno razumije hrvatski? (Obrada prirodnog jezika je teška)
AI-complete. Zvuči fora i pomalo zastrašujuće, no radi se o jednostavnom konceptu. U AI-complete kategoriju stavljamo one probleme iz područja umjetne inteligencije koji zahtijevaju da je računalo na razini ljudske inteligencije kako bi ih moglo riješiti. Razumijevanje jezika smatra se AI-complete problemom implicirajući da se razumijevanje jezika ne može riješiti jednim specifičnim algoritmom, već da je potreban niz različitih sustava. Zašto je razumijevanje teksta tako teško?
Jedan od problema koji razumijevanje teksta čini kompliciranim zadatkom je dvosmislenost teksta. Svi smo mi svakodnevno u situaciji da nismo sigurni što je naš sugovornik mislio u nekoj situaciji. Prirodni jezik je za razliku od programskih jezika, koji su s namjerom dizajnirani da ne mogu biti dvoznačni, pun prepreka za prepoznavanje pravog značenja teksta. Tekst može biti kompleksan, sarkastičan, ovisan o kontekstu, nejasan te se često oslanja na zdravorazumsko znanje o svijetu. Naš sugovornik može pretpostaviti da smo upoznati s nekim činjenicama koje ne mora eksplicitno spomenuti u razgovoru kako bismo ga uspješno shvatili. Kada ta pretpostavka nije zadovoljena, mi ćemo postaviti dodatno pitanje kako bismo saznali točan kontekst ili prešutjeti da nismo shvatili o čemu priča. Također, postoji puno činjenica o svijetu koje ljudi koriste kako bi zaključili pravo značenje neke rečenice. Ako nas npr. netko pita o uvjetima korištenja SIM kartice u Austriji, moći ćemo na temelju našeg znanja o svijetu zaključiti da se osoba interesira o korištenju roaming usluge u inozemstvu.
Računalu bi bilo najjednostavnije da svi pričamo formalnim jezicima utemeljenim na matematici, no komunikacija ne bi bila tako zabavna i brza. Koristeći razne skraćenice i temeljne pretpostavke, ljudi olakšavaju međusobnu komunikaciju, ali i uvode mogućnost raznih interpretacija neke rečenice. Ponekad osoba neće niti biti svjesna da postoji drugačija interpretacija rečenice od one koju je ona pronašla. Postoji više načina na koje rečenica može biti dvosmislena, no pogledajmo samo jedan klasičan primjer iz literature:
“Vidio sam čovjeka s dalekozorom.“
gdje je jedna moguća interpretacija da smo vidjeli čovjeka koji je imao dalekozor, a druga da smo mi koristili dalekozor kada smo ugledali čovjeka.
Nadalje, kompleksnost obrade jezika ovisi i o tome koliko ljudi koristi taj jezik. Za engleski jezik postoji velik broj alata, podataka i ljudi koji se bave raznim problemima. Naravno, za hrvatski jezik to je u potpunosti drugačija priča. Ne samo što nedostaje alata i podataka, već je i sam jezik znatno kompliciraniji od engleskog imajući na umu padeže, glagolska vremena, dijakritike i složene jezične konstrukcije. Time je za hrvatski jezik potreban i veći broj podataka, alata i tehnika pretprocesiranja teksta, kako bi se postigao sličan rezultat kao nad engleskim jezikom.
Zamke i problemi u algoritmima strojnog učenja
Kao kod svake automatizacije procesa, i s algoritmima strojnog učenja treba biti oprezan. Postoji mnogo načina na koje možemo naše algoritme učiniti pristranima ovisno o podacima nad kojima smo trenirali algoritam. Zamislimo da radimo na detekciji spam emailova i koristimo klasifikator koji je na temelju primjera za učenje naučio diskriminirati na osnovi narječja koje se koristi u tekstu emaila. To bi se moglo dogoditi u slučaju da se među primjerima za učenje spam klase koriste tekstovi na samo jednom narječju, a među primjerima za učenje nema važnih emailova na tom narječju. To bi bio ozbiljan problem. Također, nikako ne bismo htjeli da sustav ignorira važan email našeg kolege jer se u tekstu emaila koriste riječi koje je algoritam u fazi treniranja vidio samo među primjerima spam klase. Dakle, bitno je imati reprezentativne i nepristrane podatke za učenje kako algoritam ne bi naučio razliku između spama i važnog emaila nad detaljima koji uopće nisu bitni za odlučivanje o tome je li neki email spam.
Još jedan zanimljiv slučaj opasnog korištenja algoritama strojnog učenja u domeni sustava preporučivanja je slučaj platforme YouTube. Platformi YouTube je glavni cilj povećanje vremena koje prosječan korisnik provede gledajući videozapise. Logika je jasna. Ako su korisnici dulje na platformi, to znači da su sretniji sadržajem kojeg pronalaze. No, razni istraživači su prepoznali negativne posljedice ovakve opsesije jednom metrikom. Algoritmi preporučuju videozapise koji tvrde da glavni mediji kriju istinu o nekoj temi i kako im ne treba vjerovati. Ljudi će zbog toga više vremena provoditi na YouTube platformi kako bi saznali “prave” informacije te se time često promoviraju i šire radikalni pogledi na popularne teme.
Za sada smo mirni
Ne, roboti nam neće tako brzo oduzeti posao. Postoji mnogo različitih složenih poslova koje je nemoguće riješiti jednim potezom. Važno je ne precijeniti sposobnosti NLP sustava i podcijeniti ograničenja što nas vodi do senzacionalnih projekata koji ne uspijevaju isporučiti obećane rezultate. Isto tako je važno ne podcijeniti sposobnosti i uveličati ograničenja što dovodi do toga da se odustaje od projekata pod izlikom da je nemoguće riješiti neki problem. Istina je negdje u sredini kao i s većinom novih tehnologija. Bitno je isprobati kako sustav radi na problemu u manjem opsegu te postepeno sustav dovesti do razine koja je spremna za produkciju.
Obrada prirodnog jezika i strojno učenje nam mogu uvelike olakšati živote, ako prepoznamo prikladan problem i savjesno koristimo nove tehnologije. Projekt klasifikacije emailova je konkretna primjena tehnologije strojnog učenja s odličnim rezultatima koji znatno pomaže agentima korisničke službe. Vjerujem kako će se s vremenom širiti opseg poslova nad kojima su ovi alati primjenjivi. Klasifikacija emailova je tek prvi korak na putu prema bržem i efikasnijem poslovanju.