31
SVEU ˇ CILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RA ˇ CUNARSTVA ZAVRŠNI RAD br. 5302 Usporedba metoda za klasifikaciju tekstualnih dokumenata Renato Bošnjak Zagreb, lipanj 2017.

Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

SVEUCILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RACUNARSTVA

ZAVRŠNI RAD br. 5302

Usporedba metoda za klasifikacijutekstualnih dokumenata

Renato Bošnjak

Zagreb, lipanj 2017.

Page 2: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti
Page 3: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

iii

Page 4: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

SADRŽAJ

1. Uvod 1

2. Klasifikacija teksta 22.1. Uvod u klasifikaciju tekstualnih dokumenata . . . . . . . . . . . . . . . . . 2

2.2. Metode klasifikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2.1. Modeli nadziranog ucenja . . . . . . . . . . . . . . . . . . . . . . 5

2.2.2. Naivni Bayesov klasifikator . . . . . . . . . . . . . . . . . . . . . 7

2.2.3. Klasifikator najbližih susjeda . . . . . . . . . . . . . . . . . . . . . 8

3. Programska knjižnica Apache Lucene 113.1. Indeksiranje i pretraga pomocu Lucenea . . . . . . . . . . . . . . . . . . . 11

3.1.1. Stvaranje dokumenta . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.1.2. Analiza dokumenta . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.1.3. Indeksiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.1.4. Pretraga indeksa . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4. Klasifikacija tekstualnih dokumenata korištenjem programske knjižnice ApacheLucene 19

4.0.1. Naivni Bayesov klasifikator . . . . . . . . . . . . . . . . . . . . . 19

4.0.2. Klasifikator najbližih susjeda . . . . . . . . . . . . . . . . . . . . . 22

5. Zakljucak 24

Literatura 25

iv

Page 5: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

1. Uvod

Prikupljanje informacija (engl. Information retrieval, IR) je postupak prikupljanja infor-

macijskih resursa (engl. Information resources) koji odgovaraju potrebi za informacijama

(engl. Information need) iz skupa informacijskih resursa. Prikupljanje, odnosno pretraga vrši

se nad skupom nestrukturiranih dokumenata (npr. tekstualni dokumenti). Nestrukturiranost

dokumenta je odredena manjkom pravila zapisivanja, koja otežavaju racunalu neposrednu

obradu istih.

Razvoj racunalom upravljane pretrage podataka potaknuo je Vannevar Bush, napisavši

clanak sredinom prošlog stoljeca pod nazivom As We May Think. U tom clanku prvi put se

koristi pojam memex, uredaj koji bi imao sposobnost pohrane, povezivanja i brze pretrage

knjiga, zapisa i ostalih dokumenata od kojih bi ljudi imali koristi. Postupni razvoj sustava

temeljenih na toj ideji doveo je do pojave World Wide Weba, bez kojeg bi napredak znanosti

bio znatno usporen.

Klasifikacija kao vrsta nadziranog strojnog ucenja primjenjiva je u raznim domenama, a

neke od njih su: racunalni vid (analiza medicinskih slika, opticko prepoznavanje znakova na

slici (engl. Optical Character Recognition, OCR)), prepoznavanje govora, rukopisa, obrada

prirodnog jezika . . .

Pomocu klasifikacije možemo riješiti probleme organiziranja podataka u kategorije prema

zajednickim svojstvima, temeljem podataka kojima je vec utvrdeno pripadanje pojedinoj ka-

tegoriji.

U ovom radu bit ce obradena teorija vezana uz vrste nadziranog strojnog ucenja i pos-

tupke klasifikacije na koje se nadovezuje opis programskog dijela rješenja napisanog u pro-

gramskom jeziku Java uz korištenje Apache Lucenea, najpopularnije IR programske knjiž-

nice otvorenog koda koju razvija Apache Software Foundation.

1

Page 6: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

2. Klasifikacija teksta

Postupci klasifikacije se primjenjuju za razlicite svrhe, od prepoznavanja neželjene elek-

tronicke pošte, razvrstavanja iste na kategorije poput "Primarno", "Promocije", "Društvene

mreže". . . , odredivanja rubrike clanka (politika, sport, crna kronika. . . ), analizu sentimenta i

autorstva. Primjerice, moguce je provodenjem postupka klasifikacije odrediti jesu li komen-

tari na neki proizvod, film ili clanak pozitivni ili negativni, utvrditi je li neki tekst napisao

muškarac ili žena, starija ili mlada osoba te utvrditi autora teksta.

U ovom poglavlju dotaknut cemo se teorijske pozadine klasifikacije teksta. Zapocet cemo

s definiranjem pojma klasifikacije, opisa najopcenitijih klasifikacijskih postupaka, a zatim

prijeci na usporedbu konkretnih metoda.

2.1. Uvod u klasifikaciju tekstualnih dokumenata

Klasifikaciju možemo definirati kao postupak dodjeljivanja klase c iz skupa s konacnim bro-

jem elemenata C, prema odredenom pravilu, neoznacenom dokumentu d koji pripada skupu

dokumenata D.

Slika 2.1: Klasifikacija

Klasifikator definiramo kao funkciju:

γ : D → C

Metode klasifikacije se razlikuju prema pravilima koja odreduju klasu dokumenta. U

najjednostavnijim slucajevima ce osoba pregledati dokument i zakljuciti kojoj klasi on pri-

pada. Primjer je razvrstavanje knjiga u knjižnici. Takav pristup je pouzdan, ali nije efikasan.

2

Page 7: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

Cilj je postici automatizirani postupak u kojem ce racunalo primjenjujuci pravila odrediti

klasu. Kako se radi o racunalima, potrebno je pravila zapisati njima razumljivom sintaksom,

primjerice Booleovim izrazima. Osoba koja poznaje podrucje primjene mogla bi napisati ta-

kav skup pravila koji bi vrlo precizno odredio klase, ali problem takvog pristupa je skupoca

i održavanje. Bilo bi potrebno zaposliti mnogo strucnjaka 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 skupoce nalazi se u metodama temeljim na

strojnom ucenju. Ideja je vrlo jednostavna, želimo da klasifikator temeljem unaprijed pri-

premljenog skupa dokumenata, kojima je odredena klasa, nauci pravila te ih primjeni na

nepoznate dokumente i odredi im klasu. Zbog zahtjeva postojanja pripremljenih dokume-

nata klasifikacija pripada nadziranoj vrsti strojnog ucenja (engl. supervised learning). Pri-

premljene dokumente nazivamo skup za ucenje (engl. training set). Temeljem tih podataka

generira se model koji mora biti odgovarajuce složenosti kao funkcija koju pokušavamo na-

uciti kako bi se izbjegla prenaucenost (engl. overfitting) i podnaucenost (engl. underfitting).

Prenaucenost se dogada u slucaju kada je nauceni model koji opisuje podatke za ucenje pre-

više složen što uzrokuje lošu generalizaciju. Druga krajnost je podnaucenost koja se dogada

kada je model previše jednostavan što rezultira lošim provodenjem klasifikacije. Skup doku-

menata koji nisu oznaceni 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 sprjecavamo prenaucenost i podnaucenost.

Slika 2.2: Prikaz razlicitih složenosti modela (podnaucenost, prenaucenost, ispravna složenost)

Sva tri navedena skupa moraju biti medusobno disjunktni kako bi se mogle utvrditi prave

vrijednosti pogrešaka klasifikatora.

Klasifikator možemo ocijeniti koristeci cetiri osnovne mjere: preciznost (engl. preci-

sion), odziv (engl. recall), tocnost (engl. accuracy) i specificnost (engl. specificity). Kako

bismo mogli definirati ove mjere potrebno je prvo podijeliti klasificirane dokumente teme-

ljem ispravnosti odredivanja pripadnosti klasi.

Dokumente kojima klasifikator odredi pripadnost klasi ci, a to je ujedno i ispravna klasa,

nazivamo tocno pozitivnima (engl. true positives) i oznacavamo ih s TP.

Ako klasifikator odredi dokumentu klasu ci, a on njoj ne pripada, tada takve nazivamo

3

Page 8: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

lažno pozitivnima (engl. false positives) i oznacavamo oznakom FP.

Kada je dokumentu nije odredena klasa ci, a on niti ne pripada njoj nazivamo ga tocno

negativnim (engl. true negatives) i oznacavamo s TN.

Lažno negativni dokumenti (engl. false negatives) su oni kojima je klasifikator odredio

klasu razlicitu od ci, a oni upravo pripadaju njoj. Oznacavamo ih oznakom FN.

Preciznost definiramo kao udio dokumenata kojima je ispravno odredena klasa ci u broju

dokumenata kojima je ona odredena. Primijetimo kako ukupni broj ne odgovara broju doku-

menata koji stvarno pripadaju klasi ci.

P =TP

TP + FP(2.1)

Odziv definiramo kao udio dokumenata kojima je ispravno odredena klasa ci u ukupnom

broju dokumenata koji stvarno pripadaju klasi ci.

R =TP

TP + FN(2.2)

Tocnost se definira kao omjer ispravno klasificiranih dokumenata i ukupnog broja doku-

menata.

A =TP + TN

TP + FP + TN + FN(2.3)

Specificnost je omjer dokumenata kojima je ispravno odredeno nepripadnost klasi ci i

broja dokumenata koji stvarno ne pripadaju toj klasi.

S =TN

TN + FP(2.4)

Prosudivati klasifikator samo temeljem navedenih mjera je pogrešno, potrebno je pozna-

vati i podrucje primjene kako bi se one mogle prilagoditi i tako ostvariti dobar klasifikator.

Takoder je bitno naglasiti kako je visoka razine jedne od mjera nedovoljna za proglašavanje

klasifikatora kvalitetnim. Primjerice ako testiramo klasifikator na skupu dokumenata koji ce

velikom vecinom pripadati klasi ci i klasifikator svima odredi nepripadnost toj klasi tada ce

tocnost biti vrlo visoka, ali ce odziv biti jednak nuli.

(Bašic i Šnajder, 2011)

2.2. Metode klasifikacije

U ovom potpoglavlju bit ce napravljena podjela modela nadziranog ucenja, vrsti strojnog

ucenja kojem klasifikacija pripada. Takoder cemo opisati dvije metode klasifikacije koje

su se koristile u izradi programskog rješenja, to su naivni Bayesov klasifikator (engl. Naive

Bayes Classifier) i klasifikator najbližih susjeda (engl. k-Nearest Neighbors Classifier) cesto

krace nazivanim k-NN.

4

Page 9: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

2.2.1. Modeli nadziranog ucenja

Generativni i diskriminativni modeli

Prema nacinu odredivanja pripadnosti klasi postupke klasifikacije možemo podijeliti na ge-

nerativne i diskriminativne modele. Generativni model uci zajednicku razdiobu primjera x

i klase c P (x, c), iz koje se može primjenom Bayesove formule doci do vjerojatnosti pripa-

danja primjera x klasi c P (c|x), koju koristi prilikom klasifikacije. Diskriminativni modeli,

ovisno o tome jesu li probabilisticki ili ne, izravno uce uvjetnu razdiobu P (c|x), odnosno

modeliraju funkciju ovisnu o primjeru x koja dodjeljuje klasu c. Generativni modeli poku-

šavaju nauciti kako primjeri iz neke klase nastaju te to znanje primjenjuju u klasifikaciji dok

diskriminativni modeli odreduju klasu samo temeljem pitanja koliko je vjerojatno da se radi

o nekoj klasi uz zadane pojmove iz dokumenta. Razliku izmedu ova dva pristupa možemo

vidjeti na slici 2.3.

Slika 2.3: Diskriminativan model(lijevo) i generativan model(desno)

Možemo reci da diskriminativni modeli uce granicu izmedu klasa, a generativni modeli-

raju raspodjelu klasa. Iz tog razloga se diskriminativni modeli nazivaju i metodama temelje-

nim na granici (engl. boundary-oriented methods).

Slika 2.4: Diskriminativan model(lijevo) i generativan model(desno)

Odluka o korištenju modela može se donijeti temeljem broja dostupnih primjera za uce-

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 izracune, ne zahtijeva toliko primjera za ucenje i vrlo dobro odraduje klasifikaciju.

5

Page 10: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

Probabilisticki i neprobabilisticki modeli

Probabilisticki modeli postupak klasifikacije dijele na fazu zakljucivanja, u kojoj se racuna

P (c|x) i fazu odlucivanja u kojoj se izracunatu vjerojatnost koristi za klasificiranje primjera.

Neprobabilisticki modeli objedinjuju navedene faze u jednu.

Parametarski i neparametarski modeli

Temeljem odnosa broja primjera za ucenje i parametara modela, nadzirane postupke strojnog

ucenja dijelimo na parametarske i neparametarske. Kod parametarskih na složenost modela

ne utjece broj primjera za ucenje, nego se pretpostavlja teorijska razdioba podataka pa je

iz tog razloga broj parametara konacan i odreden razdiobom (npr. za normalnu razdiobu to

su ocekivanje i standardna devijacija). Neparametarski modeli, iako im ime može drugacije

sugerirati, imaju parametre, ali njihov broj ovisi o broju primjera za ucenje pa samim time i

složenost modela raste povecanjem skupa za ucenje. Oni ne pretpostavljaju nikakvu razdiobu

primjera za ucenje.

Linearni i nelinearni modeli

Prema granici klasa modele možemo podijeliti na linearne i nelinearne.

Kod linearnih modela klase se moraju moci razgraniciti (n− 1)-dimenzionalnim prosto-

rom koji nazivamo hiperravnina, dok nelinearni ne postavljaju takav uvjet.

Za primjer uzmimo dvodimenzionalni prostor, ako je moguce pravcem odvojiti primjere

koji pripadaju razlicitim klasama tada se radi o linearnom, a inace o nelinearnom modelu.

Jednostavni primjer nelinearnog modela je funkcija XOR (iskljucivo ili) prikazana na

slici 2.5. Vidimo da nije nikako moguce povuci pravac koji bi razdvojio tocke koje pripadaju

razlicitim klasama.

Slika 2.5: Nelinearni model

Linearni modeli su ograniceni i koristeci ih nije moguce riješiti neke teže klasifikacij-

ske probleme koji se pojavljuju u slucajevima kada je primjera znacajno više od dimenzije

6

Page 11: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

prostora što rezultira vecom gustocom naseljenosti.

2.2.2. Naivni Bayesov klasifikator

Bayesov klasifikator pripada generativnom, probabilistickom, parametarskom, linearnom

modelu nadziranog ucenja. Svi Bayesovi klasifikatori temeljeni su na Bayesovoj formuli

koja definira uvjetnu vjerojatnost dogadaja.

Teorem 1 Bayesova formula: Neka je H1, H2, . . . , Hn potpun sustav dogadaja na vje-

rojatnosnom prostoru (Ω,P (Ω) , P ) i neka je A ∈ P (Ω) takav da je P (A) > 0. Tada

∀i ∈ 1, 2, . . . , n vrijedi:

P (Hi|A) =P (Hi · P (A|Hi)∑n

j=1 P (Hj) · P (A|Hj)=P (Hi) · P (A|Hi)

P (A). (2.5)

(Benšic i Šuvak, 2014)

Ona opisuje vjerojatnost dogadanja hipoteza u slucaju kada unaprijed znamo da se os-

tvario neki dogadaj. Vjerojatnost P (Hi) nazivamo a priori vjerojatnostima hipoteze Hi, a

P (Hi|A) a posteriori vjerojatnostima hipoteze Hi.

U našem slucaju izracunavamo vjerojatnost klase za zadani dokument pa formulu mo-

žemo zapisati na sljedeci nacin:

P (c|d) =P (c) · P (d|c)

P (d)(2.6)

Najvjerojatnija klasa c iz skupa svih klasa C je ona s najvecom a posteriori vjerojatnosti

(engl. maximum a posteriori), krace MAP. Odnosno, tražimo takav c ∈ C za koji ce P (c|d)

biti maksimalan:

cMAP = arg maxc∈C

P (c|d) (2.7)

Iz 2.6 uocavamo da je vrijednost iz nazivnika jednaka za sve klase za zadani dokument

pa ga možemo zanemariti. Iz tog razloga 2.7 možemo pretvoriti u :

cMAP = arg maxc∈C

P (c) · P (d|c) (2.8)

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:

cMAP = arg maxc∈C

P (c) · P (t1, t2, . . . , tn|c) (2.9)

Vjerojatnost klase P (c) racuna se kao omjer broja dokumenata te klase u ukupnom broju

dokumenata, medutim vjerojatnost P (t1, t2, . . . , tn|c) nije moguce jednostavno izracunati.

7

Page 12: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

Zato uvodimo pojednostavljenje u kojem ne pazimo na redoslijed pojmova, nego samo broj

pojavljivanja. Takav model nazivamo vreca rijeci (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 znacajnog pojednostavljenja izracuna.

Nakon primjene navedenog slijedi:

P (t1, t2, . . . , tn|c) = P (t1|c) · P (t2|c) · . . . · P (tn|c) (2.10)

P (ti|c) racunamo kao omjer broja pojavljivanja pojma ti i ukupnog broja pojmova u

dokumentima s klasom c.

Iz 2.9 i 2.10 dolazimo do konacnog izraza za odredivanje klase:

cNB = arg maxc∈C

P (c) ·∏t∈T

P (t|c). (2.11)

Naivni Bayesov klasifikator, kao i ostali jednostavni modeli, ima problem visoke pristra-

nosti (engl. high bias), koja je definirana kao razlika izmedu predvidenog i stvarnog modela.

Vecinom je dobar odabir u slucajevima kada imamo vrlo malo primjera za ucenje.

2.2.3. Klasifikator najbližih susjeda

Algoritam najbližih susjeda jedna je od najjednostavnijih metoda strojnog ucenja. Pripada

diskriminativnom, neparametarskom, nelinearnom modelu nadziranog ucenja, a odredivanje

klase nepoznatog dokumenta svodi se na odredivanje vecinske klase najbližih dokumenata iz

skupa za ucenje. Za udaljenost izmedu podataka mogu se koristiti razlicite metrike. Neke od

najpoznatijih su euklidska i Manhattan udaljenost, a izbor ovisi o problemu koji treba riješiti.

Slika 2.6: Euklidska (puna linija) i Manhattan (iscrtkana linija) udaljenost

Moguce je, cesto i poželjno, bližim susjedima pridijeliti veci znacaj, odnosno težinu.

Cesto se koristi težinski faktor d−1 gdje je d udaljenost do susjeda.

Kažemo da k-NN pripada vrsti strojnog ucenja koju nazivamo ucenje zasnovano na slu-

cajevima (engl. instance-based) cesto nazivanim i memory-based jer prilikom odredivanja

klase prolazi po svim instancama iz skupa za ucenje koje pohranjuje u memoriji. Vremenska

8

Page 13: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

složenost same pretrage i odredivanja klase ne ovisi o broju klasa, nego iskljucivo o broju

primjera za ucenje pa je k-NN pogodniji za rješavanje problema s velikim brojem klasa. Iako

je vecinom poželjno imati velik broj primjera za ucenje kod k-NN-a takav pristup znacajno

usporava postupak klasifikacije.

Vrijednost k odreduje se heuristicki, primjerice provodenjem cross-validation postupka

kako bi se utvrdio najbolji k za konkretan slucaj.

Povecanje vrijednosti k povecava pristranost, ali smanjuje varijancu, odnosno varijaciju

kvalitete predvidanja modela. Suprotno navedenom, smanjenje vrijednosti k povecava vari-

jancu, ali smanjuje pristranost. Cilj je odabrati takav k za koji ce pristranost i varijanca biti

minimizirani.

Na slici 2.7 središte svakog grafa predstavlja savršeni model, a zelene tocke predstavljaju

izgradene modele prema razlicitim skupovima za ucenje.

Slika 2.7: Ilustracija pristranosti i varijance

Pokazalo se da je k koji je jednak kvadratnom korijenu broja primjera za ucenje dobar

pocetak za pronalazak najbolje vrijednosti. Valja izbjegavati parne vrijednosti kako bi se

smanjila mogucnost pojave situacija kada se dvije klase pojavljuju jednak broj puta što je

posebno važno kod binarnog klasifikatora kod kojeg su moguce samo dvije klase.

9

Page 14: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

Slika 2.8: 3-NN primjer

Slika 2.8 ilustrira postupak klasifikacije za k = 3, crvena tocka predstavlja podatak iz

skupa za ispitivanje kojem treba odrediti klasu. U skupu za ucenje nalaze se podaci koji

pripadaju klasi K1 (zelena boja) te K2 (narancasta boja). Nakon pronalaska tri najbliža

susjeda zakljucuje se da novi podatak pripada klasi K1.

Kod 1-NN klasifikatora novom podatku pridjeljujemo klasu najbližeg susjeda. Ako se ve-

licina skupa za ucenje približava beskonacnosti, 1-NN postiže dvostruki minimalni moguci

stupanj pogreške (Bayes error rate). Problem 1-NN-a je nedostatak robusnosti, odnosno

osjetljiv je na postojanje podataka koji iskacu od ostalih iz svoje klase te tako pridonose

šumu. Navedeno pokazuje slika 2.9 na kojoj vidimo da je podatku iz ispitnog skupa, ozna-

cenom crvenom bojom, dodijeljena klasa K2 iako se prema okolini u kojoj se nalazi jasno

vidi da bi trebao pripadati klasi K1.

Slika 2.9: Problem 1-NN klasifikacije

Kao što smo mogli uociti k-NN je vrlo jednostavan za shvacanje i implementaciju što

je jedna od prednosti. Takoder se pokazao otpornim na šum (osim 1-NN) te se zbog brzine

izvodenja namece kao izbor u situacijama kada je skup klasa jako velik.

Neke od mana k-NN-a su sporo odredivanje susjeda u slucaju velikog broja dokumenata,

ogranicenost memorijom te potreba za utvrdivanjem najbolje vrijednosti za k.

10

Page 15: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

3. Programska knjižnica Apache Lucene

Za implementaciju prakticnog dijela korišten je Apache Lucene, programska knjižnica otvo-

renog koda u potpunosti napisana u Javi koja nudi mogucnosti indeksiranja i pretrage do-

kumenata. Iako je napisana u programskom jeziku Java, omogucena je integracija u drugim

jezicima kao što su C, C++, C#, Perl, Python, PHP. . .

Lucene je 1999. godine poceo razvijati Doug Cutting koji joj je i nadjenuo ime prema

svojoj supruzi. Uskoro se pridružuje Jakarta Projectu, a 2005. godine postaje samostalni

Apache projekt. Godine 2010. spaja se sa Solr projektom koji koristi Lucene kao temelj za

izgradnju samostalne aplikacije za pretragu cijelog teksta (engl. full-text search). Posljednja

verzija koja je izašla 27. travnja 2017. godine je 6.5.1 dok je za izradu programskog rješenja

korištena verzija 6.5.0 objavljena 25. ožujka 2017. godine.

Zbog jednostavnog programskog sucelja moguce je ostvariti osnovne funkcije pretrage

brzo i lako koristeci nekoliko klasa. Upravo zbog tih obilježja Lucene je jedna od najpo-

pularnijih besplatnih IR (Information Retrieval) knjižnica. Dodatno, Lucene ne postavlja

uvjete na format ili jezik dokumenata, jedino je bitno da se iz njih može izvuci tekst. Tako

primjerice možemo uz pomoc drugih alata izvuci tekst iz MS Word, XML, HTML ili PDF

dokumenata te ih indeksirati i pretražiti.

U sljedecim potpoglavljima bit ce opisan nacin rada Lucenea uz primjere.

3.1. Indeksiranje i pretraga pomocu Lucenea

Kako je temelj svih radnji s Luceneom indeks i pretraga nad njime u ovom potpoglavlju bit

ce objašnjeni postupci izgradnje indeksa i mogucnosti pretrage.

Neka pitanja na koja cemo odgovoriti u nastavku su: što je indeks, kako se gradi i zašto

bi ga uopce koristili?

Zamislimo situaciju u kojoj trebamo pronaci odredeni pojam u knjizi. Navedeni problem

možemo riješiti na dva nacina. Prvi je citanje knjige po redu sve dok ne nademo pojam

koji nas zanima. Drugi nacin je pretraga kazala pojmova na kraju knjige u kojem možemo

pronaci stranice na kojima se on pojavljuje. Ocigledno je drugi nacin brži i jednostavniji, ali

zahtijeva postojanje kazala pojmova.

11

Page 16: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

Ovaj primjer možemo preslikati i na racunalnu pretragu tekstualnih datoteka. Ako smo

odredenim postupkom u stanju napraviti strukturu podataka koja ce omoguciti brzi pogled i

odredivanje lokacije pojma unutar dokumenta, tada možemo izbjeci slijedno citanje 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 odredeno rednim brojem rijeci u dokumentu. Zbog efikas-

nosti pojmovi su sortirani abecednim redom, a oznake dokumenata rastucim redoslijedom.

Slika 3.1: Komponente aplikacija za pretragu

(McCandless et al., 2010)

Slika 3.1 prikazuje potrebne komponente za ostvarivanje pretrage. U nastavku ce neke

od njih biti dodatno pojašnjene.

3.1.1. Stvaranje dokumenta

Kako bismo mogli napraviti indeks prvo moramo pomocu Lucenea napraviti dokumente

predstavljene razredom org.apache.lucene.document.Document.

Gradivne jedinice dokumenta su polja (engl. fields). Obicno su to naslov, autori, saže-

12

Page 17: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

tak, URL, sadržaj. Lucene omogucuje razlicito vrednovanje pojedinih polja (engl. boosting)

dokumenata koje postavlja programer, ali ostvaruje i automatsko povecanje vrijednosti polja

koja su kraca 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 obicno sprema u indeks te mu kasnije iz programa

možemo pristupiti koristeci Lucene API. Takva polja se obicno ne tokeniziraju, odnosno ne

provodi se leksicka analiza jer se njihov sadržaj promatra kao cjelina1. Suprotno tome, polja

koja sadrže više teksta (sadržaj clanka, poglavlje knjige. . . ) se tokeniziraju, ali se ne spre-

maju u indeks pa im nije moguce pristupiti koristeci Luceneov API2. Postoje i specificne im-

plementacije koje nasljeduju osnovnu klasu org.apache.lucene.document.Field,

no u njih necemo dublje ulaziti.

Pozivom metode void add(IndexableField field) nad objektom razreda

Document ostvarujemo dodavanje polja u dokument.

Primjer izgradnje dokumenta:

File file = new File("D:/books/Crime and Punishment.txt");

Document document = new Document();

document.add(new StringField("Title", "Crime and Punishment",

Store.YES));

document.add(new StringField("Author", "Fyodor Dostoyevsky",

Store.YES));

document.add(new TextField("Content", new FileReader(file)));

3.1.2. Analiza dokumenta

Lucene nudi vec gotovo analizatore te mogucnost stvaranja vlastitih. Njegova zadaca je

stvaranje niza tokena iz tekstova unutar polja. Neki od problema koje analizatori rješavaju

jesu prepoznavanje složenica, izvlacenje korijena rijeci (razlikuje se od jezika do jezika)

kako bi se izbjeglo višestruko spremanje istih rijeci u razlicitim oblicima, prepoznavanje

rijeci u nelatinicnim pismima, pretvorba svih tokena u mala slova kako bi se izbjegla pretraga

osjetljiva na velicinu slova i uklanjanje ucestalih rijeci koje ne pridonose znacenju (engl. stop

words).1primjer je razred org.apache.lucene.document.StringField2primjer je razred org.apache.lucene.document.TextField

13

Page 18: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

3.1.3. Indeksiranje

Niz tokena dobivenih u prethodnom koraku koristi se za izgradnju indeksa, tocnije inver-

tiranog indeksa (engl. inverted index). Ova struktura podataka uzima tokene kao kljuceve,

a listu identifikatora dokumenata u kojima se oni pojavljuju kao vrijednost, za razliku od

obicnog indeksa koji bi dokumente definirao kao kljuceve, a listu pojmova iz dokumenta kao

vrijednosti. Prednost se ocituje u brzini pretrage, kod obicnog 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 omogucuje brisanje i ažuriranje. Prilikom brisanja

dokumenata koristimo metodu deleteDocuments koja može primati varijabilan broj

instanci razreda Term ili Query. Metoda ce tada obrisati sve dokumente koji sadrže za-

dane pojmove ili odgovaraju zadanim upitima. Takoder 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

(kljuceve) 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, moguce je ostvariti

isto ponašanje koristeci 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 znaci da ce se sve promjene koje na indeksu radi IndexWriter

dogoditi u cijelosti ili se u slucaju pogreške nece obaviti niti jedna izmjena; indeks ce iz-

mjenom prijeci 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 izvodenja metode commit nad tim objektom; ako se do-

gode neuhvacene iznimke, pad operacijskog sustava, gubitak napajanja ili bilo koji drugi

uzroci rušenja programa indeks ce ostati u stanju koje je bilo nakon zadnjeg poziva metode

commit.

3.1.4. Pretraga indeksa

Ostvarivanje pretrage

Pretraga u Luceneu se može ostvariti koristeci klase: IndexSearcher, Query, TopDocs

i ScoreDoc iz paketa org.apache.lucene.search.

Potrebno je instancirati objekt razreda IndexSearcher u ciji se konstruktor najcešce

14

Page 19: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

prosljeduje objekt razreda IndexReader koji se otvara nad direktorijem u kojem se nalazi

indeks. Koristeci taj objekt cemo vršiti pretragu nad indeksom pa cemo ga u nastavku zvati

pretraživac. Zatim se izgradi upit koji je predstavljen razredom Query ili nekim od mnoštva

razreda koji ga nasljeduju, a pogodni su za specificnije korištenje.

Jedan od jednostavnijih oblika upita je TermQuery koji se gradi temeljem pojmova.

Pojam je predstavljen razredom Term i odreden je poljem dokumenta te tekstom koji ce se

pretraživati po zadanom polju.

Metoda search pozvana nad pretraživacem kao rezultat vraca objekt TopDocs koji

sadrži dokumente koji odgovaraju pretrazi. Iz njega možemo dobiti polje objekata razreda

ScoreDoc koji predstavljaju pojedine rezultate pretrage.

Sljedeci jednostavni primjer prikazuje korištenje pretrage. Nakon što se pronade pet

dokumenata koji najbolje zadovoljavaju upit, ispisuje se njihova ocjena, odnosno vrijednost

koja odreduje koliko je dobro dokument zadovoljio upit.

Directory directory = FSDirectory.open(Paths.get("D:/index"));

IndexReader reader = DirectoryReader.open(directory);

IndexSearcher searcher = new IndexSearcher(reader);

Term term = new Term("fieldName", "textToSearch");

Query query = new TermQuery(term);

TopDocs searchResults = searcher.search(query, 5);

ScoreDoc[] scoreDocs = searchResults.scoreDocs;

int n = scoreDocs.length;

for(int i = 0; i < n; i++)

System.out.println("Score: " + scoreDocs[i].score);

15

Page 20: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

Navedeni kod možemo opisati sljedecim dijagramom:

Slika 3.2: Pretraga u Luceneu

(McCandless et al., 2010)

Rangiranje dokumenata

Lucene koristi tf-idf nacin ocjenjivanja dokumenata uz mogucnost povecanja važnosti odre-

denih polja dokumenta. To znaci da je ocjena dokumenta odredena 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-

ceno 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 specificnosti dokumenta. Primjer mogu

biti veznici, prijedlozi, prilozi, clanovi u stranim jezicima (a, an, the). . .

Idf za pojam t u kolekciji od N dokumenata se racuna prema jednadžbi

idft = logN

dft(3.1)

16

Page 21: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

Sada možemo definirati i jednadžbu za izracun 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

score(q, d)∑

t∈qtf-idft,d (3.3)

(Manning et al., 2008)

Konceptualno ocjenjivanje u Luceneu

Lucene definira nešto drugaciju formulu za izracun 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 odredenih frekvencijom pojmova koje sadrže, u

vektorskom prostoru kojem su osi odredene svim pojmovima iz kolekcije. Svaki vektor je

zapravo zasebni invertirani indeks s pojmovima koje sadrži.

Kako bi se izbjeglo drugacije ocjenjivanje dokumenata koji sadrže jednake pojmove, ali

s razlicitim frekvencijama obavlja se normiranje vektora, odnosno za svaki ~V (d) se racuna

jedinicni vektor ~v(d) prema

~v(d) =~V (d)∣∣∣~V (d)

∣∣∣ (3.4)

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 ce u postupku normiranja

odrediti je li duljina vektora jednaka jedinicnom ili ce biti dulja od njega.

Kako Lucene omogucava odredivanje važnosti dokumenta (document boost) uvodi se i

mjera doc-boost(d). Isto vrijedi i za odredivanje vrijednosti pojmova unutar upita pa je nužno

uvesti mjeru query-boost(q).

Zbog vrsta upita u kojima je moguce djelomicno podudaranje potrebno je omoguciti

izracun ocjene temeljem omjera broja pronadenih i ukupnog broja pojmova unutar upita.

Zato se uvodi mjera coord-factor(q,d).

Tako dolazimo do konceptualne formule za izracun ocjene u Luceneu

score(q,d) =

coord-factor(q,d) · query-boost(q) ·~V (q) · ~V (d)∣∣∣~V (q)

∣∣∣ · doc-len-norm(d) · doc-boost(d)

(3.5)

(TFIDFSimilarity, 2017)

17

Page 22: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

Ocjenjivanje u praksi

U implementaciji se ipak koristi druga formula koja je izvedena iz 3.5.

Oznaka coord-factor se naziva coord.

Mjere doc-len-norm(d) i doc-boost(d) su poznate tijekom indeksiranja te se zbog efikas-

nosti u indeks pohranjuje samo njihov umnožak koji se naziva norm(t,d).

Uvodi se nova vrijednost, queryNorm(q) koja ne utjece na ocjenu dokumenta jer jednaka

za sve dokumente koji se traže upitom. Ona samo omogucava usporedbu ocjena dokumenata

dobivenih pretragom prema razlicitim upitima.

Query-boost iz 3.5 se razlaže na pojedine komponente za svaki pojam iz upita, tako se

definira metoda getBoost() koja se poziva nad svakim pojmom t iz upita q.

Tf vrijednost se u Luceneu racuna kao kvadratni korijen frekvencije pojma u dokumentu

i oznacit cemo ga s tf(t in d).

Racunanje idf vrijednosti je izmijenjeno u odnosu na jednadžbu 3.1 iz teorije

idf(t) = 1 + log

(docCount + 1

docFreq + 1

)(3.6)

gdje je docCount broj dokumenata unutar kolekcije, a docFreq broj dokumenata unutar kojih

se pojam t pojavljuje.

Naposljetku dolazimo do formule

score(q,d) =

coord(q,d) · queryNorm(q) ·∑

t∈q

(tf(t in d) · idf(t)2 · t.getBoost() · norm(t,d)

)(3.7)

(TFIDFSimilarity, 2017)

18

Page 23: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

4. Klasifikacija tekstualnih dokumenatakorištenjem programske knjižniceApache Lucene

Implementacije naivnog Bayesovog klasifikatora i klasifikatora najbližih susjeda nalaze se u

paketu org.apache.lucene.classification.document.

Oba koriste indeksirane dokumente kako bi odredili klasu novima. Korištenje ovih klasa

gotovo da i ne zahtijeva nikakvo teorijsko znanje o njihovom nacinu rada.

U programskom rješenju klasifikator najbližih susjeda je dodatno izveden na "zaobilazni"

nacin objašnjen u 4.0.2

4.0.1. Naivni Bayesov klasifikator

Razredom SimpleNaiveBayesDocumentClassifier implementirano je ponašanje

ovog klasifikatora. Korištenje je vrlo jednostavno, potrebno je instancirati objekt navedenog

razreda konstruktorom:

SimpleNaiveBayesDocumentClassifier(indexReader, query,

classFieldName, field2analyzer, textFieldNames)

Atribut query služi za prepoznavanje i izdvajanje dokumenata korištenih za ucenje, ako

želimo koristiti sve dokumente iz indeksa tada možemo proslijediti null. Polje dokumenta

u koje želimo upisati dodijeljenu klasu prosljedujemo na mjestu classFieldName, a va-

rijabilan broj polja temeljem kojih ce se odredivati klasa na mjesto textFieldNames.

Parametar field2analyzer mapira željenu vrstu analizatora na pojedino polje doku-

menta.

Isjecak izvornog koda kojim je ostvarena klasifikacija:

private static void naiveBayesAlgorithm(Document document,

IndexReader indexReader) throws IOException

Map<String, Analyzer> field2Analyzer = new HashMap<>();

19

Page 24: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

// 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);

Za korištenje metode assignClass potrebno je dokumente pretvoriti u vektore. Stoga

se prilikom stvaranja dokumenta nad poljima ciji se pojmovi koriste za odredivanje klase

moraju pozvati metode:

– setIndexOptions(IndexOptions.

DOCS_AND_FREQS_AND_POSITIONS_AND_ OFFSETS) koja uz dokument in-

deksira i broj pojavljivanja pojmova unutar dokumenta, mjesta pojavljivanja te mjesto

na kojem pojam pocinje i završava (offset)

– setStoreTermVectors(true) koji sprema vektore kojima su dokumenti pred-

20

Page 25: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

stavljeni zbog cega iz njih može izvuci tokene koje ce koristi u postupku klasifikacije

Zbog mogucnosti pojavljivanja vrlo malih vjerojatnosti prema teorijskoj formuli 2.8 koje

bi izazvale gubitak prave vrijednosti zbog nemogucnosti spremanja vrlo malih brojeva u

memoriji (engl. underflow) Lucene koristi logaritamske vrijednosti tih vjerojatnosti pa se ta

formula pretvara u:

log(cMAP ) = arg maxc∈C

log(P (c)) + log(P (d|c)) (4.1)

Metoda assignClass vraca listu mogucih klasa koje su ocijenjene te se bira ona s

najvecom ocjenom. Ocjenjivanje klasa možemo prikazati sljedecim 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)

vjerojatnostPripadanjaKlasi(Dokument d, Klasa c, Polje f)

foreach(Pojam t : d)

n = brojDokumenataKojiSadrzePojam(t);

d = prosjecanBroJedinstvenihPojmovaPoljaUKlasi(c, f);

d *= brojDokumenataKlase(c);

d += brojDokumenataKojiPripadajuNekojKlasi();

// vjerojatnost pojavljivanja pojma

p_t = n/d;

rezultat += log(pt);

21

Page 26: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

// normiranje

rezultat /= duljina(d);

return rezultat;

4.0.2. Klasifikator najbližih susjeda

Razred KNearestNeighborDocumentClassifier predstavlja ponašanje klasifika-

tora najbližih susjeda. Trenutna implementacija temelji se na

org.apache.lucene.queries.mlt.MoreLikeThis, vrlo korisnom razredu ko-

jim se vrlo jednostavno može ostvariti pretraga dokumenata slicnih zadanom.

Princip korištenja slican je i opisanom Bayesovom klasifikatoru iz prethodnog potpo-

glavlja, potrebno je stvoriti objekt pomocu konstruktora:

KNearestNeighborDocumentClassifier\\(IndexReader indexReader,

Similarity similarity, Query query, int k, int minDocsFreq, int

minTermFreq, String classFieldName, Map<String,Analyzer>

field2analyzer, String... textFieldNames)

Umjesto atributa similarity moguce je proslijediti null vrijednost kako bi se koris-

tio ClassicSimilarity. Atributi minDocFreq i minTermFreq postavljaju uvjet na

najmanji broj dokumenata unutar kojih se pojam pojavljuje, odnosno najmanji broj pojavlji-

vanja pojmova unutar svih dokumenata. Ako se za neki pojam ne nadmaše zadani brojevi taj

pojam se ignorira. Atribut k izravno je vezan uz algoritam najbližih susjeda, a ostali atributi

imaju istu ulogu kao kod Bayesovog klasifikatora iz prethodnog potpoglavlja.

Pozivom metode assignClass(Document document) nad kreiranim klasifika-

torom poziva se niz privatnih metoda koje stvaraju upit koji ce pronaci sve slicne dokumente

i temeljem rezultata pretrage odreduju klasu.

Glavna mana zbog koje ovaj razred nije uvijek pogodno koristiti je nemogucnost korište-

nja u slucajevima kada polja dokumenata prema kojim želimo klasificirati stvaramo pozivom

konstruktora koji primaju objekt java.io.Reader, otvoren nad tekstualnim dokumen-

tom, što želimo u slucajevima velikih dokumenata.

Problem se dogodi kada se u jednoj od metoda pokuša pozivom metode String[]

getValues(String name) doci do svih pojmova iz polja dokumenta koja su odabrana

za klasifikaciju, a kako ona nisu spremljena u indeks povratna vrijednost bude prazno polje

znakovnih nizova te algoritam ne može ispravno odrediti klasu. Iz tog razloga klasifikator

22

Page 27: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

sam ostvario i koristeci razred MoreLikeThis.

Ostvarenje klasifikatora pomocu razreda MoreLikeThis

Potrebno je stvoriti objekt tog razreda koristeci konstruktor koji prima objekt razreda

IndexReader, postaviti analizator koji želimo koristiti te ogranicenja na najmanji broj po-

javljivanja pojma unutar svih dokumenata i broja dokumenata u kojima se pojam pojavljuje

cime izdvajamo pojmove koji se ne pojavljuju željeni broj puta. Zatim je potrebno pozivom

metode like nad stvorenim objektom napraviti upit cijom ce se pretragom dobiti slicni

dokumenti.

MoreLikeThis mlt = new MoreLikeThis(reader);

mlt.setAnalyzer(new StandardAnalyzer());

mlt.setFieldNames(new String[] FieldNames.CONTENTS.getValue());

mlt.setMinTermFreq(1);

mlt.setMinDocFreq(1);

Query query = mlt.like(documentId);

// k+1 jer ce biti pronaden i dokument za koji

// trazimo slicne (on ce biti najslicniji samom sebi)

TopDocs similarDocs = searcher.search(query, k + 1);

Nakon pretrage analizirao sam dobivene rezultate i odredio klasu dokumenta.

Ova implementacija zahtijeva prethodno indeksiranje dokumenata kojima se odreduje klasa.

23

Page 28: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

5. Zakljucak

U ovom radu dan je teoretski uvod u podrucje klasifikacije tekstualnih dokumenata, objaš-

njeni su temeljni konpcepti korišteni u praksi te osnovne funkcionalnosti programske knjiž-

nice Apache Lucene korištene za izradu prakticnog dijela.

Napravljena je podjela modela nadziranog strojnog ucenja 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 slucaju, ali postoje smjernice koje bi trebale pomoci

prilikom odabira.

Tako se preporuca odabir k-NN-a u slucajevima kada je skup mogucih 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 izracuna udaljenosti izmedu susjeda i

ogranicenosti memorijom (pripada memory-based strojnom ucenju). Šum u skupu za ucenje

znatno ne umanjuje preciznost pa kažemo da je robustan.

Kako pripada parametarskom modelu, naivni Bayesov klasifikator ima ogranicenu pri-

mjenu jer se pretpostavlja teorijska razdioba podataka, ali zato vrijeme ucenja ne ovisi o

broju primjera. S obzirom na to da se radi o linearnom modelu, postoje ogranicenja 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

Page 29: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

LITERATURA

Bojana Dalbelo Bašic i Jan Šnajder. Vrednovanje klasifikatora, 2011.

Mirta Benšic i Nenad Šuvak. Uvod u vjerojatnost i statistiku. Sveucilište JJ Strossmayera,

Odjel za matematiku, 2014.

Christopher D Manning, Prabhakar Raghavan, Hinrich Schütze, et al. Introduction to infor-

mation retrieval, svezak 1. Cambridge university press Cambridge, 2008.

Michael McCandless, Erik Hatcher, i Otis Gospodnetic. Lucene in Action: Covers Apache

Lucene 3.0. Manning Publications Co., 2010.

TFIDFSimilarity. Class tfidfsimilarity. http://lucene.apache.org/

core/6_5_0/core/org/apache/lucene/search/similarities/

TFIDFSimilarity.html, 2017. Datum nastanka: 25.3.2017., Datum pristupa:

17.5.2017.

25

Page 30: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

Usporedba metoda za klasifikaciju tekstualnih dokumenata

Sažetak

Zbog postojanja vrlo velike kolicine tekstualnih dokumenata potrebno ih je, radi brže,

jeftinije i lakše obrade, organizirati, odnosno podijeliti prema zajednickim 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 ce najbolje odrediti pripadnost klasi. Odluka se temelji na teorijskim saz-

nanjima o pojedinim metodama i usporedbi dobivenih rezultata. Moguce je da iste metode,

primijenjene na razlicite skupove podataka, rezultiraju vrlo razlicitom tocnosti odredivanja

klasa. U radu su opisana dva klasifikatora koji pripadaju razlicitim vrstama strojnog ucenja.

To su klasifikator najbližih susjeda i naivni Bayesov klasifikator.

Za primjenu klasifikacije moguce je koristiti Apache Lucene, programsku knjižnicu otvo-

renog koda.

Kljucne rijeci: klasifikacija teksta, klasifikator najbližih susjeda, naivni Bayesov klasifika-

tor, Apache Lucene

Page 31: Usporedba metoda za klasifikaciju tekstualnih dokumenata · menata koji nisu oznaceni nazivamo ispitni skup (engl.ˇ test set). Prije primjene klasifikatora potrebno je provjeriti

A Comparison of Text-Classification Techniques

Abstract

In order to efficiently process large number of textual documents it is necessary to or-

ganize them by assigning a class for each document. Because of that we use classification

methods which can be applied to other types of data as well.

Considering the properties of documents set, it is necessary to use a classification method

which will result with the best classification result. The decision has to be made based on

theoretical knowledge and regarding the given set of documents because the quality of the

same method can vary regarding the properties of given set of documents. Two classification

methods with different properties are described in this thesis. These are k-Nearest Neighbor

classification and Naive Bayes classifier.

Apache Lucene, an open source information retrieval library, can be used for implemen-

ting text classification.

Keywords: text classification, k-nearest neighbors classification, naive Bayes classifier,

Apache Lucene