Professional Documents
Culture Documents
Magistar PDF
Magistar PDF
1. Uvod 1
2. Klasifikacija teksta 2
2.1. Uvod u klasifikaciju tekstualnih dokumenata . . . . . . . . . . . . . . . . . 2
2.2. Metode klasifikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1. Modeli nadziranog učenja . . . . . . . . . . . . . . . . . . . . . . 5
2.2.2. Naivni Bayesov klasifikator . . . . . . . . . . . . . . . . . . . . . 7
2.2.3. Klasifikator najbližih susjeda . . . . . . . . . . . . . . . . . . . . . 8
5. Zaključak 24
Literatura 25
iv
1. Uvod
1
2. Klasifikacija teksta
γ:D→C
2
Cilj je postići automatizirani postupak u kojem će računalo primjenjujući pravila odrediti
klasu. Kako se radi o računalima, potrebno je pravila zapisati njima razumljivom sintaksom,
primjerice Booleovim izrazima. Osoba koja poznaje područje primjene mogla bi napisati ta-
kav skup pravila koji bi vrlo precizno odredio klase, ali problem takvog pristupa je skupoća
i održavanje. Bilo bi potrebno zaposliti mnogo stručnjaka koji bi svakodnevno, npr. zbog
pojave novih izraza, ažurirali skup pravila tako da preciznost ostaje na istoj razini.
Rješenje problema održavanja, efikasnosti i skupoće nalazi se u metodama temeljim na
strojnom učenju. Ideja je vrlo jednostavna, želimo da klasifikator temeljem unaprijed pri-
premljenog skupa dokumenata, kojima je odred̄ena klasa, nauči pravila te ih primjeni na
nepoznate dokumente i odredi im klasu. Zbog zahtjeva postojanja pripremljenih dokume-
nata klasifikacija pripada nadziranoj vrsti strojnog učenja (engl. supervised learning). Pri-
premljene dokumente nazivamo skup za učenje (engl. training set). Temeljem tih podataka
generira se model koji mora biti odgovarajuće složenosti kao funkcija koju pokušavamo na-
učiti kako bi se izbjegla prenaučenost (engl. overfitting) i podnaučenost (engl. underfitting).
Prenaučenost se dogad̄a u slučaju kada je naučeni model koji opisuje podatke za učenje pre-
više složen što uzrokuje lošu generalizaciju. Druga krajnost je podnaučenost koja se dogad̄a
kada je model previše jednostavan što rezultira lošim provod̄enjem klasifikacije. Skup doku-
menata koji nisu označeni nazivamo ispitni skup (engl. test set).
Prije primjene klasifikatora potrebno je provjeriti njegova svojstva na skupu za provjeru
(engl. validation set) postupkom koji nazivamo unakrsna provjera (engl. cross-validation)
kojim sprječavamo prenaučenost i podnaučenost.
Slika 2.2: Prikaz različitih složenosti modela (podnaučenost, prenaučenost, ispravna složenost)
Sva tri navedena skupa moraju biti med̄usobno disjunktni kako bi se mogle utvrditi prave
vrijednosti pogrešaka klasifikatora.
Klasifikator možemo ocijeniti koristeći četiri osnovne mjere: preciznost (engl. preci-
sion), odziv (engl. recall), točnost (engl. accuracy) i specifičnost (engl. specificity). Kako
bismo mogli definirati ove mjere potrebno je prvo podijeliti klasificirane dokumente teme-
ljem ispravnosti odred̄ivanja pripadnosti klasi.
Dokumente kojima klasifikator odredi pripadnost klasi ci , a to je ujedno i ispravna klasa,
nazivamo točno pozitivnima (engl. true positives) i označavamo ih s TP.
Ako klasifikator odredi dokumentu klasu ci , a on njoj ne pripada, tada takve nazivamo
3
lažno pozitivnima (engl. false positives) i označavamo oznakom FP.
Kada je dokumentu nije odred̄ena klasa ci , a on niti ne pripada njoj nazivamo ga točno
negativnim (engl. true negatives) i označavamo s TN.
Lažno negativni dokumenti (engl. false negatives) su oni kojima je klasifikator odredio
klasu različitu od ci , a oni upravo pripadaju njoj. Označavamo ih oznakom FN.
Preciznost definiramo kao udio dokumenata kojima je ispravno odred̄ena klasa ci u broju
dokumenata kojima je ona odred̄ena. Primijetimo kako ukupni broj ne odgovara broju doku-
menata koji stvarno pripadaju klasi ci .
TP
P = (2.1)
TP + FP
Odziv definiramo kao udio dokumenata kojima je ispravno odred̄ena klasa ci u ukupnom
broju dokumenata koji stvarno pripadaju klasi ci .
TP
R= (2.2)
TP + FN
Točnost se definira kao omjer ispravno klasificiranih dokumenata i ukupnog broja doku-
menata.
TP + TN
A= (2.3)
TP + FP + TN + FN
Specifičnost je omjer dokumenata kojima je ispravno odred̄eno nepripadnost klasi ci i
broja dokumenata koji stvarno ne pripadaju toj klasi.
TN
S= (2.4)
TN + FP
Prosud̄ivati klasifikator samo temeljem navedenih mjera je pogrešno, potrebno je pozna-
vati i područje primjene kako bi se one mogle prilagoditi i tako ostvariti dobar klasifikator.
Takod̄er je bitno naglasiti kako je visoka razine jedne od mjera nedovoljna za proglašavanje
klasifikatora kvalitetnim. Primjerice ako testiramo klasifikator na skupu dokumenata koji će
velikom većinom pripadati klasi ci i klasifikator svima odredi nepripadnost toj klasi tada će
točnost biti vrlo visoka, ali će odziv biti jednak nuli.
(Bašić i Šnajder, 2011)
4
2.2.1. Modeli nadziranog učenja
Generativni i diskriminativni modeli
Prema načinu odred̄ivanja pripadnosti klasi postupke klasifikacije možemo podijeliti na ge-
nerativne i diskriminativne modele. Generativni model uči zajedničku razdiobu primjera x
i klase c P (x, c), iz koje se može primjenom Bayesove formule doći do vjerojatnosti pripa-
danja primjera x klasi c P (c|x), koju koristi prilikom klasifikacije. Diskriminativni modeli,
ovisno o tome jesu li probabilistički ili ne, izravno uče uvjetnu razdiobu P (c|x), odnosno
modeliraju funkciju ovisnu o primjeru x koja dodjeljuje klasu c. Generativni modeli poku-
šavaju naučiti kako primjeri iz neke klase nastaju te to znanje primjenjuju u klasifikaciji dok
diskriminativni modeli odred̄uju klasu samo temeljem pitanja koliko je vjerojatno da se radi
o nekoj klasi uz zadane pojmove iz dokumenta. Razliku izmed̄u ova dva pristupa možemo
vidjeti na slici 2.3.
Možemo reći da diskriminativni modeli uče granicu izmed̄u klasa, a generativni modeli-
raju raspodjelu klasa. Iz tog razloga se diskriminativni modeli nazivaju i metodama temelje-
nim na granici (engl. boundary-oriented methods).
Odluka o korištenju modela može se donijeti temeljem broja dostupnih primjera za uče-
nje, pokazalo se da generativni modeli zahtijevaju vrlo velik broj kako bi pogreška bila
prihvatljiva. Za postupke klasifikacije primjereniji je diskriminativni model jer izbjegava
složene izračune, ne zahtijeva toliko primjera za učenje i vrlo dobro odrad̄uje klasifikaciju.
5
Probabilistički i neprobabilistički modeli
Temeljem odnosa broja primjera za učenje i parametara modela, nadzirane postupke strojnog
učenja dijelimo na parametarske i neparametarske. Kod parametarskih na složenost modela
ne utječe broj primjera za učenje, nego se pretpostavlja teorijska razdioba podataka pa je
iz tog razloga broj parametara konačan i odred̄en razdiobom (npr. za normalnu razdiobu to
su očekivanje i standardna devijacija). Neparametarski modeli, iako im ime može drugačije
sugerirati, imaju parametre, ali njihov broj ovisi o broju primjera za učenje pa samim time i
složenost modela raste povećanjem skupa za učenje. Oni ne pretpostavljaju nikakvu razdiobu
primjera za učenje.
Linearni modeli su ograničeni i koristeći ih nije moguće riješiti neke teže klasifikacij-
ske probleme koji se pojavljuju u slučajevima kada je primjera značajno više od dimenzije
6
prostora što rezultira većom gustoćom naseljenosti.
P (c) · P (d|c)
P (c|d) = (2.6)
P (d)
Najvjerojatnija klasa c iz skupa svih klasa C je ona s najvećom a posteriori vjerojatnosti
(engl. maximum a posteriori), kraće MAP. Odnosno, tražimo takav c ∈ C za koji će P (c|d)
biti maksimalan:
Možemo se pitati što zapravo predstavlja vjerojatnost P (d|c). Kako dokument možemo
predstaviti skupom pojmova {t1 , t2 , . . . , tn }, možemo 2.8 zapisati kao:
Vjerojatnost klase P (c) računa se kao omjer broja dokumenata te klase u ukupnom broju
dokumenata, med̄utim vjerojatnost P (t1 , t2 , . . . , tn |c) nije moguće jednostavno izračunati.
7
Zato uvodimo pojednostavljenje u kojem ne pazimo na redoslijed pojmova, nego samo broj
pojavljivanja. Takav model nazivamo vreća riječi (engl. bag of words). Nadalje, pretposta-
vimo da su vjerojatnosti pojmova uz zadanu klasu P (ti , cj ) nezavisne. Iako obje pretpostavke
nisu u potpunosti ispravne koristimo ih zbog značajnog pojednostavljenja izračuna.
Nakon primjene navedenog slijedi:
P (ti |c) računamo kao omjer broja pojavljivanja pojma ti i ukupnog broja pojmova u
dokumentima s klasom c.
Iz 2.9 i 2.10 dolazimo do konačnog izraza za odred̄ivanje klase:
Y
cN B = arg max P (c) · P (t|c). (2.11)
c∈C
t∈T
Naivni Bayesov klasifikator, kao i ostali jednostavni modeli, ima problem visoke pristra-
nosti (engl. high bias), koja je definirana kao razlika izmed̄u predvid̄enog i stvarnog modela.
Većinom je dobar odabir u slučajevima kada imamo vrlo malo primjera za učenje.
Moguće je, često i poželjno, bližim susjedima pridijeliti veći značaj, odnosno težinu.
Često se koristi težinski faktor d−1 gdje je d udaljenost do susjeda.
Kažemo da k-NN pripada vrsti strojnog učenja koju nazivamo učenje zasnovano na slu-
čajevima (engl. instance-based) često nazivanim i memory-based jer prilikom odred̄ivanja
klase prolazi po svim instancama iz skupa za učenje koje pohranjuje u memoriji. Vremenska
8
složenost same pretrage i odred̄ivanja klase ne ovisi o broju klasa, nego isključivo o broju
primjera za učenje pa je k-NN pogodniji za rješavanje problema s velikim brojem klasa. Iako
je većinom poželjno imati velik broj primjera za učenje kod k-NN-a takav pristup značajno
usporava postupak klasifikacije.
Vrijednost k odred̄uje se heuristički, primjerice provod̄enjem cross-validation postupka
kako bi se utvrdio najbolji k za konkretan slučaj.
Povećanje vrijednosti k povećava pristranost, ali smanjuje varijancu, odnosno varijaciju
kvalitete predvid̄anja modela. Suprotno navedenom, smanjenje vrijednosti k povećava vari-
jancu, ali smanjuje pristranost. Cilj je odabrati takav k za koji će pristranost i varijanca biti
minimizirani.
Na slici 2.7 središte svakog grafa predstavlja savršeni model, a zelene točke predstavljaju
izgrad̄ene modele prema različitim skupovima za učenje.
9
Slika 2.8: 3-NN primjer
Kao što smo mogli uočiti k-NN je vrlo jednostavan za shvaćanje i implementaciju što
je jedna od prednosti. Takod̄er se pokazao otpornim na šum (osim 1-NN) te se zbog brzine
izvod̄enja nameće kao izbor u situacijama kada je skup klasa jako velik.
Neke od mana k-NN-a su sporo odred̄ivanje susjeda u slučaju velikog broja dokumenata,
ograničenost memorijom te potreba za utvrd̄ivanjem najbolje vrijednosti za k.
10
3. Programska knjižnica Apache Lucene
11
Ovaj primjer možemo preslikati i na računalnu pretragu tekstualnih datoteka. Ako smo
odred̄enim postupkom u stanju napraviti strukturu podataka koja će omogućiti brzi pogled i
odred̄ivanje lokacije pojma unutar dokumenta, tada možemo izbjeći slijedno čitanje datoteka
te ostvariti efikasnu pretragu.
Taj postupak naziva se indeksiranje (engl. indexing), a dobivena struktura podataka in-
deks (engl. index). Indeks se sastoji od pojmova (engl. terms) kojima je pridružena lista
jedinstvenih oznaka dokumenata u kojima se pojavljuju (engl. postings list) te u naprednijim
izvedbama mjesto pojavljivanja odred̄eno rednim brojem riječi u dokumentu. Zbog efikas-
nosti pojmovi su sortirani abecednim redom, a oznake dokumenata rastućim redoslijedom.
Slika 3.1 prikazuje potrebne komponente za ostvarivanje pretrage. U nastavku će neke
od njih biti dodatno pojašnjene.
12
tak, URL, sadržaj. Lucene omogućuje različito vrednovanje pojedinih polja (engl. boosting)
dokumenata koje postavlja programer, ali ostvaruje i automatsko povećanje vrijednosti polja
koja su kraća u odnosu na druga. Izgradnja dokumenta prepuštena je programeru koji može
odrediti svojstva svakog od polja. Na primjer sadržaj polja s relativno malo teksta (naslov,
autori, godina izdanja, email, URL. . . ) se obično sprema u indeks te mu kasnije iz programa
možemo pristupiti koristeći Lucene API. Takva polja se obično ne tokeniziraju, odnosno ne
provodi se leksička analiza jer se njihov sadržaj promatra kao cjelina1 . Suprotno tome, polja
koja sadrže više teksta (sadržaj članka, poglavlje knjige. . . ) se tokeniziraju, ali se ne spre-
maju u indeks pa im nije moguće pristupiti koristeći Luceneov API2 . Postoje i specifične im-
plementacije koje nasljed̄uju osnovnu klasu org.apache.lucene.document.Field,
no u njih nećemo dublje ulaziti.
Pozivom metode void add(IndexableField field) nad objektom razreda
Document ostvarujemo dodavanje polja u dokument.
Primjer izgradnje dokumenta:
13
3.1.3. Indeksiranje
Niz tokena dobivenih u prethodnom koraku koristi se za izgradnju indeksa, točnije inver-
tiranog indeksa (engl. inverted index). Ova struktura podataka uzima tokene kao ključeve,
a listu identifikatora dokumenata u kojima se oni pojavljuju kao vrijednost, za razliku od
običnog indeksa koji bi dokumente definirao kao ključeve, a listu pojmova iz dokumenta kao
vrijednosti. Prednost se očituje u brzini pretrage, kod običnog indeksa bi morali pretraživati
liste pojmova za svaki dokument zasebno dok se kod invertiranog indeksa svi dokumenti koji
sadrže pojam nalaze u istoj listi koja je pridijeljena tom pojmu.
Dokument se u index dodaje pozivom metode addDocument nad instancom razreda
org.apache.lucene.index.IndexWriter koja prima objekt razreda Document.
Uz dodavanje dokumenata Lucene omogućuje brisanje i ažuriranje. Prilikom brisanja
dokumenata koristimo metodu deleteDocuments koja može primati varijabilan broj
instanci razreda Term ili Query. Metoda će tada obrisati sve dokumente koji sadrže za-
dane pojmove ili odgovaraju zadanim upitima. Takod̄er imamo na raspolaganju metodu
deleteAll() koja briše sve dokumente iz indeksa. Prilikom korištenja navedenih me-
toda treba biti oprezan i koristiti one pojmove koji su jedinstveni u svakom od dokumenata
(ključeve) kako se ne bi dogodila neželjena brisanja. Metoda updateDocument prima
pojam i dokument kao argumente, a implementirana je tako da prvo obriše stari dokument
iz indeksa te zatim doda izmijenjeni. Iz tog razloga se ne mora koristiti, moguće je ostvariti
isto ponašanje koristeći metode za brisanje i dodavanje dokumenta.
Promjene u indeksu zadovoljavaju svojstva transakcije - ACID, odnosno: nedjeljivost
(engl. Atomicity), konzistentnost (engl. Consistency), izolacija (engl. Isolation) te izdržlji-
vost (engl. Durability). To znači da će se sve promjene koje na indeksu radi IndexWriter
dogoditi u cijelosti ili se u slučaju pogreške neće obaviti niti jedna izmjena; indeks će iz-
mjenom prijeći iz jednog konzistentnog stanja u drugo; ako je istovremeno otvoreno više
IndexWriter objekata nad istim indeksom tada se promjene napravljene u jednom od
njih ne vide u drugima sve do izvod̄enja metode commit nad tim objektom; ako se do-
gode neuhvaćene iznimke, pad operacijskog sustava, gubitak napajanja ili bilo koji drugi
uzroci rušenja programa indeks će ostati u stanju koje je bilo nakon zadnjeg poziva metode
commit.
14
prosljed̄uje objekt razreda IndexReader koji se otvara nad direktorijem u kojem se nalazi
indeks. Koristeći taj objekt ćemo vršiti pretragu nad indeksom pa ćemo ga u nastavku zvati
pretraživač. Zatim se izgradi upit koji je predstavljen razredom Query ili nekim od mnoštva
razreda koji ga nasljed̄uju, a pogodni su za specifičnije korištenje.
Jedan od jednostavnijih oblika upita je TermQuery koji se gradi temeljem pojmova.
Pojam je predstavljen razredom Term i odred̄en je poljem dokumenta te tekstom koji će se
pretraživati po zadanom polju.
Metoda search pozvana nad pretraživačem kao rezultat vraća objekt TopDocs koji
sadrži dokumente koji odgovaraju pretrazi. Iz njega možemo dobiti polje objekata razreda
ScoreDoc koji predstavljaju pojedine rezultate pretrage.
Sljedeći jednostavni primjer prikazuje korištenje pretrage. Nakon što se pronad̄e pet
dokumenata koji najbolje zadovoljavaju upit, ispisuje se njihova ocjena, odnosno vrijednost
koja odred̄uje koliko je dobro dokument zadovoljio upit.
int n = scoreDocs.length;
for(int i = 0; i < n; i++) {
System.out.println("Score: " + scoreDocs[i].score);
}
15
Navedeni kod možemo opisati sljedećim dijagramom:
Rangiranje dokumenata
Lucene koristi tf-idf način ocjenjivanja dokumenata uz mogućnost povećanja važnosti odre-
d̄enih polja dokumenta. To znači da je ocjena dokumenta odred̄ena brojem pojavljivanja
traženog pojma unutar tog dokumenta (engl. term frequency), brojem dokumenata unutar
kojih se taj pojam nalazi (engl. document frequency) te važnosti tog polja.
Ocjenjivanje u teoriji
Korištenjem inverzne frekvencije dokumenata (engl. inverse document frequency) ili skra-
ćeno idf izbjegnuto je pridjeljivanje visoke ocjene pojmovima koji se pojavljuju unutar ve-
likog broja dokumenata zbog pretpostavke gubljenja važnosti pojma s porastom broja doku-
menata unutar kojih se pojavljuje jer ne pridonosi specifičnosti dokumenta. Primjer mogu
biti veznici, prijedlozi, prilozi, članovi u stranim jezicima (a, an, the). . .
Idf za pojam t u kolekciji od N dokumenata se računa prema jednadžbi
N
idft = log (3.1)
dft
16
Sada možemo definirati i jednadžbu za izračun tf-idf vrijednosti za pojam t unutar doku-
menta d
tf-idft,d = tft,d × idft (3.2)
Ocjenu dokumenta možemo dobiti zbrajanjem svih tf-idf vrijednosti za pojmove t unutar
upita q
X
score(q, d) tf-idft,d (3.3)
t∈q
Lucene definira nešto drugačiju formulu za izračun ocjene koja se temelji na 3.3. Svaki
dokument d je predstavljen vektorom (engl. term vector) V~ (d), stoga kolekciju dokume-
nata možemo promatrati kao skup vektora odred̄enih frekvencijom pojmova koje sadrže, u
vektorskom prostoru kojem su osi odred̄ene svim pojmovima iz kolekcije. Svaki vektor je
zapravo zasebni invertirani indeks s pojmovima koje sadrži.
Kako bi se izbjeglo drugačije ocjenjivanje dokumenata koji sadrže jednake pojmove, ali
s različitim frekvencijama obavlja se normiranje vektora, odnosno za svaki V~ (d) se računa
jedinični vektor ~v (d) prema
V~ (d)
~v (d) = (3.4)
V~ (d)
Ponekad je ipak važno imati informaciju o duljini dokumenta, odnosno vektora kojim
je predstavljen, zato se uvodi nova mjera doc-len-norm(d) koja će u postupku normiranja
odrediti je li duljina vektora jednaka jediničnom ili će biti dulja od njega.
Kako Lucene omogućava odred̄ivanje važnosti dokumenta (document boost) uvodi se i
mjera doc-boost(d). Isto vrijedi i za odred̄ivanje vrijednosti pojmova unutar upita pa je nužno
uvesti mjeru query-boost(q).
Zbog vrsta upita u kojima je moguće djelomično podudaranje potrebno je omogućiti
izračun ocjene temeljem omjera broja pronad̄enih i ukupnog broja pojmova unutar upita.
Zato se uvodi mjera coord-factor(q,d).
Tako dolazimo do konceptualne formule za izračun ocjene u Luceneu
score(q,d) =
V~ (q) · V~ (d)
coord-factor(q,d) · query-boost(q) · ~ · doc-len-norm(d) · doc-boost(d)
V (q)
(3.5)
(TFIDFSimilarity, 2017)
17
Ocjenjivanje u praksi
gdje je docCount broj dokumenata unutar kolekcije, a docFreq broj dokumenata unutar kojih
se pojam t pojavljuje.
Naposljetku dolazimo do formule
score(q,d) =
X
2
coord(q,d) · queryNorm(q) · tf(t in d) · idf(t) · t.getBoost() · norm(t,d)
t∈q
(3.7)
(TFIDFSimilarity, 2017)
18
4. Klasifikacija tekstualnih dokumenata
korištenjem programske knjižnice
Apache Lucene
SimpleNaiveBayesDocumentClassifier(indexReader, query,
classFieldName, field2analyzer, textFieldNames)
19
// Pridjeljivanje analizatora svakom od polja
field2Analyzer.put(FieldNames.CLASS.getValue(), new
StandardAnalyzer());
field2Analyzer.put(FieldNames.CONTENTS.getValue(), new
StandardAnalyzer());
field2Analyzer.put(FieldNames.FILENAME.getValue(), new
StandardAnalyzer());
field2Analyzer.put(FieldNames.ID.getValue(), new
StandardAnalyzer());
field2Analyzer.put(FieldNames.PATH.getValue(), new
StandardAnalyzer());
field2Analyzer.put(FieldNames.TITLE.getValue(), new
StandardAnalyzer());
// Kreiranje klasifikatora
SimpleNaiveBayesDocumentClassifier naiveBayesClassifier = new
SimpleNaiveBayesDocumentClassifier(indexReader, null,
FieldNames.CLASS.getValue(), field2Analyzer,
FieldNames.CONTENTS.getValue());
// Odredivanje klase
ClassificationResult<BytesRef> assignedClass =
naiveBayesClassifier.assignClass(document);
String docClass =
assignedClass.getAssignedClass().utf8ToString();
String docName = document.get(FieldNames.FILENAME.getValue());
System.out.println("Dokument " + docName + " pripada klasi: " +
docClass);
}
20
stavljeni zbog čega iz njih može izvući tokene koje će koristi u postupku klasifikacije
Zbog mogućnosti pojavljivanja vrlo malih vjerojatnosti prema teorijskoj formuli 2.8 koje
bi izazvale gubitak prave vrijednosti zbog nemogućnosti spremanja vrlo malih brojeva u
memoriji (engl. underflow) Lucene koristi logaritamske vrijednosti tih vjerojatnosti pa se ta
formula pretvara u:
Metoda assignClass vraća listu mogućih klasa koje su ocijenjene te se bira ona s
najvećom ocjenom. Ocjenjivanje klasa možemo prikazati sljedećim pseudokodom:
ocijeniKlase(Dokument d) {
foreach(Klasa c : C) {
foreach(Polje f : F) {
// P(c)
pC = vjerojatnostKlase(d.klasa);
// P(d | c)
p_d_c = vjerojatnostPripadanjaKlasi(d, c, f);
ocjenaPolja += pC + p_d_c;
ocjenaKlase += ocjenaPolja;
}
ocjene.spremiOcjenu(c, ocjenaKlase);
}
return ocjene;
}
vjerojatnostKlase(Klasa c) {
N = ukupniBrojDokumenata();
n = brojDokumenataKlase(c);
return log(n) − log(N )
}
21
}
// normiranje
rezultat /= duljina(d);
return rezultat;
}
KNearestNeighborDocumentClassifier\\(IndexReader indexReader,
Similarity similarity, Query query, int k, int minDocsFreq, int
minTermFreq, String classFieldName, Map<String,Analyzer>
field2analyzer, String... textFieldNames)
22
sam ostvario i koristeći razred MoreLikeThis.
Potrebno je stvoriti objekt tog razreda koristeći konstruktor koji prima objekt razreda
IndexReader, postaviti analizator koji želimo koristiti te ograničenja na najmanji broj po-
javljivanja pojma unutar svih dokumenata i broja dokumenata u kojima se pojam pojavljuje
čime izdvajamo pojmove koji se ne pojavljuju željeni broj puta. Zatim je potrebno pozivom
metode like nad stvorenim objektom napraviti upit čijom će se pretragom dobiti slični
dokumenti.
23
5. Zaključak
U ovom radu dan je teoretski uvod u područje klasifikacije tekstualnih dokumenata, objaš-
njeni su temeljni konpcepti korišteni u praksi te osnovne funkcionalnosti programske knjiž-
nice Apache Lucene korištene za izradu praktičnog dijela.
Napravljena je podjela modela nadziranog strojnog učenja te su temeljem te podjele po-
sebno objašnjeni naivni Bayesov klasifikator i klasifikator najbližih susjeda (k-NN). Odabir
klasifikatora uvelike ovisi o pojedinom slučaju, ali postoje smjernice koje bi trebale pomoći
prilikom odabira.
Tako se preporuča odabir k-NN-a u slučajevima kada je skup mogućih klasa vrlo velik,
ali ne i u situacijama kada imamo vrlo velik broj dokumenata kojima treba odrediti klasu
zbog potrebe za velikim brojem operacija tijekom izračuna udaljenosti izmed̄u susjeda i
ograničenosti memorijom (pripada memory-based strojnom učenju). Šum u skupu za učenje
znatno ne umanjuje preciznost pa kažemo da je robustan.
Kako pripada parametarskom modelu, naivni Bayesov klasifikator ima ograničenu pri-
mjenu jer se pretpostavlja teorijska razdioba podataka, ali zato vrijeme učenja ne ovisi o
broju primjera. S obzirom na to da se radi o linearnom modelu, postoje ograničenja na
primjenu (primjer XOR funkcije).
Uz teorijski uvod u radu je opisana i programska knjižnica Apache Lucene te su de-
monstrirani jednostavni primjeri korištenja osnovnih funkcionalnosti stvaranja i analize do-
kumenata, izgradnja i pretraživanje indeksa te ocjenjivanje dokumenata koji su bili preduvjet
ostvarivanju klasifikacije. Objašnjen je temeljni princip ocjenjivanja primjenom tf-idf mjere
te su opisani nešto složeniji izrazi za ocjenjivanje koje Lucene koristi.
Pokazane su implementacije prethodno objašnjenih klasifikatora u verziji Lucene 6.5.0.
Ukazani su nedostatci implementacije klasifikatora najbližih susjeda, koji za razliku od naiv-
nog Bayesovog, zahtjeva pohranu polja dokumenata temeljem kojih želimo klasificirati. Za
navedeni nedostatak predloženo je rješenje korištenjem razreda na kojem se i temelji gotova
implementacija.
24
L ITERATURA
Michael McCandless, Erik Hatcher, i Otis Gospodnetic. Lucene in Action: Covers Apache
Lucene 3.0. Manning Publications Co., 2010.
25
Usporedba metoda za klasifikaciju tekstualnih dokumenata
Sažetak
Zbog postojanja vrlo velike količine tekstualnih dokumenata potrebno ih je, radi brže,
jeftinije i lakše obrade, organizirati, odnosno podijeliti prema zajedničkim svojstvima na
zadane klase. Takav postupak nazivamo klasifikacija koja je, osim na tekstualne dokumente,
primjenjiva i na druge vrste podataka.
S obzirom na svojstva podataka koje organiziramo, potrebno je odabrati onu metodu
klasifikacije koja će najbolje odrediti pripadnost klasi. Odluka se temelji na teorijskim saz-
nanjima o pojedinim metodama i usporedbi dobivenih rezultata. Moguće je da iste metode,
primijenjene na različite skupove podataka, rezultiraju vrlo različitom točnosti odred̄ivanja
klasa. U radu su opisana dva klasifikatora koji pripadaju različitim vrstama strojnog učenja.
To su klasifikator najbližih susjeda i naivni Bayesov klasifikator.
Za primjenu klasifikacije moguće je koristiti Apache Lucene, programsku knjižnicu otvo-
renog koda.
Ključne riječi: klasifikacija teksta, klasifikator najbližih susjeda, naivni Bayesov klasifika-
tor, Apache Lucene
A Comparison of Text-Classification Techniques
Abstract