Diplomski rad (pdf) - Sigurnost @ ZEMRIS

SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAĈUNARSTVA
DIPLOMSKI RAD BR. 1896
OTKRIVANJE SLIĈNOSTI U IZVORNIM
TEKSTOVIMA PROGRAMA
Ana Baotić
Voditelj: Prof.dr.sc. Marin Golub
Zagreb, rujan 2011.
Prvo bih htjela zahvaliti mentoru prof. dr. sc. Marinu Golubu na čeličnim
živcima i slobodi koju mi je dao prilikom izrade ovog diplomskog rada.
Zahvaljujem dragim ljudima koji su izdvojili svoje dragocjeno vrijeme kako bi mi
pomogli, a posebno Stjepanu, Alanu, Igoru, Janu, Ivanu i Sanji. Hvala
profesoricama Julijani Divkovid-Pukšec i Sonji Grgid na konstantnoj motivaciji i
potpori. Posebna zahvala ide mom dragom prijatelju Marku Čupidu na beskrajnoj
dobroj volji i svoj pruženoj pomodi jer znam da nije bilo lako!
I konačno najveda zahvala ide mom suprugu Goranu što je izdržao moju
tvrdoglavost, te mom sinu Zoranu što mi je bio najveda moguda motivacija da
svoj studij privedem kraju!
SAŽETAK
U ovom radu opisani su postojeći programski sustavi i algoritmi za detekciju plagijata.
Sastavljene su arhive izvornih tekstova programa te je u njih uključen podskup
pouzdano izmijenjenih izvornih tekstova s namjenom kontrolne skupine. Načinjena je
ručna usporedba nasumično odabranog podskupa izvornih tekstova te su objašnjeni
rezultati te usporedbe. Opisane su metode i algoritmi na kojima počiva otkrivanje
sličnosti izvornih tekstova programa. IzgraĎen je programski sustav koji omogućuje
automatizirano odreĎivanje značajki izvornih tekstova programa te parametrizirano
odreĎivanje sličnosti izvornih tekstova programa na temelju značajki. Objašnjen je
utjecaj podešavanja parametara na uspješnost otkrivanja sličnosti te su ponuĎene
preporučene vrijednosti istih. Na kraju je ocijenjena uspješnost rada sustava na
unaprijede pripremljenoj arhivi tekstova programa.
ABSTRACT
This diploma thesis provides a comparison of existing plagiarism detection algorithms
and systems. Archives containing students' assignments have been selected,
together with a subset of manually modified programs for the purpose of a reference
set. A manual comparison of programs has been carried out with a detailed
explanation of the results. Methods and algorithms which provide a basis for
plagiarism detection have beed described and their characteristcs compared. A web
system has been implemented which provides automated collection of code
characteristics, as well as detecting similarities between programs based on those
characteristics. Parameters that affect similarity detection have been defined, and
their default values have been proposed. Finally, the overall effectiveness of the
system was demonstrated on the predefined sets of students' assignments.
Sadržaj
1. UVOD ................................................................................................................................................. 1
2. METODE ANALIZE PRIRODNIH TEKSTOVA I SLIĈNOSTI ZNAKOVNIH NIZOVA ...................... 4
2.1. Najdulji zajednički podslijed ........................................................................................................ 4
2.2. Najdulji zajednički podniz ............................................................................................................ 5
2.3. Računanje udaljenosti nizova znakova ...................................................................................... 6
2.3.1. Hammingova udaljenost ................................................................................................ 6
2.3.2. Levensteinova udaljenost .............................................................................................. 6
2.3.3. Damerau-Levensteinova udaljenost .............................................................................. 7
2.4. Traženje otisaka izvornih tekstova programa temeljenih na sažecima ...................................... 7
2.4.1. Algoritmi pretraživanja uzoraka u znakovnim nizovima ................................................. 8
2.4.2. Algoritam Rabin - Karp................................................................................................... 9
3. PREGLED I USPOREDBA POSTOJEĆIH SUSTAVA ZA DETEKCIJU PLAGIJATA .................. 11
3.1.
3.2.
3.3.
3.4.
3.5.
3.6.
3.7.
3.8.
Sustav JPlag ............................................................................................................................. 11
Aplikacija Sherlock .................................................................................................................... 11
Sustav MOSS ........................................................................................................................... 12
Aplikacija SID ............................................................................................................................ 12
Aplikacija SIM ........................................................................................................................... 12
Sustav CodeMatch ................................................................................................................... 13
Usporedba značajki sustava za detekciju plagijata .................................................................. 13
Usporedba učinkovitosti otkrivanja sličnosti postojećih sustava .............................................. 14
3.8.1. Detekcija plagijata aplikacijom Sherlock ...................................................................... 15
3.8.2. Detekcija plagijata sustavom MOSS............................................................................ 20
3.8.3. Detekcija plagijata sustavom CodeMatch .................................................................... 24
3.8.4. Detekcija plagijata sustavom JPlag ............................................................................. 26
3.8.5. Ručno odreĎivanje sličnosti odabranih izvornih tekstova programa ........................... 28
4. ANALIZA IZVORNIH TEKSTOVA PROGRAMA ............................................................................ 31
4.1.
4.2.
4.3.
4.4.
4.5.
Leksička analiza ....................................................................................................................... 31
Sintaksna analiza ...................................................................................................................... 31
Analiza tijeka izvoĎenja programa i optimizacija ...................................................................... 31
Alati za analizu izvornog teksta programa ................................................................................ 31
Sustav GOLD ............................................................................................................................ 32
4.5.1. Komponenta Builder .................................................................................................... 33
4.5.2. Prevedene tablice gramatika ....................................................................................... 33
4.5.3. Komponenta engine ..................................................................................................... 33
4.5.4. Implementacija komponente za izvoĎenje jezika sustava GOLD-a u programskom
jeziku C# ................................................................................................................................... 34
5. ODREĐIVANJE ZNAĈAJKI IZVORNIH TEKSTOVA PROGRAMA............................................... 35
5.1. Osnovna ideja ........................................................................................................................... 35
5.2. Opis strukture markera ............................................................................................................. 36
5.2.1. Sažeci datoteke ........................................................................................................... 37
5.2.2. Karakteristike datoteke ................................................................................................ 38
5.2.3. Leksička analiza ........................................................................................................... 38
5.2.4. Sintaksna analiza ......................................................................................................... 39
5.2.5. K-grami ........................................................................................................................ 40
5.3. Automatizirano stvaranje skupa značajki izvornih tekstova programa ..................................... 42
6. PRAKTIĈNI RAD ............................................................................................................................. 44
6.1. Web-aplikacija CSI ................................................................................................................... 44
6.1.1. Korištenje web-aplikacije ............................................................................................. 45
6.1.2. Struktura aplikacije....................................................................................................... 51
6.1.3. Korištene tehnologije ................................................................................................... 54
6.2. Skupovi ispitnih izvornih tekstova programa ............................................................................ 55
6.3. Parametri .................................................................................................................................. 55
6.3.1. Sažeci .......................................................................................................................... 55
6.3.2. Opće karakteristike ...................................................................................................... 56
6.3.3. Statistike ...................................................................................................................... 56
6.3.4. Sintaksna stabla ........................................................................................................... 56
6.3.5. K-grami ........................................................................................................................ 56
6.3.6. Računanje mjera sličnosti skupova numeričkih podataka ........................................... 57
6.4. Definiranje nove usporedbe i skupa pravila .............................................................................. 60
6.5. Pokretanje usporedbe ............................................................................................................... 62
6.6. Demonstracija rada sustava na postojećoj arhivi izvornih tekstova ......................................... 63
7. ZAKLJUĈAK .................................................................................................................................... 67
8. LITERATURA................................................................................................................................... 69
Uvod
1. Uvod
Plagijat (od lat. plagere oteti) označava čin prisvajanja ili kopiranja tuĎeg pisanog,
umjetničkog ili drugog kreativnog rada u svoj vlastiti, bilo u cjelini ili djelomice, bez
prikladnog priznanja izvornog autorstva ili izvornika [1]. Za razliku od krivotvorenja u
kojemu je upitna autentičnost djela, kod plagijata je u pitanju nezakonito pripisivanje
rada.
U današnje vrijeme prvi izbor pri traženju informacija je Internet. Teško je zamisliti
pojam, temu ili problem čija definicija ili obrada nije već negdje objavljena.
Pretraživanje kataloga u knjižnicama i ručno traženje literature zamijenilo je nekoliko
klikova miša i unos ključnih pojmova u vrlo moćne web-tražilice, koji se svakodnevno
koriste. Čak nije potrebno znati niti cijeli pojam, jer se mogući izbori automatski nude
tijekom upisivanja riječi. Kad je već pronalazak tematike toliko lagan, primamljivost
korištenja već postojećih rješenja i istraživanja nije toliko neshvatljiva.
Plagiranje izvornih tekstova programa predstavlja realan problem studentima i
nastavnom osoblju. Studenti često ocijene da im se ne isplati potrošiti odreĎenu
količinu vremena na rješavanje programskog zadatka te od kolega uzimaju gotova
rješenja i prisvajaju ih pod svoja. Osim što je takvo ponašanje nemoralno, studenti
sami sebe zakidaju u procesu samostalnog razmišljanja i rješavanja problema, što
predstavlja okosnicu njihovog intelektualnog i inženjerskog usavršavanja. S druge
strane nastavno osoblje je primorano trošiti vrijeme namijenjeno poučavanju na
suzbijanje i dokazivanje plagiranja. Kazne nisu rješenje problema, jer se bave
saniranjem štete, a strah od njih često nije dovoljan da do plagiranja ne doĎe. Pravi
cilj je adekvatno obeshrabriti učenike i studente da se uopće i okušaju u plagiranju.
To je moguće moralnim apelima, potpisivanjem izjave koji poziva na poštenost i
moral, ali i nekim praktičnijim metodama za praćenje samostalnog rada. Sustavi za
kontrolu verzija izvornih tekstova programa su jednostavan primjer kako nastavno
osoblje može imati uvid u proces nastajanja izvornih tekstova programa, ali i u bilo
kojem koraku mogu od studenta dobiti informaciju o napretku njegovog rada. Danas
se takoĎer često koriste praktična rješenja za provjeru sličnosti radova. No ne postoji
potpuni računalni sustav, aplikacija ili program koja je u stanju postaviti prava pitanja,
doživjeti i proučiti reakciju ispitanika te s apsolutnom sigurnošću i nedvosmislenošću
utvrditi da se radi o plagijatu, na način kako to može stručnjak u danom polju, osim
ako se ne radi o potpunom prisvajanju rada od početka do kraja.
Postavlja se pitanje kako zaključiti da je neki izvorni tekst programa plagijat.
Otkrivanje plagijata je u najmanju ruku nejednoznačno. Naime, korištenjem
odreĎenog broja transformacija nad bilo kojim programskim rješenjem nekog
zadanog problema moguće je dobiti neko drugo rješenje, a da se ne radi o plagijatu.
U svojem radu Parker i Hamblen [13] definiraju plagijat kao rad koji je nastao
temeljem manjeg broja izmjena nekog postojećeg izvornog teksta programa, ali bez
imalo razumijevanja kako taj program radi. Dodatno, Faidhi i Robinson [14] definiraju
sustav sa šest razina koji opisuje opseg izmjena nad izvornim tekstom programa
(sSlika 1.1). Prema njima, najjednostavniji i najčešći način plagiranja izvornih
tekstova definiran je u prve tri razine navedene klasifikacije te zahtijeva najmanju
1
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
razinu razumijevanja onog što se mijenja. Akcije kojima se postižu te izmjene su
dodavanje, premještanje, izmjena i brisanje dijelova izvornog teksta programa.
Slika 1.1 Klasifikacija izmjena izvornih tekstova programa
Iako je ispitivaču relativno lagano odrediti radi li se o plagijatu uslijed tako
jednostavnih izmjena, potrebno je osigurati i programsku potporu koja je u stanju to
otkriti s visokim stupnjem sigurnosti. Kako se približavamo višim razinama izmjena,
raste i težina kojom se s relativnom sigurnošću rad može klasificirati kao plagijat te
potrebno znanje i razumijevanje osobe koja plagira. Naime bilo koji izvorni tekst
programa se može konačnim brojem izmjena, dodavanja, brisanja i premještanje
pretvoriti u drugi. Postavlja se pitanje do koje razine izvorni tekst mora biti izmijenjen
da bi se i dalje smatrao plagijatom te kako definirati mjeru sličnosti i prag iznad kojeg
se sličnosti prijavljuju. Kako programski zadaci variraju svojom složenošću, opsegom
te razinom individualnosti koju zahtijevaju od studenta, ponekad nema smisla
očekivati različite implementacije. Primjer je klasičan Hello World program.
Neovisno o programskom zadatku, potrebno je omogućiti pouzdan i ispravan način
otkrivanja sličnosti izvornih tekstova koji će u što većoj mjeri pokriti razine prethodno
klasifikacije plagijata te dati ispitivaču slobodu da ih interpretira na način koji smatra
prikladnim.
2
Uvod
U ovom diplomskom radu načinjena je detaljna analiza procesa detekcije plagijata
programa te je razvijen novi pristup obradi izvornih tekstova programa i njihovom
usporeĎivanju. U poglavlju [2] objašnjeni su osnovni algoritmi obrade prirodnog
teksta i rješenja problema odreĎivanja razlike znakovnih nizova. Poglavlje [3] sadrži
pregled i usporedbu učinkovitosti i karakteristika rada javno dostupnih sustava za
detekciju plagijata. TakoĎer je obavljena ručna usporedba sličnosti izvornih tekstova
programa kako bi se prethodno dobivenim rezultatima mogao dati kontekst. U
poglavlju [4] navedene su faze i objašnjen proces prevoĎenja izvornog teksta
programa u izvršni i opisan sustav GOLD koji je korišten u okviru sustava CSI (engl.
Code Similarity Inspection) kao potpora leksičkoj i sintaksnoj analizi izvornih tekstova
programa. Poglavlje [5] objašnjava motivaciju za odreĎivanje skupa značajki (marker)
izvornih tekstova programa te razloge korištenja tih skupova u procesu otkrivanja
sličnosti.
Za potrebe demonstracije procesa odreĎivanja markera i usporeĎivanja izvornih
tekstova programa pomoću njih, implementirana je web-aplikacija CSI koja
ispitivačima nudi mogućnost da definiraju utjecaj pojedinih elemenata usporedbe u
ukupnoj ocjeni ili da ih u potpunosti izuzmu. Poglavlje [6] objašnjava strukturu i način
korištenja aplikacije i definiranja pravila na temelju kojih se obavlja proces
usporedbe. Na kraju je prikazana uspješnost rada aplikacije CSI u odnosu na ostale
popularne aplikacije za detekciju plagijata te su predložene potrebne preinake i
nadogradnje koje bi dodatno unaprijedile proces otkrivanja sličnosti izvornih tekstova
programa.
3
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
2. Metode analize prirodnih tekstova i sliĉnosti
znakovnih nizova
Tijekom vremena korišteni su mnogi pristupi analizi prirodnih tekstova kao i različite
metode traženja sličnosti meĎu njima. Različiti sustavi za detekciju plagijata koriste
različite algoritme, ili čak i kombinaciju algoritama kao svoj temelj. Traženje uzoraka
(engl. pattern) i usporeĎivanje znakovnih nizova se može svesti na nekoliko pristupa,
od jednostavnog slijednog usporeĎivanja znakova, traženja razlika nizova znakova i
složenih izračuna sažetaka (engl. hash) nad proizvoljnim nizom znakova. Kako bi se
mogla donijeti odluka o korištenju neke metode tijekom odreĎivanja sličnosti izvornih
tekstova programa, potrebno je prvo proučiti njene značajke u radu s prirodnim
tekstom. U nastavku se nalazi opis metoda, način na koji odreĎuju sličnosti te njihova
složenost i učinkovitost.
2.1. Najdulji zajedniĉki podslijed
Metoda traženja najduljeg zajedničkog podslijeda (engl. longest common
subsequence) obavlja slijedno traženje znakova jednog znakovnog niza unutar
drugog i kao rezultat vraća duljinu podslijeda kojeg je pronašla. Osim duljine metoda
se može izmijeniti da umjesto duljine vraća i pronaĎeni najdulji podslijed, ukoliko on
postoji. Za traženje podslijeda je važno samo da se znakovi pronalaze istim
redoslijedom kako su definirani, dok izmeĎu pojedinih znakova može biti proizvoljan
broj umetnutih znakova. Slika 2.1 prikazuje kako ova metoda zaključuje da je prvi
tekst niz sadržan kao podslijed u drugom tekstu.
Slika 2.1 Traženje najduljeg podslijeda
Ideja je da se svaki znak prvog niza traži od krajnje lijeve pozicije drugog niza te
nakon što se pronaĎe, od te pozicije dalje se traži sljedeći znak prvog niza. Na
primjeru je vidljivo da su nakon znakova N i I umetnute tri znamenke. Slika 2.2
prikazuje pseudokod traženja najduljeg podslijeda. Ukoliko su oba niza prazna ili
uopće nisu inicijalizirani i vrijednost im je null, tada algoritam prestaje s radom i
vraća nulu u pozivajući program. Ako su oba niza definirana poziva se usporedba
prvog znaka jednog s prvim znakom drugog niza. U slučaju da su znakovi isti, opet
se poziva metoda ali sada nad podnizovima prvog i drugog niza gdje je prvi znak
izuzet. Ako prvi znak nije bio identičan u oba niza, tada se metoda poziva dva puta u
4
Metode analize prirodnih tekstova i sličnosti znakovnih nizova
pokušaju meĎusobnog odreĎivanja najduljeg podniza neovisno tražio se u prvom ili
drugom nizu. Konačni rezultat se definira kao veći od dva pojedinačna, čime je
pronaĎena duljina najduljeg podslijeda.
Slika 2.2 Pseudokod traženja najduljeg podslijeda
Loša strana korištenja ovog algoritma je vremenska zahtjevnost. To se može
primijetiti u slučaju da dva niza nemaju nikakav zajednički podslijed, a svejedno se
obavlja dvostruko traženje po svim elementima u oba niza. Duljina rada metode
daleko premašuje korist potencijalno pronaĎene mjere sličnosti.
2.2. Najdulji zajedniĉki podniz
Za razliku od podslijeda definiranog u prethodnom potpoglavlju, podniz (engl.
substring) je definiran neprekinutim nizom znakova koji se u istom redoslijedu mora
moći pronaći u drugom tekstu. Algoritam koji se koristi u ovom pretraživanju koristi
strukturu podataka koja se zove sufiksno stablo [5].
Slika 2.3 Postupak stvaranja sufiksnog stabla
Slika 2.3 prikazuje postupak stvaranja sufiksnog stabla. Za zadanu riječ matematika
prvo se izdvajaju svi podnizovi riječi te se potom sortiraju po početnom slovu. Nakon
sortiranja se nad podnizovima istog početnog slova odreĎuje najdulji zajednički
prefiks kojeg je potrebno izdvojiti u zaseban čvor. Preostali podnizovi se na isti način
5
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
raščlanjuju sve dok je to moguće. Primjena ove metode je moguća i u odreĎivanju
sličnosti izvornih tekstova programa ako izgradimo općenito sufiksno stablo koje će
sadržavati sve sufikse obaju tekstova. Kako bi usporedba bila moguća treba voditi
računa da se za svaki čvor stabla zna kojem tekstu pripada – prvom, drugom ili oba.
Najdublji čvor čija znakovna vrijednost je sadržana u oba teksta je upravo i najdulji
zajednički podniz.
2.3. Raĉunanje udaljenosti nizova znakova
Osim metoda odreĎivanja sličnosti prirodnih tekstova možemo koristiti i metode koje
računaju njihovu udaljenost (engl. distance). U općenitom slučaju udaljenost je
definirana brojem brisanja, dodavanja i izmjene znakova koji je potrebno obaviti nad
nekim nizom znakova kako bismo dobili neki drugi niz. U odreĎivanju sličnosti cilj je
bio dobiti što veću vrijednost dok kod odreĎivanja udaljenosti manje vrijednosti
udaljenosti impliciraju veću sličnost. U nastavku slijedi opis rada najčešćih metoda za
odreĎivanje udaljenosti.
2.3.1.Hammingova udaljenost
U teoriji informacije Hammingova udaljenost dvaju znakovnih nizova iste duljine je
definirana brojem lokacija na kojima ta dva niza ne sadrže identičan znak. U analizi
prirodnog teksta to je broj zamjena koje je potrebno obaviti kako bismo unificirati dva
niza znakova iste duljine. Slika 2.4 prikazuje Hammingovu udaljenost za znakovne
nizove riječ i lijek.
Slika 2.4 Hammingova udaljenost
Iako ima široku upotrebu u teoriji informacije, kodiranju i kriptografiji, uvjet da dva
niza nužno imaju isti broj elemenata implicira da se udaljenost može izračunati samo
ako je korištena operacija bila zamjena znakova, a ne dodavanje ili brisanje.
2.3.2.Levensteinova udaljenost
Levensteinova udaljenost (engl. edit distance) definira broj akcija potrebnih da se iz
jednog znakovnog niza dobije drugi, pri čemu je dozvoljeno dodavanje, brisanje ili
izmjena znakova na bilo kojoj lokaciji unutar niza. Slika 2.5 prikazuje odreĎivanje
Levensteinove udaljenosti za dva znakovna niza: lijek i riječi.
Tipične primjene računanja ove udaljenosti su rječnici i alati za provjeru točnosti
riječi. OdreĎivanje udaljenosti proizvoljno velikih nizova znakova je zbog računske
složenosti relativno neisplativo jer je cijena izračuna proporcionalna produktu duljina
nizova koji se usporeĎuju. Usporedbe radi, ako se zabrani akcija zamjene dva znaka
u nizovima, Levensteinova udaljenost se svodi na odreĎivanje najduljeg zajedničkog
podslijeda.
6
Metode analize prirodnih tekstova i sličnosti znakovnih nizova
Slika 2.5 Levensteinova udaljenost
2.3.3.Damerau-Levensteinova udaljenost
Radi se o proširenju definicije Levensteinove udaljenosti dodavanjem akcije kojom se
lokacije dva susjedna znaka jednog niza mogu zamijeniti. Tim proširenjem ova
udaljenost postaje korisna u analizi prirodnog teksta. Pretpostavka je da su elementi
prirodnog teksta (riječi) relativno kratke te da je broj grešaka koje se dogaĎaju
prilikom pisanja rijetko veći od 2. Slika 2.6 prikazuje odreĎivanje DamerauLevensteinove udaljenosti za dva znakovna niza utorak i tuorka.
Slika 2.6 Damerau-Levensteinova udaljenost
.
Valja primijetiti da bi standardna Levensteinova udaljenost za ovaj primjer bila 4.
Osim u aplikacijama za provjeru točnosti riječi, ova udaljenost je našla praktičnu
primjenu u biologiji u odreĎivanju promjena molekula DNK.
2.4. Traženje otisaka izvornih tekstova programa
temeljenih na sažecima
Kako su metode pretraživanja znakovnih nizova redovito spore i računski zahtjevne,
postavlja se pitanje kako pojednostaviti i ubrzati proces analize znakovnih nizova.
Ideja je znakovni niz prikazati kao numeričku vrijednost dobivenu nekom metodom i
onda usporeĎivati te izračunate numeričke vrijednosti. U slučaju korištenja viših
programskih jezika (nar. Java, C#) numeričku vrijednost znakovnog niza možemo
dobiti pozivom ugraĎene metode HashCode(). Tako dobivena vrijednost je sažetak
znakovnog niza (engl. hash).
Za potrebe računanja sažetaka prirodnih i izvornih tekstova definira se pojam kgrama. K-grami su neprekinuti podnizovi fiksne duljine k koji pripadaju nekom nizu
znakova. Slika 2.7 prikazuje sva k-grame riječi matematika, gdje je k=4.
7
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
Slika 2.7 K-grami duljine 4 dobiveni od riječi "matematika"
UsporeĎivanje nizova znakova pomoću k-grama primjenjivo je i na analizu izvornih
tekstova programa. Dodatno, umjesto nad cijelim tekstom mogu se računati sažeci
leksičkih jedinki obraĎenog izvornog teksta programa. Ovako dobivene sažetke kao i
sažetke k-grama je potom lako usporeĎivati s vrijednostima sažetaka drugih izvornih
tekstova programa. Moguće je takoĎer prvo odraditi korektivne akcije kako bi se tekst
normalizirao (micanje praznina, komentara, tabulatora, itd.), pa tek nakon toga
računati sažetke. Korisnost ovog pristupa je vidljiva u analizi implementiranog
otkrivanja sličnosti izvornih tekstova programa u okviru aplikacije CSI.
2.4.1.Algoritmi pretraživanja uzoraka u znakovnim nizovima
Razvijen je cijeli niz algoritama za brzo pretraživanje nizova znakova ovisno o broju
uzoraka (engl. pattern) koje treba pronaći. Uzorak se definira skupom objekata, u
našem slučaju znakova, koji se ponavljaju na predvidiv način. Algoritmi se
klasificiraju na one koji mogu pronaći točno jedan ili više uzoraka.
Definirajmo n kao duljinu uzorka kojeg tražimo, a m kao duljinu teksta kojeg
pretražujemo. Uz tako definirane parametre tTablica 2.1 prikazuje značajke vremena
obrade teksta i usporedbe algoritama koji su namijenjeni za pronalazak jednog
uzorka.
Algoritmi koji mogu pretraživati veći broj uzoraka su:
 Aho-Corasick,
 Commentz-Walter te
 Rabin-Karp.
Osim svih navedenih algoritama, za definiciju većih skupova znakovnih nizova se
često koriste regularne gramatike ili regularni izrazi, no oni nam u ovom kontekstu
nisu zanimljivi. Od navedenih algoritama, zbog svojih svojstava Rabin-Karp se tipično
koristi
u
sustavima
i
programima
za
detekciju
plagijata.
8
Metode analize prirodnih tekstova i sličnosti znakovnih nizova
Tablica 2.1 Složenosti rada algoritama za traženje uzoraka u tekstu
Algoritam
trajanje obrade
trajanje usporedbe
Naivno pretraživanje
nizova
0
Θ((n-m+1) m)
Rabin-Karp
Θ(m)
prosječno Θ(n+m),
najgore Θ((n-m+1) m)
Pretraživanje
determinističkim
konačnim automatima
Θ(m |Σ|)
Θ(n)
Knuth-Morris-Pratt
Θ(m)
Θ(n)
Boyer-Moore
Θ(m + |Σ|)
Ω(n/m), O(n)
Bitap (shift-or, shift-and,
Θ(m + |Σ|)
O(mn)
Baeza–Yates–Gonnet)
2.4.2.Algoritam Rabin - Karp
Algoritam Rabin-Karp su razvili Michael O. Rabin i Richard M. Karp 1987. godine, a
služi za pretraživanje znakovnih nizova koristeći funkciju raspršenja. Iako je po
svojim značajkama inferiorniji ostalim algoritmima za pretraživanje jednog uzorka,
kod pretraživanja većih skupova uzoraka je upravo ovo algoritam odabira.
Umjesto sporog i skupog pretraživanja i usporeĎivanja dugih nizova znakova, ideja je
izračunati njihove sve vrijednosti sažetaka k-grama. Motivacija je pouzdano brža
usporedba vrijednosti sažetaka, dakle numeričkih vrijednosti. Kao dodatno ubrzanje,
koristi se funkcija pomičnog raspršenja (engl. rolling hash), što znači da se vrijednost
sažetka k-grama na i+1-toj poziciji može brzo izračunati na temelju vrijednosti kgrama na i-toj poziciji, uz dodatni učitani znak.
Funkcija računanja sažetka za k-gram (c1...ck) u bazi b, gdje su c1, c2..ck znakovi kgrama, prikazana je formulom (2.1).
(2.1)
Sažetak za sljedeći k-gram (c2... ck+1) tada se može izračunati formulom (2.2).
(2.2)
Umjesto formule (2.2) može se koristiti i formula (2.3) koja ne daje isti rezultat, no ta
razlika ne utječe na funkcionalnost algoritma i nudi brži izračun.
9
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
(2.3)
10
Pregled i usporedba postojećih sustava za detekciju plagijata
3. Pregled i usporedba
detekciju plagijata
postojećih
sustava
za
Danas je dostupan velik broj algoritama, aplikacija i sustava koji omogućavaju u
različitim mjerama uspješnu usporedbu izvornih tekstova programa. Svaki pristup
usporedbi je praktičniji za jednu primjenu, dok može biti potpuno neučinkovit za neku
drugu. Većina sustava za detekciju plagijata nudi podršku za različite programske
jezike. Ta podrška se definira implementiranjem leksičke i eventualno sintaksne
analize, iako postoje sustavi i aplikacije npr. Sherlock koje ne obavljaju detaljnu
analizu izvornih tekstova ili im je namjena analiza prirodnog teksta. U skladu s
implementiranim metodama analize izvornih tekstova programa razlikuje se i
uspješnost i pouzdanost rezultata odreĎivanja sličnosti. U nastavku su ukratko
opisani načini rada pojedinih sustava i aplikacija, dan je pregled njihovih
karakteristika i značajki, obavljeno je ispitivanje njihove učinkovitosti i brzine te su
usporeĎeni rezultati s ručnom provjerom sličnosti na unaprijed definiranom podskupu
izvornih tekstova programa.
3.1. Sustav JPlag
Sustav JPlag [8] je jedan od najpoznatijih sustava za detekciju plagijata koji je
dostupan kao web-aplikacija uz prethodnu registraciju korisnika. Proces otkrivanja
sličnosti se temelji na pretvorbi izvornih tekstova programa u nizove tokena (engl.
tokens), koji se potom pokušavaju u što većoj mjeri upariti s nizovima tokena nekog
drugog izvornog teksta programa. Usporedba se odvija u dvije faze: traženje najduljih
neprekinutih podnizova tokena te označavanje uparenih podnizova tokena najveće
duljine čime oni automatski bivaju izuzeti iz ostale usporedbe. Jedan niz se može
samo jednom upariti s nekim drugom nizom, pa je ovaj način usporedbe osjetljiv na
ponavljanje istog teksta na više mjesta.
3.2. Aplikacija Sherlock
Aplikacija Sherlock je javno dostupan besplatan alat koji se može koristiti samostalno
kao konzolna aplikacija ili kao dio web-sustava BOSS [17]. Omogućuje usporeĎivanje
izvornih tekstova programa, prirodnog teksta, pa čak i .tar datoteka. Pozadinski
algoritam koristi digitalne potpise (engl. digital signatures). Digitalni potpis čini
proizvoljno velik skup riječi pretvorenih u bitove koji su potom grupirani kako bi se iz
njih mogao očitati broj. Nova verzija programa korisnicima nudi jednostavno i
intuitivno sučelje s mogućnošću podešavanja nekoliko opcija kako bi se utjecalo na
konačni rezultat usporedbe. Zajednica korisnika takoĎer može svojevoljno mijenjati
program i nadograĎivati ga za svoje potrebe, pošto Sherlock potpada pod otvoreni
kod.
11
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
3.3. Sustav MOSS
Sustav MOSS (engl. Measure of Software Similarity) [2] je javno dostupna webusluga koja takoĎer zahtijeva registraciju korisnika. Koristi se već cijeli niz godina kao
potpora računarskim kolegijima prilikom usporedbe studentskih radova. Ono po čemu
se MOSS izdvaja od ostalih sustava je pozadinska logika analize tekstova. Koriste se
unaprijed izračunati k-grami izvornog teksta i njihovi sažeci. Izračunate vrijednosti se
potom grupiraju u tzv. prozore (engl. windows), nakon čega se odabire odreĎen broj
najmanjih ili najvećih vrijednosti sažetaka koji se s velikom pouzdanošću smatraju
reprezentativnim za taj izvorni tekst. Daljnje usporeĎivanje se obavlja traženjem tih
vrijednosti sažetaka u skupu sažetaka drugog izvornog teksta. Brzina i učinkovitost
ovakvog načina usporeĎivanja leži u reduciranju broja sažetaka koji se usporeĎuju,
naspram točnijeg, ali znatno sporijeg usporeĎivanja svih vrijednosti. MOSS takoĎer
trenutno nudi podršku za najveći broj programskih jezika.
3.4. Aplikacija SID
Aplikacija SID (engl. Software Integrity Detection) [9] je još jedna aplikacija čija je
prvotna i jedina korisna namjena bila usporedba sličnosti genoma koristeći izračune
temeljene na Kolmogorovoj kompleksnosti (engl. Kolmogorov Complexity) Error!
Reference source not found.. Sustav koristi kompleksne matematičke izračune čija
podloga leži u teoriji informacije. Ukratko, ako se stvaranje bilo kojeg znakovnog niza,
pa tako i izvornog teksta programa može automatizirati nekim algoritmom ili
programom, tada je Kolmogorova kompleksnost upravo složenost tog algoritma. U
ovom slučaju se ne usporeĎuju izvorni tekstovi programa, već složenosti "programa"
koji ih stvaraju. Aplikacija nije pretjerano upotrebljiva za automatizirano usporeĎivanje
izvornih tekstova programa zbog iznimne sporosti obrade podataka te povremenom
nedojavljivanju rezultata.
3.5. Aplikacija SIM
Aplikacija SIM (engl. Software and text similarity tester) [11] služi za otkrivanje
potencijalno dupliciranih dijelova izvornih tekstova programa u velikim programskim
projektima, kao i za otkrivanje plagijata u programskim, edukacijskim i ostalim
projektima. Kod detekcije plagijata algoritam usporedbe se svodi na odreĎivanje
sličnosti rezultata leksičke analize izvornih tekstova programa. Nad izvornim tekstom
programa izgraĎuje se lista tokena, uz prethodnu normalizaciju programa i brisanje
nezanimljivih elemenata. To podrazumijeva zamjenu svih identifikatora jednim
generičkim nazivom, brisanje jednolinijskih i višelinijskih komentara, itd. Usporedba
započinje proizvoljnim odabirom duljine niza tokena (autori preporučaju da se ta
vrijednost postavi na 24), čije se pojavljivanje zatim pokušava pronaći unutar drugog
teksta. U većini slučajeva se pretpostavljena vrijednost pokazala idealnom za
eliminiranje šuma (uparivanja prekratkih nizova koji se ne mogu smatrati plagijatom).
TakoĎer se uspješno suzbija nedojavljivanje sličnosti koje bi mogao uzrokovati
predugačak niz.
12
Pregled i usporedba postojećih sustava za detekciju plagijata
3.6. Sustav CodeMatch
Sustav CodeMatch [12] je komercijalni sustav za detekciju plagijata meĎu izvornim
tekstovima programa za kojeg autori tvrde da posjeduje superiornije značajke rada i
pozadinskog algoritma, no zbog cijene provedbe usporedbe tu tvrdnju nije moguće
ispitati na većem broju izvornih programa. Sustav CodeMatch sadrži velik broj
samostalnih alata koji imaju specijaliziranu namjenu poput traženja dupliciranih
odsječaka izvornog teksta programa unutar iste datoteke, traženje identičnih dijelova
teksta, itd. Detalji pozadinskih algoritama i posebnosti implementacije nisu javno
dostupni.
3.7. Usporedba znaĉajki sustava za detekciju plagijata
Iz prethodnih opisa vidljivo je da su pozadinski algoritmi i podrška za odreĎene
programske jezike specifični za svaki pojedini sustav i aplikaciju. Isto tako vrijedi i za
uvjete koje je potrebno zadovoljiti kako bi se pojedina aplikacija mogla pokrenuti ili
kako bi se mogli spojiti na sustav za detekciju plagijata. Za pretpostaviti je da će neke
usporedbe sličnosti biti brže, lakše za korištenje ili intuitivnije u analizi rezultata. Kako
bi se dobila bolja slika sličnosti i razlika, prikazane su sve važnije implementacijske
značajke opisanih sustava za detekciju plagijata u Tablica 3.1.
Osim implementacijskih detalja iznimno je važno odrediti i usporediti uspješnost
navedenih sustava i aplikacija. U nastavku slijedi obrada rezultata otkrivanja sličnosti
navedenih sustava na temelju unaprijed definiranih arhiva izvornih tekstova
programa, te odreĎivanje pouzdanosti dobivenih rezultata u odnosu na ručno
otkrivanje sličnosti.
13
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
Tablica 3.1 Usporedba značajki sustava za detekciju plagijata
JPlag
korišten od
1997
Sherlock
1994
komercijalna
upotreba
iznad 1MB
zasebni GUI
Web-aplikacija
Web-aplikacija
zasebni GUI
JDK1.4 ili više
Skripta za UNIX
ili Windows
Webpreglednik
/
ID i e-mail
ID i e-mail
lokalno izvoĎenje
Arhiva ili
pojedinačno
zip datoteka
s projektima
brz
spor
Arhiva ili
pojedinačno
brzina opada
veličinom
skupa za
usporedbu
besplatno
otvoreni kod
vrsta
suĉelja
zasebni GUI
zahtjevi
izvoĊenja
Webpreglednik,
JRE1.5 ili više
sigurnost
ID i e-mail
format
rezultata
HTML prikaz
sličnih
fragmenata
parova
metrika
sliĉnosti
pozadinski
algoritam
√
• postotci
• upareni
tokeni
GST
2005
besplatno, uz
korisnički
račun
besplatno, uz
korisnički
račun
umjereno brz
2003
besplatno, uz
korisnički račun
uvjeti
korištenja
brzina
CodeMatch
• Java
• C++
•C
• običan tekst
podržani
jezici
Arhiva ili
pojedinačno
1994
• Java
• C#
•C
• C++
• Python
• Visual Basic
• Javascript
• FORTRAN
• Haskell
• Lisp
• Scheme
• Pascal
• Perl
• Verilog
• Modula2
• Matlab
• Verilog
• VHDL
• običan tekst
SID
• BASIC
•C
• C++
• C#
• Delphi
• Flash
ActionScript
• Java
• JavaScript
• MASM
• Pascal
• Perl
• PHP
• PowerBuilder
• Ruby
• SQL
• Verilog
• VHDL
• Java
• C#
•C
• C++
• Scheme
• običan tekst
predaje
format
MOSS
• Java
•C
• C++
• običan tekst
lokalno
izvoĎenje
Arhiva ili
pojedinačno
brzina opada
veličinom
skupa za
usporedbu
Interaktivni
dijalog za
usporeĎivanje
sličnosti
i ispis rezultata
√
• postotci
• upareni tokeni
Uparivanje
tokena i nizova
HTML i
tekstualni
prikaz
sličnih
fragmenata
√
• postotci
• upareni tokeni
• uparene linije
winnowing
HTML prikaz
HTML i tablični
prikaz
sličnih
fragmenata
√
/
• postotci
Kolmogorova
kompleksnost
• postotci
• uparene linije
Uparivanje
znakovnih nizova
3.8. Usporedba uĉinkovitosti otkrivanja sliĉnosti
postojećih sustava
Visok postotak sličnosti neka dva izvorna teksta programa može biti uzrokovan
jednom od sljedećih stavki:
14
Pregled i usporedba postojećih sustava za detekciju plagijata






zajedničkim korištenjem izvornog teksta programa trećeg izvora,
korištenjem alata za generiranje komentara i predložaka,
uporabom čestih algoritama opće namjene,
izmjenom vlastitog izvornog teksta programa (isti autor)
korištenjem čestih imena identifikatora i varijabli (i, j, counter, broj, itd.)
plagijanjem.
Potrebno je moći razlikovati uzrok te sličnosti te reagirati samo u slučaju konkretnog
plagiranja. Za potrebe ispitivanja postojećih sustava za otkrivanje sličnosti odabrane
su tri arhive studentskih programskih rješenja različitih zadataka te je nad njima
provedena ručna i automatska provjera sličnosti. Radi se o laboratorijskim vježbama
kolegija Operacijski sustavi I akademskih godina 2004/2005 i 2005/2006. Sve tri
arhive sadrže oko 100 izvornih tekstova programa, prosječne duljine od otprilike 90
linija teksta.
Struktura arhiva je inicijalno bila definirana korijenskim direktorijem unutar kojeg se
nalaze poddirektoriji čija imena odgovaraju studentskim pristupnim imenima za
računalo pinus, dok su imena programskih rješenja potpuno proizvoljna. Ovakva
struktura nije bila pogodna za svaku aplikaciju te su bile potrebne prilagodbe opisane
uz rezultate svake od aplikacija. Od prethodno navedenih aplikacija, otkrivanje
sličnosti je odraĎeno pomoću aplikacije Sherlock te sustava MOSS, JPlag i
evaluacijske kopije sustava CodeMatch.
3.8.1.Detekcija plagijata aplikacijom Sherlock
Iako je moguće pokrenuti aplikaciju Sherlock u okviru sustava BOSS na vlastitom
poslužitelju te na njemu omogućiti otkrivanje sličnosti za velik broj korisnika, za
potrebe ispitivanja je korištena samostalna konzolna aplikacija Sherlock. Potrebno je
datoteku sherlock.c prevesti pomoću naredbe gcc:
[abaotic@meneldil ~]$ gcc sherlock.c -o sher
Usporedba se pokreće na sljedeći način:
[abaotic@meneldil ~]$ ./sher os45_2/OS10405lab2_/* >
rezultat.txt
U datoteci rezultat.txt se nalaze rezultati usporedbe svih datoteka u formatu:
prvaDatoteka and drugaDatoteka: postotak
Sherlock dozvoljava nekoliko postavki prilikom pokretanja usporedbe koje su
navedene u nastavku.


-t threshold; Ovim parametrom se definira prag, tj. minimalna sličnost datoteka
u postocima ispod koje se podudaranje ne dojavljuje. Podrazumijevana vrijednost
ovog argumenta je 20 ukoliko se eksplicitno ne navede prilikom pokretanja programa.
-z zerobits; Ovim parametrom se definira razlučivost usporedbe. Veći broj povlači
manje temeljitu ali bržu usporedbu, dok manji broj daje vjerodostojniji rezultat i dulje
izvoĎenje programa. TakoĎer, u ovom slučaju bi i manja promjena u izvornom tekstu
mogla “prevariti“ program. Podrazumijevana vrijednost ovog parametra je 4 ukoliko se
eksplicitno ne navede prilikom pokretanja programa, s preporučenim rasponom od 0
do 31.
15
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA


-n number_of_words; Ovim parametrom se definira broj riječi koje zajedno čine
digitalni potpis. Ovo takoĎer utječe na razlučivost usporedbe identično kao i
parametar –z. Podrazumijevana vrijednost ovog parametra je 3, ukoliko se
eksplicitno ne navede prilikom pokretanja programa.
-o outfile; Ovim parametrom se definira izlazna datoteka za rezultat usporedbe.
Ako se ne navede prilikom pokretanja u konzoli, tada će ispis rezultata takoĎer biti
unutar konzole što je u većini slučajeva nepraktično i nepregledno. Druga opcija je
preusmjeriti izlaz u neku datoteku kako je prikazano u opisu pokretanja naredbe
sher.
Složenost obavljanja usporedbe je N2 jer se svaka datoteka usporeĎuje sa svakom
drugom. Prijavljena sličnost od 100% ne tvrdi da su dvije datoteke identične, već
vjerojatno jako slične jer pri usporedbi digitalnih potpisa dvaju datoteka se ne koristi
potpuni skup, već nasumično odabrani podskup svih potpisa. TakoĎer, kao što će
rezultati pokazati, rezultat od otprilike 80% ponekad u stvarnosti označava dvije
apsolutno identične datoteke.
Kako je izlaz usporedbe relativno nečitljiv kad se radi o konzolnoj aplikaciji, razvijena
je pomoćna java aplikacija koja obraĎuje dobivene podatke te stvara dvije dodatne
datoteke s boljim prikazom podataka. Slika 3.1 nudi prikaz glavnog razreda koji
sadrži logiku za obradu rezultata.
Program stvara dvije vrste izvještaja: jedan u kojem su rezultati usporedbe grupirani
po postotku kojim su ocijenjeni te drugi koji za svakog studenta definira lanac
povezanih studenata u padajućem trendu po ocjeni sličnosti njihovih programa. Nad
sve tri arhive izvornih tekstova programa je izvršena naredba s istim parametrima,
konkretno:
[abaotic@meneldil ~]$ ../sherlock -z 2 -n 3 *.*> os45_5.txt
Dvije od tri arhive su predane programu nepromijenjene u bilo kojem smislu, dok su u
trećoj ciljano odabrana dva studenta te je nad njihovim rješenjima postupno
načinjeno 5 izmjena:





dodavanje/brisanje komentara,
mijenjanje imena identifikatora i procedura,
izmjena lokacija varijabli i procedura unutar datoteke,
kombiniranje procedura i naredbi te
izmjena naredbi kontrole tijeka programa
16
Pregled i usporedba postojećih sustava za detekciju plagijata
Slika 3.1 Metode za obradu rezultata usporedbe Sherlockom
U skladu s uputama autora, pretpostavljeni prag sličnosti ispod kojeg se podudarnosti
ne prijavljuju je 20%. Broj datoteka u kojima je otkrivena sličnost iznosa ≥20%
prikazan je u tablici 3.2.
Tablica 3.2 Rezultati određivanja sličnosti programom Sherlock
%
[20,30>
[30,40>
[40,50>
[50,60>
[60,70>
[70,80>
[80,90>
[90,100>
[100]
OS1 04/05 lab2 OS1 04/05 lab5 OS1 05/06 lab 5
23
15
75
4
4
40
1
3
28
1
4
10
1
0
12
1
1
5
1
1
11
0
1
2
0
0
11
Detaljnim pregledavanjem najveće sličnosti u slučaju prve arhive gdje se radilo o
dvije datoteke za koje je Sherlock prijavio sličnost od 81%, utvrĎeno je da se radi o
pouzdanim plagijatima. No, postotak nije reprezentativan stvarnom stanju.
Objektivno, realna ocjena sličnosti bi trebala biti 100%. Radi ilustracije, nad
datotekama je obavljena usporedba ugraĎenim alatom diff, čiji izlaz je preusmjeren
kao ulaz za naredbu wc. Konkretno, cilj je bio prebrojati različite riječi te dvije
datoteke.
17
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
[abaotic@meneldil ~]$ diff os45_2/ jr38204.c os45_2/mm38525.c
48d47
<
//oslobadjanje zauzete memorije
55c54
<
//zauzimanje zajdnicke memorije
-->
Razlika dviju datoteka su dvije linije komentara koje jedna sadrži, a druga ne.
[abaotic@meneldil ~]$ diff os45_2/jr38204.c os45_2/mm38525.c |
wc
6
12
90
Broj riječi koje su različite za ove dvije datoteke je 6, dok su u svim ostalim
elementima apsolutno identične. Za pretpostaviti je da komentari ne smiju utjecati na
otkrivanje sličnosti izvornih tekstova programa pošto ne predstavljaju nikakav aktivni
dio programa. Već nakon ovog primjera se može primijetiti osjetljivost na umetanje
teksta ili potencijalno loš odabir digitalnih potpisa unutar teksta na koje pouzdano ne
možemo utjecati.
Provjere radi, prva sljedeća najveća sličnost od 72% se odnosi na isto pouzdano
plagirane datoteke, s time da iako naredba wc vraća veći broj različitih riječi, kontekst
“riječ“ se ovdje doslovno odnosi na leksičku jedinku odvojenu dodatnom prazninom ili
novim retkom od bilo koje druge.
[abaotic@meneldil ~]$ diff os45_2/mm39688.c os45_2/am38966.c |
wc
50
199
1206
Za drugu arhivu su takoĎer prvo provjerene najveće sličnosti [80,100>%. Diff i wc
daju sljedeći rezultat:
[abaotic@meneldil ~]$ diff os45_5/ mj38269.c os45_5mb39052.c
57c57
<
puts(tocan_rez);
-->
//
puts(tocan_rez);
[abaotic@meneldil ~]$ diff os45_5/mj38269.c os45_5/mb39052.c
|wc
4
7
56
Dodatnom ručnom usporedbom je potvrĎeno da su datoteke apsolutno identične.
Drugi skup datoteka s najvećom sljedećom sličnosti diže broj različitih riječi na 16,
opet u komentarima i dodatnim razmacima i novim recima.
Na temelju do sada obraĎenih podataka pouzdano znamo da je ocjena koju Sherlock
pridijeli paru datoteka preslaba, tj. da bi ljudski ispitivač vrlo vjerojatno odmah
prepoznao plagijat bez imalo dvojbe o istinitosti. Kako autori dodatno tvrde da čak i
ako se neki par datoteka procijeni na 100 postotnu sličnost, da je to samo
vjerojatnost, onda se nameće potreba provjeriti datoteke za koje to je slučaj.
Dodatno, slijedi i provjera progresivno plagiranih datoteka s ciljem točnog odreĎivanja
na koje metode plagiranja je Sherlock osjetljiv.
18
Pregled i usporedba postojećih sustava za detekciju plagijata
U trećoj skupini je provjerena prvo 100% ocjena sličnosti, čiji su sudionici prikazani u
tablici 3.3.
Tablica 3.3 Grupacije sličnosti po osobama
%
100
100
100
100
100
100
100
100
100
100
osoba1
dg39914
dg39914
dg39914
ds38045
ds38045
eh39292
eh39292
ib39262
il39976
sk40046
osoba2
ds38045
sk40046
vk40723
sk40046
vk40723
ib39262
pr39084
pr39084
tk38463
vk40723
Vidljivo je da je Sherlock izdvojio tri grupe plagijatora, od kojih prvu grupu čine {
dg39914, ds38045, sk40046 i vk40723}, drugu {eh39292, ib39262 i pr39084} i
treću {il39976 i tk38463}. Ručnim usporeĎivanjem njihovih izvornih tekstova
programa za prvu skupinu otkriveno je da se radi o potpuno identičnim datotekama,
što je i diff potvrdio ne otkrivši ikakvu razliku u datotekama. U drugoj skupini je jedina
razlika bila u dva prazna retka koji su bili prisutni u jednom od tri izvorna teksta.
Preostala dva teksta treće skupine su takoĎer bili u potpunosti isti.
Kako pouzdano znamo da postoje plagirani izvorni tekstovi i način na koji su nastali,
slijedi daljnja analiza ocjene aplikacije Sherlock iza te datoteke. U ovom slučaju nam
je od veće koristi sortiranje rezultata po korisnicima, a ne postotku. Tablica 3.4.
prikazuje odnos meĎu verzijama plagijata izvornog teksta te kako ih Sherlock
ocjenjuje.
Tablica 3.4 Sličnosti među verzijama istog izvornog teksta (Sherlock)
ab39352_
ab39352_1
ab39352_2
ab39352_3
ab39352_4
ab39352_
ab39352_1
ab39352_2
ab39352_3
ab39352_4
100
69
54
51
47
af39592_
69
100
79
72
68
af39592_1
54
79
100
91
84
af39592_2
51
72
91
100
90
af39592_3
47
68
84
90
100
af39592_4
af39592_
af39592_1
af39592_2
af39592_3
af39592_4
100
50
49
43
41
50
100
28
27
25
49
28
100
85
83
43
27
85
100
98
41
25
83
98
100
19
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
Datoteke bez sufiksa iza '_' predstavljaju originalni izvorni tekst programa koji je
predan u okviru provjere. Promjene su obavljene redoslijedom kojim su navedene u
nastavku:
1. proizvoljna promjena podskupa identifikatora,
2. dodavanje, izmjena i brisanje komentara,
3. izmjena redoslijeda deklaracija, dodavanje procedura i naredbi koje ne rade
ništa,
4. izmjena naredbi kontrole tijeka programa.
Na temelju podataka iz gornje tablice vidljivo je da je Sherlock najosjetljiviji na
promjenu identifikatora. Ovo se može objasniti činjenicom da se Sherlockovo
računanje digitalnih potpisa odnosi na čisti tekst, a ne na pročišćenu verziju koju
bismo imali nakon obavljene leksičke analize. Drugi najlakši način kako prevariti
otkrivanje sličnosti aplikacije Sherlock su komentari. Komentara može biti iznimno
puno te očito stvaraju značajan šum pri otkrivanju sličnosti. Zadnje dvije izmjene očito
imaju manji utjecaj na izračun sličnosti. To se može objasniti time što neovisno gdje
se neki programski odsječak nalazi, svejedno će po nekom kriteriju biti uključen u
digitalni potpis. Zadnja vrsta izmjene bi mogla biti značajna u hipotetskoj situaciji gdje
ima iznimno puno petlji, koje bi se mogle zamijeniti pozivajućim procedurama.
PronaĎen je jedan zanimljiv primjer kod proučavanja izvornih tekstova nastalih od
af39592_, a to je značajnija sličnost od 66% s ll40615 te 51% s mo39897. Nakon
meĎusobnog usporeĎivanja tih dviju datoteka, dobivena je sličnost od 49%. No
nakon ručne usporedbe tekstova otkriveno je da im je struktura preslična, imena
identifikatora su identična i specifična, a tek manje naredbe su izdvojene kao
pozivajuće metode. Može se zaključiti da se radi o plagijatu, srodnom af39592_.
No, ovdje je inovativnost pojedinca bila originalna te je demonstriran još jedan
problem u otkrivanju sličnosti. OdreĎeni broj naredbi je dobio prefiks, infiks ili sufiks
od skupa znakova koji se ne mogu protumačiti kao leksički ili sintaksno ispravni,
poput :
if ((ulazniPajp[1] dhfdh= open("ulazniPajp", O_WRONLY)) == -1)
{...
else printf(ydxfh"NEISPRAVNO, tocan odgovor je %d.\n",
tocanOdgovor);...
execlp("rm", "rmdhf", "ulazniPajp", "izlazniPajp", NULL);...
zad[strydhlen(zad)] = '\n';...
Ukoliko se u okviru otkrivanja sličnosti ne obavlja i prevoĎenje programa, bez ručne
provjere sličnosti ovakvi izvorni tekstovi bi bili iznimno teško otkriveni.
3.8.2.Detekcija plagijata sustavom MOSS
Usporedba sličnosti pomoću sustava MOSS se svodi na pokretanje perl skripte
koja će odabrane parametre i sve datoteke poslati na udaljeni poslužitelj te po
provedenoj usporedbi natrag vratiti jedinstvenu poveznicu (engl. URL) na kojem se
mogu vidjeti rezultati usporedbe. Skriptu je potrebno zatražiti te po potvrdi ju autori
automatizirano šalju e-mailom natrag, sa jedinstvenim korisničkim brojem unutar nje.
20
Pregled i usporedba postojećih sustava za detekciju plagijata
Prilikom pokretanja usporedbe izvornih tekstova programa sustav MOSS podržava
nekoliko opcija navedenih u nastavku.






-l language; Ovim parametrom se definira jezik usporedbe ("c", "cc",
"java", "ml", "pascal", "ada", "lisp", "scheme", "haskell",
"fortran", "ascii", "vhdl", "perl", "matlab", "python", "mips",
"prolog",
"spice",
"vb",
"csharp",
"modula2",
"a8086",
"javascript", "plsql").
-d directory; Ovim parametrom se definira lokacija skupa datoteka za usporedbu.
-b basefile; Ovim parametrom se definira datoteka s izvornim tekstom programa
kojeg treba izuzeti iz usporedbe.
-m maxoccur; Ovim parametrom se definira broj datoteka u kojima se smije pojaviti
neki programski odsječak prije no što ga treba isključiti iz procesa usporedbe.
Pretpostavlja se da je često korišten odsječak izvornog teksta programa pravilo ili
neizbježna podudarnost koju se ne može smatrati plagijatom. Što je brojka veća,
otkrivanje sličnosti je manje osjetljivo. Manje vrijednosti pomažu u otkrivanju stvarno
značajnih sličnosti.
-c comment; Ovim parametrom se definira komentar pri definiranju usporedbe.
-x experimental; Ovim parametrom se datoteke šalju na eksperimentalni, manje
stabilni poslužitelj koji podržava nove opcije i funkcionalnosti.
Pokretanje skripte ne zahtijeva nikakve instalacijske procedure. Pošto je skripta
pisana u perlu, potrebno je samo ažurirati prvu liniju skripte i postaviti put do
naredbe perl. Slanje datoteka na poslužitelj se obavlja s:
[abaotic@meneldil ~]$ perl ./moss os565/*.c
Checking files . . .
OK
Uploading os565/ab01234_1.c ...done.
Uploading os565/ab01234_2.c ...done.
...
Uploading os565/zs56789.c ...done.
Query submitted. Waiting for the server's response.
http://moss.stanford.edu/results/123456789
[abaotic@meneldil ~]$
Čim se sa poslužitelja dobije odgovor u obliku poveznice, rezultati usporedbe su
spremni za daljnju obradu. Format u kojem su rezultati objavljeni je u obliku:
Datoteka1 (%1) Datoteka2 (%2) N
Vidljivo je da sustav MOSS na temelju broja linija N koje datoteke dijele odreĎuje
postotak sličnosti, ali za svaku datoteku posebno. Rezultati ne djeluju organizirano
niti sortirano ni po kojem očitom algoritmu, tako da je potrebna daljnja obrada. Podaci
prikazani u tablici 3.5. su obraĎeni u programu Microsoft Excel 2010, redoslijedom
sortiranja po broju zajedničkih linija, zatim po postocima, pa abecedno.
Prilikom stvaranja izvještaja s rezultatima sustav MOSS inicijalno ograničava svoj
izlaz na 250 linija, dok je zbog preglednosti u tablici prikazano samo desetak
rezultata iz svake arhive. Zanimljiva je činjenica da ne postoji par datoteka za koje
sustav MOSS daje ocjenu sličnosti od 100%, ali isto tako nema drastične diskretne
pomake u ocjenjivanju već se primjećuje puno veća razlučivost rezultata. Kao
21
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
provjera vjerodostojnosti rezultata, nasumično je pregledano nekoliko parova
datoteka.
Tablica 3.5 Rezultati usporedbe sličnosti pomoću sustava MOSS
osoba1
%
osoba2
%
N
fr2393.c
87%
mr39083.c
79%
80
ad39143.c
97%
pg40172.c
96%
79
am38966.c
77%
mm39688.c
81%
79
ad39143.c
95%
mm39954.c
96%
77
mm39954.c
99%
pg40172.c
97%
76
jr38204.c
99%
mm38525.c
99%
73
vv39333.c
70%
zb39372.c
64%
70
am37918.c
51%
dl39496.c
62%
69
mh40237.c
74%
mm39954.c
79%
66
mh40237.c
74%
pg40172.c
78%
66
%
N
osoba1
%
osoba2
id38727.c
94%
pf39505.c
97%
134
im40129.c
80%
mp40071.c
85%
109
gn39486.c
76%
ll39521.c
86%
90
is14498.c
99%
mv40000.c
99%
88
gs38965.c
93%
ts38205.c
93%
88
am39957.c
72%
mk40096.c
72%
87
em39900.c
90%
sr40340.c
89%
86
dj39788.c
82%
th40030.c
78%
76
bj39368.c
60%
nj40032.c
55%
76
em39900.c
74%
ma40333.c
49%
74
mb39052.c
96%
mj38269.c
96%
70
mv40000.c
81%
tp39916.c
59%
70
%
N
osoba1
%
ossoba2
ab39352_1.c
98%
ab39352_.c
98%
140
mm37868.c
97%
mn40240.c
97%
147
il39976.c
98%
tk38463.c
98%
135
ab39352_2.c
84%
ab39352_3.c
83%
132
ab39352_3.c
83%
ab39352_4.c
78%
132
ap40425.c
98%
sp40106.c
98%
130
dz41027.c
96%
il39976.c
96%
130
dz41027.c
96%
tk38463.c
96%
130
il39976.c
91%
mn40240.c
88%
127
mn40240.c
88%
tk38463.c
91%
127
il39976.c
91%
mm37868.c
87%
124
22
Pregled i usporedba postojećih sustava za detekciju plagijata
mm37868.c
87%
tk38463.c
91%
124
U prvoj arhivi prvo je odabran par datoteka s najvećim brojem zajedničkih linija,
fr2393.c i mr39083.c. Za prvu datoteku je sličnost ocijenjena s 87%, a za drugu s
79%. Ručnim pregledavanjem datoteka otkrivena je značajna sličnost, koja se
odokativno podudara s ocjenom sustava MOSS. Ima manjih odstupanja u
organizaciji naredbi te dosta razlika u količini komentara koji su očigledno imali velik
utjecaj na ocjenu sličnosti.
Sljedeće dvije datoteke ad39143.c i pg40172.c su ocijenjene s parom 97%-96%
sličnosti, a ručnom usporedbom je utvrĎeno da je ukupna razlika dvaju tekstova
sadržana u dva umetnuta prazna retka, imenu jedne varijable i izmjeni iz if-else
if u dva if odsječka. I ovdje se ocjena pokazala realnom.
Zadnja ručna usporedba iz prve skupine se odnosi na datoteke mm39954.c i
pg40172.c koje su ocijenjene sa 99%-97% sličnosti. Ovdje je ocjena sličnosti opet
potvrĎena ručnom provjerom. Razlika datoteka se sastojala u promjeni povratnog
tipa main metode iz int u void, čime je bila potrebna i dodatna povratna naredba
na kraju glavne metode. Zanimljivo je da izvoĎenje naredbe diff i wc nad ove dvije
datoteke daje poražavajuće rezultate:
[abaotic@meneldil os452]$ diff mm39954.c pg40172.c | wc
93
207
2284
Sherlock je ove dvije potvrĎeno identične datoteke ocijenio s nezanimljivih 28%.
Tablica 3.6. prikazuje ocjenu sličnosti sustava MOSS za pouzdano plagirane
datoteke.
Tablica 3.6 Sličnosti među verzijama istog izvornog teksta programa (MOSS)
ab39352_
ab39352_1
ab39352_2
ab39352_3
ab39352_4
ab39352_
ab39352_1
ab39352_2
ab39352_3
ab39352_4
98
98
64
43
38
af39592_
98
98
64
43
38
af39592_1
65
65
98
83
69
af39592_2
44
44
84
98
78
af39592_3
42
42
74
83
99
af39592_4
af39592_
af39592_1
af39592_2
af39592_3
af39592_4
98
98
98
51
51
98
98
76
51
51
98
76
98
51
51
51
51
51
98
98
51
51
51
98
98
Prva zanimljivost ove usporedbe je da su datoteke nakon usporedbe s njima samima
ocijenjene s 98%, iako bi ocjena trebala biti 100%. Autor sustava je ponudio
objašnjenje da MOSS ne pronalazi sve sličnosti, već velik postotak te da je za
očekivati da identični izvorni tekstovi budu ocijenjeni s 97%-98%. No čak i uz tu
23
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
nelogičnost, ocjena je i dalje pouzdano visoka. TakoĎer vidimo da promjene imena
procedura i varijabli neće utjecati na proces usporedbe.
Komentari nažalost poprilično utječu na ocjenu sličnosti, ali samo zbog ukupnog
broja linija u izvornom tekstu. Očito je da se u težinu ocjene mora uračunati i sam
broj zajedničkih linija.
Promjena organizacije samog teksta i njegovih dijelova ima opet manji utjecaj nego
što su komentari imali, što nam daje do znanja da je Moss neosjetljiv na premještanja
dijelova teksta. Konačno, daljnje promjene u vidu drugačijeg definiranja naredbi
kontrole tijeka programa isto nemaju značajniji utjecaj. Dodatna korisna karakteristike
sudstava MOSS je mogućnost izdvajanja očekivano sličnih programskih odsječaka.
U zadacima gdje se od studenata traži implementacija nekih specifičnih algoritama te
gdje znamo da se odreĎeno ponavljanje mora dogoditi, Moss unosi dozu korektnosti
ne uključujući takve odsječke u usporedbu. Isti efekt se postiže definicijom –b opcije
prilikom pokretanja skripte. Još samo treba primijetiti da ocjena sličnosti nije
simetrična, već ovisi o udjelu podudarajućih linija teksta u pojedinačnim datotekama.
3.8.3.Detekcija plagijata sustavom CodeMatch
Kako se radi o komercijalnom sustavu, tj. kolekciji aplikacija različitih namjena, od
predstavnika je zatražena evaluacijska kopija i maksimalni mogući broj licenci za
pokretanje usporedbe. Broj dodijeljenih licenci je bio dovoljan za jedno pokretanje
aplikacije CodeMatch, nad isključivo jednom arhivom izvornih tekstova programa.
Odabrana je treća arhiva, prvenstveno zbog pouzdano izmijenjenih izvornih tekstova
koji se koriste kao kontrolna podskupina.
CodeMatch je Windows aplikacija koja se pokreće lokalno, a svoje rezultate sprema
u lokalnu tekstualnu bazu podataka. Rezultati se tumače nakon generiranja izvještaja
u formatu html, takoĎer kroz aplikaciju. Pokretanjem aplikacije CodeMatch prvo se
nudi prozor s postavkama usporedbe (Slika 3.2).
Slika 3.2 Postavke usporedbe aplikacije CodeMatch
24
Pregled i usporedba postojećih sustava za detekciju plagijata
Da bismo dobili što detaljniju usporedbu, odabrani su svi elementi po kojima
CodeMatch može usporeĎivati te je odabran visok prag broja datoteka koje se
pojavljuju kao mogući parovi.
Rezultati usporedbe se sastoje od općenitog izvještaja s popisom korištenih
elemenata usporedbe, korištenog programskog jezika te liste sličnih izvornih tekstova
za svaku datoteku sortiranih po padajućoj vrijednosti postotka sličnosti. Kako je takav
pregled rezultata relativno nepraktičan, odreĎeni podskupovi rezultata su posebno
izdvojeni kako bi pokazali sličnosti i razlike s prethodno obraĎenim aplikacijama.
Iz treće arhive su prvo odabrani podskupovi identičnih datoteka različitih autora te je
u tablici 3.7 prikazana ocjena sličnosti koju je sustav CodeMatch odredio.
Tablica 3.7 Rezultati usporedbe sličnosti datoteka
%
File
%2
File2
100
100
100
100
dg39914.c
ds38045.c
sk40046.c
vk40723.c
100
100
100
80
eh39292.c
ib39262.c
pr39084.c
lg40141.c
93
90
84
83
tl40790.c
dm40378.c
tf38696.c
sn38757.c
100
100
99
92
il39976.c
tk38463.c
dz41027.c
mn40240.c
82
77
tt40554.c
zk40138.c
100
100
ap40425.c
sp40106.c
Rezultati dobiveni ovom aplikacijom su simetrični, što znači da neovisno o
usporeĎivanju datoteke A s datotekom B ili datoteke B s A, rezultat je uvijek isti. U
prvom stupcu se nalazi proširena skupina koju smo otkrili još kod otkrivanja sličnosti
s aplikacijom Sherlockom te prepoznajemo skupinu studenata {dg39914, ds38045,
sk40046 i vk40723}. I ovdje je ocjena sličnosti u potpunosti u skladu s realnom
situacijom, a to je da pouzdano znamo da se radi o 100%-tnim plagijatima.
U drugom stupcu prepoznajemo našu drugu skupinu plagijatora {eh39292, ib39262
i pr39084}, s kojima je prva sljedeća sličnost od 80%. Ručnim usporeĎivanjem
datoteka utvrĎeno je da je razlika u sadržaju 5 printf i 2 write naredbe.
Treća skupina potvrĎenih plagijata je takoĎer prisutna {il39976 i tk38463}, s još
dvije datoteke s visokom ocjenom sličnosti, koje je aplikacija Sherlock ocijenila sa
61%(99%) i 22%(92). Kod prvog nepodudaranja CodeMatch je uspješno ignorirao
brojne prazne linije i nekolicinu komentara, dok se u drugom nepodudaranju radilo o
još više umetnutih komentara. Aplikacija CodeMatch je te dvije datoteke meĎusobno
ocijenila s 87%, sustav MOSS s parom [89%,86%], a aplikacija Sherlock s 28%.
I zadnji par u tablici koji je označen kao 100% plagijat je kod sustava MOSS dobio
ocjenu [98%,98%] što je ekvivalent 100%, dok je kod aplikacije Sherlock ocijenjen s
57%.
25
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
Tablica 3.8 nam prikazuje kako aplikacija CodeMatch ocjenjuje sličnost postupno
mijenjanih datoteka istih autora.
Tablica 3.8 Sličnosti među verzijama istog izvornog teksta (CodeMatch)
ab39352_
ab39352_1
ab39352_2
ab39352_3
ab39352_4
af39592_
af39592_1
af39592_2
af39592_3
af39592_4
ab39352_
ab39352_1
ab39352_2
ab39352_3
ab39352_4
100
100
86
85
82
af39592_
100
100
86
85
82
af39592_1
86
86
100
96
84
af39592_2
85
85
96
100
87
af39592_3
82
82
84
87
100
af39592_4
100
100
99
86
86
82
99
100
87
87
62
86
87
100
100
62
86
87
100
100
100
100
82
62
62
Ovdje nema većih iznenaĎenja u odnosu na ono što bismo očekivali. Promjena
vrijednosti identifikatora nije imala nikakvog utjecaja, dodavanje i brisanje komentara
umjereno, ali proporcionalno broju izmjena, dok izmjene redoslijeda i organizacije,
kao i kontrole tijeka programa skoro pa uopće nisu utjecale na usporedbu. Za razliku
od sustava MOSS, ovdje se kao i kod aplikacije Sherlock usporedba datoteke s njom
samom ocjenjuje sa 100%. Dodatna zanimljivost koju CodeMatch nudi iz perspektive
sučelja je prozor sa informacijama o napredovanju usporedbe te očekivanom trajanju
iste. Za razliku od Sherlocka kojemu je za treću arhivu trebalo 0.039s, Moss čiji
posao je trajao 6.046s, CodeMatch je potrošio 4m i 33s na usporedbu 119 datoteka.
3.8.4.Detekcija plagijata sustavom JPlag
Kako bi se pokrenula usporedba izvornih tekstova programa pomoću JPlag, potrebno
je s dodijeljenim korisničkim računom pokrenuti Java Web Start aplikaciju. Autori u
pravilu odobravaju otvaranje korisničkih računa isključivo za nastavno osoblje, iako i
to ograničenje nije nemoguće zaobići.
Nakon pokretanja aplikacije i unosa korisničkih podataka, definiraju se detalji provjere
sličnosti (Slika 3.3). Čim se odabere slanje datoteka na poslužitelj, prikazuje se
prozor s detaljnim i korisnim informacijama o fazama obrade datoteka (Slika 3.4).
Jedna karakteristika koju sustav JPlag dijeli s aplikacijom CodeMatch je značajno
vrijeme usporedbe izvornih tekstova programa. Čim je usporedba gotova, u
unaprijede definiranom pretraživaču se otvara lokalno spremljena html stranica s
pregledno formatiranim izvještajem. Iako i aplikacija CodeMatch nudi histogramski
prikaz sličnosti za svaku datoteku, ovdje je to puno preglednije.
26
Pregled i usporedba postojećih sustava za detekciju plagijata
Slika 3.3 Definiranje nove provjere sličnosti
Slika 3.4 Faze obrade datoteka sustavnom JPlag
Različite grupe postotaka su označene različitim bojama kako bi ukazale na kritične
datoteke. Slika 3.5 prikazuje dio rezultata otkrivanja sličnosti u trećoj arhivi izvornih
tekstova programa. Vidljivo je da su pouzdano plagirane datoteke ispravno
grupirane, sa sličnim postocima kao i kod sudstava MOSS, ali ovdje je sličnost skoro
identičnih i potpuno identičnih datoteka ocijenjena sa 100%. I prethodno otkrivene
skupine plagijatora su i ovdje označene, s time da su u pripadne grupe uključeni i
drugi autori, čije su datoteke u svim ostalim aplikacijama bile ocijenjene slabije.
Teško je odrediti je li to dobro ili ne. S jedne strane imamo informaciju da potencijalno
postoje dodatni plagijati, no isto tako ovakav rezultat usporedbe može biti uzrokovan
jednostavnošću i opsegom zadatka. Ovdje vidimo očitu razliku u odnosu na sustav
MOSS koji je bio u stanju razdvojiti često ponavljane programske odsječke te ih
označiti kao pravilo, a ne prepisivanje. Konkretno, za takve slučajeve sustav MOSS
27
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
je vratio kompenziranih 100% samo kada se radilo o nevjerojatnoj situaciji da su i svi
identifikatori i konstante bile identične.
Slika 3.5 Rezultati otkrivanja sličnosti sustavom JPlag
Odabirom bilo koje datoteke iz proizvoljne liste, otvara se stranica s usporednim
prikazom dviju datoteka te označenim dijelovima teksta koji se podudaraju. Jedan
zanimljiv primjer sličnosti od 99.2%, očito ne uzimajući obzir imena identifikatora, je
bio prouzročen dodatnom naredbom break koju prva datoteka nije imala. Dakle
postoji osjetljivost i na suptilne razlike. Daljnjom provjerom rezultata nisu otkrivene
lažne pozitivne ocjene sličnosti.
3.8.5.Ruĉno odreĊivanje sliĉnosti odabranih izvornih tekstova
programa
Ne postoji pouzdanija metoda za odreĎivanje sličnosti izvornih tekstova programa od
ručnog pregledavanja i usporeĎivanja datoteka. Iako takav način traženja plagijata
nudi točnost, nemoguće je očekivati da jedna ili nekoliko osoba pregledava skup od
600 ili više izvornih tekstova. TakoĎer, poprilično je teško od ljudskog ispitivača
očekivati procjenu sličnosti u obliku postotka, pa će se rezultati označavati
elementima iz skupa vrijednosti [0, ½, 1], pri čemu ocjena 0 znači da par datoteka
nije sličan sadržajem, ½ da se ne može odrediti razlog visoke sličnosti ili sličnost nije
dovoljno visoka te 1 ukoliko se sigurno radi o plagijatu.
28
Pregled i usporedba postojećih sustava za detekciju plagijata
Arhive koje su odabrane za potrebe ispitivanja su redom veličine 100 datoteka, od
kojih svaka datoteka ima otprilike 100 linija teksta. Kako bi se načinila najtočnija
moguća usporedba sa sustavima za detekciju plagijata, odreĎen je podskup
nasumično odabranih datoteka te je nad njima odraĎena ručna usporedba. Datoteke
su redom odabrane iz treće arhive gdje se već nalaze i umetnuti plagijati, za koje će
se koristiti naziv originalne datoteke bez numeričkog sufiksa, a sadržajem datoteka s
najvećim brojem izmjena. U najgorem slučaju ispitivač koji bi ručno tražio plagijate
unutar arhive od 30 datoteka morao bi obaviti
usporedbi. No kako se
isti programski tekst redovito “reciklira“ meĎu širom populacijom studenata, pojavljuju
se grupe sličnih tekstova, čime se detekcija plagijata svodi na svojevrsno sortiranje
datoteka u zasebne grupe.
Ukupno je obavljeno preko 300 pojedinačnih usporedbi uz uvjet da se izuzmu sve
kombinacije za koje niti jedan od do sada obraĎenih sustava nije dojavio barem 1%
sličnosti. Tablica 3.9 prikazuje 20/45 kombinacija datoteka za koje je ručnom
provjerom utvrĎeno da su plagijati te im je dana ocjena 1.
Tablica 3.9 Rezultati ručne usporedbe - potvrđeni plagijati
Osoba1
ab39352_1.c
af39592_1.c
af39592_3.c
ap40425.c
eh39292.c
eh39292.c
ib39262.c
dz41027.c
af39592_1.c
af39592_2.c
mn40240.c
ah40545.c
ah40945.c
dz41027.c
it38671.c
it38671.c
ab39352_2.c
ab39352_3.c
af39592_1.c
af39592_2.c
Osoba2
ab39352_.c
af39592_2.c
af39592_4.c
sp40106.c
ib39262.c
pr39084.c
pr39084.c
tk38463.c
ll40615.c
ll40615.c
tk38463.c
dh40591.c
dh40591.c
mn40240.c
ll40615.c
rd40025.c
ab39352_3.c
ab39352_4.c
it38671.c
it38671.c
Ocjena
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Moss
98
98
98
98
98
98
98
96
93
93
91
90
90
89
86
85
84
83
81
81
Sherlock
72
18
100
64
100
100
100
62
20
0
21
2
57
29
9
1
100
94
3
0
JPlag
100
100
100
100
100
100
100
86
92
92
100
80
82
86
100
92
100
91
92
92
Codematch
100
62
100
100
100
100
100
99
52
86
92
26
60
87
51
47
96
87
44
48
Rezultati su sortirani u odnosu na padajuću ocjenu sličnosti sustava MOSS te potom
abecednim redom. Ako promotrimo rezultate, može se zaključiti da je aplikacija
Sherlock pomalo kaotična i očito poprilično neprecizna u velikom broju slučajeva.
Aplikacije CodeMatch i JPlag ocjenjuju sličnost u malo širim rasponima od sustava
MOSS.
Druga skupina datoteka (Tablica 3.10) je ocijenjena sa 0.5 jer nije bilo moguće
potvrditi niti opovrgnuti da se doista radi o plagijatu. Uzrok tome je kratak programski
zadatak, strogo definirane strukture i tijeka izvoĎenja. Raspon ocjena koje Moss daje
datotekama je 20%-70%, JPlag 0%-70%, CodeMatch 20%-50% te Sherlock 0%29
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
10%. Jedino kod Sherlocka navedeni raspon ne nosi nikakvu težinu pošto i za
pouzdane plagijate ponekad ocjenjuje s niskim postotkom sličnosti.
Tablica 3.10 Rezultati ručne usporedbe - nepotvrđeni plagijati
Osoba1
af39592_1.c
af39592_2.c
gb40626.c
gb40626.c
gb40626.c
af39592_2.c
af39592_3.c
af39592_4.c
ak37635.c
gb40626.c
ak37635.c
ak37635.c
af39592_1.c
af39592_2.c
af39592_3.c
af39592_4.c
ah40545.c
ak37635.c
ah40545.c
ak37635.c
Osoba2
rd40025.c
rd40025.c
it38671.c
ll40615.c
mp39510.c
gb40626.c
gb40626.c
gb40626.c
rd40025.c
rd40025.c
gb40626.c
it38671.c
ak37635.c
ak37635.c
ak37635.c
ak37635.c
rd40025.c
mp39510.c
it38671.c
ll40615.c
Ocjena
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
0,5
Moss
67
67
57
48
47
46
46
46
34
33
32
26
25
25
25
25
22
22
17
17
Sherlock
10
8
0
0
0
0
0
0
0
0
5
0
0
0
0
0
0
0
0
0
JPlag
58
58
0
0
0
68
66
65
0
0
0
0
0
0
0
0
0
0
0
0
Codematch
38
44
41
41
37
38
38
38
25
36
32
28
33
30
31
31
36
30
39
30
Preostala 241 kombinacija datoteka je ocijenjena s nulom jer nije pronaĎen dovoljno
velik broj sličnosti. Tablica 3.11 prikazuje zadnjih 10 kombinacija datoteka. Sustavi
Moss i JPlag datoteke koje ne smatraju plagijatima uopće ne uključuju u rezultate, pa
je ovdje simbolično unesena ocjena 0. Aplikacija Sherlock je i dalje nepostojana u
ocjenjivanju, dok se za CodeMatch da zaključiti da se ocjene ispod 30% mogu sa
sigurnošću zanemariti. Tijekom ručnog usporeĎivanja izvornih tekstova nisu
pronaĎene lažno pozitivno ocijenjene datoteke, dok je Sherlock opet primjer kako je
moguće pronaći lažno negativno ocijenjene datoteke.
Tablica 3.11 Rezultati ručne usporedbe - neplagirani izvorni tekstovi
Osoba1
mn40240.c
mp39510.c
mp39510.c
mp39510.c
pr39084.c
pr39084.c
pr39084.c
rd40025.c
rd40025.c
sh39708.c
Osoba2
sh39708.c
pr39084.c
sh39708.c
tk38463.c
rd40025.c
sh39708.c
tk38463.c
sh39708.c
tk38463.c
tk38463.c
Ocjena
0
0
0
0
0
0
0
0
0
0
Moss
0
0
0
0
0
0
0
0
0
0
Sherlock
2
2
3
2
1
5
4
1
1
5
JPlag
0
0
0
0
0
0
0
0
0
0
Codematch
26
25
23
31
27
29
28
23
27
27
30
Analiza izvornih tekstova programa
4. Analiza izvornih tekstova programa
Analiza izvornog teksta programa kod detekcije plagijata se uglavnom svodi na
normalizaciju teksta te eventualno jednostavnu leksičku analizu koja je u stanju
eliminirati nezanimljive dijelove teksta poput identifikatora. Slijedi kratak opis faza
analize izvornih tekstova programa i dostupnih specijaliziranih alata koji ih obavljaju.
4.1. Leksiĉka analiza
Leksička analiza je jedna od osnovnih operacija tijekom prevoĎenja izvornog
programa u izvršni. To je proces raščlanjivanja znakova izvornog teksta programa, s
ciljem da se stvori izlaz u obliku niza simbola koji se zovu leksičke jedinke (engl.
lexical tokens). Analizu je moguće obaviti samostalnim programom koji učitava
ulazne znakove i dijeli ih na posebne kategorije, koje zavise o programskom jeziku,
na primjer: varijable, brojeve, znakovne skupove, ključne riječi ili naredbe. Jedan od
poznatijih alata je program Lex koji na temelju ulazne datoteke s izvornim tekstom
programa i datoteke s pravilima programskog jezika stvara datoteku s leksičkim
jedinkama.
4.2. Sintaksna analiza
Sintaksna analiza ili parsiranje je proces analiziranja programa, tj skupa leksičkih
jedinki kako bi se odredila gramatička struktura u odnosu na neku zadanu formalnu
gramatiku. Postoji nekoliko načina parsiranja, a dostupni su i različiti alati koji mogu
olakšati sintaksnu analizu. Tako se (uz program Lex za leksičku analizu) za
parsiranje tipično koristi Yacc, takoĎer slobodan za upotrebu. Dostupni su
kompleksni sustavi koji obavljaju i leksičku i sintaksnu analizu na temelju prethodno
pripremljenih pravila i gramatika.
4.3. Analiza tijeka izvoĊenja programa i optimizacija
Konačno, na kraju dolazi analiza izvoĎenja programa i procesa optimizacije.
Pokušava se odrediti je li došlo do kopiranja izvornog teksta programa na bilo kojem
mjestu. Bilo da se radi o slučaju da su ti dijelovi nepotrebni, slučajno definirani ili
namjerno umetnuti s ciljem otežavanja usporedbe sličnosti, tijekom ovog dijela
analize dolazimo do nužne jezgre izvornog teksta programa.
4.4. Alati za analizu izvornog teksta programa
Najpoznatiji program koji omogućuje automatiziranu izgradnju leksičkog analizatora
je Lex (engl. Lexical analyser generator). Osim za izgradnju leksičkog analizatora,
program Lex koristi se za rješavanje problema koje je moguće svesti na problem
prihvaćanja regularnih jezika. Potrebno je pripremiti datoteku s pravilima i regularnim
izrazima programskog jezika kojeg želimo koristiti te datoteku s izvornim tekstom
programa, na temelju čega Lex generira izlaz u obliku datoteke s tokenima. Zamjerke
31
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
programu su neodgovarajuće korisničko sučelje i neučinkovitost generiranog
programa. Osim Lexa, moguće je koristiti i neki od programa navedenih u nastavku.




Flex; Radi se o djelomično promijenjenoj verziji Lexa za C/C++.
Jlex; Radi se o analizatoru leksike za Javu.
Quex; Radi se o analizatoru leksike za C++.
Ragel; Radi se o analizatoru s podrškom za C, C++, Objektni-C, D, Javu i
Ruby.
 Antlr; Radi se o generatoru leksičkih analizatora.
Nakon leksičke analize, parsiranje se može odraditi s programom Yacc (engl. Yet
Another Compiler-Compiler), koji kao ulaz prima izlaznu datoteku Lexa te na temelju
pravila jezika grupira tokene u smislene skupine. Osim programa Yacc, sljedeće
programe je takoĎer moguće koristiti u svrhu parsiranja:







Bison; alternativa programu Yacca, koriste isti format ulaznih datoteka,
Coco/R; program s podrškom za generiranje parsera proizvoljnih jezika,
Lemon; generator LALR parsera za kontekstno neovisne gramatike,
PQCC; generator parsera s puno opcija,
Paraboiled; Javin paket za razvoj parsera,
Antlr; generator parsera koji koristi LL gramatiku te
GOLD; sustav za parsiranje s podrškom za različite jezike.
Za potpunu analizu i izradu sintaksnog stabla izvornog teksta programa, pri izgradnji
markera (5.1), koristit će se besplatan sustav za parsiranje GOLD [6].
4.5. Sustav GOLD
GOLD je sustav za parsiranje izvornih programa s podrškom za različite programske
jezike. Slika 4.1 prikazuje tijek analize izvornih programa sustavom GOLD.
Slika 4.1 Analiza izvornog programa sustavom GOLD
Sustav koristi determinističke konačne automate za leksičku analizu te LALR (engl.
Look-Ahead LR) parser. I jedno i drugo su strojevi s konačnim brojem stanja koji
koriste tablice za odreĎivanje budućih akcija. Specifičnost dizajna ovog sustava je
razdvojenost izgradnje LALR i DKA tablica od algoritama. Na taj način je moguće
imati identične razvojne procese različitih gramatike, dok se parseri implementiraju
posebno za različite programske jezike.
32
Analiza izvornih tekstova programa
4.5.1. Komponenta Builder
Prevoditelj (engl. builder) je primarna komponenta sustava i ulazna točka aplikacije.
Zadaća mu je analizirati sintaksu nekog jezika prikazanog gramatikom te konstruirati
LALR i DKA tablice za isti. Nakon što je proces konstrukcije gotov, rezultat je zapisan
u datoteku prevedenih tablica gramatike.
Neke značajke prevoditelja su:
 freeware licenca,
 pretraživanje stanja,
 ugraĎeno ispitivanje,
 sustav za ispitivanje skupa datoteka,
 generiranje web-stranica,
 izvoz gramatika za program Yacc te
 izvoz tablica u formatu XML(engl. Extensible Markup Language).
4.5.2. Prevedene tablice gramatika
Datoteka s prevedenim tablicama gramatika služi isključivo za pohranu informacija
koje je prevoditelj generirao tijekom svog rada. Ovdje korištene gramatike su
temeljene na BNF (engl. Backus-Naur Form) sustavu oznaka i regularnim izrazima.
BNF sustav oznaka služi opisu sintaksi pojedinih programskih jezika, dok su regularni
izrazi, najjednostavnije rečeno, nizovi znakova koji opisuju druge nizove znakova.
Najčešća namjena regularnih izraza je opisivanje uzorka za pretraživanje nizova
znakova.
4.5.3. Komponenta engine
Za razliku od prevoditelja koji je implementiran isključivo za operacijski sustav
Windows, komponenta za izvoĎenje jezika (engl. engine) se implementira za neki
specifični programski jezik i platformu na kojem će se izvoditi. Komponenta sadrži
implementacije LALR i DKA algoritama te se svaka primjerak ove komponente
meĎusobno razlikuje. Moguće je implementirati ovu komponentu za bilo koji jezik, a
neki od do sada implementiranih navedeni su u nastavku:










Assembler (Intel x86),
ANSI C,
C#,
D,
Delphi,
Java,
Pascal,
Python,
Visual Basic,
Visual Basic .NET te
33
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
 Visual C++.
4.5.4. Implementacija komponente za izvoĊenje jezika sustava
GOLD-a u programskom jeziku C#
Kako bi se mogao koristiti sustav GOLD unutar vlastitog projekta pisanog u
programskom jeziku C#, na raspolaganju je javno dostupan Calitha C# GOLD Parser
Engine. Radi se o reimplementaciji sustava GOLD, konkretno komponente za
izvoĎenje jezika, sa svim originalnim mogućnostima početne implementacije, gdje je
jedina adaptacija promjena programskog jezika. Korištenje se svodi na uključivanje
prostora imena projekta i pripadnih razreda u jezgru vlastite aplikacije kako je
prikazano u nastavku.
using Calitha.Gold.Engine;
Razlog korištenja sustava GOLD je podrška leksičkoj i sintaksnoj analizi izvornih
tekstova programa u sustavu CSI prilikom izgradnje markera. U sljedećem poglavlju
je prikazana primjena sustava GOLD kod odreĎivanja ključnih riječi, identifikatora,
konstanti te kasnije sintaksnog stabla. Radi se o elementima od kojih će neki poslužiti
nakon procesa odreĎivanja sličnosti kao statistički pogled na razlike dva teksta, dok
se rad sa sintaksnim stablima može automatski preslikati u usporeĎivanje izvornih
tekstova programa.
34
OdreĎivanje značajki izvornih tekstova programa
5. OdreĊivanje znaĉajki izvornih tekstova programa
U poglavlju [2] su objašnjene metode obrade prirodnog teksta i algoritmi za
usporedbu sličnosti znakovnih nizova. Iako izvorni tekstovi programa sadrže
znakovne nizove oni se ne mogu usporeĎivati isključivo kao znakovni nizove zbog
nekoliko razloga. Sadržaj izvornih tekstova se sastoji od ključnih riječi koje su
specifične za programski jezik, specijalne znakove i operatore koji vrijede za većinu
programskih jezika te promjenjivih elementa poput identifikatora, varijabli, metoda i
komentara. Kako svi elementi nemaju istu ulogu niti su podložni promjenama
potrebno je obraditi izvorni tekst programa na način koji nam omogućuje izdvajanje
pojedinih grupa elemenata programskog jezika. U poglavlju [4] je opisan proces
analize izvornih tekstova programa koji nudi potrebno raščlanjivanje elemenata.
Sustavi i aplikacije za detekciju plagijata koriste kombinaciju analize izvornih tekstova
programa s metodama analize običnih znakovnih nizova. Iako su u većini slučajevi
njihovi rezultati pouzdani, niti jedan od do sada opisanih sustava nije u stanju
usporediti izvorne tekstove programa koji su pisani u različitim programskim jezicima.
U nastavku je opisana osnovna ideja izrade skupa značajki izvornog teksta programa
(marker), njegova struktura te način na koji se te značajke odreĎuju i usporeĎuju.
5.1. Osnovna ideja
Problem nekompatibilnosti procesa usporeĎivanja izvornih tekstova različitih
programskih jezika je bila motivacija za izradu univerzalnog i sveobuhvatnog skupa
značajki izvornih tekstova programa. Ni proces usporedbe nije strogo jednoznačno
definiran jer potrebe i zahtjevi usporedbe nisu uvijek isti. Izrada svih mogućih traženih
metoda usporedbe bi sama po sebi mogla biti izrazito dugotrajna i upitne koristi. Ovo
je upravo polazna ideja za markere izvornih tekstova programa. Svako programsko
rješenje, neovisno o programskom jeziku u kojem je pisano, moglo bi se raščlaniti na
nekoliko osnovnih elemenata sa specifičnim redoslijedom i strukturom. Cilj ove
raščlambe je odrediti i dobiti sve informacije i detalje o izvornom tekstu programa.
Ostaje pitanje koje sve informacije mogu biti zanimljive prilikom usporedbe dva
izvorna teksta programa. Za početak to mogu biti detalji poput veličine originalne
datoteke, sažetka izračunatog nekim kriptografskim algoritmom nad njenim
sadržajem, broja linija izvornog teksta programa, broja praznih linija, itd. Iako na prvi
pogled nije očito, informacija poput sažetka datoteke se u daljnjoj analizi pokazala
poprilično korisnom.
Zamislimo scenarij u kojem student odluči preuzeti tuĎi rad pod svoj, bez da obavi
ikakvu izmjenu programa. U tom slučaju će markeri oba izvorna teksta programa biti
identični jer su algoritmi koji ih grade deterministički. Ako promotrimo usporedbu kao
skup algoritama i metoda od kojih su neke pametnije od drugih, tada bi usporedba
dva sažetka spadala u trivijalnije, ali itekako učinkovite i brze. Time se štedi na
vremenu jer se oni pametniji algoritmi usporedbe uopće ne moraju pokretati.
35
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
Sljedeće informacije koje bi bilo korisno imati jesu statički elementi programa poput
ključnih riječi, operatora, konstanti i njihovog ponavljanja. Isto vrijedi za identifikatore
varijabli, procedura i razreda te blokove i kontrolu tijeka programa. Moglo bi biti
zanimljivo skup značajki s popisom varijabli, blokova i procedura koje se u izvoĎenju
programa uopće ne koriste već su namjerno umetnute kako bi narušile sličnost s
izvornim programom. Analiza rada postojećih sustava za detekciju plagijata je
pokazala osjetljivost na ovaj način plagiranja.
Problem je odrediti koji skup značajki je važniji i pouzdaniji u procesu usporedbe.
Jasno je da je moguće napisati dva programa potpuno različite namjene, a da imaju
identične varijable i imena, pogotovo ako se radi o kraćim radovima.
5.2. Opis strukture markera
Marker predstavlja razred implementiran u objektno-orijentiranom programskom
jeziku C# te se pohranjuje u bazu podataka. Njegovi privatni članovi su definirani kao
skupovi logično povezanih elemenata, poput statičkih značajki datoteke, informacija o
memorijskom zauzeću datoteke, leksičkoj analizi i metrici programa, sintaksnoj
analizi i stablu te redundantni elementi izvornog teksta programa. U cilju što
preglednijeg prikaza markera koristit će se format XML. Slika 5.1 prikazuje dio
strukture markera čiji elementi su popunjeni vrijednostima za neku proizvoljnu
datoteku.
Slika 5.1 Prikaz sadržaja strukture markera
Unutar oznake <marker> definira se XML atribut imena datoteke, identifikatora
markera te datum i vrijeme kreiranja markera. Ovo je ujedno i glavna oznaka cijele
XML datoteke, dok ostali dijelovi kao i njihova popunjenost može varirati u ovisnosti o
programskom jeziku izvornog teksta programa.
36
OdreĎivanje značajki izvornih tekstova programa
Ostale oznake koje definiraju grupe i vrste elemenata datoteke su: <checksums>,
<properties>, <lex>, <syntax> i <kgrams>. Kako sustav GOLD podržava
leksičku i sintaksnu analizu velikog broja programskih jezika, ostatak metoda
definiranih za izgradnju markera mora biti neosjetljiv na jezik programa u kojem je
izvornih tekst pisan. Za potrebe ispitivanja obraĎivat će se samo izvorni tekstovi
programa pisani u programskom jeziku C.
5.2.1.Sažeci datoteke
Sažeci (engl. checksums) su numeričke vrijednosti sadržaja datoteke dobivene
pozivom nekog kriptografskog algoritma nad njenim sadržajem. Ideja je izračunati
sažetak nad izvornom datotekom koja sadrži izvorni tekst programa te ponoviti
postupak nad djelomično normaliziranom datotekom. Pod normalizacijom datoteke
se smatra postupno brisanje praznina, tabulatora, oznaka za sljedeći redak te
brisanje jednolinijskih i višelinijskih komentara.
Rezultat obrade je manji skup informacija o datoteci koji se može pokazati ključnim u
postupku trivijalne usporedbe izmeĎu dva markera. Naime, ovdje se uopće ne ulazi u
dubinsku analizu izvornog teksta programa, već se gleda ukupni otisak datoteke.
Zamislimo obavljanje jednostavnog upita u bazu podataka koji bi samo postavio
pitanje postoji li već neki marker koji ima identičan sažetak. Interpretacija pronaĎenog
duplikata je jednostavna, ali statistički gledano ne i sigurna. Vrlo vjerojatno se radi o
identičnom markeru, no moguće je iako ne i vjerojatno da su različiti. Razred koji
sadrži logiku odabira algoritma za izračun sažetaka od proizvoljnog ulaznog niza
znakova je djelomično prikazan na slici 5.2 .
Slika 5.2 Računanje sažetaka na uporabom ugrađene funkcije algoritma MD5
Osim poziva ugraĎene kriptografske funkcije algoritma MD5 (engl. MD5 MessageDigest Algorithm), u mogućnosti smo izabrati i neku drugu implementaciju, poput
SHA1 (engl. Secure Hash Algorithm). Iako bi poziv ugraĎene metode
GetHashCode() u programskom jeziku C# nad nizom znakova bio dovoljan (2^32
različitih vrijednosti) ovako je osigurano veće raspršenje (MD5 2^128, a SHA1
2^160 različitih vrijednosti). Ovi izračuni se obavljaju prije leksičke analize izvornog
teksta.
37
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
5.2.2.Karakteristike datoteke
Pod karakteristikama datoteke (engl. properties) smatramo informacije o veličini
datoteke, broju linija teksta, broju linija komentara, praznih linija, broja tokena
izvornog teksta programa itd. Ove informacije se takoĎer dobivaju prije leksičke
analize teksta. Razvijen je poseban razred Utilities s namjenom brzog i
jednostavnog dohvata navedenih informacija tijekom stvaranja markera. Radi se o
statičkom razredu čije se metode koriste bez stvaranja primjerka razreda. Metode
koje se koriste u popunjavanju karakteristika su prikazane na slici 5.3.
Slika 5.3 Metode za određivanje karakteristika izvornog teksta programa
5.2.3.Leksiĉka analiza
Za potrebe leksičke analize korišten je sustav GOLD. U okviru stvaranja tokena
potrebno je implementirati logiku koja će svaki token mapirati u pripadnu tablicu
zajedno s ostalim informacijama o tokenu. Za konstante je potrebno zapisati kojeg su
tipa i koja im je vrijednost, za identifikatore njihov tip, početnu vrijednost i ime, dok se
u ovom dijelu analize za ključne riječi, operatore i specijalne znakove samo uvode
brojači. Razred koji obavlja grupiranje znakova ulaznog niza iz izvornog teksta
38
OdreĎivanje značajki izvornih tekstova programa
programa je StringTokenizer.cs. Slika 5.4 prikazuje samo dio njegovih metoda za
analizu teksta.
Slika 5.4 Metode za izgradnju liste tokena
5.2.4.Sintaksna analiza
Tijekom sintaksne analize, za koju je opet zadužen sustav GOLD, obavlja se
izgradnja sintaksnog stabla i dovršava posao započet u leksičkoj analizi. Konkretno,
popunjavaju se neki dijelovi markera za koje tek sintaksna analiza može dati kontekst
u kojem dobivaju smisao, poput mapiranja tipova na identifikatore i konstante.
Razred u kojem je sadržan dio metoda za parsiranje nalazi se u razredu
GoldLoader.cs i prikazan je na slici 5.5.
Pri čitanju svakog elementa iz liste tokena, odreĎuje se sljedeća akcija na temelju
pravila programskog jezika. TakoĎer se elementi dodaju u listu elemenata za grafički
prikaz, koji se za potrebe aplikacije ovdje ne koristi.
39
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
Slika 5.5 Razred GoldLoader i metode akcija parsiranja
5.2.5.K-grami
Motivacija korištenja k-grama je uspješnost sustava za detekciju plagijata MOSS i
njihovog algoritma odabira prozora – winnowing. Općenito, analiza izvornih tekstova
programa je nejednoznačna i osjetljiva na umetanje, brisanje i izmjenu. Zato nužno
da se izvorni tekst programa prvo normalizira. Svi nezanimljivi elementi se brišu
(poput komentara) ili zamjenjuju generičkim izrazima (sva imena identifikatora s "ID").
Time se eliminira mogući utjecaj izmjene, a djelomično i umetanja teksta.
Nakon inicijalne obrade teksta slijedi podešavanje osnovnih parametara k i t, gdje je
k duljina k-grama, odnosno broj neprekinutih znakova niza, a t prag za dojavljivanje
sličnosti nizova. Oba parametra je nužno pažljivo odabrati kako bi se izbjegao šum,
ali i osiguralo dojavljivanje reprezentativnih sličnosti. Kad su svi k-grami odreĎeni,
računaju se njihovi sažeci koji potom služe kao jedini elementi usporedbe u daljnjem
radu. K-grame je potom nužno grupirati unutar tzv. "prozora". Prozor predstavlja
40
OdreĎivanje značajki izvornih tekstova programa
grupu k-grama gdje veličina prozora w ujedno definira i broj k-grama. Ako s n
definiramo duljinu niza cijelog teksta, tada formulom (5.1) definiramo prozor veličine
w:
(5.1)
Takvi prozori se nalaze na pozicijama i, gdje je i element:
(5.2)
Ukoliko iskoristimo primjer iz poglavlja 2.4 tada bi za zadanu vrijednosti k=4 i w=3
prozori nad znakovnim nizom matematika sadržavali k-grame kao na Slika 5.6.
Ukupno je odreĎeno 5 prozora veličine 3.
Slika 5.6 Sadržaji prozora za znakovni niz matematika
Algoritam winnowing koji opisuje kako odabrati sažetke unutar svakog prozora,
definiran je u nastavku [3].
 U svakom prozoru odabire se najmanja vrijednost sažetka.
 Ako postoji više minimalnih vrijednosti odabire se zadnja.
 Sve odabrane vrijednosti sažetaka se pohranjuju.
Osim odabira najmanje vrijednosti sažetka može se odabrati i najveća, ovisno o
vlastitom izboru. Korištenje winnowing algoritma se razlikuje od početne ideje
sustava da se odabiru k-grami čije su vrijednosti sažetka pri modulo p operaciji
jednake nuli, pri čemu je p neki proizvoljno odabrani broj. Ovakav pristup, iako
iznimno točan za dobro odabrane brojeve p, isto tako može biti iznimno nesiguran
ako se odabere nepovoljan broj. Nepovoljan broj je bilo koja vrijednost koja će u 0
modulo p operaciji dati jako mali skup sažetaka ili niti jedan te time onemogućiti
dojavljivanje sličnosti. Algoritam winnowing osigurava odabir točno jednog sažetka iz
svakog prozora, čime će očekuje da rezultantni skup sažetaka dobro predstavlja
izvorni tekst programa.
Modificirana metoda 0 modulo p koja nudi veću sigurnost pronalaska
reprezentativnog uzorka predlaže uzimanje svih sažetaka k-grama u prozoru kod
kojih standardna metoda 0 modulo p ne vraća niti jedan sažetak. Postupak se
41
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
ponavlja sve dok se ne pronaĎe prvi sljedeći rezultat 0 modulo p. Na slici 5.7
prikazane su metode za stvaranje k-grama i računanje njihovih sažetaka.
Kada brzina i vrijeme ne bi bili faktor, najtočnije bi bilo usporeĎivati sve sažetke kgrama. Radi točnijeg odreĎivanja sličnosti, marker sadržava skup k-grama u skladu s
algoritmom winnowing, kao i odreĎeni broj minimalnih k-grama. Dodavanje još
jednog skupa u skladu s 0 modulo p operacijom je takoĎer moguće u bilo kojem
trenutku.
Obrada izvornog teksta programa prije stvaranja k-grama se svodi na normalizaciju i
brisanje komentara. Dodatan koristan korak bi bio iskoristiti rezultat leksičke analize i
zamjenu svih identifikatora varijabli i metoda nekom univerzalnom kraticom. Unutar
markera definirane su dvije liste filtriranih k-grama, pri čemu je jedna stvorena
algoritmom winnowing, dok druga odgovara vrijednostima odabranim 0 modulo p
metodom.
Slika 5.7 Metode za stvaranje k-grama
5.3. Automatizirano stvaranje skupa znaĉajki izvornih
tekstova programa
U okviru ovog diplomskog rada implementiran je web-sustav koji otkrivanje sličnosti
izvornih tekstova programa temelji na usporeĎivanju markera izvornih tekstova
programa. Implementirana je automatizirana izgradnja markera na temelju arhiva
izvornih tekstova programa ili pojedinačnih datoteka. Sva analiza i obrada izvornog
teksta programa se obavlja odmah prilikom predaje na sustav. Pokreće se leksička i
sintaksna analiza čiji rezultati se pohranjuju ako je proces bio uspješan. Neovisno o
42
OdreĎivanje značajki izvornih tekstova programa
tome, obavljaju se i izračuni sažetaka, općih karakteristika datoteke i vrijednosti kgrama po oba opisana algoritma. Nakon završene izgradnje, marker se pohranjuje u
bazu podataka. Detaljni opis strukture implementiranog web-sustava i načina rada
prikazan
je
u
sljedećem
poglavlju.
43
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
6. Praktiĉni rad
6.1. Web-aplikacija CSI
U okviru ovog diplomskog rada je za potrebe analize izvornih tekstova programa i
izgradnje markera razvijena web-aplikacija CSI (engl. Code similarity inspection).
Osnovna zadaća aplikacije je automatizirana izgradnja značajki izvornih tekstova
programa, podešavanje parametara usporedbe te u konačnici otkrivanje sličnosti
izmeĎu izvornih tekstova programa.
Za svaku predanu datoteku izvornog teksta programa sustav gradi marker koji se
sastoji od sažetaka (čije vrijednosti ovise o stupnju normalizacije teksta) te od
pobrojanih praznih i punih linija teksta kao i komentara. Implementirana je leksička i
semantička analiza izvornih tekstova programa temeljena na logici sustava Calitha
GOLD. Prilikom predaje izvornih tekstova programa na sustav automatski se pokreće
proces obrade teksta čiji je izlaz skup završnih tokena. Ti tokeni sadrže informacije o
svojoj klasifikaciji (ključne riječi, operatori, specijalni znakovi, itd.). Tokeni su
pobrojani i organizirani u rječnike (engl. Dictionary, Map). Isto je obavljeno za
identifikatore i konstante. Omogućen je pojednostavljen prikaz sintaksnog stabla
izgraĎenog tijekom parsiranja. Izračunati su k-grami temeljeni na algoritmu
winnowing, kao i 0 modulo p operaciji. Zbog tijeka obrade datoteka neki parametri se
podešavaju prilikom predavanja arhiva ili pojedinačnih datoteka na sustav, a neki
prilikom definiranja zadatka usporedbe.
Svaki marker nudi prikaz svih definiranih značajki, kao i djelomičnu XML datoteku
koja sadrži sve te elemente. Cilj nepotpunog prikaza je ušteda vremena i memorije,
iako je unutar stranice takoĎer moguće zatražiti preuzimanje potpune xml datoteke.
Definiran je web-obrazac koji nudi podešavanje svih raspoloživih parametara koji
mogu u nekoj mjeri utjecati na rezultate otkrivanja sličnosti. Svaki parametar je
opisan te je predložena njegova preporučena kao i pretpostavljena (engl. default)
vrijednost. I konačno, u okviru diplomskog rada je implementirana usporedba izvornih
tekstova programa te prikaz rezultata.
U nastavku slijede upute za korištenje web-aplikacije i opis njene strukture.
Navedene su korištene tehnologije i nužni uvjeti koji moraju biti ispunjeni kako bi rad
sustava bio uspješan. Opisani su skupovi izvornih tekstova programa korišteni za
potrebe ispitivanja web-aplikacije i ponuĎene su upute prilikom podešavanja
parametara usporedbe. Na kraju je demonstriran rad sustava na temelju unaprijed
pripremljenih arhiva izvornih tekstova programa te dan osvrt na uspješnost
usporedbe.
44
Praktični rad
6.1.1.Korištenje web-aplikacije
Aplikacija je zamišljena kao sustav za koji nastavno osoblje može zatražiti registraciju
svojim računom elektroničke pošte. Slika 6.1 prikazuje sučelje aplikacije na kojoj je
obrazac za prijavu na sustav te obrazac za registriranje novog korisnika.
Slika 6.1 Sučelje aplikacije
Korisnici koji posjeduju korisnički račun mogu se prijaviti na sustav, nakon čega im je
prikazana početna stranica i zaglavlje s navigacijom. Navigacija se sastoji od odabira
tima, rada s izvještajima (engl. review), grupama korisnika, vlastitim postavkama te
odjava sa sustava. Tim predstavlja proizvoljan broj korisnika koji imaju prava rada
nad istim izvještajima. Ako načinimo usporedbu s proizvoljnim računarskim
kolegijem, tada tim korisnika čine svi predavači, asistenti ili ispitivači zaduženi za
obavljanje provjera znanja studenata tog kolegija. Studentima nije namijenjeno
korištenje sustava, iako je predviĎena mogućnost komunikacije nekog drugog
sustava kroz API (engl. Application programming interface), pa samim time je
moguće implementirati slanje studentskih rješenja direktno na sustav CSI. Neovisno
o tome, obavljanje usporedbi sličnosti i rad sa sustavom je namijenjen isključivo
nastavnom osoblju. Slika 6.2 prikazuje navigaciju sustava CSI.
Slika 6.2 Navigacija sustava CSI
Korisnici sustava mogu:
 ureĎivati svoje osobne podatke,
45
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
 definirati novi radni tim ili urediti postojeći (dodavanje/brisanje dodatnih
članova),
 dodjeljivati i mijenjati dozvole članovima svog tima,
 stvoriti novi izvještaj ili ureĎivati postojeći,
 definirati listu zadataka unutar izvještaja,
 predati pojedinačne datoteke ili arhivu izvornih tekstova programa u neki
zadatak,
 pregledati izgraĎene markere izvornih tekstova programa,
 preuzeti XML opis markera za neki izvorni tekst programa,
 definirati novu usporedbu ili pregledati postojeće,
 proizvoljno odreĎivati parametre usporedbe te težinu njihovog utjecaja na
odreĎivanje sličnosti te
 preuzeti rezultate usporedbe u obliku tekstualne datoteke odreĎenog formata
za daljnju obradu izvan sustava.
Slika 6.3 prikazuje cijelu hijerarhiju elemenata u aplikaciji te njihovu meĎusobnu
povezanost.
Slika 6.3 Hijerarhija elemenata sustava CSI
Otvaranjem korisničkog računa, korisniku se pretpostavljeno definira matični tim čiji je
vlasnik taj korisnik i on automatski ima dozvole običnog korisnika. Korisnik ima
mogućnost dodavati ili brisati druge korisnike iz svog tima, kao i dodjeljivati dozvole
za rad unutar tima. Svaki korisnik, osim u svojem, može biti u neograničenom broju
drugih timova gdje mu vlasnici odreĎuju dozvole.
Dozvole koje se korisnicima pridodaju su:
 U (engl. user); nikakva posebna prava,
 C (engl. contributor); prava dodavanja novih izvještaja, zadataka i datoteka
unutar tima
46
Praktični rad
 M (engl. manager); administrativna prava nad vlastitim timom
Članovi s dozvolom barem C mogu unutar tima stvarati nove izvještaje ili ureĎivati
postojeće.
Slika 6.4 Stranica za rad s izvještajima
Slika 6.4 prikazuje stranicu na kojoj je omogućen rad s izvještajima. Izvještaj je vršni
element bilo kakve provjere izvornih tekstova programa te mu se može definirati ime i
opis. On se sastoji od različitih zadataka (engl. tasks). Unutar kolegija izvještaj
konceptualno odgovara nekoj laboratorijskoj vježbi, a zadaci unutar te vježbe
odgovaraju pojedinim zadacima koje studenti moraju isprogramirati.
Slika 6.5 Definiranje zadataka unutar izvještaja
Slika 6.5 prikazuje definiranje zadataka unutar nekog izvještaja. Za svaki zadatak je
takoĎer moguće definirati ime i opis. Prikazuju se i podaci o korisniku koji je definirao
zadatak te kad je zadatak stvoren. Tek se unutar nekog zadatka dolazi do predaje
pojedinačnih radova ili cijele arhive koja sadrži izvorne tekstove programa. Ako se
radi o predaji pojedinačnih izvornih tekstova programa, tada je omogućeno
definiranje i autora tog programa. U slučaju predaje arhive datoteka ime autora se
dodjeljuje temeljem imena direktorija u kojem se izvorni tekst programa nalazi.
Osim osnovnih detalja zadatka, ovdje je potrebno definirati i vrijednosti dva elementa
koji se kasnije koriste u usporedbi izvornih tekstova. Radi se o k-gramima. Kako se
cjelokupna analiza izvornih tekstova programa obavlja odmah prilikom predaje
datoteka na sustav, nužno je odrediti vrijednosti za izračun k-grama odmah prilikom
47
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
definiranja zadatka. Utjecaj ovih parametara će biti detaljnije objašnjen u poglavlju o
vrijednostima svih parametara usporedbe.
Slika 6.6 prikazuje obrazac za predaju pojedinačnih datoteka uz definiranje autora,
ali i predavanje arhiva datoteka s izvornim tekstom programa. Unutar nekog zadatka
je dozvoljeno koristiti oba načina predaje datoteka, ali su za predavanje arhive
definirani uvjeti strukture i vrste koji moraju biti zadovoljeni. Pretpostavi li se da se
korijenski direktorij arhive zove root, autor ab12345, a datoteka s izvornim tekstom
programa MojHelloWorld.c, tada struktura arhive mora biti sljedećeg formata:
root/ab12345/MojHelloWorld.c
Kako se za raspakiravanje arhive koriste već gotove svima dostupne metode za rad s
arhivama, dodatan zahtjev sustava je da vrsta arhive bude zip.
Slika 6.6 Predavanje datoteka na sustav
Nakon što je korisnik na sustav predao arhivu studentskih radova ili pojedinačnu
datoteku, u tablici datoteka se pojavljuje zapis o upravo analiziranoj datoteci zajedno
48
Praktični rad
s poveznicom na njen marker ukoliko je on bio uspješno izgraĎen. Ukoliko sustav nije
uspio odraditi leksičku analizu datoteke zbog nepoznate ekstenzije ili se datoteka nije
mogla prevesti uslijed sintaksnih ili bilo kakvih drugih grešaka, korisnik dobiva
informaciju o tome na vrhu stranice. U tom slučaju potrebno je ručno provjeriti
datoteku te joj eventualno promijeniti ekstenziju i ponovo je predati na sustav. Slika
6.7 prikazuje popis predanih datoteka u okviru trenutnog zadatka.
Slika 6.7 Popis predanih datoteka
Tablica s informacijama o datotekama se može sortirati po bilo kojem stupcu, a
omogućeno je i pretraživanje vrijednosti. Na kraju tablice je definirana opcija
označivanja svih datoteka kao i akcija brisanja zapisa o datotekama sa sustava.
Ukoliko se pobriše neki zapis trajno se gube informacije o datoteci kao i pripadni
marker. Zapisi se mogu brisati pojedinačno ili svi odjednom.
Sadržaj tablice se sastoji od informacija o autoru, imenu i veličini datoteke, sažetka
sadržaja datoteke izračunatog nekim kriptografskim algoritmom radi većeg
raspršenja, imena korisnika koji je obavio predaju datoteka na sustav, vremena te
vrste predaje. Sve elemente tablice je moguće sortirati te je omogućeno filtriranje
sadržaja pomoću pretraživanja. Sve datoteke koje su uspješno obraĎene imaju na
lijevoj strani poveznicu na svoj marker.
Ako korisnik želi pogledati detalji nekog markera, dovoljno je odabrati poveznicu koja
se nalazi u krajnje lijevom stupcu tablice. Slika 6.8 prikazuje stranicu za
pregledavanje detalja markera. Elementi markera su u prikazu grupirani u smislene
49
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
cjeline, kako po značenju tako i po vrsti analize kojom su dobiveni. Pod kraticom
(engl. tab) općenito (engl. general) mogu se pronaći informacije o veličini datoteke,
sažecima nad izvornim tekstom prije i nakon normalizacije te broju linija teksta,
komentara i praznih linija. Kratica metrika (engl. metrics) sadrži brojače elemenata
izvornog teksta, poput ključnih riječi, identifikatora, konstanti itd. Sintaksno stablo i kgrami izvornog teksta programa se nalaze pod istoimenim kraticama.
Slika 6.8 Prikaz detalja markera
Zadnja kratica nudi djelomični XML prikaz markera (Slika 6.9). Prikaz cijelog markera
bi bio iznimno zahtjevan za kontrolu koja ga prikazuje, te je dodatno definirana
poveznica za preuzimanje (engl. download) cijele XML datoteke sa sustava.
50
Praktični rad
Slika 6.9 Djelomični XML prikaz markera
6.1.2.Struktura aplikacije
Aplikacija se sastoji od 5 samostalno implementiranih projekata (prefiks CSI) i dva
preuzeta projekta (prefiks GOLD):







CSI
CSI.Core
CSI.Framework
CSI.Test
CSI.Worker
GOLD.Calitha
GOLD.Engine
GOLD.Calitha i GOLD.Engine sadrže gotove alate za potpunu analizu izvornog
teksta programa u vidu leksičke i sintakse analize i preuzeti su iz projekta Calitha C#
GOLD Parser Engine. Projekt CSI.Worker sadrži metodu za kontinuirano praćenje
statusa reda usporedbi kako bi se pokrenuo proces usporedbe čim se nova pojavi u
redu čekanja. CSI.Framework sadrži skup pomoćnih metoda nespecifičnih za sam
sustav CSI.
Ostala tri projekta sadrže metode za obradu rezultata dobivenih alatima sustava
GOLD te dodatne obrade koje se koriste u izradi markera od čega je najveći dio
sadržan u CSI.Core (Slika 6.10).
51
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
Slika 6.10 Popis razreda u projektu CSI.Core
Od svih navedenih, razred Marker.cs sadrži glavnu logiku za organizaciju i
popunjavanje elemenata te obradu izvornog teksta programa. Na početku su
definirani svi privatni članovi markera poput lista k-grama, konstanti, identifikatora,
ključnih riječi i sažetaka. Zatim su definirani konstruktori i tri grupe metoda za
popunjavanje elemenata, getteri i setteri te metode za prikaz elemenata. Slika 6.11
prikazuje razred Marker.cs.
Uz elemente koji su opisani u prethodnom poglavlju, u bazi se nalaze tablice u kojima
se definiraju korisnici, uloge, veze korisnika i grupa, usporedbe te skupovi pravila
koja definiraju utjecaj pojedinih parametara usporedbe. Korisnici mogu koristiti gotove
predloške sustava ili definirati vlastite.
52
Praktični rad
Slika 6.11 Implementacija markera
Aplikacija se oslanja na bazu podatka čija shema je prikazana na Slika 6.12.
53
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
Slika 6.12 Shema baze podataka sustava CSI
6.1.3.Korištene tehnologije
Rad je izveden u potpunosti koristeći aktualne tehnologije Microsofta. Za izradu
aplikacije korištena je razvojna okolina Visual Studio 2010 Professional, uz sustav
kontrole verzija datoteka Team Foundation Server. Sustav je izveden kao webaplikacija temeljena na ASP.NET platformi, uz korištenje oblikovnog obrasca MVC
(engl. Model-View-Controller), izvedenog kroz službenu nadogradnju na ASP.NET,
zvanu ASP.NET MVC 2.0.
Za potrebe rada aplikacije potrebno je osigurati web-poslužitelj IIS (engl. Internet
Information Services) verzije 7.0 ili noviji, operacijski sustav Windows, programsku
okolinu .NET Framework 4.0 te instaliranu nadogradnju ASP.NET MVC 2.0.
Za spremanje izvornih tekstova programa te izraĎenih markera, kao i za
administrativne potrebe (upravljanje korisnicima, provjerama, zadacima i dr.) koristi
se sustav za upravljanje bazama podataka Microsoft SQL Server 2008.
54
Praktični rad
6.2. Skupovi ispitnih izvornih tekstova programa
U ovom diplomskom radu su za potrebe ispitivanja rada aplikacije korištene tri arhive
programskih rješenja nad kojima je prethodno bilo obavljeno otkrivanje sličnosti
pomoću postojećih aplikacija (poglavlje 3.8). Radi se o studentskim radovima u
okviru laboratorijskih vježbi na kolegijima Operacijski sustavi I studijskog programa
FER-1. U trećoj arhivi se nalaze i dodatne datoteke koje su načinjene postupnim
izmjenama postojećih izvornih programa, dakle plagijatima, a u svrhu kontrolne
skupine. Sva imena i identifikatori studenata i datoteka su nasumično izmijenjani
kako bi se poštivala njihova privatnost.
6.3. Parametri
Sustav CSI nudi korisnicima slobodu izbora načina obavljanja usporedbe izvornih
tekstova. Kako se u stvarnosti ne usporeĎuje izvorni tekst već skup značajki – marker
koji je stvoren prilikom predavanja datoteka na sustav, moguće je složiti jednostavniju
ili složeniju usporedbu, ovisno o tome što se želi postići. Kako je već opisano u
poglavlju 5.2, značajke izvornih tekstova su grupirane u smislene cjeline, od općih
izračuna sažetaka originalnog i normaliziranog teksta, do različitih metrika i k-grama.
U nastavku slijedi opis tih cjelina, njihov utjecaj na otkrivanje sličnosti, opis računanja
mjera sličnosti općenitih skupova podataka te njihova primjena.
6.3.1.Sažeci
U otkrivanju sličnosti ovi elementi nemaju konkretnu težinu, no njihova korisnost leži
u otkrivanju identičnosti. Kao prva linija otkrivanja duplikata, usporedba sažetaka
originalnog i normaliziranog teksta programa je najmanje vremenski zahtjevna i vrlo
jednostavna. Dvije datoteke, ukoliko su sadržajno identične imat će identične
numeričke vrijednosti sažetaka. Isto vrijedi i za normalizirani tekst. Metode korištene
za pročišćavanje teksta su pouzdane i ponovljive. Ako se usporedbom dvaju
sažetaka otkrije da se radi o istoj vrijednosti, vrlo je vjerojatno da se radi o plagijatu te
se ostavlja korisniku da to potvrdi i opovrgne.
Primjer korisnosti usporedbe po ovom elementu je scenarij u kojem studenti
samostalno predaju svoje zadatke na neki sustav za upravljanje kolegijima koji
pomoću API-ja komunicira sa sustavom CSI. Ako usporedba sažetaka ocijeni neku
datoteku kao potencijalnu kopiju, sustav CSI bi mogao drugom sustavu dojaviti da je
pokušao predati potencijalni plagijat.
Slučaj u kojem ova provjera ne bi imala smisla su jednostavni, kratki i opći
programski zadaci u kojima se osim iste predvidive strukture očekuje i donekle
identično imenovanje varijabli i metoda. Primjer je opet Hello World program. Ako
se uzme u obzir prosječna generacija od otprilike 500 studenata, za očekivati je da
će svi izvorni tekstovi biti praktički identični.
Tijekom definiranja usporedbe nudi se unaprijed uključena ova opcija usporeĎivanja,
tj. njeno izostavljanje ako to korisnici ne žele. Ako je opcija uključena te ako se
ispostavi da rezultati upućuju na plagijat, ocjena sličnosti je apsolutna, tj. 1 i daljnji
izračuni i usporedbe elemenata se ne obavljaju. Ako datoteke nemaju iste sažetke,
ne možemo znati da se ipak ne radi o plagijatu pa se ocjena sličnosti dalje formira na
temelju usporedbe ostalih elemenata i težina koje su im pridijeljene.
55
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
6.3.2.Opće karakteristike
Opće karakteristike izvornog teksta programa podrazumijevaju informacije poput
brojača linija teksta, linija komentara, praznih linija, broja leksičkih jedinki itd. Ove
informacije same po sebi ne nose nikakvu težinu prilikom odreĎivanja sličnosti.
Ukoliko se ova grupa elemenata uključi u proces odreĎivanja sličnosti, dobivene
brojke se koriste u vizualnoj analizi dviju datoteka i to potpuno informativno.
Primjer za korištenje ove grupe je prilikom pronalaska dviju datoteka koje su
potvrĎeni plagijati, a da je metoda prisvajanja izvornog teksta programa bila umetanje
praznina, znakova novog retka ili komentara.
6.3.3.Statistike
Statistike (metrics) sadržavaju brojače pojavljivanja konstanti, identifikatora, ključnih
riječi te drugih statičkih elemenata jezika u kojem je izvorni tekst programa pisan.
Kako bi ove tablice mogle biti usporedive, elementi se grupiraju pod najopćenitije
moguće korijensko značenje, poput operatora (nebitno kakvi oni bili), ključnih riječi
kontrole tijeka izvoĎenja programa (petlje) te numeričkih, znakovnih i drugih tipova
podataka. Kako bi se ovi elementi mogli usporeĎivati u različitim programskim
jezicima, u nekim slučajevima bi se moglo pokazati potrebnim implementirati metode
koje bi mogle preslikavati jedan skup u drugi, bez gubitka integriteta podataka.
Ovaj skup podataka sudjeluje s malom težinom u ukupnoj ocjeni sličnosti, pošto su
primjerice identifikatori u potpunosti podložni izmjenama i obično su prvo što
potencijalni plagijatori mijenjaju. No utjecaj ove grupe elemenata se dodatno
odreĎuje na temelju važnijih parametara usporedbe te će zasigurno datoteke
ocijenjene s visokom ocjenom sličnosti dobiti još veću ocjenu ukoliko se uspostavi da
je i većina statistika podudarna, kao što će i niske ocjene biti još niže ako je
podudarnost skupova mala.
6.3.4.Sintaksna stabla
Sintaksna stabla su vizualno najintuitivniji prikaz izvornog teksta programa te
ljudskom ispitivaču pružaju vjerojatno najugodniji način usporedbe dvaju izvornih
tekstova programa. Što se programskog usporeĎivanja dvaju sintaksnih stabala tiče,
radi se o vremenski poprilično zahtjevnoj usporedbi na koju se troše i memorijski
resursi. Njihova upotreba se izuzima iz odreĎivanja sličnosti, no ukoliko korisnici žele
uključiti ovaj element u proces usporedbe, tada je dobiven rezultat sigurno vrlo
pouzdan.
6.3.5.K-grami
Radi se o jedinom elementu usporedbe kojeg je potrebno definirati odmah prilikom
definiranja zadatka (Slika 6.13). Kako se sva analiza izvornih tekstova odraĎuje
odmah po predavanju datoteka na sustav, tako su i k-grami izvornog teksta programa
izračunati odmah nakon normalizacije teksta. Obrazac nudi postavljanje vrijednosti
duljine k-grama (engl. length), veličinu prozora za algoritam winnowing (engl. window
size) te mogućnost uključivanja izračuna k-grama po algoritmu 0 modulo p. Duljina kgrama je broj znakova koji se izdvajaju u k-gram, a veličina prozora je broj k-grama
meĎu kojima se odreĎuje onaj s najmanjom ili najvećom vrijednosti. P definira
56
Praktični rad
vrijednost za koju se očekuje rezultat 0 pri dijeljenju vrijednosti k-grama u operaciji
modulo p.
Slika 6.13 Postavke za izračun k-grama
Duljina k-grama je inicijalno postavljena na vrijednost 5. Manje vrijednosti će
uzrokovati veći broj k-grama i manje pouzdane rezultate jer je veća šansa da će se
manja grupa znakova, smislena ili ne, pronaći i u nekoj drugoj datoteci. Veće
vrijednosti će otkriti specifičnije sličnosti, ali će ukupna sličnost datoteka biti
ocijenjena s manjom ocjenom. Slično vrijedi i za veličinu prozora algoritma, manje
vrijednosti će rezultirati većim skupom odabranih k-grama i potencijalno većom
ocjenom koja ne mora biti pouzdana, dok će veće vrijednosti pronaći manji skup, ali i
pouzdaniji.
Ako korisnik želi uključiti i modulo p opciju izračuna k-grama, tada se uz standardne
k-grama po winnowing algoritmu izdvajaju i sve vrijednosti k-grama koji pri modulo p
operaciji daju rezultat 0. Ovo pridonosi odreĎivanju visoko specifičnih k-grama te se
općenito oba skupa k-grama mogu smatrati visoko reprezentativnima za odreĎivanje
sličnosti izvornih tekstova. Vrijednost varijable p treba odabrati na takav način da
rezultantni skup k-grama sadrži od 25% do 45% originalnog skupa. Loš odabir bi
recimo bio broj 2 jer je po zakonu velikih brojeva logično očekivati da će oko 50% kgrama biti izdvojeno. Bolji izbor bi bio neki manji primarni broj poput 3, 7 ili 11 gdje je
statistički vjerojatno da će konačni skup probranih k-grama sadržavati otprilike 10%
do 40% početnog skupa svih k-grama.
K-grami u ukupnoj ocjeni sličnosti sudjeluju s preporučenom težinom od 0.85 (85%
ukupne ocjene) iako korisnik sustava može promijeniti ovu vrijednost. Razlog ovako
visokom udjelu u ukupnoj ocjeni je pouzdanost algoritma koji nad normaliziranom
datotekom pronalazi doista reprezentativan uzorak vrijednosti.
Ukoliko bi korisnici htjeli otkrivanje sličnosti prirodnog teksta, a ne izvornih tekstova
programa, bilo bi dovoljno u proces usporedbe uključiti samo k-grame po oba
algoritma s maksimalnom težinom. Vjerojatno bi u takvom procesu bilo pametno
implementirati neki oblik normalizacije prirodnog teksta.
6.3.6.Raĉunanje mjera sliĉnosti skupova numeriĉkih podataka
S ciljem pronalaska najbolje formule za odreĎivanje sličnosti, obavljeno je ispitivanje i
usporedba nekoliko formula za izračun udaljenosti [16]. Iako je primjena tih formula
57
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
većinom u genetici i molekularnoj biologiji, uz manje izmjene i par ograničenja
pokazale su se prikladnima za implementaciju i pouzdanima u svojim rezultatima.
Ako su A i B podskupovi izgraĎeni nad univerzalnim skupom U te ako vrijedi A = {1, 2,
3, 4} i B= {3, 4, 7, 9}, tada definiramo simbole u nastavku:





A* je broj elemenata skupa A koji su specifični i jedinstveni za taj skup, tj. nisu prisutni
u B,
B* je broj elemenata skupa B koji su specifični i jedinstveni za taj skup, tj. nisu prisutni
u A,
AB je broj zajedničkih elemenata, tj.
,
AB je broj različitih elemenata, tj.
te
S je mjera sličnosti skupova A i B.
Za sadržaj skupova kako je prethodno definiran vrijedi sljedeće:
 A* = |{1, 2}| = 2,
 B* = |{7, 9}| = 2,
 AB = |{3, 4}| = 2 te
 AB = |{1, 2, 7, 9}| = 4.
U nastavku slijede formule za računanje sličnosti skupova numeričkih vrijednosti te
izračun sličnosti za prethodno definirane skupove A i B.
Mjera Cosine
Mjera sličnosti SCosine definirana je kao se kao omjer broja zajedničkih elemenata dva
skupa i geometrijske sredine svih sadržanih elemenata. Domena ove mjere je [0, 1]
gdje 0 znači da skupovi nemaju zajedničkih elemenata, a 1 da su dva skupa
identična.
(6.1)
Izvedba ove mjere je iz klasičnog izraza za kosinus kuta izmeĎu dva vektora.
Za prethodno definirane skupove A i B ova mjera vraća procjenu sličnosti 0,5.
Mjera Dice
Mjera sličnosti SDice definira se kao omjer broja zajedničkih elemenata i aritmetičke
sredine svih sadržanih elemenata. Domena ove mjere je [0, 1] gdje 0 znači da
skupovi nemaju zajedničkih elemenata, a 1 da su dva skupa identična.
(6.2)
Za prethodno definirane skupove A i B ova mjera vraća procjenu sličnosti 0,5.
58
Praktični rad
Jaccardov indeks
Pod drugim imenom poznat kao Tanimotov koeficijent sličnosti, odreĎuje sličnost kao
omjer presjeka proizvoljnih skupova i unije istih. Domena ove mjere je [0, 1] gdje 0
znači da skupovi nemaju zajedničkih elemenata, a 1 da su dva skupa identična.
(6.3)
Za prethodno definirane skupove A i B ova mjera vraća procjenu sličnosti 0,33.
Mjera Tversky
Ova mjera sličnosti je asimetrična zbog faktora i . Ukoliko ih se postavi na istu
vrijednost, npr. 1, tada formula poprima identičan izgled kao Jaccardov indeks.
Faktori služe za pridjeljivanje težine elementima skupa. Domena ove mjere je [0, 1]
gdje 0 znači da skupovi nemaju zajedničkih elemenata, a 1 da su dva skupa
identična.
(6.4)
Za prethodno definirane skupove A i B te faktore
vraća procjenu sličnosti 0,66.
i
postavljene na 0,5 ova mjera
Radi usporedbe i ocjene rezultata navedenih mjera, obavljeno je manje ispitivanje
nad nekoliko različitih skupova numeričkih podataka. Tablica 6.1 prikazuje rezultate
tog ispitivanja.
Tablica 6.1 Usporedba algoritama za izračun sličnosti skupova
AB
A*
B*
SCosine
SDice
SJaccard
STversky
A = {0,1,2,3,4}
B = {0,1,2,4,5}
4
1
1
0,8
0,8
0,666666667
0,8
A = {0,1,2,3,4,5,6,7,8,9}
B = {5,6,7,8,9,10,11,12,13}
5
5
4
0,527046277
0,526315789
0,357142857
0,526315789
A = {2,3,4,5,6,7,8,9}
B = {5,6,7,8,9,10,11}
5
3
2
0,668153105
0,666666667
0,5
0,666666667
A = {0,1,2,3,4,5,6,7,8,9}
B = {5,6,7,8,9,10,11}
5
5
2
0,597614305
0,588235294
0,416666667
0,588235294
A = {2,3,4,5,6,7,8,9}
B = {5,6,7,8,9,10,11,12,13}
5
6
4
0,502518908
0,5
0,333333333
0,5
A = {0,1,2,3,4}
B = {0,6,7,8,10}
1
4
4
0,2
0,2
0,111111111
0,2
Setovi podataka
Na temelju dobivenih podataka usporedbe malih skupova, vidljivo je da su Cosine,
Dice i Tversky s koeficijentima postavljenim na vrijednost 0.5 skoro pa identični što
se izračuna tiče. Jaccardov indeks jedini ima osjetno odstupanje te strože ocjenjuje
sličnost od ostalih algoritama. S ciljem odreĎivanja što bolje osjetljivosti u odreĎivanju
59
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
sličnosti, u svim daljnjim proračunima ispitivanja velikih skupova podataka kao i u
programskom ostvarenju će se koristiti Jaccardov indeks.
6.4. Definiranje nove usporedbe i skupa pravila
Kako korisnici jedne grupe imaju pristup istim zadacima i provjerama, omogućeno je
da svaki od njih može definirati svoj skup pravila te ih upotrijebiti u neograničenom
broju usporedbi. Zadaci koje studenti trebaju programski ostvariti nisu iste težine,
opsega niti uvijek zahtijevaju istu razinu maštovitosti. Moguće je da će ponekad biti
dovoljno ili nužno samo ispitati statistike izvornih tekstova programa, ukoliko se
pouzdano zna da je zadatak kratak i da mu je struktura strogo definirana.
Svim korisnicima se pri definiranju nove provjere nudi unaprijed pripremljen skup
pravila koja su prihvatljiva u općenitom slučaju.
Slika 6.14 Odabir skupa pravila za usporedbu
Poveznica detalji (engl. Details) prikazana na Slika 6.14 otvara stranicu s
informacijama o odabranom skupu pravila, dok poveznica novi skup pravila (engl.
New Ruleset) otvara obrazac gdje korisnik može odabrati proizvoljne vrijednosti
parametara, kao i njihov utjecaj na ocjenu sličnosti. Nakon što korisnik odabere skup
pravila koji mu odgovara, proces usporedbe izvornih tekstova programa se pokreće
odabirom gumba pokreni zadatak (engl. Submit Task).
Iako skup pravila kojeg sustav nudi ima već odreĎene utjecaje parametara koji su
prihvatljivi u većini slučajeva, korisnik može za svaki parametar definirati utjecaj u
ocjeni u rasponu [0%,100.0%].
60
Praktični rad
Slika 6.15 Postavke parametara skupa pravila
Slika 6.15 prikazuje postavke parametara pretpostavljenog skupa pravila. Ukoliko
korisnik želi definirati svoj skup pravila, može načiniti novi predložak ili iskoristiti
postojeći. Svaki od parametara nudi opciju uključivanja ili isključivanja, a u slučaju
uključivanja i ravnalo kojim se definira utjecaj parametra. U slučaju da suma utjecaja
svih parametara premaši 100%, pojedinačni utjecaji će se normirati.
Svaki parametar sadrži opis svog utjecaja na usporedbu, treba li biti uključen te ako
treba koliki mu je preporučeni raspon utjecaja u postocima. Opis se automatski
prikazuje unutar stranice odabirom plavog gumba s upitnikom u gornjem desnom
kutu bloka s parametrom (Slika 6.16).
61
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
Slika 6.16 Opisi utjecaja parametara na usporedbu
6.5. Pokretanje usporedbe
Nakon što korisnik pokrene proces usporedbe izvornih tekstova programa sustav mu
automatski dojavljuje poruku o uspješnosti stvaranja nove usporedbe, istu dodaje u
red svih postojećih usporedbi koji je po tipu FCFS (engl. First Come First Serve) te
dodaje zapis sa svim bitnim detaljima usporedbe u zapisnik do sada obavljenih
usporedbi. Slika 6.17 prikazuje zapisnik s listom svih postojećih usporedbi.
Budući da se usporedba izvornih tekstova programa obavlja u okviru zasebnog
procesa odvojenog od web-aplikacije, omogućen je daljnji nesmetani rad s
korisničkim sučeljem. Korisnik u svakom trenutku ima uvid u status usporedbe, kao i
mogućnost trenutnog prekida procesa. Napredak usporedbe osvježava se
kontinuiranim asinkronim upitima upotrebom tehnologije AJAX odabirom plavog
gumba koji se nalazi desno od zaglavlja zapisnika.
Slika 6.17 Zapisnik s detaljima usporedbi
62
Praktični rad
6.6. Demonstracija rada sustava na postojećoj arhivi
izvornih tekstova
Usporedbe izvornih tekstova postavljaju velike zahtjeve na resurse te je njihovo
trajanje ponekad iznimno dugo. Ako definiramo varijablu n kao broj datoteka te F(n)
kao funkciju koja računa broj potrebnih usporedbi koje sustav treba obaviti, tada
vrijedi formula:
(6.5)
Slika 6.18 prikazuje ovisnost broja meĎusobnih usporedbi datoteka u odnosu na broj
datoteka, koji pomnožen vremenskim jedinicama potrebnim za usporedbu može biti
značajan.
Slika 6.18 Ovisnost broja potrebnih usporedbi o ukupnom broju datoteka
Dodatan utjecaj na trajanje izvoĎenja procesa usporedbe imaju skupovi pravila.
Usporedba sličnosti izvornih tekstova programa po nekim elementima traje dulje od
drugih. Primjerice usporedba skupova k-grama je zahtjevnija od usporeĎivanja
relativno skromnog skupa sažetaka.
Sustav je koncipiran tako da može podržati raspodjelu obavljanja usporedbi na
pomoćne radilice i time drastično ubrzati proces usporedbe, ukoliko se za to pokaže
potreba. Demonstracija rada sustava se sastoji od niza obavljenih usporedbi, od kojih
će svaka koristiti vlastiti skup podataka te usporeĎivanje pojedinačnih i zbirnih
rezultata s rezultatima ostalih sustava za detekciju plagijata.
Za potrebe ispitivanja definirani su skupovi pravila opisani u nastavku.
63
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA






CSI1; Uključena je usporedba isključivo sažetaka.
CSI2; Uključena je usporedba k-grama dobivenih winnowing algoritmom.
CSI3; Uključena je usporedba k-grama dobivenih 0 modulo p algoritmom.
CSI4; Definirana je kombinacija CSI1 i CSI2.
CSI5; Definirana je kombinacija CSI1 i CSI3.
CSI6; Definirana je kombinacija CSI1, CSI2 i CSI3.
U okviru ovog diplomskog rada obavljeno je ispitivanje uspješnosti sustava CSI na
temelju arhive izvornih tekstova programa koja je bila korištena u ručnom odreĎivanju
sličnosti. Obavljeno je 6 usporedbi, po jedna za svaki skup pravila koje smo
prethodno definirali. Po završetku usporedbe status usporedbe se postavlja na
završen (engl. finished) te taj status predstavlja poveznicu na stranicu s rezultatima
usporedbe. Slika 6.19 prikazuje format rezultata usporedbe.
Slika 6.19 Prikaz rezultata usporedbe sustavom CSI
Vidljivo je da su različiti postoci označeni različitim bojama. Ovakav prikaz je odabran
radi jednostavnijeg pregleda i lakše procjene ukupnih rezultata.
64
Praktični rad
Ukupni rezultati su prikazani u proširenoj tablici rezultata ručne usporedbe sličnosti
kako bi se dala potpunija slika pouzdanosti sustava CSI u odnosu na druge sustave
za detekciju plagijata. Zbog količine podataka Tablica 6.2 je prikazana djelomično,
no s dovoljno informacija kako bi se obavila analiza uspješnosti.
Tablica 6.2 Rezultati otkrivanja sličnosti
Osoba1
Osoba2
Ocjena MOSS Sherlock JPlag Codematch CSI1
CSI2
CSI3
CSI4
CSI5 CSI6
100
100
100
100
100
100
100
62
-
63,9
72,2
63,9
72,2
68
100
100
-
100
100
100
100
100
64
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
96
62
86
99
-
93,4
96,8
93,4
96,8 95,1
1
93
20
92
52
-
60,1
65,9
60,1
65,9
1
93
0
92
86
-
93,6
90,7
93,6
90,7 92,2
tk38463.c
1
91
21
100
92
-
82,8
85,2
82,8
85,2
dh40591.c
1
90
57
82
60
-
51,6
52,2
51,6
52,2 51,6
dz41027.c
mn40240.c
1
89
29
86
87
-
78,6
83
78,6
it38671.c
ll40615.c
1
86
9
100
51
-
48,9
51,7
48,9
51,7 50,3
it38671.c
rd40025.c
ab39352_1.c ab39352_.c
1
98
72
100
af39592_1.c af39592_2.c
1
af39592_3.c af39592_4.c
1
98
18
98
100
ap40425.c
sp40106.c
1
eh39292.c
ib39262.c
1
98
98
eh39292.c
pr39084.c
ib39262.c
pr39084.c
1
98
1
98
dz41027.c
tk38463.c
1
af39592_1.c ll40615.c
af39592_2.c ll40615.c
mn40240.c
ah40945.c
83
100
63
84
80,8
1
85
1
92
47
-
37,9
44,8
37,9
44,8 41,3
ab39352_2.c ab39352_3.c
1
84
100
100
96
-
94,3
94,9
94,3
94,9 94,6
ab39352_3.c ab39352_4.c
1
83
94
91
87
-
90,6
91,4
90,6
91,4
af39592_1.c it38671.c
1
81
3
92
44
-
37,1
42,4
37,1
42,4 39,8
af39592_2.c it38671.c
1
81
0
92
48
-
46,7
49,6
46,7
49,6 48,2
af39592_1.c af39592_3.c
1
75
17
72
62
-
63,8
70,1
63,8
70,1 66,9
af39592_1.c af39592_4.c
1
75
17
72
62
-
63,8
70,1
63,8
70,1 66,9
af39592_2.c af39592_3.c
1
75
92
72
87
-
89,2
91,8
89,2
91,8 90,5
af39592_2.c af39592_4.c
1
75
0
72
87
-
89,2
91,8
89,2
91,8 90,5
ab39352_2.c ab39352_4.c
1
74
94
90
84
-
85,4
86,6
85,4
86,6
86
af39592_3.c it38671.c
1
73
0
73
46
-
42,3
47,7
42,3
47,7
45
af39592_3.c ll40615.c
1
73
25
73
79
-
84,7
84,8
84,7
84,8 84,8
af39592_4.c it38671.c
1
73
5
73
46
-
42,3
47,7
42,3
47,7
af39592_4.c ll40615.c
1
73
25
73
79
-
84,7
84,8
84,7
84,8 84,8
ll40615.c
mp39510.c
1
70
6
0
41
-
50,7
56,7
50,7
56,7 53,7
af39592_1.c mp39510.c
1
69
7
0
34
-
38,4
44,2
38,4
44,2 41,3
91
45
Na temelju dobivenih rezultata može se zaključiti da sustav CSI definira sličnost
podjednako uspješno kao i drugi sustavi za detekciju plagijata. Jasno je vidljivo
odstupanje od aplikacije Sherlock za koju smo već prije zaključili da je pouzdana
samo kad se radi o minimalnom broju izmjena izvornih tekstova programa. Po
rezultatima je ponašanje sustava CSI najsličnije sustavu CodeMatch o čijim
pozadinskim algoritmima nemamo puno informacija pošto se radi o sustavu
komercijalne namjene. Temeljem ispitivanja može se pretpostaviti da se pozadinski
algoritmi sustava CodeMatch u velikoj mjeri oslanjaju na usporedbu k-grama.
Odstupanje ocjena sustava MOSS i CSI jasno pokazuje važnost uloge leksičke i
sintaksne analize u otkrivanju sličnosti izvornih tekstova programa. Taj zaključak se
65
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
temelji na činjenici da u skupovima pravila nije bilo definirano korištenje elemenata
dobivenih leksičkom i sintaksnom analizom, već su se usporeĎivali k-grami dobiveni
nad normaliziranim tekstom. To je rezultiralo osjetno nižom ocjenom onih parova
datoteka za koje je sustav MOSS dao pouzdanu procjenu. Dodatna potvrda ovog
zaključka je dobivena ručnom usporedbom datoteka za koje je sustav MOSS dao
veću procjenu sličnosti, a razlika je bila uzrokovana izmjenama imena varijabli i
metoda.
Analizom ocjena umetnutih plagijata zaključeno je da je sustav CSI umjereno osjetljiv
na premještanje dijelova izvornog teksta programa. Ovakva metoda plagiranja utječe
na usporedbe koje koriste k-grame. Problem je što se u tom slučaju više ne mogu
pronaći k-grami koji su prije bili sastavljeni od sada premještenih dijelova teksta.
Osim analize pouzdanosti načinjena je i gruba analiza brzine rada sustava CSI u
odnosu na veličinu skupa datoteka koje treba usporediti. Za svaki skup pravila su
načinjene tri uzastopne usporedbe te je za srednje vrijeme rada sustava uzeta
aritmetička sredina svih vrijednosti. Svi skupovi pravila su bili ispitani nad 4 arhive
različitih veličina.
Tablica 6.3 Vrijeme obavljanja usporedbi sustavom CSI
BROJ DATOTEKA
BROJ USPOREDBI
CSI1
CSI2
CSI3
CSI4
CSI5
CSI6
30
96
117
132
435
4560
6670
8646
0,6 s
0,8 s
1,8 s
1,8 s
0,6 s
1,2 s
2,4 s
2,4 s
0,6 s
1,2 s
3,0 s
3,6 s
0,6 s
1,2 s
2,4 s
2,8 s
0,6 s
1,6 s
3,0 s
3,6 s
0,6 s
1,8 s
3,6 s
4,4 s
Tablica 6.3 prikazuje vrijeme potrebno sustavu CSI da obavi ispitivanje svakog skupa
pravila nad arhivama datoteka. Na temelju dobivenih vremena trajanja usporedbi
može se pretpostaviti da bi trajanje usporedbe za arhivu od 500 datoteka (čak
124750 pojedinačnih usporedbi) bilo 226,89 sekundi, odnosno 3,78 minuta što je
apsolutno
prihvatljivo.
66
Zaključak
7. Zakljuĉak
U ovom diplomskom radu su obraĎene metode i algoritmi analize prirodnih i izvornih
tekstova programa. Definiran je novi pristup usporeĎivanju sličnosti pomoću skupa
značajki izvornih tekstova programa (markera). Ostvarena je web-aplikacija CSI koja
nudi fino parametriziranje elemenata usporedbe te je načinjena analiza uspješnosti u
otkrivanju sličnosti izvornih tekstova programa. Strogo definirana struktura markera je
osmišljena dovoljno općenito da je uz dodatne metode preslikavanja moguće
usporeĎivati izvorne tekstove programa pisanih u različitim programskim jezicima.
Specifičnosti pojedinih programskih jezika koje se očituju u razlici ključnih riječi,
operatora i specijalnih znakova vidljiva je samo u nejednakoj popunjenosti markera,
što u konačnici ne mora onemogućiti usporedbu.
Otkrivanje sličnosti usporedbom markera temelji se na skupu specijaliziranih metoda
čija je zadaća usporediti pojedine elemente markera i vratiti procjenu sličnosti. Ti
algoritmi su podijeljeni na nekoliko skupina, od trivijalnih usporedbi do zahtjevnih.
Korisnik sustava ima mogućnost odabira koji algoritam se koristi u usporedbi, baš
kao i koji element se uključuje u usporedbu ili izuzima iz nje. RazraĎen je obrazac za
odreĎivanje težine utjecaja pojedinih elemenata u usporedbi kako bi korisnik mogao
odrediti koji elementi trebaju imati veći utjecaj na ocjenu sličnosti. PonuĎeni su opisi
parametara i njihove preporučene vrijednosti. Definiran je skup pravila s
pretpostavljenim vrijednostima parametara koji u općenitom slučaju daje
zadovoljavajuće rezultate. U sklopu programskog rješenja se za potrebe leksičke i
sintaksne analize trebao koristiti sustav GOLD. Kako se pokazalo da su gramatike
koje sustav GOLD koristi nepotpune, u ovom se trenutku leksička i sintaksna analiza
izvornih tekstova programa ne obavljaju.
U okviru diplomskog rada obavljeno je ispitivanje rada web-aplikacije CSI na
prethodno definiranim arhivama izvornih tekstova programa. Dodatno je načinjena
usporedba uspješnosti postojećih sustava za detekciju plagijata nad istim arhivama,
kao i ručna provjera sličnosti jednog podskupa izvornih tekstova programa. Dobiveni
rezultati su iskorišteni za detaljnu analizu načina rada postojećih sustava za detekciju
plagijata, otkrivanje osjetljivosti na pojedine metode plagiranja i referentne vrijednosti
za podešavanje parametara sustava CSI. Daljnja ispitivanja sustava CSI nad istim
arhivama upućuju na pouzdanost procesa usporedbe i manje odstupanje od
pojedinih sustava za detekciju plagijata.
Način na koji je sustav SCI implementiran takoĎer ostavlja dosta prostora za
nadogradnju i poboljšanja. Proces analize izvornih tekstova prilikom predavanja
arhiva i pojedinačnih datoteka na sustav se može izvesti raspodijeljeno na više
radilica. Takvom paralelizacijom bi se rasteretio sustav te postiglo značajno
smanjenje vremena potrebnog za obradu svih poslova iz reda usporedbi. Zbog
prirode programskih zadataka pokazala se potreba na neki način definirati strukturu
ili programski odsječak koji bi se mogao izuzeti iz otkrivanja sličnosti, kako bi se
postigla veća razlučivost procjene sličnosti. Kako se je sustav GOLD pokazao
nedovoljno pouzdanim, potencijalno najkorisnija dorada sustava bi bilo ostvarenje
67
OTKRIVANJE SLIČNOSTI U IZVORNIM TEKSTOVIMA PROGRAMA
pomoćnog programskog sustava koji bi na temelju definiranih gramatika mogao
obaviti leksičku i sintaksnu analizu proizvoljnog programskog jezika. Uz takav
pomoćni sustav bilo bi moguće razraditi metode za analizu sintaksnih stabala te na
takav način doprinjeti pouzdanosti ukupne ocjene sličnosti izvornih tekstova
programa.
68
Literatura
8. Literatura
[1] Random House Webster's Unabridged Dictionary, Random house, 1995.
[2] Web-sjedište sustava MOSS, A. Aiken, URL: http://theory.stanford.edu/~aiken/moss/
(10.01.2011.)
[3] S. Schleimer, D. Wilkerson, A. Aiken Winnowing: Local Algorithms for Document
Fingerprinting, 2003.
URL:http://theory.stanford.edu/~aiken/publications/papers/sigmod03.pdf (15.01.2011.)
[4] D. Eppstein , članak Longest common subsequence,
URL:http://www.ics.uci.edu/~eppstein/161/960229.html, (15.01.2011.)
[5] L. Allison, članak Suffix trees, URL: http://www.allisons.org/ll/AlgDS/Tree/Suffix/
(29.8.2010.)
[6] Web-sjedište sustava GOLD, URL: http://www.devincook.com/goldparser/index.htm
(prosinac 2010.)
[7] Web-sjedište aplikacije Calitha GOLD Parser,
URL:http://www.calitha.com/goldparser.html (prosinac 2010.)
[8] mnogi, Jplag: Finding plagiarisms among a set of programs, 2000.,
URL:http://page.mi.fu-berlin.de/~prechelt/Biblio/jplagTR.pdf (10.01.2011.)
[9] Web-sjedište sustava SID , URL: http://genome.math.uwaterloo.ca/SID/ (19.01.2011.)
[10] Alexander Gammerman, Vladimir Vovk, članak Kolmogorov complexity: sources, theory
and applications. The Computer Journal, vol. 42, no. 4, 1999.
[11] Web-sjedište sustava SIM, URL: http://www.cs.vu.nl/~dick/sim.html (19.01.2011.)
[12] Web-sjedište sustava CodeMatch, URL:http://www.sorp.biz/products_codesuite.htm
(19.01.2011.)
[13] Matt G. Ellis, Claude W. Anderson, članak Plagiarism Detection in Computer Code,
2005., URL: http://www.rose-hulman.edu/class/csse/faculty-staff/cssedepartment/seniorTheses/Matt%20Ellis.pdf (10.05.2011.)
[14] Alan Parker, James O. Hamblen, članak Computer algorithms for plagiarism detection,
IEEE Transactions on Education, 32(2):94{99, 1989.
[15] J. A. W. Faidhi, S. K. Robinson, članak An empirical approach for detecting program
similarity and plagiarism within a university programming environment, Computers &
Education, 11(1):11, 1987.
[16] Web-sjedište EyesOpen, URL:
http://www.eyesopen.com/docs/toolkits/html/GraphSimTK-python/measure.html#built-insimilarity-measures
[17] Web-sjedište sustava Boss, URL: http://www.dcs.warwick.ac.uk/boss/about.php
69