Upload
others
View
22
Download
0
Embed Size (px)
Citation preview
SVEUCILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RACUNARSTVA
ZAVRŠNI RAD br. 5301
Usporedba metoda za grupiranjetekstualnih dokumenata
Dario Bošnjak
Zagreb, lipanj 2017.
SADRŽAJ
1. Uvod 1
2. Osnove prikupljanja informacija 22.1. Boolean model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Obrnuti indeks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3. Ocjenjivanje prikupljenih podataka (engl. ranked retrieval) . . . . . . . . . 5
2.3.1. Parametarski i zonski indeks . . . . . . . . . . . . . . . . . . . . . 5
2.3.2. Tf-idf ocjenjivanje . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.3. Ocjenjivanje pomocu modela vektorskog prostora . . . . . . . . . . 7
3. Grupiranje tekstualnih dokumenata 93.1. Vrste grupiranja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2. Algoritam k-means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3. Algoritam k-means++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4. Algoritam multiple k-means++ . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5. Algoritam fuzzy k-means . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.6. Algoritam DBSCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4. Programske knjižnice Apache Lucene i Apache Mahout 16
5. Konzolna aplikacija za grupiranje tekstualnih dokumenata 185.1. Pretvorba Lucene vektora u Mahoutove vektore . . . . . . . . . . . . . . . 18
5.2. Grupiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6. Upute za pokretanje konzolne aplikacije 23
7. Usporedba algoritama grupiranja na stvarnoj kolekciji tekstualnih dokumenata 24
8. Zakljucak 27
Literatura 28
iv
1. Uvod
Prikupljanje informacija, obrada teksta i grupiranje dijelovi su velikog broja sustava, a služe
za obradu upita, prikupljanje i analizu podataka. Osim kao dijelovi sustava, mogu se koristiti
za obradu vlastitih kolekcija gdje se javlja potreba organizacije dokumenata.
Uzmimo za primjer tražilicu Google koja, s obzirom na korisnicki upit, mora pretražiti
indeksirane web stranice, ocijeniti dohvacene stranice te ih prikazati korisniku razvrstane
prema relevantnosti. Korisnik ce, u najboljem slucaju, rucno pregledati samo prvih nekoliko
rezultata, a ako ga isti nisu zadovoljili više nece koristiti tu tražilicu. Uocavamo problem
– kako iz kolekcije koja sadrži milijune dokumenata odabrati nekoliko rezultata, koji ce
zadovoljiti informacijsku potrebu korisnika?
Osim pretrage, cesto se javlja potreba razvrstavanja dokumenata u grupe, gdje ce doku-
menti unutar iste grupe biti slicni prema nekom kriteriju. Taj se postupak naziva grupiranje.
Uocavamo poveznicu pretrage i grupiranja – ako je neki dokument oznacen kao "dobar re-
zultat" za neki upit, vrlo je vjerojatno da ce i ostali dokumenti iz grupe biti "dobri".
Grupiranje je moguce izvoditi na razlicitim vrstama podataka, a ovaj se rad bavi poda-
cima u obliku tekstualnih datoteka. U prvom dijelu rada je opisana teorija koja stoji iza
svakog navedenog zadatka, a u drugom se dijelu opisuje programsko ostvarenje grupira-
nja tekstualnih datoteka pomocu programskih knjižnica Apache Lucene, Apache Mahout i
Apache Commons Math.
1
2. Osnove prikupljanja informacija
Danas, kada se teži zapisivanju velike kolicine podataka i njihovoj obradi, izuzetno je važno
pronaci informacije koje nas zanimaju što brže i tocnije. Primjenu prikupljanja informacija
vidimo u mnogim podrucjima i granama znanosti, ali i u svakodnevnom životu: filtriranje
informacija, pretraživanja weba, elektronicke pošte, intraneta, osobnog racunala . . .
Prikupljanje informacija (engl. information retrieval) bavi se prikupljanjem informacija
iz nestrukturiranih dokumenata ili podataka o dokumentima (engl. metadata) u velikim ko-
lekcijama. Prikupljeni dokumenti moraju biti relevantni, odnosno predstavljati dokumente o
kojima korisnik želi znati više. Cinjenica da dokument sadrži rijeci iz upita ne cini ga rele-
vantnim ako nije zadovoljio informacijsku potrebu korisnika (engl. information need). Pod
pojmom dokument uobicajeno mislimo na tekstualnu datoteku, ali to može biti bilo što nad
cime se gradi sustav prikupljanja informacija (npr. poglavlje knjige, novinski clanak, web
stranica).
Iako se upotrebljavaju kao sinonimi, upit (engl. query) i potreba za informacijom nisu
isti pojmovi. Upit predstavlja korisnicki unos u racunalo u svrhu ispunjenja njegove infor-
macijske potrebe.
Rezultat upita uvelike ovisi o samom upitu – loš upit može za posljedicu imati slab re-
zultat. Kvalitetu rezultata možemo izraziti pomocu preciznosti (engl. precision) i odziva
(engl. recall). Preciznost nam kazuje koliko je dokumenata relevantno medu dohvacenim
dokumentima, a odziv koliko je relevantnih dokumenata iz kolekcije dohvaceno. Omjer
preciznosti i odziva mora se promatrati u kontekstu kolekcije koju pretražujemo. Kod pre-
traživanja velikih kolekcija (npr. pretraživanje weba) važnija je preciznost, dok je kod pre-
traživanja manjih kolekcija bitan i odziv.
Na slici 2.1 skup A prikazuje skup dohvacenih dokumenata, dok skup R predstavlja rele-
vantne dokumente kolekcije D.
Preciznost =|A ∩R||A|
(2.1)
Odziv =|A ∩R||A|
(2.2)
2
Slika 2.1: Prikaz preciznosti i odziva za kolekciju D
(Ivana Podnar Žarko, 2017)
2.1. Boolean model
Model u kojemu upite postavljamo pomocu logickih operatora izmedu navedenih pojmova
upita nazivamo boolean model. Dokument se tada promatra kao skup rijeci, ne uzimajuci u
obzir njihov poredak. Boolean upiti daju odgovor nalazi li se traženi pojam u dokumentu ili
ne. Sve do pojave WWW-a boolean model bio je jedini nacin pretraživanja.
Postavljene upite možemo riješiti slijednim citanjem dokumenta, ali je to neucinkovito za
vece kolekcije. Kako bi izbjegli slijedno pretraživanje svakog dokumenta kolekcije za svaki
upit možemo unaprijed indeksirati kolekciju. Indeksiranje kolekcije dokumenata slicno je
indeksu knjige u kojem se nalazi popis rijeci i stranica na kojima se te rijeci pojavljuju. Tako
možemo vrlo brzo pronaci stranice knjige na kojima se tražena rijec nalazi. Indeksiranje do-
kumenata zahtijeva jednu slijednu pretragu svih dokumenata, pri cemu se rijeci preslikavaju
u pojmove koji se povezuju s dokumentima u kojima se nalaze. Upiti se rješavaju pretragom
indeksa, koja je vremenski višestruko manje zahtjevna od slijedne pretrage dokumenata.
Pojam (engl. term) nije nužno svaka rijec dokumenta, nego morfološko normalizirani
oblik rijeci. Tako se više rijeci iz izvornog dokumenta može preslikati u isti pojam u rjecniku
indeksa.
Postupak morfološke normalizacije bitan je i u pogledu performansi sustava za pretraži-
vanje jer bi pohrana nenormaliziranih rijeci povecavala dimenzionalnost prostora znacajki i
smanjivala preciznost. (Šnajder, 2008, Postupci morfolološke normalizacije u pretraživanju
informacija i klasifikaciji teksta)
Za potrebu pohrane indeksa možemo iskoristiti binarnu matricu ciji su reci pojmovi, a
stupci dokumenti. Ako se pojam nalazi u dokumentu tada je polje matrice "1", a inace "0".
U literaturi je ova matrica poznata pod imenom matrica incidencije (engl. incidence matrix).
Matrica tada sadrži N ×M elemenata, gdje je N broj pojmova, a M broj dokumenata. Pri-
mijetimo da je zbog konacne memorije racunala ovaj pristup ostvariv samo za kolekcije s
malim brojem dokumenata i pojmova, što u stvarnosti gotovo nikada nije slucaj. Cinjenicu
da matrica incidencije u pravilu sadrži mnogo veci broj nula, nego li jedinica možemo is-
koristiti. Nije potrebno pohranjivati podatak da se neki pojam ne nalazi u dokumentu, nego
3
cemo zapisati samo jedinice. Rješenje navedenog problema nudi struktura obrnuti indeks.
(Manning et al., 2009, Boolean retrieval, str. 1-18)
2.2. Obrnuti indeks
Obrnuti indeks (engl. inverted index) je struktura sastavljena od rjecnika (engl. dictionary)
na cije se pojmove vežu liste s identifikacijskim brojem dokumenata u kojima se taj po-
jam nalazi (engl. postings list). Pojmove valja razvrstati abecednim redoslijedom, dok se
zapisi u listi razvrstavaju uzlazno prema identifikacijskom broju dokumenta. Cinjenica da
su pojmovi i identifikacijski brojevi razvrstani omogucuje bržu pretragu indeksa. Uzmimo
za primjer pretraživanje boolean upitom u kojem tražimo dva pojma povezana operatorom
AND. Razvrstana lista identifikatora omogucuje nam da ne pretražujemo cijelu listu za oba
pojma, nego možemo stati s pretragom cim trenutno promatrani identifikator dokumenta pos-
tane veci od najveceg identifikatora iz prve liste. Dodatno, ako za prvi pojam uzmemo onaj
s kracom listom dobivamo još bolje performanse. Zato je uz pojam korisno zapisati i broj
dokumenata u kojima se on pojavljuje (engl. document frequency) što je zapravo velicina
liste.
Prije indeksiranja bitno je odrediti granulaciju, odnosno jedinicu dokumenta (engl. docu-
ment unit). Jedinica dokumenta odreduje ono što nazivamo dokumentom. Granulaciju, kao
i mnoge druge parametre u prikupljanju informacija, vrlo je teško odabrati na pravi nacin.
Ako odaberemo preveliku granulaciju korisniku ce biti teško pronaci relevantnu informaciju.
Premala granulacija takoder nije dobra iz razloga jer bi korisnik mogao ne vidjeti neke bitne
informacije jer su pojmovi iz upita razasuti na više malih dokumenata. (Manning et al., 2009,
Choosing a document unit, str. 21-22)
4
Slika 2.2: Izgradnja obrnutog indeksa
2.3. Ocjenjivanje prikupljenih podataka (engl. ranked re-
trieval)
Jednom kada smo dohvatili dokumente koje smatramo relevantnim s obzirom na informa-
cijsku potrebu korisnika, trebamo ih prikazati korisniku. Broj rezultata pretrage može biti
prevelik da bi covjek rucno mogao pregledati svaki dohvaceni dokument. Ocjenjivanjem i
rangiranjem dokumenata prve prikazujemo dokumente za koje smatramo da su najrelevant-
niji. U ovom poglavlju bit ce pokazani parametarski i zonski indeks, tf-idf (poznat i kao
tfxidf) i ocjenjivanje pomocu modela vektorskog prostora.
2.3.1. Parametarski i zonski indeks
Osim samog sadržaja, dokumenti su opisani i dodatnim podacima koje nazivamo metapodaci
(engl. metadata). Oni predstavljaju informacije o samom dokumentu, npr. datum nastanka,
autori, naslov i drugi. Metapodaci sadrže polja (engl. field), cije su vrijednosti iz konacnog
skupa. Za svako se polje tada gradi jedan indeks – parametarski indeks (engl. parametric
index). Takvi nam indeksi omogucuju pretragu prema metapodacima – npr. korisnik želi
dohvatiti dokumente starije od nekog datuma.
Zone za razliku od polja nisu ogranicene na vrijednosti iz konacnog skupa, nego za vri-
jednost poprimaju slobodni tekst. Takoder, kao kod polja, možemo izgraditi indeks u kojem
ce uz identifikator dokumenta koji sadrži pojam biti upisan i naziv zone (npr. pojam –> 6.nas-
5
lov, 8.autor). Time smo omogucili da pojedinim zonama dodijelimo vecu važnost pri ocje-
njivanju. Taj se postupak u literaturi naziva weighted zone index ili ranked boolean retrieval.
Pronadene rijeci iz upita drugacije se vrednuju za svaku zonu, ovisno o važnosti zone. Svakoj
zoni je dodijeljena težina gi ∈ [0, 1] takva da zbroj svih težina bude jednak jedan.
Težine se mogu odrediti rucno od strane korisnika ili racunalom. Danas je sve cešce da
se važnosti odreduju racunalom pomocu rucno pripremljenog skupa za ucenje (engl. training
set) koji se sastoji od para (upit, dokument) kojemu je pridružena relevantnost dokumenta
za dani upit (engl. machine-learned relevance). (Manning et al., 2009, Parametric and zone
indexes, str. 110-117)
2.3.2. Tf-idf ocjenjivanje
Pojavom i popularizacijom WWW-a boolean upiti postali su previše ograniceni i sve se više
prelazilo na upite slobodnog oblika. Takvi upiti nemaju zadanu formu i daju mnogo vecu
slobodu. Boolean upiti takoder ne uzimaju u obzir redoslijed rijeci (engl. bag of words), broj
ponavljanja rijeci unutar dokumenta i broj dokumenata koji sadrže traženu rijec, što ce se
pokazati vrlo bitnim pri ocjenjivanju relevantnosti dokumenta. Logicki operatori i dalje su
prisutni unutar sustava za pretraživanje, ali se rijetko koriste.
Pri ocjenjivanju, uz broj pojavljivanja pojma unutar dokumenta (engl. term frequency),
promatramo i broj pojavljivanja pojma unutar kolekcije (engl. collection frequency) ili broj
dokumenata koji sadrže pojam (engl. document frequency). U praksi se boljim pokazao
drugi pristup jer su cesti slucajevi da neki pojmovi imaju isti collection frequency, ali se
pojavljuju u puno manjem broju dokumenata (imaju manji document frequency) pa ih to cini
relevantnijim.
Idf u imenu tf-idf oznacava inverse document frequency i racuna se prema formuli:
idft = log
(N
dft
)(2.3)
gdje N predstavlja broj dokumenata unutar kolekcije.
Tf-idf dobivamo formulom:
tf-idft = tft,d × idft (2.4)
Za pojmove koji se pojavljuju u gotovo svim dokumentima ocjena ce biti niska, dok cesti
pojmovi u najmanjem broju dokumenata imaju najvecu ocjenu.
Ukupna ocjena nekog dokumenta d s obzirom na upit q racuna se kao zbroj tf-idf vrijed-
nosti za svaki pojam t unutar upita q:
score(q, d) =∑t∈q
tf-idft,d (2.5)
6
Ocjena dokumenta takoder ce, kao i ocjena pojedinog pojma, biti najveca za dokumente koji
sadrže velik broj rijeci iz upita, a te se rijeci pojavljuju u vrlo malom broju dokumenata.
(Manning et al., 2009, Term frequency and weighting, str. 117-120)
2.3.3. Ocjenjivanje pomocu modela vektorskog prostora
Dokumente možemo predociti vektorima ~V (d). Dimenzionalnost vektora ovisi o broju raz-
licitih pojmova (engl. term) u kolekciji. Duljina pojedine komponente vektora odredena je
brojem pojavljivanja pojma unutar kolekcije. Kolekciju dokumenata moguce je prikazati u
vektorskom prostoru s onoliko osi koliko ima razlicitih pojmova, gdje je svaki dokument
predstavljen vektorom. Svi su vektori tada jednakih dimenzija. Dokumente predstavljene
pomocu vektora možemo usporedivati i odredivati njihovu slicnost. Za tu zadacu najbolje
se pokazala metoda slicnosti pomocu kosinusa kuta izmedu vektora (engl. cosine similarity
ranking). Slicnost dokumenta racunamo formulom:
similarity(d1, d2) = cos(α) =~a ·~b|~a| · |~b|
(2.6)
Na jednak nacin možemo prikazati upite. Vektor upita ima jednake dimenzije kao i vektor
dokumenta. Ocjenu dokumenta d s obzirom na upit q tada racunamo formulom:
score(q, d) =~V (q) · ~V (d)
|~V (q)| · |~V (d)|(2.7)
Vektore dokumenata možemo pohraniti u matricu (engl. term-document matrix) dimen-
zija N ×M , gdje je N broj pojmova, a M broj dokumenta. Vrijednost elementa matrice
(ti, dj) predstavlja važnost pojma ti za dokument dj . Važnosti se mogu racunati na razlicite
nacine, ali se vecinom koristi tf-idf.
Pohrana vektora svih dokumenata kolekcije i izracun slicnosti vektora upita sa svakim
vektorom dokumenta predstavlja problem. Množenje vektora velikih dimenzija dugotrajna
je operacija i ne izvodi se za sve dokumente. Najprije se rijeci iz upita preslikaju u poj-
move te se uz pomoc obrnutog indeksa za svaki pojam odrede dokumenti u kojim su oni
sadržani. Tada se slicnosti racunaju samo za te dokumente kojih je manje od ukupnog broja
dokumenata. (Manning et al., 2009, The vector space model for scoring, str. 120-126)
Korisnik umjesto upita rijecima može zadati dokument i zatražiti slicne dokumente. Tada
sustav za pretragu pretvara dokument u vektor te ga usporeduje s ostalim dokumentima u
kolekciji i vraca slicne dokumente.
Osim za ocjenjivanje upita, slicnost dokumenata predstavljenih vektorima koristi se i pri
klasifikaciji (engl. classification) i grupiranju (engl. clustering).
7
Primjer
Na grafu 2.3 prikazana je kolekcija dokumenata koja, zbog jednostavnosti primjera, sadrži
samo dva pojma. Vektori dokumenata d1, d2 i d3, kao i vektor upita q prikazani su obliku nor-
maliziranih vektora. Iz grafa je vidljivo da dokument d1 sadrži više rijeci gossip, nego rijeci
jealous, dok dokument d2 sadrži gotovo jednak broj. Kut θ odreduje slicnost dokumenata d1i d2.
Kada bi zadali upit q, uocavamo da bi najrelevantniji dokument bio d2 jer je kut izmedu
ta dva vektora najmanji.
Slika 2.3: Slicnost dokumenata d1 i d2
(Manning et al., 2009, The vector space model for scoring, str. 121)
8
3. Grupiranje tekstualnih dokumenata
Grupiranje (engl. clustering) je postupak razvrstavanja objekata u grupe (engl. cluster) tako
da su objekti unutar grupe slicni, dok se objekti iz razlicitih grupa trebaju što više razlikovati.
U kontekstu prikupljanja informacija objekti su dokumenti. Grupiranje je primjer nenadzira-
nog ucenja (engl. unsupervised learning), što znaci da nije potrebno unaprijed odrediti grupe
za dokumente. Korisnik može birati temeljem cega ce algoritam grupirati dokumente – npr.
želimo grupirati novinske clanke prema naslovu ili sadržaju. Na rezultat grupiranja utjece
odabir nacina mjerenja udaljenosti izmedu tocaka. Euklidska metrika pokazala se dobrim
odabirom za izražavanje udaljenosti objekata.
Hipoteza grupiranja definirana je, na neformalan nacin, vec u uvodu, ali cemo ju sada i
formalno definirati.
Hipoteza grupiranja (engl. clustering hypothesis)
Hipoteza grupiranja kaže da se dokumenti unutar iste grupe ponašaju slicno promatrajuci
njihovu relevantnost s obzirom na informacijsku potrebu korisnika. (Manning et al., 2009,
Clustering in information retrieval, str. 350)
Drugacije receno, hipoteza nam govori da ce dokumenti unutar grupe u koje se nalazi
upitom dohvaceni element takoder biti relevantni. Razlog tomu je slicnost dokumenata unu-
tar iste grupe.
Klasifikacija
Za razliku od grupiranja, klasifikacija je primjer nadziranog ucenja (engl. supervised lear-
ning), gdje je prije provedbe klasifikacije potrebno odrediti grupe (klase) te im dodijeliti dio
dokumenata kolekcije. Rucno razvrstane dokumente nazivamo skup za ucenje (engl. tra-
ining set) te se na temelju sadržaja tih dokumenata odreduju grupe za ostale dokumente.
Neki dokumenti mogu ostati nerazvrstani pa je postupak potrebno ponavljati više puta, a
svaki rezultat je potrebno provjeriti za što postoji niz postupaka.
9
3.1. Vrste grupiranja
Dvije su osnovne podijele nacina grupiranja: prema strukturi i pripadnosti tocke grupi.
Particijsko i hijerarhijsko grupiranje
Particijsko grupiranje (engl. flat clustering) stvara medusobno nepovezane grupe, dok kod
hijerarhijskog grupiranja postoji povezanost i hijerarhija grupa. Hijerarhijsko grupiranje kao
rezultat daje stablo (engl. dendrogram) ciji su listovi objekti koje grupiramo. Cvorovi od
listova prema korijenu predstavljaju nove grupe koje sadrže sve veci broj manje slicnih obje-
kata.
Slika 3.1: Dendrogram
Razlika je i u ulaznim parametrima algoritama jer algoritmi particijskog grupiranja, za
razliku od hijerarhijskog koji zahtijevaju uvjet prekida, zahtijevaju broj grupa u koje ce raz-
vrstati dokumente.
Složenost particijskih algoritama, od kojih je najpoznatiji algoritam k-srednjih vrijed-
nosti (engl. k-means algorithm), je linearna, dok je za hijerarhijske kvadratna ili još veca.
Cvrsto i meko grupiranje
Cvrsto grupiranje (engl. hard clustering) svakoj tocki pridijeli tocno jednu grupu. U me-
kom grupiranju (engl. soft clustering, fuzzy clustering) tocka može pripadati u više grupa s
odredenim postotkom. Pripadnosti je moguce ograniciti stupnjem mekoce (engl. fuzziness)
m ≥ 1,m ∈ R , gdje je za veci stupanj moguca pripadnost u više grupa. Zam = 1 algoritam
cvrsto grupira, odnosno dokument ili pripada ili ne pripada grupi. Primjer mekog grupiranja
je algoritam fuzzy k-menas.
10
3.2. Algoritam k-means
Algoritam k-srednjih vrijednosti najpoznatiji je particijski algoritam. Cilj algoritma je mini-
mizirati prosjecni kvadrat udaljenosti dokumenta od središta grupe. Za mjerenje udaljenosti
vecinom se koristi euklidska metrika, a dokumenti i centar grupe predstavljeni su vektorima
s brojem dimenzija jednakim broju pojmova u kolekciji. Vektori dokumenata normalizirani
su, odnosno njihove komponente, koje predstavljaju ocjenu za pojedini dokument, podije-
ljene su s ukupnom duljinom vektora.
Centroid
Centri svake grupe nazivaju se centroidi, a racunaju se formulom:
~µ(ω) =1
|ω|∑~x∈ω
~x (3.1)
Mjeru koja izražava koliko dobro centroid predstavlja clanove vlastite grupe nazivamo
rezidualni zbroj kvadrata (engl. residual sum of squares). Racuna se kao zbroj kvadrata
udaljenosti svakog vektora dokumenta od centroida:
RSSk =∑~x∈ωk
|~x− ~µ(ωk)|2 (3.2)
Ukupnu ocjenu možemo dobiti zbrojem RSS-a po svim grupama:
RSS =K∑k=1
RSSk (3.3)
Opis algoritma
Algoritam zapocinje slucajnim odabirom K dokumenata koji tada predstavljaju centroide.
Zatim se svaki dokument pridjeljuje grupi najbližeg centroida. Nakon što svaki dokument
pripada nekoj od grupa, centroid se ponovno racuna prema formuli 3.1. Svakom se novom
iteracijom vrijednost RSS-a smanjuje ili ostaje jednaka. Algoritam staje s radom kada je
zadovoljen jedan od uvjeta:
• završen je fiksni, unaprijed zadani, broj iteracija
• niti jedan od dokumenata novom iteracijom nije promijenio grupu
• centroidi ne mijenjaju poziciju novom iteracijom
• postignuta je željena razina RSS-a
• promjena RSS-a novom iteracijom manja je od najmanje zadane promjene
11
Posljednja dva uvjeta kombiniraju se s fiksnim brojem iteracija kako bi se izbjegla vremenski
duga izvodenja algoritma. U prakticnom dijelu rada za prekid rada algoritma koristi se fiksni
broj iteracija.
U slucaju da su dva ili više centroida jednako udaljena od dokumenta treba biti konzis-
tentan i uvijek uzimati grupu s najmanjim ili najvecim indeksom. U suprotnom algoritam
može uci u petlju.
Skup mogucih grupiranja je konacan pa ce algoritam u konacnom vremenu doci do lokal-
nog minimuma za RSS. Garancije da ce algoritam postici globalni minimum nema. Problem
postizanja globalnog minimuma izraženiji je kada u kolekciji postoje dokumenti vrlo razli-
citi od ostalih, te su oni odabrani za pocetne centroide. U tom slucaju oni mogu biti jedini
predstavnici vlastite grupe (engl. singleton cluster).
(Manning et al., 2009, K-means, str. 360-362)
Alternativno, algoritam može zapoceti odabirom slucajnih tocaka za centroide koje nisu
nužno dokumenti.
Slika 3.2: Prikaz rada algoritma k-srednjih vrijednosti
(Manning et al., 2009, K-means, str. 362)
12
3.3. Algoritam k-means++
Algoritam k-means++ poboljšanje je algoritma k-means u pogledu odabira pocetnih centro-
ida (engl. seeds), a osmislili su ga David Arthur i Sergei Vassilvitskii 2007. godine. Iako, s
obzirom na algoritam k-means, ima veci broj koraka vrijeme izvodenja je skraceno, a postig-
nuta je veca kvaliteta rezultata. Razlog tomu su bolje odabrani pocetni centri grupa. I sami
su autori prilikom izlaganja svog rada izjavili: "Friends don’t let friends use k-means.".
Opis algoritma
Pri odabiru pocetnih centroida teži se odabiru što udaljenijih tocaka u vektorskom prostoru.
Tako ce algoritam, nakon slucajnog odabira prvog centroida, svaki sljedeci centroid odabrati
iz skupa preostalih tocaka s vjerojatnošcu proporcionalnoj kvadratnoj udaljenosti promatrane
tocke i najbližeg postojeceg centroida. Koraci algoritam su sljedeci:
1. Slucajni odabir prvog centroida
2. Za svaki dokument predstavljen vektorom odredi udaljenost do najbližeg centroida
3. Izmedu preostalih tocaka (dokumenata) odaberi jednu za novi centroid s vjerojatnošcu
proporcionalnom kvadratu udaljenosti promatrane tocke i najbližeg centroida
4. Ponavljaj drugi i treci korak, dok se ne odredi zadani broj centroida
5. Izvrši algoritam k-means
(Vassilvitskii i Arthur, 2007)
3.4. Algoritam multiple k-means++
Algoritam multiple k-means++ je meta algoritam, što znaci da upravlja drugim algoritmima.
Pokretanjem algoritma pokrece se n izvršavanja k-means++ algoritma. Za rezultat se odabire
najbolji od n nacina grupiranja (npr. onaj s najmanjim prosjecnim odstupanjem od prosjeka
udaljenosti svih grupa)
(The Apache Software Foundation, 2016)
3.5. Algoritam fuzzy k-means
Algoritam fuzzy k-means primjer je mekog grupiranja opisanog u uvodu ovog poglavlja.
Algoritam je inacica algoritma k-means s bitnom razlikom u pripadnosti dokumenta grupi.
13
Tako je svakom dokumentu di dodijeljen stupanj pripadnosti ui,j grupi cj . Ovakav nacin gru-
piranja koristan je kada treba grupirati kolekciju s dokumentima koji bi, po svojem smještaju
u prostoru, gotovo jednako dobro pripadali u više grupa. (The Apache Software Foundation)
3.6. Algoritam DBSCAN
Kako bi razumjeli algoritam DBSCAN (Density-Based Spatial Clustering of Applications
with Noise) potrebno je uvesti nekoliko novih pojmova.
Okolina odreduje skup tocaka udaljenih manje od ε od promatrane tocke.
Slika 3.3: Okolina tocke q
Najmanji broj tocaka oznacava koliko se tocaka mora nalaziti unutar okoline promatrane
tocke kako bi ista mogla biti jezgra grupe (engl. core).
Granicna tocka (engl. border) je svaka tocka koja je u okolini jezgrene tocke.
Tocka p je izravno dohvatljiva (engl. directly density-reachable) iz tocke q, ako se p nalazi
u okolini tocke q i ako je q jezgra.
Tocka p je dohvatljiva (engl. density-reachable) iz tocke q, ako postoji put preko tocaka
t1, t2, ..., tn, gdje je t1 = q i tn = p, takvih da je ti+1 izravno dohvatljiva iz ti. Sve tocke na
tom putu, osim tocke p
Tocka p je povezana (engl. density-connected) s tockom q, ako postoji tocka t takva da
su p i q dohvatljive iz t
Nedohvatljive tocke oznacavaju se kao šum (engl. noise) i ne grupiraju se.
Opis algoritma
DBSCAN zahtijeva dva parametra: velicinu okoline (ε) i najmanji broj tocaka za stvaranje
grupe.
1. Iz skupa neposjecenih tocaka slucajno odaberi jednu
2. Ako okolina odabrane tocke sadrži dovoljan broj tocaka oznaci ju kao jezgru i stvori
grupu. Inace ju oznaci kao šum (moguce je da ce u sljedecim koracima algoritma tocka
biti svrstana u neku od grupa)
14
3. U grupu dodaj okoline novo dodanih tocaka koje sadrže više od najmanjeg broja tocaka
4. Ponovi prethodni korak dok postoje takve okoline
5. Ponovi prvi korak dok sve tocke nisu oznacene kao posjecene
Primjer
Slika 3.4 ilustrira navedene pojmove. Tocka B dohvatljiva je iz C jer postoji put crvenih
tocaka koji zadovoljava navedeni uvjet. Zadani najmanji broj tocaka je tri pa tocka A zado-
voljava uvjet da postane jezgra. Tocka N nije dohvatljiva iz niti jedne jezgre te ne pripada
niti jednoj grupi.
Slika 3.4: DBSCAN - dohvatljivosti tocaka
(Chire, 2011)
U vizualizaciji algoritma pomoci ce sljedeca web stranica autora Naftalija Harrisa:
https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/.
Prednosti
Algoritam daje dobre rezultate za kolekcije cije je grupiranje prethodno spomenutim cvrstim
algoritmima davalo lošije rezultate. Razlog tomu je u cinjenici da algoritam DBSCAN za-
nemaruje dokumente vrlo razlicite od ostalih. Za rezultat daje grupe raznih oblika i velicina
što nije slucaj kod drugih algoritama. Kao parametre nije potrebno odrediti broj grupa, nego
se zadaju velicina okoline i najmanji broj tocaka u grupi.
Nedostatci
Vrijednosti parametara okoline i najmanjeg broja tocaka teško je odrediti da bi se dobio
najbolji rezultat. Lošim odabirom algoritam daje vrlo slabe rezultate. Te parametre veci-
nom odreduju domenski strucnjaci koji razumiju sadržaj kolekcije. Postoje i pretpostavljene
vrijednosti koje se u praksi mogu pokazati dobrim izborom.
15
4. Programske knjižnice Apache Lucene iApache Mahout
Lucene
Apache Lucene besplatna je knjižnica otvorenog koda, napisana u programskom jeziku Java,
razvijena za potrebe indeksiranja i pretrage tekstualnih datoteka. Knjižnica je dostupna u
svim popularnim programskim jezicima (Java, C#, C++, Python, Perl, Ruby, PHP, Object
Pascal). Mnogi ce Lucene usporediti s bazom podataka, ali postoje bitne razlike. U dohva-
cenim dokumentima prikazuju se samo pohranjena polja i dokumenti mogu imati razlicita
polja i postavke spremanja tih polja.
Autori u službenoj literaturi vrlo cesto isticu kako Lucene nije potpuna aplikacija, nego
potpora aplikacijama koje sadrže bilo koje oblike pretraživanja. Lucene se neprestano nado-
graduje izdavanjem novih verzija, ali zadržava kompatibilnost sa starim verzijama. Prakticni
dio rada koristi verziju 5.5.2 zbog kompatibilnosti s Mahoutom verzije 0.13.0 (najnovija
verzija u vrijeme izrade rada).
Više informacija o programskoj izvedbi dostupno je knjizi "Lucene in Action" autora
Michaela McCandlessa, Erika Hatchera i Otisa Gospodnetica, te u završnom radu "Uspo-
redba metoda za klasifikaciju tekstualnih datoteka" autora Renata Bošnjaka. Pri citanju
knjige treba biti oprezan jer je verzija Lucenea korištena u knjizi zastarjela pa se treba fo-
kusirati na principe, a ne na programski kod. Takoder postoje službene web stranice na
kojima se pri izlasku nove verzije mogu pronaci demonstracijski programi za indeksiranje i
pretraživanje, cije je kodove potrebno prilagoditi vlastitoj aplikaciji.
Mahout
Apache Mahout besplatna je knjižnica otvorenog koda, napisana u programskim jezicima
Java i Scala. Mahout nudi potporu aplikacijama koje koriste klasifikaciju, grupiranje i ko-
laborativno filtriranje (engl. collaborative filtering), odnosno preporucivanje sadržaja. Sve
navedeno možemo svesti na zajednicki nazivnik – strojno ucenje pa bi se jednostavnije mo-
glo reci da Mahout nudi potporu aplikacijama koje koriste strojno ucenje.
16
Mahout je moguce preuzeti i kao konzolnu aplikaciju i pokrenuti ju uz odabrane parame-
tre. Tako se Mahout koristi kao zasebni program za grupiranje.
Mahout podržava raspodijeljenost, odnosno rad algoritama na više razlicitih, povezanih
racunala. Ta se funkcionalnost ostvarila pomocu Apache Hadoopa. Za potrebe prakticnog
dijela rada nije se koristio Hadoop, nego se svi algoritmi izvršavaju centralizirano.
17
5. Konzolna aplikacija za grupiranjetekstualnih dokumenata
U ovom radu Mahout je korišten kao potpora za grupiranje, dok su algoritmi grupiranja
iz Apache Commons Math verzije 3.6.1. Naime, Lucene pohranjuje vektore dokumenata
u obliku koji nije pogodan za korištene algoritme, nego je potrebno napraviti pretvorbu u
Mahout vektore.
Napomena
Ovaj dokument ne sadrži potpune programske kodove, nego samo isjecke kljucne za razu-
mijevanje i povezivanje prethodno objašnjene teorije. U svim isjeccima koda koristi se ver-
zija Mahouta 0.13.0, te verzija Apache Commons Matha 3.6.1.
5.1. Pretvorba Lucene vektora u Mahoutove vektore
Za pretvorbu je potrebno instancirati objekt koji ce omoguciti iteraciju po Lucene vektorima.
U tu svrhu odredit cemo nacin ocjenjivanja (weight) i pohraniti pojmove polja sadržaja
(termInfo) koje citamo iz indeksa pomocu indexReader objekta.
Weight weight = new TFIDF();
TermInfo termInfo = null;
try {
termInfo = new CachedTermInfo(idxReader,
DocumentFields.TITLE.getValue(), 1, 99);
} catch (IOException e) {
System.err.println("An error occurred while loading term
information into memory.");
System.exit(1);
}
// Mahout vectors
18
Iterable<Vector> vectors = new LuceneIterable(idxReader,
DocumentFields.PATH.getValue(),
DocumentFields.TITLE.getValue(), termInfo, weight);
Collection<DoublePointVector> points = new LinkedList<>();
for (Vector vector : vectors) {
NamedVector namedVector = (NamedVector) vector;
points.add(new DoublePointVector(namedVector));
}
Objašnjenje
Prva linija odreduje tf-idf nacin ocjenjivanja (vidi 2.3.2), a u cetvrtoj se liniji definira polje
koje ce se pohraniti u memoriju. U ovom slucaju pohranjuje se polje naslova za svaki vektor
nekog pojma. Uocavamo razliku teorije i prakse, gdje se u teoriji polja i zone razlikuju, a u
praksi sve nazivamo poljima.
DocumentFields je enumeracija koja definira moguca polja: identifikacijski broj,
ime dokumenta, put dokumenta u datotecnom sustavu, naslov, sadržaj dokumenta i datum
zadnje izmjene, a po potrebi se može proširiti dodatnim poljima.
Objekt vectors predstavlja Mahoutove vektore koji sadrže informacije kljucne za pro-
vedbu grupiranja: drugi argument konstruktora odreduje identifikacijsko polje, dok treci
odreduje polje koje ce se koristiti u vektoru, odnosno po kojem ce se polju grupiranje pro-
vesti.
Kolekcija points parametrizirana je po klasi DoublePointVector koja implemen-
tira sucelje Clusterable. Klasa je potrebna jer algoritmi grupiranja kao ulazne argu-
mente primaju vektore u obliku objekta koji mora implementirati sucelje Clusterable.
Sucelje definira metodu double[] getPoint() cija ce povratna vrijednost predstav-
ljati dokument u n-dimenzionalnom prostoru. Kolekcija points predstavlja vektore svih
dokumenata.
5.2. Grupiranje
Grupiranje je izvedeno pomocu knjižnice Apache Commons Math koja nudi cetiri algoritma
grupiranja. Algoritmi primaju razne parametre koji utjecu na rezultat grupiranja. Algoritmi
grupiranja smješteni su svaki u vlastitu klasu koja implementira sucelje ClusterData.
Sucelje definira metodu void cluster(Collection<DoublePointVector>
points, DistanceMeasure measure) koja kao argumente prima ranije navedenu
kolekciju vektora dokumenata i nacin mjerenja udaljenosti izmedu tocaka. U sucelju je
19
implementirana i default metoda void printCluster
(Cluster<DoublePointVector> cluster) koja služi za ispis rezultata korisniku.
Klasa KMeansPlusPlus
Metoda u kojoj se odvija grupiranje sadrži objekt tipa KMeansPlusPlusClusterer koji
predstavlja algoritam grupiranja.
Varijable numOfClusters i maxIterations definiraju željeni broj grupa i najveci
dopušteni broj iteracija algoritma. Ako je maxIterations negativan granica se ne pos-
tavlja. Rezultat grupiranja pohranjujemo u parametriziranu listu.
public void cluster(Collection<DoublePointVector> points,
DistanceMeasure measure) {
KMeansPlusPlusClusterer<DoublePointVector> clusterer = new
KMeansPlusPlusClusterer<>(numOfClusters, maxIterations,
measure);
List<CentroidCluster<DoublePointVector>> clusters =
clusterer.cluster(points);
for (CentroidCluster<DoublePointVector> cluster : clusters) {
printCluster(cluster);
}
}
Klasa MultipleKMeansPlusPlus
Metoda grupiranja vrlo je slicna metodi algoritma k-means++ jer je, kako je ranije objaš-
njeno, multiple k-means++ meta algoritam koji upravlja drugim algoritmom. Pored para-
metara korištenih u k-means++ algoritmu potrebno je definirati broj izvršavanja algoritma
k-means++ (numOfRuns).
public void cluster(Collection<DoublePointVector> points,
DistanceMeasure measure) {
MultiKMeansPlusPlusClusterer<DoublePointVector> clusterer = new
MultiKMeansPlusPlusClusterer<>(
new KMeansPlusPlusClusterer<>(numOfClusters, maxIterations,
measure), numOfRuns);
List<CentroidCluster<DoublePointVector>> clusters =
clusterer.cluster(points);
for (CentroidCluster<DoublePointVector> cluster : clusters) {
printCluster(cluster);
20
}
}
Klasa FuzzyKMeans
Za grupiranje je potrebno predati željeni broj grupa i parametar koji definira "mekocu" gru-
piranja (fuzziness).
public void cluster(Collection<DoublePointVector> points,
DistanceMeasure measure) {
FuzzyKMeansClusterer<DoublePointVector> clusterer = new
FuzzyKMeansClusterer<>(numOfClusters, fuzziness);
List<CentroidCluster<DoublePointVector>> clusters =
clusterer.cluster(points);
for (CentroidCluster<DoublePointVector> cluster : clusters) {
printCluster(cluster);
}
}
Klasa DBSCAN
Algoritam DBSCAN grupiranja specifican je i mnogo drugaciji od navedenih algoritama što
se odražava i u zahtijevanim parametrima. Parametar epsilon definira epsilon okolinu
svake tocke koja predstavlja dokument, a minPoints najmanji broj tocaka koje se moraju
nalaziti u okolini promatrane tocke kako bi ona mogla postati jezgra grupe. Razlicitost se
ocituje i u parametrizaciji liste u koju pohranjujemo rezultat, odnosno grupe.
public void cluster(Collection<DoublePointVector> points,
DistanceMeasure measure) {
DBSCANClusterer<DoublePointVector> clusterer = new
DBSCANClusterer<>(epsilon, minPoints);
List<Cluster<DoublePointVector>> clusters =
clusterer.cluster(points);
for (Cluster<DoublePointVector> cluster : clusters) {
printCluster(cluster);
}
}
21
Osvrt na algoritme
Promatrajuci isjecke programskih kodova uocavamo jednostavnost korištenja algoritama gru-
piranja. Najveci dio posla krije se u pripremi dokumenata prije samog grupiranja – indek-
siranje, pretvorba vektora i izgradnja aplikacije na nacin koji želite. Dodatne komplikacije
mogu nastati ako se želi indeksirati dokumente koji nisu u obliku cistog teksta, nego npr.
CSV, XML ili PDF. Tada se u svrhu ekstrahiranja teksta iz takvih datoteka može koristiti
Apache Tika.
22
6. Upute za pokretanje konzolneaplikacije
Aplikacija se pokrece iz komandne linije ili preuzimanjem izvornog koda iz IDE-a pomocu
argumenata zadanih u Run Configurations. Ako korisnik ne zna argumente programa unapri-
jed može pokrenuti program bez argumenata i tako dobiti opis nacina uporabe. Neispravnim
zadavanjem argumenata korisnik ce uz ispis nacina korištenja dobiti informaciju koji je ar-
gument pogrešan.
Odabir algoritma grupiranja postižemo argumentom -alg te navodimo listu argumenata
potrebnu za izvodenje odabranog algoritma. Redoslijed navodenja argumenata nije bitan i
može prethoditi argumentu za odabir algoritma.
Tablica 6.1: Prikaz argumenata programa
Argument Algoritam
-alg kmpp K-means++
-alg mkmpp Multiple k-means++
-alg fkm Fuzzy k-means
-alg dbscan DBSCAN
Argumenti -idxDir, -dataDir i -alg obavezni su pri svakom pokretanju, dok se
nenavodenjem opcionalnih argumenata koriste pretpostavljene vrijednosti navedene pri is-
pisu pomoci.
23
7. Usporedba algoritama grupiranja nastvarnoj kolekciji tekstualnihdokumenata
U analizi je korištena kolekcija od 26490 dokumenata na hrvatskom jeziku, a dokumenti su
grupirani prema naslovu. Pokretanjem programa dobiveni su sljedeci rezultati.
Tablica 7.1: Usporedba provedenih algoritama
Algoritam Broj grupa Drugi parametri Vrijeme izvodenja [s] Slika
K-means++ 10 - 519 7.1
K-means++ 20 - 2003 7.2
Multi k-means++ 20 broj izvodenja = 3 7295 7.3
Fuzzy k-means 10 fuzziness = 3 609 7.4
Algoritam DBSCAN, zbog svoje velike složenosti, nije bilo moguce pokrenuti nad ovim
skupom podataka jer i dva sata nakon njegovog pokretanja nije bilo rezultata, a temperatura
procesora bila je na granici dopuštene. Algoritam je uz raznu kombinaciju parametara pokre-
tan i na manjem skupu koji se sastojao od svakog tridesetog dokumenta inicijalne kolekcije,
odnosno od 883 dokumenata. Izlazi programa za ta pokretanja nisu zadovoljavajuci jer su
svi dokumenti bili svrstani u istu grupu ili niti jedan dokument nije bio svrstan. Razlog tomu
su loše odabrani parametri koje je vrlo teško dobro odabrati.
U nastavku se nalaze graficki prikazi raspodjele dokumenata po grupama za algoritme iz
tablice 7.1.
Algoritam k-means++, neovisno o zadanom broju grupa dao je gotovo jednak rezultat.
Grupa s najvecim brojem dokumenata gotovo je jednake velicine, dok su se preostale dvije
najvece grupe prvog izvodenja algoritma (slika 7.1 zelena i narancasta) raspale na manje.
Iako se najdulje izvodio, što je i bilo za ocekivati, multiple k-means++ nije dao bolje
rezultate od obicnog k-means++ algoritma.
Algoritam fuzzy k-means dao je najujednaceniji rezultat što se i dalo pretpostaviti. Raz-
log tomu je mogucnost svrstavanja istog dokumenta u više grupa.
24
Tablica 7.2: Broj dokumenata po grupama
Grupa 7.1 7.2 7.3 7.4
1 21400 21923 23509 4473
2 3127 1313 1164 4018
3 1377 1265 860 3846
4 384 483 313 3622
5 81 305 286 2159
6 73 300 125 2050
7 33 276 76 1999
8 8 200 48 1566
9 4 163 23 1456
10 3 115 17 1301
11 - 79 16 -
12 - 25 14 -
13 - 19 14 -
14 - 14 7 -
15 - 4 5 -
16 - 2 4 -
17 - 1 3 -
18 - 1 3 -
19 - 1 2 -
20 - 1 1 -
26
8. Zakljucak
U ovom je radu dan teorijski uvod u prikupljanje informacija i grupiranje te su opisani algo-
ritmi grupiranja. Uz teorijsku podlogu, prikazan je i prakticni dio u kojemu možemo vidjeti
kako se teorija i izvedba mogu razlikovati u svrhu pojednostavljenja. Indeksiranje, ocjenji-
vanje dokumenata, razlika grupiranja i klasifikacije te vrste grupiranja opisani su s visokom
razinom apstrakcije potrebnom za shvacanje algoritama grupiranja. Za više detalja zainte-
resiranog se citatelja upucuje na knjige i radove navedene u literaturi, od kojih bi posebno
istaknuo knjigu Introduction to information retrieval koja je pružila osnovu za ovaj rad.
Opisane su i besplatne programske knjižnice koje, uz sve prednosti otvorenog koda,
imaju i nedostatke koje je potrebno uzeti u obzir pri njihovom odabiru za razvoj aplika-
cije. Knjižnice Lucene i Mahout iznimno su slabo dokumentirane pa je korištenje dijelova
knjižnica za koje ne postoje demo verzije otežano. Usprkos zadržavanju kompatibilnosti sa
starijim verzijama, ceste promjene verzija takoder mogu utjecati na razvoj aplikacije. Razlog
je prilagodba novoj verziji, u kojoj je cesto ideja ostala ista, ali se izvedba drasticno promi-
jenila. To nam ukazuje da autori knjižnica teže što boljem programskom proizvodu koji ce
biti osnovni dio druge aplikacije.
Usporedba algoritama grupiranja pokazala je da algoritmi imaju svoje prednosti i ne-
dostatke i da ih treba primjenjivati s obzirom na kolekciju koju promatramo. Primjerice,
za algoritam DBSCAN vrlo je teško procijeniti vrijednosti epsilon i minPts da bi se dobilo
zadovoljavajuce rješenje. Ti parametri variraju od kolekcije do kolekcije i mogu rezultirati
jako lošim rezultatom – npr. u kolekciji od više tisuca dokumenata nije pronadena niti jedna
grupa ili su gotovo svi dokumenti u istoj grupi (a po prirodi kolekcije možemo naslutiti da
tomu nije tako).
Zbog sve vece kolicine podataka koji se prikupljaju i obraduju, navedena su podrucja i
dalje aktivna po pitanju istraživanja i daljnjih poboljšanja.
27
LITERATURA
Jan Šnajder Bojana Dalbelo Bašic. Text classification and clustering, 2015.
Chire. Dbscan-illustration. https://commons.wikimedia.org/wiki/File:
DBSCAN-Illustration.svg, 2011. Datum nastanka: 20.10.2011., Datum pristupa:
19.5.2017.
Ognjen Dobrijevic Ivana Podnar Žarko, Lea Skorin-Kapov. Pretraživanje višemedijskih sa-
držaja na www-u, 2017.
Christopher D Manning, Prabhakar Raghavan, Hinrich Schutze, et al. Introduction to infor-
mation retrieval, svezak 1. Cambridge university press Cambridge, 2009.
Michael McCandless, Erik Hatcher, i Otis Gospodnetic. Lucene in Action, Second Edition:
Covers Apache Lucene 3.0. Manning Publications Co., Greenwich, CT, USA, 2010. ISBN
1933988177, 9781933988177.
The Apache Software Foundation. Dokumentacija klase kmeansplusplus-
clustere. http://commons.apache.org/proper/commons-math/
javadocs/api-3.4/org/apache/commons/math3/ml/clustering/
KMeansPlusPlusClusterer.html. Datum pristupa: 18.5.2017.
The Apache Software Foundation. Machine learning: Overview. http://commons.
apache.org/proper/commons-math/userguide/ml.html, 2016. Datum
nastanka: 28.8.2016., Datum pristupa: 18.5.2017.
Sergei Vassilvitskii i David Arthur. K-means++: The advantages of careful seeding. 2007.
Jan Šnajder. Postupci morfolološke normalizacije u pretrazivanju informacija i klasifikaciji
teksta. Fakultet elektrotehnike i racunarstva Sveucilišta u Zagrebu, 2008.
28
Usporedba metoda za grupiranje tekstualnih dokumenata
Sažetak
Obrada i analiza dokumenata iz velikih kolekcija zahtijeva odredenu organizaciju istih.
Tomu služi grupiranje, postupak kojim ce racunalo, s obzirom na zadane parametre, odre-
diti grupu za dokumente iz kolekcije. Parametri se zadaju s obzirom na kolekciju i želje
korisnika. Algoritam k-means jadan je od najpoznatijih algoritama, dok je poboljšanje dano
algoritmom k-means++. Fuzzy k-means je meki algoritam grupiranja koji ovisno o zada-
nom parametru s odredenim postotkom pripadnosti može svrstati dokumente u jednu ili više
grupa. Algoritam multiple k-means++ svodi se na izvodenje algoritma k-means++ odre-
deni broj puta. Navedeni algoritmi svrstavaju dokumente u zadani broj grupa, dok algoritam
DBSCAN kao parametar ne prima željeni broj grupa, nego najmanji broj tocaka u grupi i
okolinu ε. Ako tocka sadrži barem traženi broj tocaka u svojoj okolini tada može postati
jezgrom grupe, a u suprotnom ce biti svrstana u neku grupu ili biti oznacena kao šum. Al-
goritam DBSCAN prilagodljiviji je od ostalih algoritama, ali je teško odrediti parametre s
kojima bi se dobili dobri rezultati jer jako ovise o kolekciji.
Kljucne rijeci: prikupljanje informacija, indeks, grupiranje, strojno ucenje, Apache Lucene,
Apache Mahout
Text clustering methods comparison
Abstract
Analysis of large collections can be a difficult task that can be simplified by dividing
the collection into groups. Each group contains documents that are somehow similar. The
process of dividing the collection can be done manually by a human, or automatically by a
machine. Clustering is an automated process of dividing the collection into groups (clusters),
with respect to parameters set by the user. K-means is a well known clustering algorithm,
an improved version also exists, called k-means++. Both algorithms cluster a data point into
one cluster. A fuzzy k-means algorithm is different, because it can cluster one data point into
several clusters, depending on the user requirements. The DBSCAN algorithm, unlike afo-
rementioned algorithms, does not require a fixed number of groups, but a minimum number
of points in the group and ε neighborhood size. If a data point contains the minimum number
of data points needed in it’s neighborhood it can then become a cluster core, otherwise it will
be grouped later in the process or labeled as noise. Both parameters are hard to set properly,
because they severely depend on the collection.
Keywords: information retrieval, index, cluster, machine learning, Apache Lucene, Apache
Mahout