4 Algoritmi za analizu i obradu teksta

Računari se koriste za obradu velikih količina tekstualnih podataka i da bi to bilo moguće uraditi na efikasan način razvijen je velikih broj algoritama koji se bave analizom i obradom teksta. Najčešći problemi koji se rešavaju su pretraga teksta (provera da li jedna niska sadrži drugu), pronalaženje najdužih zajedničkih podniski dve niske, pronalaženje najduže podniske koja se ponavlja unutar niske, pronalaženje najkraće podniske koji se javlja samo jednom unutar niske, pronalaženje najdužeg palindroma unutar niske i slično. Svi ovi problemi imaju velike praktične primene. Na primer, ispitivanje da li se niska javlja u tekstu se koristi u pretrazi dokumenata (veb-strana, PDF dokumenata, datoteka itd.), proveri pravopisa, detekciji plagijata, filtriranju neželjene pošte i slično. Za sve ove probleme nije teško razviti algoritme složenosti \(O(n^2)\), međutim, pokazuje se da je moguće doći i do efikasnijih algoritama, složenosti \(O(n)\).

U nastavku će biti izloženi neki klasični algoritmi i strukture podataka koje se koriste za analizu i obradu teksta: algoritmi zasnovani na heširanju niski, algoritam KMP, \(z\)-niz i \(z\)-algoritam za njegovu konstrukciju i Manačerov algoritam za pronalaženje najduže palindromske podniske. Mnogi problemi sa tekstom se mogu rešavati tehnikom dinamičkog programiranja (na primer, edit-rastojanje, pronalaženje najduže zajedničke podniske ili pronalaženje najdužeg zajedničkog podniza dve niske). Veliki broj operacija nad tekstom se efikasno sprovodi korišćenjem sufiksnih drveta i sufiksnih nizova, pa se čitaocu zainteresovanom za temu obrade teksta savetuje njihovo samostalno proučavanje.

Poglavlja: