Žad Deljkić

Programski alati za automatsko mapiranje tematskih područja

Tekst rada i prezentacija.

Software tools for automatic mapping of subject areas

Zadatak

U svrhu brzog obuhvaćanja temeljnih informacija za neko tematsko područje, potrebno je predložiti programske alate koji bi automatski prikupljati standardne podatke o tematskom području te grafički prikazivali međuzavisnosti na način prilagođen korisniku za daljnju analizu. Naglasak staviti na programsku dogradnju i korištenje programskih alata u širokoj uporabi, poput internetskih preglednika, i rješenja zasnovana na otvorenom kodu.



Plan rada

  1. Napisati upute za uspješno prevođenje i pokretanje NetGlub master-a, slave-a i klijenta (GUI)
  2. Napraviti i dokumentirati što veći broj različitih transformacija
  3. Napisati detaljne upute za izradu transformacija - od izrade Python skripte do integriranja u NetGlub sistem
    1. puno o izradi transformacija za netglub se može naučiti iz resursa za Maltego (primjer) - jer na kraju krajeva Netglub je baš kopija Maltega
  4. Uspješno prevesti i pokrenuti klijent-a na Windows OS-u, napisati upute za to
  5. Isprobati cijeli sistem preko mreže - master i slave(ovi) na Ubuntu OS-u, klijenti na Ubuntu i Windows OS-u
  6. Napisati popis budućih projekata u kontekstu ovog rada
  7. Ubaciti dobivanje ISBN-a u tranformacije s knjigama
    1. trebao bi biti posebni parametar da/ne koji nas pita jel želimo ISBN - zato što dobivanje ISBN-a može biti sporo (otvaranje nove stranice za svaki rezultat)
  8. Slično za fraze, treba napraviti mehanizam (Python modul) koji se bavi validacijom fraza - on će nam reći jel fraza koju smo generirali ima smisla (primjerice da proba naći tu frazu u naslovu/sažetku knjiga i radova)
    1. Onda kada imamo taj mehanizam, treba postojati parametar koji nas pita je li želimo velidaciju fraza prilikom neke od transformacija koja generira fraze - jer je opet validacija relativno spora (otvaranje nove stranice)
  9. Ostalo:
    1. Provjeri je li NetGlub smatra da su dva entiteta sa istim primarnim (npr. naslov knjige), ali različitim sekundarnim atributima (npr. autori, izdavač) jednaki (je li ih “merge-a”) saznato - zapisano u poglavlje “Entiteti” niže
    2. PhraseToSimilarPhrasesW - makni rezultate sa “sidebar” i “nav” u nazivu
    3. Transformacija ili mehanizam koji provjerava je li fraza “legitimna” - pokuša naći knjige, članke, i sl. i ako ništa ne nađe onda nije?

Upute za NetGlub

Entiteti

Zapisivanje imena autora:

U entitetima Book i Article bi u polju “authors” imena autora trebala biti ovako zapisana:

<prezime1>, <ime1>; <prezime2>, <ime2>; …

Prezime bi trebali biti puno prezime, dok ime može biti puno ime, inicijali i slično - ovisi što nam je dostupno kod baze koju pretražujemo.

U različitim stranicama/bazma je ime autora različito zapisano. U nekim slučajevima u istoj bazi ime autora može biti zapisano u različitim formatima. Zadatak transformacije koja daje knjigu ili članak kao izlaz da pokuša pročitati i zapisati imena autora u ispravnom formatu.

Sam entitet autora ima jedno obavezno polje - prezime. Tako da i ako je na nekim stranicama zapisano puno ime, na nekima samo inicijali, a na nekima primjerice puno prvo ime i inicijali srednjeg imena, autor će se i dalje prepoznati kao isti. Nedostatak toga je rubni slučaj kada postoji više autora sa istim prezimenom u istom području, ali to je prihvatljiva posljedica za dobivenu fleksibilnost.

Isti (spojeni entiteti):

Netglub smatra da su dva entiteta jednaka ako su im svi obavezni atributi (optional=false) jednaki. Službeno ne postoji nikakav “primarni” atribut - no konvencija među default entitetima je da svaki entitet ima atribut nazvan “value” koji je obavezan (uz još ostale obvezne/neobvezne atribute).

Tu nastaje dilema - ako je za knjige i članke jedini obvezni atribut naslov, netglub neće moći razlikovati dve knjige s istim naslovom. Zato je potrebno uvesti još neki atribut koji će ih razlikovati.

Ja sam stavio da to bude polje autora. U tom slučaju se može dogoditi da netglub smatra da su dvije zapravo iste knjige različite jer imaju različiti tekst u polju autora (npr. “Doe John” i “Doe J”), no u praksi je to manji problem od prvog problema kojeg ovo rješava (različite knjige - isti naslov).

Izvor: datoteka qng/src/graph.cpp, funkcija Node::isSimilitarTo

Transformacije

U sve transformacije bi trebalo implementirati mehanizam da ne “zaspammaju” stranice koje pretražuju - primjerice ako tražimo članke s nekom temom iz samo 2015 godine, mogli bi pretražiti 1000 stranica Google Scholara i naći samo par rezultata. Ukoliko je korisnik zadao da npr. pronađemo 20 takvih rezultata, transformacija ih ne smije beskonačno tražiti već pretražiti razumnu/“pristojnu” količinu.

Gotove transformacije:

Buduće transformacije:

Lokalno testiranje transformacija:

Primjer pozivanja transformacije iz ljuske:

./transform phrase value test “” NbResult 5

Gornji primjer poziva transformaciju s ulaznim entitetom tipa “phrase”, čiji je atribut “value” jednak “test” i s parametrom “NbResult” jednakim “5”

Bugovi/greške kod Netglub-a

Netglub za komunikaciju koristi XML-RPC - specifikacija (link) može pomoći kod debuggiranja.

Općenito

Sigurnost

Budući projekti

Općenito

Nadogradnja Netglub-a