34
SVEU ˇ CILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RA ˇ CUNARSTVA ZAVRŠNI RAD br. 5301 Usporedba metoda za grupiranje tekstualnih dokumenata Dario Bošnjak Zagreb, lipanj 2017.

Usporedba metoda za grupiranje tekstualnih dokumenatabib.irb.hr/datoteka/891150.Final_0036487554_42.pdf · Prikupljanje informacija, obrada teksta i grupiranje dijelovi su velikog

  • 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.

iii

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

Slika 7.1 Slika 7.2

Slika 7.3Slika 7.4

25

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