Você está na página 1de 37

Slovensk technick univerzita

Fakulta informatiky a informanch technolgi


Ilkoviova 3, 842 16 Bratislava 4

Milan Freml, David Chalupa, Marek Mego, Peter Mindek, Michal Noskovi a Matej Sabo

Podpora kontroly plagiarizmu


Tmov projekt I.

tudijn programy: Informan systmy, Softvrov ininierstvo Vedca projektu: Mgr. Daniela Chud, PhD. Ak. rok: 2009/10

Obsah
1 VOD DO PROBLEMATIKY........................................................................................................................3

1.1 o je plagiarizmus?............................................................................................................................3 1.2 Formy plagiarizmu a ich pecifik......................................................................................................3


1.2.1 Zdrojov kdy.........................................................................................................................................3 1.2.2 Slovensk texty.......................................................................................................................................6

1.3 Prehad prstupov k detekcii plagiarizmu...........................................................................................7


1.3.1 Prehad metd spracovania zdrojovch kdov.......................................................................................7 1.3.2 Prehad metd spracovania slovenskch textov.....................................................................................8 2 METDY A PRSTUPY K DETEKCII PLAGIARIZMU..................................................................................9

2.1 Predspracovanie zdrojovch kdov a dokumentcie..........................................................................9


2.1.1 Stop-slov a lematizcia v slovenskch textoch.....................................................................................9 2.1.2 Tokenizcia zdrojovho kdu...............................................................................................................10

2.2 Porovnvanie zdrojovch kdov......................................................................................................10


2.2.1 Rabinov-Karpov algoritmus..................................................................................................................10 2.2.2 Metda Greedy String Tiling ...............................................................................................................11

2.3 Porovnvanie slovenskch textov.....................................................................................................11


2.3.1 Metda N-gramov.................................................................................................................................11 2.3.2 Najdlh spolon podreazec...............................................................................................................11 2.3.3 Frekvencie slov v dokumentoch...........................................................................................................12 2.3.4 Latentn smantick analza................................................................................................................12

2.4 Alternatvne prstupy k detekcii plagiarizmu....................................................................................14


3 ANALZA EXISTUJCICH RIEEN.........................................................................................................16

3.1 Podobnos zdrojovch kdov...........................................................................................................16


3.1.1 SIDPlag.................................................................................................................................................16 3.1.2 JPlag......................................................................................................................................................17 3.1.3 SIM........................................................................................................................................................20 3.1.4 MOSS....................................................................................................................................................21 3.1.5 YAP.......................................................................................................................................................23

3.2 Podobnos slovenskch textov ........................................................................................................24


3.2.1 PlaDeS...................................................................................................................................................24 3.2.2 Sherlock................................................................................................................................................26 4 POIADAVKY NA SYSTM.......................................................................................................................29

4.1 Ciele projektu...................................................................................................................................29 4.2 Analza poiadaviek........................................................................................................................30 4.3 Model prpadov pouitia...................................................................................................................30 4.4 Procesn model................................................................................................................................33
5 ARCHITEKTONICK NVRH RIEENIA..................................................................................................35 LITERATRA................................................................................................................................................37

1 vod do problematiky
1.1 o je plagiarizmus?
Plagiarizmom sa nazva vyuvanie cudzch prc, obrzkov alebo mylienok bez toho, aby sa na ne autor patrine odvolval. Je to teda prisvojenie si asti cudzej prce. S plagitorstvom sa dnes bene stretvame hlavne v kolstve, no neobchdza ani in oblasti kadodennho ivota. Postoj k nemu je v dnenej spolonosti oraz menej tolerantn. Kee sa s plagitorstvom stretvame najastejie v kolstve, jedn sa najm o koprovanie ast cudzch bakalrskych alebo diplomovch prc bez odvolania sa na zdroj. S nstupom internetu sa monosti zskavania informci rozrili, o paradoxne do vekej miery napomohlo k rozreniu fenomnu plagitorstva. Autor, ktor erp mylienky z inch prc, m povinnos uvies k zdroju tchto mylienok pvodnho autora a lnok alebo prcu, z ktorej erpal. To me urobi viacermi spsobmi. Najastejie sa pouvaj vodzovky na vymedzenie citovanho textu, poznmka pod iarou a pouit literatra, ktor sa vinou uvdza na konci prce. V spolonosti existuje snaha autorov plagitorov odhali. Tto snaha vak nara na tvorivos a vynaliezavos plagitorov. T sa snaia cudzie mylienky formulova tak, aby prpadn itate, respektve osoba, ktor prcu bude kontrolova, nemala pochyby o tom, e prca je originlna a vetky mylienky pochdzaj od autora prce. Za tmto elom vzniklo vea systmov a programov, ktor maj za lohu kontrolova prce alebo zdrojov kdy a hada v nich podobnos. Ak je podobnos medzi dvoma dokumentmi nad uritou percentulnou hranicou, s tieto dokumenty oznaen ako podozriv a je na uiteovi, aby urobil nsledn kontrolu. Niektor programy mu mu tto kontrolu znane uahi, a to tm, e graficky vyznaia v dokumentoch asti, ktor sa nachdzaj v oboch prcach.

1.2 Formy plagiarizmu a ich pecifik


1.2.1 Zdrojov kdy

Pouvanie cudzch zdrojovch kdov bez odkazovania sa na pvodnho autora sa zarauje taktie medzi plagitorstvo. Jedn sa toti o pouitie cudzch mylienok, ktor nie s vyjadren vo forme textu, ale vo forme zdrojovho kdu. K softvrovm projektom sa asto viau aj textov dokumenty, ktor obsahuj naprklad analzu, dokumentciu alebo nvod na pouvanie vslednho programu. K tmto dielam, ktor s nedielnou sasou prce autora, sa taktie vzahuje jeho duevn vlastnctvo a nemu by pouit bez uvedenia zdroja. Na obr. 1 meme vidie vsledok ankety, ktor vykonali Bianka Kovov a Pavol Humay vo svojich diplomovch prcach, v ktorch sa zaoberaj plagitorstvom. Z nej je vidie, o tudenti a profesori zahaj pod pojem plagitorstvo.

Obr. 1: Anketa na tmu plagitorstva 1

Z prieskumu je zrejm, e vina respondentov poklad zdrojov kd za vemi dleit a je potreba sa na pri odvodench prcach odvolva. Zisovanie podobnosti v zdrojovch kdoch je vemi nron loha, nakoko existuje vea metd, pomocou ktorch sa d pravdepodobnos na odhalenie podobnosti zni. Jednoduch plagity doke odhali aj osoba, ktor porovnva dva sbory a doke na 100% poveda, e sa jedn o plagity, cez zloitejie a po tie najzloitejie techniky, ktor sa daj odhali a za pomoci sofistikovanch nstrojov. Vetky tieto techniky sa snaia pozmeni pvodn zdrojov kd tak, aby bol na pohad rozdielny, ale vsledok programu bol nezmenen. To znamen, e pvodn aj odvoden program na rovnak vstup daj rovnak vstup. Poda Paula Clougha [Clough, 2000] meme zmeny v zdrojovch kdoch rozdeli poda ich zloitosti na: 1. 2. 3. 4. 5. 6. 7. iadna zmena Zmena komentrov Zmena identifiktorov Zmena pozcie premennch Kombincia procedr a funkci Sprvanie programu Kontrola logiky programu

Predol zoznam sa d graficky zobrazi pomocou prehadnho grafu, ktor je zobrazen na obr. 2.

Bianka Kovov: Podobnos a rozpoznanie opsanho programu. Diplomov prca, 2009.

Obr. 2: Vykonan zmeny v zdrojovch kdoch [Clough, 2000]

Z obrzka je zrejm, e metd na maskovanie plagitorstva je viac a lia sa v zloitosti a v ase, ktor je potrebn na ich zapracovanie. Najmenej namhav s postupy L1 a L2. Tu sta v prci pozmeni alebo vymaza len komentre pvodnho autora. Taktie je mon premenova nzvy premennch a funkci, ktor program pouva. V prpade premennch plagitori asto menia ich typ. Naprklad prepu premenn, ktor bola pvodne deklarovan ako celoseln typ, na typ s desatinnou iarkou. Medzi tieto jednoduch spsoby meme taktie zaradi pridvanie medzier, tabultorov, przdnych riadkov do zdrojovho kdu. Postupy, ktor patria do tejto skupiny s teda najjednoduchie a preto je aj ich odhalenie najmenej zloit. Na ich odhalenie netreba asto ani zloit nstroj, ale sta len manulna kontrola. alou skupinou zmien, s zmeny, ktor u vyaduj zloitejie prostriedky na odhalenie. Do tejto skupiny sa daj zaradi postupy L3 a L4. Jednou z monost je naprklad nahradenie podmienok za while cykly alebo naopak. Tento postup je znzornen na nasledujcej ukke.

Obr. 3: Nahradenie podmienok za cykly

Jednou z monost, ako oklama osobu, ktor kontroluje prcu je nahradenie volan funkcie samotnou implementciou funkcie. Tmto sa stva odvoden prca neprehadnejia a m samozrejme viacej riadkov. Do tejto skupiny meme taktie zaradi nahradenie matematickch kontnt zpisom cez matematick opertory +,-,*,/. Kontantu 6 je mon zapsa naprklad ako 1*2+5-1. Doteraz spomenut postupy si nevyadovali vek nmahu a mnostvo asu na zrealizovanie. Preto aj ich odhalenie je viac menej nenron. Ostatn postupy z obrzku slo 2 si u vyaduj urit nmahu a na vytvorenie plagitu je potrebn vie mnostvo asu. Sem meme zaradi naprklad premieanie poradia vzjomne nezvislch prkazov, blokov vo vetvch switchu, alebo zmenou poradia kontrukcie if else. Pokia chceme spravi kd neprehadn, je mon do prida zbyton kd, ktor sa bu nevykon, alebo jeho vykonanie nebude ma vplyv na vsledok

programu. Takto sofistikovan metdy maj za nsledok, e program, ktor m hada podobnos medzi zdrojovmi kdmi, tto podobnos nenjde, alebo bude podobnos vemi mal, o nebude zo strany uitea vnman ako plagit. 1.2.2 Slovensk texty

S problematikou plagitorstva sa astejie spjaj texty ako programov kdy a preto je plagitorstvo textov aj viacej rozren. V dnenej dobe m lovek obrovsk mnostvo zdrojov, z ktorch me erpa informcie. Za tmto elom vzniklo na internete vea webovch strnok, ktor ponkaj u vypracovan referty, alebo za urit poplatok je majite strnky ochotn vypracova dan prcu. Tento systm je vyuvan najm na strednch kolch, kde sa problm plagiarizmu riei menej ako na vysokch kolch. Samozrejme vetky prce sa lia kvalitou a prevedenm, ktorm chcel autor zataji, e vina jeho prce nie je pvodn. Takto prce meme rozdeli poda zdrojov z ktorch vznikli na: Koprovan plagit Autor odvodenej prce v pvodnej prci len zmenil meno pvodnho autora a nzov samotnej prce. Tento spsob meme zaradi medzi najjednoduchie formy plagiarizmu a preto sa takto prce aj najahie odhauj i u za pomoci programu na to urenho, alebo uitea. Modifikovan plagit V tomto diele je zmenench viacej ast. Okrem mena samotnho autora a nzvu prce sa v texte zmenia formulcie, poprpade sa pomen poradie kapitol. Do prce sa pridaj zdroje z internetu, najastejie z elektronickch encyklopdi ako je naprklad Wikipdia. Do prce je mon prida alie obrzky, alebo niektor existujce obrzky vymaza. Reern plagit V tomto diele s pouit mylienky z viacerch zdrojov, ktor sa tkaj problematiky diela. Samotn dielo je poskladan z viacerch originlnych prc inch autorov.

Odhaovanie plagitov v psanom texte V nasledujcom odseku s popsan spsoby, akmi sa d odhali plagitorstvo v psanch textoch aj bez pomoci elektronickch nstrojov. Kad jeden z ns m svoj pecifick slovnk, ktor pouva pri psan prc. Pomocou tejto vlastnosti sa d jednoduchm spsobom odhali prca, ktor s vekou pravdepodobnosou nie je originlna, alebo obsahuje asti z inch prc. Medzi tieto vlastnosti patr: 1. 2. Pouitie slov Kad jeden z ns pouva svoj slovnk a pouva pecifick slov, ktor nemusia pouva ostatn. Analzou tchto slov sa d ahko zisti i je autorom textu samotn tudent. Zmena slov Tento bod m svis s bodom 1. Ak tudent vo svojej prci zane pouva vrazy, ktor predtm nepouval, je mon e dan text niekde prevzal, nakoko lovek asto nemen svoj zauvan slovnk a je pre kadho viac menej jedinen. Celistvos textu Tento bod hovor o tom, i je text jeden celok, alebo niektor jeho asti do textu nezapadaj. Interpunkcia a gramatick chyby Pokia maj dve rozdielne prce rovnak gramatick chyby, alebo je v oboch v pecifickch astiach alebo slovch vynechan interpunkcia je vemi pravdepodobn, e jedna z prc je skoprovan. Stavba viet Tak ako m kad jeden autor pecifick slovn zsobu, pouva aj vlastn kontrukcie viet, v ktorch svoju slovn zsobu pouva. Autor me pouva vemi dlh vety, alebo naopak krtke vety, v ktorch zhrnie svoju mylienku. Ak autor vo svojich prcach dlhodobo pouva

3. 4.

5.

jeden tl psanie viet, je mlo pravdepodobn, e ho bezdvodne v inej prci zmen. Indiktorom plagitu me by aj vskyt jednotlivch slov, ktor sa v prci nachdzaj. i u sa jedn o poet jednotlivch slov, alebo ich pecifick umiestnenie. Vyie spomenut body samozrejme neplatia vdy a pre vetky prce. Je to len pomcka pre uitea a rchly spsob, akm me njs podozriv prce. Niektor z tchto spsobov naprklad nemu fungova na prcach, pri ktorch m via skupina za lohu napsa prcu na rovnak tmu. Vo vine prc sa bud vyskytova rovnak pecifick pojmy, ktor s prcou svisia a bez nich nie je mon prcu napsa. Medzi tieto pojmy sa daj zaradi: Men Dtumy Geografick lokcie pecifick pojmy z problematiky, ktorou sa prca zaober

Naopak, existuj slov, ktorch vskyt v prci me opravujcemu indikova, e autor prce ho prebral z inej prce. Tieto slov sa nazvaj hapax legomena [Clough, 2000] slov. Jedn sa o slov, ktor s v prci pouit prve raz. Parafrzovanie Parafrzovanie je lingvistick opercia, ktor spova vo vyjadren toho istho obsahu, ako m vchodiskov vraz, kontrukcia alebo vpove, inmi vrazovmi prostriedkami. [FILIT] Medzi najastejie druhy parafrzovania zaraujeme: Pouitie synonm vo vete - Niektor kov slov s nahraden ich synonymami. Pvodn veta: Bol brutlne napadnut a zavraden. Pozmenen veta: Mu bol brutlne napadnut a zabit. Zmenenie typu vety Pri tomto spsobe sa do pvodnej vety vkladaj takzvan transition slov ako naprklad ale, take, pretoe, kvli. Pridanie tchto slov asto zmen typ vety. Pvodn veta: Technolgia me spsobi katastrofu. Pozmenen veta: Katastrofa je spsoben kvli technolgim. Zmenenie slovosledu vo vete V originlnej vete sa pomen poradie slov, tak aby nov veta mala rovnak vznam. Pvodn veta: Technolgie mu zlepi kvalitu ivota ak si dkladne plnujeme budcnos. Pozmenen veta: Ak si dkladne plnujeme budcnos, technolgie nm mu zlepi kvalitu ivota [Clough, 2000].

1.3 Prehad prstupov k detekcii plagiarizmu


1.3.1 Prehad metd spracovania zdrojovch kdov

Pre vetky metdy plat, e lepie vsledky vykazuj po predspracovan kdu, za o meme povaova jeho tokenizciu. Tokenizcia me by implementovan rznymi spsobmi a vsledok predspracovania kdu m vznamn vplyv na urenie podobnosti. Metdy spracovania zdrojovho kdu meme rozdeli poda prstupu k zdrojovmu kdu na:

trukturlne metdy hadajce v kde rovnak trukturlne prvky Netrukturlne metdy hadajce jednoducho podobnosti textu zdrojovch kdov

Medzi trukturlne metdy meme zaradi naprklad hadanie najvieho spolonho podgrafu. Netrukturlne metdy alej meme rozdeli na: tandardn Metdy pre porovnvanie textov

Do tandardnch metd na porovnvanie zdrojovch kdov meme zaradi Rabinov-Karpov algoritmus, prpadne Greedy String Tiling. Na zisovanie plagiarizmu v zdrojovch kdoch sa vak po predspracovan asto pouvaj aj metdy na spracovanie textov. Ich prehad sa nachdza v nasledujcej kapitole. 1.3.2 Prehad metd spracovania slovenskch textov

Zdenk eka uvdza rozdelenie metd pre detekciu plagiarizmu v textovch dokumentoch na zklade dvoch hlavnch kritri [eka, 2008]. Poda zloitosti metdy rozdeujeme nasledovne:

Povrchn Metdy nevyuvaj iadne lingvistick pravidl, pracuj iba s pvodnm textom. trukturlne Metdy sa snaia iastone porozumie dokumentu.

Druh kritrium predstavuje poet spracovanch dokumentov. Na zklade spomnanho kritria meme metdy zaradi do nasledujcich tyroch kategri:

Jednotliv Metdy spracovvaj v rovnakom ase iba jeden dokument. Prov Metdy vykonvaj spracovanie dvoch dokumentov naraz. Multidimenzionlne Metdy spracovvaj aspo tri dokumenty naraz. Korplne Metdy spracovvaj naraz cel skman vzorku.

Pozrime sa detailnejie na rozdelenie poda prvho kritria. Povrchn metdy spravidla pracuj priamo s dokumentom, ktor skmame. trukturlne metdy naopak pred samotnm spracovanm textu vykonvaj predspracovanie. V slovenskom jazyku toto predspracovanie pozostva z dvoch innost:

1. Odstrnenie stop-slov Existuj slov, ktor tvoria vek as dokumentov v prirodzenom


jazyku, ale principilne neovplyvuj vznam textu. Spomnan slov nazvame stop-slovami a meme ich jednoducho vli z textu. 2. Lematizcia Pod pojmom lematizcie rozumieme prevod slova na zkladn tvar Druh kritrium rozdeuje metdy na zklade potu dokumentov, ktor spracovvame naraz. Vzhadom k tomu, e si kladieme za cie skma podobnos, prirodzenmi metdami s predovetkm metdy prov, z ktorch si predstavme napr. metdu 3-gramy alebo LCS. Vydme sa ale aj ku korplnej metde latentnej smantickej analzy.

2 Metdy a prstupy k detekcii plagiarizmu


2.1 Predspracovanie zdrojovch kdov a dokumentcie
2.1.1 Stop-slov a lematizcia v slovenskch textoch

Predspracovanie slovenskch textov pre potreby bliej analzy textu prebieha v dvoch fzach. Prv fzu tvor odstrnenie tzv. stop slov, smanticky nevznamnch slov. S to zva krtke slov, predloky, spojky, astice prpadne samostatn slice. V druhej asti, nazvanej lematizcia, sa kad slovo zmen na jeho slovnkov tvar prpadne na kore pvodnho slova. Tto transformciu mono dosiahnu niekokmi spsobmi. Vemi jednoduch ale inn metda je pouitie databzy vetkch slov v slovnku a ich prslunch monch tvarov. Nsledne mono sprova ubovon slovo obsiahnut v slovnku s jeho zkladnm tvarom. Problm nastane v prpade slov, ktor nie s obsiahnut v slovnku. S to prevane nov slov, men, priezvisk, nzvy firiem. Kore slova z takchto slov je mon zska iba algoritmickou detekciou, ktor vak nemus by vdy presn. alm problmom me by nutnos rchleho prstupu do databzy a vyhadvanie v nej. Dleit je prve fakt, e samotn slovnk slovenskho jazyka obsahuje pribline 150000 slov v zkladnom tvare, ktor maj alch pribline 5 milinov tvarov, o nie je mlo. Monm skalm sa jav aj samotn dostupnos a prtomnos spomnanej databzy v systmoch, kde je lematizcia potrebn. Aj zo spomenutch dvodov je snaha vyvin algoritmick rieenie, ktor nie je zaloen len na plnosti a dostupnosti databzy vetkch slov. Potrebn rieenie existuje v anglickom jazyku implementovan ako Porter-ov algoritmus. Tento prstup je zaloen na odstraovan znmych prpon zo slov. V slovenine je vak tento spsob takmer nemon prpadne vemi neefektvny, pretoe by bolo treba odvodi vetky pravidl na ohbanie slov. V dokumente [LM] je vak navrhnut zaujmav spsob rieenia uvedenho problmu pomocou cross-over algoritmu. Tento algoritmus predpoklad, e mme k dispozcii databzu vetkch slovenskch slov v ich zkladnom tvare a alej reprezentatvnu vzorku slov a ich tvarov po skloovan rozloench na slabiky. Algoritmus funguje na zklade podobnho skloovania slov. K zadanmu slovu sa vdy vyberie slovo z databzy s rovnakou koncovkou. alej sa zist zkladn tvar vybranho slova, priom sa sleduje zmena koncovky slova pri tomto prechode a nsledne sa algoritmus sna vykona podobn transformciu aj na zadanom slove. Vsledn slovo sa nakoniec skontroluje v databze vetkch slov v zkladnom tvare. Ak sa tak slovo nalo, predpokladme, transformcia prebehla spene. Kvalita vsledku samozrejme zvis od sprvneho vberu slova s rovnakm skloovanm, o vak mono zefektvni ak dan slovo bude ma naprklad ten ist rod. Samozrejme vsledok nie je vdy korektn, znme s naprklad problmy pri jednoslabinch slovch, pri zmene zkladu slova pri skloovan a in. Dleit vak je, e testovanm [LM] sa ukzalo, e sprvnos vsledku pri pouit spomenutho algoritmu je vye 90%. Tto hodnota je vemi dobr aj vzhadom nato, e nepotrebujeme databzu vetkch slov a ich skloovan. Prklad predspracovania textu: 1 vyradenie stop slov z textu Mama mi povedala, aby som kpil 10 rokov a priniesol aspo jednu limondu. Mama povedala kpil 10 rokov priniesol aspo jednu limondu. 2. prava slov na zkladn tvar Mama poveda kpi 10 rook prinies aspo jedna limonda.

2.1.2

Tokenizcia zdrojovho kdu

Tokenizcia je proces, pri ktorom sa sname intrukcie pvodnho kdu nahradi inmi symbolmi tak, aby sme ich vznam zoveobecnili. To znamen, e viacerm pvodnm symbolom meme priradi jeden a ten ist symbol (token) . Tmto spsobom zabezpeme, e ak plagitor zmen urit as kdu za in funkne ekvivalentn as, tak po predspracovan oboch kdov tokenizciou zskame identick vsledky. Pri tokenizciu asti kdu while x>3; meme poda stupa generalizcie zska naprklad takto vsledky : while VARIABLE > 3 while CYCLE_begin Je teda zrejm, e samotn spech tokenizcie zvis aj od zvolenho stupa generalizcie. Nespornou vhodou tokenizcie je skutonos, e takmto spsobom meme spene porovnva zdrojov kdy, ktor s naprogramovan inmi programovacmi jazykmi. V kadom jazyku existuje ist forma podmienok, cyklov, metd a podobne. Tieto prvky sa pri tokenizcii preved na jeden, pre vetky jazyky rovnak symbol. Pre lepie pochopenie monch tokenov je uveden nasledujca tabuka, kde sa jednotlivm identifiktorom v zdrojovom kde prirad symbol, token. Identifiktor v zdrojovom kde Int, float, double, boolean, byte, long, short String, StringBuffer, StringBuilder, char while, do-while, for, repeat-until, if then, else <, >, <=,>=, ==, != ubovon premenn +, -, *, /, Token NUMBER STRING BLOCK COMPARATOR VARIABLE OPERATOR

2.2 Porovnvanie zdrojovch kdov


2.2.1 Rabinov-Karpov algoritmus

RabinovKarpov algoritmus patr medzi klasick prstupy k rieeniu problmu vyhadvania podreazcov. V prvom kroku vypotame hash reazca i podreazca, tm sa konvertuje loha porovnvania reazcov na lohu porovnvania hashov s kontrolou zhody reazcov. Nsledne iterujeme nad reazcom a potame hashe pre vetky podreazce typu 1..m, 2..m+1, at. Porovnvame hashe. V prpade zhody porovnvame samotn reazce. Algoritmus meme vyjadri v nasledujcom pseudokde. Algoritmus 2.2.1 Rabinov-Karpov algoritmus [Karp, 1987]
RabinKarp(string s[1..n], string sub[1..m]) hsub = hash(sub[1..m]); hs = hash(s[1..m]) for i=1..(n-m+1) if (hs == hsub) if (s[i..i+m-1] == sub) return i hs = hash(s[i+1..i+m]) return not found

10

2.2.2

Metda Greedy String Tiling

Greedy String Tiling predstavuje metdu na porovnvanie tokenizovanch zdrojovch kdov, v ktorej implementcii sa spravidla vyuva Rabinov-Karpov algoritmus. Cyklicky iterujeme nad tokenmi, vyuvame tzv. zaznaovanie tokenov, na zaiatku kadej itercie s vetky tokeny v reazcoch A a B nezaznaen. Pre vetky neoznaen tokeny v A a B potom hadme o najdlhiu sekvenciu zhodnch tokenov. Vytvorme mnoinu takchto sekvenciu, ktorej tokeny nsledne zazname. Pokraujeme alou iterciou. Algoritmus pecifikujeme nasledujcim pseudokdom. Algoritmus 2.2.2 Greedy String Tiling [Wise, 1993]
GreedyStringTiling(String A, String B) tiles = {}; do maxmatch = Max; matches = {}; Forall unmarked tokens Aa in A Forall unmarked tokens Bb in B j = 0; while (Aa+j == Bb+j && unmarked(Aa+j) && unmarked(Bb+j)) j++; if (j == maxmatch) matches = matches + match(a, b, j); else if (j > maxmatch) matches = {match(a, b, j)}; maxmatch = j; Forall match(a, b, maxmatch) in matches For j = 0..(maxmatch- 1) mark(Aa+j); mark(Bb+j); tiles = tiles + match(a, b, maxmatch); while (maxmatch > M); return tiles;

2.3 Porovnvanie slovenskch textov


2.3.1 Metda N-gramov

Jednu z najjednoduchch a paradoxne aj najinnejch metd porovnvania frz v textoch predstavuje metda N-gramov. Pod N-gramom budeme rozumie N-ticu slov, ktor v texte nasleduj bezprostredne za sebou. Uvaujme napr. metdu 3-gramov. Pri porovnvan dvoch sborov vtedy vyberieme 1., 2. a 3. slovo z obidvoch sborov a porovnme. Cel proces opakujeme nad vetkmi monmi dvojicami 3gramov, ktor v danch sboroch existuj (vrtane prekrvajcich sa 3-gramov). Porovnanie dvoch N-gramov mono najjednoduchie vykona prostrednctvom naivnej metdy, t.j. porovnva frzy postupne po znakoch. 2.3.2 Najdlh spolon podreazec

Problm najdlhieho spolonho podreazca dvoch reazcov (angl. Longest Common Substring, alej len LCS) patr medzi typick aplikcie dynamickho programovania. Algoritmus 2.3.1 popisuje, ako je

11

vyuvan tabuka dvojrozmern pole back na memorizciu vsledkov pre i-tu pozciu prvho a jtu pozciu druhho reazca znakov. Rekurzvna formulcia algoritmu je nasledujca [LCS]:

Algoritmus 2.3.1 Hadanie LCS pomocou dynamickho programovania zdola nahor [LCS]
LCS(X,Y) m <- LENGTH[X]; n <- LENGTH[Y]; for i <- 1 to m, do c[i,0] <- 0; for j <- 0 to n, do c[0,j] <- 0; back <- c; for i <- 1 to m, do for j <- 1 to n do if (x[i] = y[j]) c[i,j] <back[i,j] else if (c[i-1,j] c[i,j] <back[i,j] else c[i,j] <back[i,j] return c and back

c[i-1, j-1]+1; <- "UP&LEFT"; >= c[i,j-1]) c[i-1,j]; <- "UP"; c[i,j-1]; <- "LEFT";

Metda najdlhieho spolonho podreazca vykazuje pre detekciu plagiarizmu relatvne nzke percentulne ohodnotenia podobnosti, preto je potrebn dba na to, aby bola nastaven dostatone nzka hranica, po ktorej prekroen systm vyhlsi sbory za podobn. Spomnan hranica sa me pohybova pribline okolo 3%. 2.3.3 Frekvencie slov v dokumentoch

al prstup k detekcii podobnosti v slovenskch textoch predstavuje potanie frekvenci, s ktormi sa jednotliv slov nachdzaj v skmanch textoch. Jednoduch metdu, zaloen na porovnvan tchto poetnost, nazvame metdou TF. Modifikciu metdy TF meme zska tak, e vylime slov, ktor sa vyskytuj v danej vzorke vemi asto, uvaujeme nsledne iba frekvencie vskytov vzcnejch slov, o pri rovnakej tme lnkov vedie na rozdiel od LCS prve k vysokm podobnostiam. Jedn sa o metdu inverznej frekvencie slov v dokumentoch (angl. Inverse Document Frequency, skr. IDF). 2.3.4 Latentn smantick analza

V nasledujcich riadkoch sa oboznmime s metdou, ktor u vyuva zloitej prstup k detekcii plagiarizmu v dokumentoch. Latentn smatick analza sa, ako alternatvna metda, zaklad na reprezentcii vzorky dokumentov pomocou linerneho modelu. Koncepciu metdy a jej vyuitenos predstavil Zdenk eka [eka, 2008].

12

Fza predspracovania v metde LSA Predspracovanie prirodzenho jazyka prebieha v LSA rovnako, ako sme opsali v asti 2.1.1, zma sa stop-slov, vykon sa lematizcia. Extrahujeme z dokumentov frzy ako N-gramy, priom odporan hodnota N sa pohybuje pribline v intervale od 5 do 10. Nsledne sa zo vzorky odstrnia frzy, ktor sa nachdzaj iba v jednom dokumente. Naopak, ast frzy odstraujeme vtedy, ke ich zastpenie v dokumentoch presahuje urit hranicu. Ostatn frzy sa pouij na tvorbu matice A. Model dokumentov a jeho vyjadrenie pomocou matice Budeme ma maticu A rozmeru n x m. Jej riadky popisuj model, ktor uruje, ktor frzy dokument reprezentovan i-tym stpcom matice obsahuje. V porad j-ty riadok matice reprezentuje frzu j. Potom ohodnotme prvky matice hodnotami poda nasledujceho vzahu [eka, 2008]:

kde PF[i,j] znamen frekvenciu vskytu frzy j v dokumente i, DF[j] znamen poet dokumentov, v ktorch sa nachdza frza j a |n| je poet skmanch dokumentov. Zloitos vzorca pramen z poiadavky, aby sa koeficienty matice pohybovali v intervale <0.5;1>, m sa dosiahne vraznej odstup od nuly, ktor reprezentuje absenciu frzy v danom dokumente. Algoritmus singulrnej dekompozcie matc Definujme vlastn slo tvorcovej matice M ako tak skalr , e plat: Mx = x, (3) pre nejak vektor x, ktor nazvame vlastnm. Nech A je teraz obdnikov matica rozmeru n x m (napr. naa matica modelu dokumentov). Uvaujme matice AAT a ATA, kde opertor T zna transpozciu matice. Uveden matice s obidve evidentne tvorcov (rozmerov m x m, resp. n x n). Pod singulrnou dekompozciou matice A rozumieme sin: A = U V T. (4) Postulujme, e matice U a V maj k spolonch vlastnch sel. Matica rozmeru k x k obsahuje spomnan vlastn sla AAT a ATA, nazvame ich singulrnymi slami matice A. Matice U rozmeru n x k a V rozmeru m x k potom v stpcoch obsahuj vlastn vektory, prislchajce k maticiam AAT , resp. ATA. Spomnan vektory nazvame takisto singulrnymi vektormi matice A. Interpretcia singulrnej dekompozcie vo vzahu k LSA je zobrazen na nasledujcom obrzku. Matice U, resp. V obsahuj vo svojich stpcoch vektory - profily jednotlivch frz, resp. dokumentov.

13

Obr. 4: Singulrna dekompozcia v kontexte LSA [eka, 2008]

Metdu singulrnej dekompozcie mono implementova viacermi spsobmi. Niekoko z nich priamo ponka vedeck kninica pre jazyk C GNU Scientific Library [GSL]. Vpoet korelanej matice podobnosti dokumentov Profily, ktor zskame singulrnou dekompozciou matice dokumentov nm ete o hadanej podobnosti priamo ni nepovedia. Preto je potrebn pristpi k zverenej fze LSA. V prvom kroku vynsobme jednotliv profily dokumentov zodpovedajcimi singulrnymi slami, o meme zapsa pomocou maticovho sinu: B = V T. (5) Stpce matice B teraz musme normalizova, t.j. kad stpcov vektor musme vynsobi skalrom tak, aby jeho vekos bola rovn 1. Vznikne nm tak matica ||B||. Polome: S* = ||B||T ||B||. (6) Uvedenm vpotom u zskame maticu, ktorej prvky u popisuj podobnosti medzi jednotlivmi dokumentmi vo vzorke. Vzhadom k vyuitiu filtra vo fze predspracovania s hodnoty ale skreslen, preto musme vykona nasledujci vpoet, ktorm zskame finlnu korelan maticu podobnosti dokumentov S:

V uvedenej rovnici phorig predstavuje poet pvodnch frz a phorig poet frz, ktor v dokumente zostvaj po redukcii.

2.4 Alternatvne prstupy k detekcii plagiarizmu


Kontrola zdrojovch kdov intrukcie Tokenizcia zdrojovho kdu by mohla prebieha na rovni jednotlivch prkazov kad prkaz by bol jeden token. Toto by mohlo by realizovan prevodom zdrojovho kdu do jazyku symbolickch intrukci, prpadne do postupnosti pseudointrukci, sada ktorch by bola navrhnut pecilne pre tento el. Pri tomto prevode by boli cykly a podmienky zapsan pomocou skokov, podobne, ako je to pri kompilovan programu do strojovho kdu. Vaka tomu by sa zvila schopnos programu odhaova techniky pouvan plagitormi, akmi s naprklad prepsanie while cyklov na for cykly a podobne. alou monosou je nahradenie volan loklnych funkci ich implementciou, v prpade, 14

e je to mon. Na takto predspracovanom zdrojovom kde by sa mohlo vykona porovnanie pomocou ubovonej metdy na porovnvanie textov jednotliv pseudointrukcie by boli spracovvan rovnako ako slov v zkladnom tvare. Bol by vak kladen draz predovetkm na rovnak postupnosti intrukci, pretoe rovnak skupiny intrukci s rznym poradm pravdepodobne neznamenaj rovnak zdrojov kdy. Samotn intrukcie by neobsahovali dta, ktor maj pri kontrole plagiarizmu vek vpovedn hodnotu (a na niekoko pecilnych prpadov). Kontrola zdrojovch kdov graf alou metdou kontroly by mohlo by vytvorenie grafovej reprezentcie kontrolovanho zdrojovho kdu. Vrcholy grafu by tvorili dtov truktry a bloky kdu, hrany by predstavovali vzahy medzi tmito entitami. V takomto grafe by sa hadal najv spolon podgraf, priom by sa brali do vahy taktie typy jednotlivch vrcholov. Typmi sa mysl naprklad funkcia, truktra, if-podmienka, forcyklus, a podobne. String-blurring algoritmus V naom systme chceme experimentova s nam vlastnm algoritmom, ktor sme nazvali Stringblurring. Jeho podstatou je vynechanie vetkch bielych znakov z textu (medzery, tabultory, konce riadkov, a pod.) a uloenie jednotlivch znakov do jednorozmernho poa. Kad znak je v tomto poli reprezentovan svojou selnou hodnotou. Pole je nsledne rozmazan hodnota kadho prvku poa je nahraden hodnotou venho priemeru hodnt okolitch prvkov, priom vhy s uren normlnym (gaussovskm) rozdelenm. Z dvoch takto predspracovanch pol sa vyber vetky mon prekrvajce sa podpostupnosti, ktor sa od seba odtaj. Vo vsledkoch tvorench rozdielom hodnt podpostupnost sa nsledne vyhad najdlhia podpostupnos prvkov, ktorch absoltna hodnota je menia ako zadan prah. Dka tejto podpostupnosti je vstupom algoritmu a tvor index podobnosti danch sborov. Okrem prahu podobnosti, na zklade ktorho sa vyhadvaj najdlhie podpostupnosti, je mon meni silu rozmazania poet susednch prvkov, ktor tvoria ven priemer novej hodnoty prvku poa. Algoritmus je pomerne odoln voi malm a poetnm zmenm textu, ktor by potencilne dokzali oklama algoritmus Longest common substring. Relevantnos vsledkov vak kles so silou rozmazania, ktor presiahne urit hodnotu. Tto hodnota mus by zisten experimentlne.

15

3 Analza existujcich rieen


Pre lepie pochopenie vlastnost, ak m budca aplikcia poskytova sa analyzovali niektor v sasnosti pouvan nstroje na detekciu plagiarizmu. Menovite SIDPlag, Jplag, SIM, MOSS, YAP, Plades a Sherlock. Niektor s primrne uren na zdrojov kdy, in na porovnvanie textov. Vetky nstroje sme testovali na rovnakch vstupoch. Slovensk texty sme zskali na zklade predchdzajcich prc kolegov od Daniely Chudej. Pri zdrojovch kdoch sa na chvu zastavme. V kapitole 1.2 s spomenut zkladn princpy vytvrania plagitov z originlnych zdrojovch kdov. V nasledujcej tabuke je uveden metodika pre tvorbu fiktvnych plagitov za elom testovania u existujcich programov na detekciu plagitorstva ako i vytvranho nstroja v tomto projekte. Tmto spsobom sa zabezpeia objektvne a porovnaten vsledky. V tabuke s zobrazen tyri rovne plagitorstva priom kad nasledujci zaha aj zmeny predolho plagitu. premenovanie premennch, prehodenie funkci, metd, zmena typu premennch, zmena odsadenia, pridvanie przdnych riadkov, medzier, zmena komentrov Prepis podmienok na while cykly a naopak, nahradenie volanie funkci ich implementciou, nahradenie kontnt, define prepis jednoduchch opercii na vlastn funkcie, zmena poradia vzjomne nezvislch intrukci, blokov vo switch-i, poradie if {} else {}, iaston pridanie a odobratie zbytonho kdu a prava podmienok pomocou zbytonho kdu pridanie zbytonho kdu za kad operciu, drobn zmena funkcionality

amatr

tudent pokroil

guru

3.1 Podobnos zdrojovch kdov


Tto kapitola je zameran na nstroje primrne uren na podobnos zdrojovch kdov, to vak neznamen, e sa nedaj poui na detekciu plagiarizmu v slovenskch textoch. Tto skutonos naznauj aj niektor dosiahnut vsledky. 3.1.1 SIDPlag

Implementcia: Je programovan v jazyku Java. Algoritmus: Ideou algoritmu poda dokumentcie je rozloenie si problmu na dve asti. V prvej asti nstroj tokenizuje kd, tak aby zamenil vetky jednoducho zameniten prvky kdu na jeden veobecn symbol. V alej asti je pouit vone dostupn algoritmus na porovnvanie textov Greedy String Tiling. Z uvedenho vyplva, e zaujmavou asou rieenia je prve as tokenizcie. Program pouva zkladn symboly pre tokenizciu ako s: zmena premennch, cyklov i zruenie nepodstatnch ast. Takto druh tokenizcie by bol dostaujci, ak by boli pouvateovi poskytnut monosti pre pridvanie vlastnch symbolov, o je vak len ako realizovaten. Podmienky pouitia: Pre pouitie SIDPlag-u mus pouvate ma naintalovan JRE v bliie nepecifikovanej verzi. Jedn sa vone dostupn aplikciu, nie je nutn registrcia. 16

Pouitie: Program SIDplag , sli na porovnvanie zdrojovch kdov jazyku java a C. alej program umouje aj porovnvanie benho textu, o vyplva z implementanho algoritmu programu, avak o tejto funkcii nikde nie je zmienka. Vizualizcia: SIDPlag zobrazuje podobnosti dvojc sborov v prehadnej tabuke. Je mon vybra konkrtnu dvojicu a zobrazi ich obsah veda seba. Tie farebne vyznauje rovnak asti. Klady: pri relatvne jednoduchom algoritme sa daj zska akceptovaten a vierohodn vsledky prehadn zobrazenie vsledkov Zpory: pouvateovi nie s poskytnut monosti pre pridvanie vlastnch symbolov pre tokenizciu program sa d teda ahko obs potencionlnym plagitorom, pridanm zbytonho kdu problm, ak plagitor vklad do kdu ni nevykonajce, zbyton asti implementcie program a prli zaujat voi plagitorom, ke udval mieru podobnosti vyiu ako 100%, tto situcia nastala vtedy, ke program chybne vyhodnotil podobnos stringov (531%) nutnos zadvania zdrojovho adresra pri kadom novom porovnvan nekorektn urovanie vekosti okna, pri prli dlhej ceste k sborom je potrebn rune okno zvova, inak s nedostupn tlaidl Vsledky testovania: Vsledky s dobr pri jednoduchch algoritmoch. Pri pridvan zbytonch intrukci vak strcaj na relevantnosti.
C Originl program1 program1 program1 program1 program2 program2 program2 program2 Java Originl program1 program1 program1 program2 program2 program2 program2 plagit program1 program1 program1 program1 program2 program2 program2 program2 plagit program1 program1 program1 program2 program2 program2 program2 Podobnos 86.71% 71.79% nedetekovan nedetekovan chybov hlsenie chybov hlsenie chybov hlsenie chybov hlsenie Podobnos 59% 7.38% 0.17% 1.26% 1.34% 0.63% 0.63%

(plagit (plagit (plagit (plagit (plagit (plagit (plagit (plagit

amatrsky) tudentsk) pokroil) guru) amatrsky) tudentsk) pokroil) guru)

(plagit (plagit (plagit (plagit (plagit (plagit (plagit

amatrsky) tudentsk) pokroil) amatrsky) tudentsk) pokroil) guru)

Celkov dojem: o sa tka mylienky rieenia problmu, ned sa poveda, e je zl ale ani najlepia. Pouvatesk rozhranie je vporiadku, a na zmienen problm so zadvanm adresra. Rchlos systmu je akceptovaten vzhadom na objem porovnvan. 3.1.2 JPlag Jplag sa pecializuje na odhaovanie plagitorstva v zdrojovch kdoch. Podporuje jazyky Java, C#, C, C++ a Scheme, ale d sa poui aj pri hadan podobnosti v normlnom texte. Program sli na odhaovanie plagitorstva medzi tudentami, ale taktie aj na neleglnom koprovan softvru.

17

Vrobca pe, e JPlag bol u viackrt pouit v majetkovch sdnych prpadoch, v ktorch bol expertmi pouit ako dkazov materil a svedectvo. Implementcia: Program je naprogramovan v jazyku Java, m klient-server architektru. Algoritmus: JPlag transformuje zdrojov kd programu do postupnost tokenov. Kad token sa d chpa ako jeden znak. Pre jazyk Java zverejnili tvorcovia tohto programu celkovo 39 rznych tokenov. Po transformcii na tokeny ich nsledne porovnva a had zhody pomocou algoritmu GST. Teda had podobn reazce zloen z tchto tokenov. GST porovnvanie prebieha po proch. Pri kadom porovnvan sa sna JPlag pokry jeden prd tokenov podreazcom druhho o najlepie ako sa d. Percento prdu tokenov ktor sa d pokry druhm je hodnota podobnosti. Predprprava, teda premena programu na reazce tokenov je jedin proces JPlag-u, ktor je zvisl od programovho jazyka. Implementcie pre jazyky Java a Scheme obsahuj pln parser, zatia o modul pre jazyk C obsahuje iba skener. Podmienky pouitia: Pre pouitie Jplagu mus by pouvate zaregistrovan. Registrcia je na zklade formulra s overenm identity na zklade webovho sdla koly, ktor ukazuje email iadatea, tudenti k Jplagu nemaj prstup pre prpadn zneuitie. Pouitie: Program m intuitvne grafick rozhranie a ponka rzne nastavenia. Funguje ako webov sluba, preto je jednoducho dostupn pre uvatea z ubovolnho miesta. Uvate si vyberie ktor sbory sa maj kontrolova a tie sa nsledne prenes na server, kde sa okontroluj. Testovanie je rchle, rdovo niekoko mint na 100 programov s niekoko sto riadkovm kdom. Program had podobnosti iba vo zvolench programoch, nekontroluje programy na Internete. Vsledok hadania sa uvateom prehadne zobraz vo forme html kdu. Uvate si taktie me nastavi zloitos prehadvania, miesto kam sa maj vsledky uloi, alebo naprklad aj ak podobnos m bra JPlag ako podozriv. Vizualizcia: Jplag vizualizuje podobn asti kdu ich jednoduchm farebnm zvraznenm. Na obrzku 5 s znzornen vsledky nho testovania. Na jednotliv sbory je mon klikn, m sa zobrazia dvojice zdrojovch kdov sborov veda seba so zvraznenou podobnosou. Takto sa d jednoducho zisti ktor asti sborov s si vzjomne podobn. JPlag taktie zobrazuje poet zhodujcich sa tokenov v jednotlivch segmentoch, poda oho vyrtava celkov percento zhody.

Obr. 5.: Vsledky testovania v programe Jplag na vzorke programov v jazyku Java

Klady: intuitvne rozhranie klovatenos nastaven

18

klient-server architektra vemi dob vsledky pre Java sbory prehadn vizualizcia vsledkov archivcia predolch testovan pri zobrazen poda priemernej podobnosti sa nevyskytli falon plagity

Zpory: zloitejie zskavanie softvru nutnos by uiteom/zamestnancom v oblasti kolstva slabia spenos pri sboroch v jazyku C podpora iba pre jazyky Java, C#, C, C++ a Scheme Vsledky testovania: JPlag dosahoval vemi dobr vsledky pri odhaovan plagitov v jazyku Java, no horie vsledky v jazyku C. To me by spsoben tm, e pre Javu je implementovan spomnan pln parser, zatia o pre C iba skener. Jednoduchie plagity v jazyku Java odhalil na 50-81% podobnos, ale aj pri prepracovanejch plagitoch dosahovala podobnos pribline aspo 30%, o je dobr spenos. V jazyku C boli odhalen iba jednoduchie plagity, ostatn ostali nedetekovan. Dobrm vsledkom taktie je, e pri zobrazen vsledkov poda priemernej podobnosti (average similarity) neboli njden falon plagity, teda vyie percento podobnosti pri nesvisiacich programoch. Tto podobnos pri algoritme maximlnej podobnosti (maximum similarity) dosahovala v niektorch prpadoch skoro a 50%, o je vemi neiadce. Na druhej strane je mon, e tto podobnos vznikla z dvodu pouitia rovnakej metodiky pri tvorbe plagitov, alebo podobnho charakteru programov, kee boli psan rovnakm autorom. C
Originl program1 program1 program1 program1 program2 program2 program2 program2 plagit program1 program1 program1 program1 program2 program2 program2 program2 (plagit (plagit (plagit (plagit (plagit (plagit (plagit (plagit amatrsky) tudentsk) pokroil) guru) amatrsky) tudentsk) pokroil) guru) Podobnos 77%/68% 26%/18% nedetekovan nedetekovan 54%/46% nedetekovan nedetekovan nedetekovan

Java
Originl program1 program1 program1 program1 program2 program2 program2 program2 plagit program1 program1 program1 program1 program2 program2 program2 program2 (plagit (plagit (plagit (plagit (plagit (plagit (plagit (plagit amatrsky) tudentsk) pokroil) guru) amatrsky) tudentsk) pokroil) guru) Podobnos 77%/86% 64%/57% 45%/25% 41%/20% 75%/74% 62%/63% 49%/55% 35%/29%

Celkov dojem: vemi uiton nstroj, ktor dosahuje prekvapiv vsledky pre zdrojov kdy v jazyku Java, no horie pre jazyk C. Nevhodami s obmedzenia iba na vybran jazyky a dostupnos iba pre pedaggov, ktorm je uren. Oproti tmto nevhodm ponka program viacer vhody, vaka omu je vemi uiton pri odhaovan plagitov a etren asu.

19

3.1.3

SIM

Implementcia: SIM je open-source textov aplikcia implementovan v jazyku C, k dispozcii pre MS-DOS. Algoritmus: SIM vyuva tokenizciu zdrojovho kdu, priom v tokenizovanch kdoch had najdlh spolon podreazec [Grune, 1989]. Podmienky pouitia: Jedn sa o vone stiahnuten aplikciu pod licenciou GNU GPL, nie je nutn registrcia. Pouitie: Textov rozhranie poskytuje porovnanie mnoiny zdrojovch kdov, percentulna podobnos je urovan relatvne sbor 1 obsahuje X% obsahu sboru 2, opane vychdza in hodnota. Pre porovnvanie s k dispozcii rzne EXE sbory, pre kad jazyk jeden. Vizualizcia: Systm zobraz percentulnu podobnos sborov, vizualizciu zhodnch ast podporuje, ale absentuj v nej prvky zvraznenia. Klady: poskytuje relevantn funkcionalitu vhoda prkazovho riadku - GUI "nezavadzia" vsledok je ist text, vsledky sa daj relatvne ahko vyui alej podpora relatvne slunej kly jazykov a dokonca aj paradigiem - C, Pascal, Lisp, Java, implementovan v C, vemi rchly podporuje aj porovnvanie istho textu

Zpory: chaoticky vyzerajca prezentcia dt pre benho pouvatea slab vizualizcia, svisiaca s absenciou GUI pre kad jazyk m systm jeden EXE sbor, o predstavuje otznu koncepciu z hadiska rozritenosti porovnvanie komentrov si vyaduje spa porovnanie sborov ako textu Vsledky naich testov: C
Originl program1 program1 program1 program1 program2 program2 program2 program2 plagit program1 program1 program1 program1 program2 program2 program2 program2 (plagit (plagit (plagit (plagit (plagit (plagit (plagit (plagit amatrsky) tudentsk) pokroil) guru) amatrsky) tudentsk) pokroil) guru) Podobnos 95%/91% nedetekovan nedetekovan nedetekovan 61%/55% nedetekovan nedetekovan nedetekovan

Java
Originl program1 program1 program1 program1 program2 program2 program2 plagit program1 program1 program1 program1 program2 program2 program2 (plagit (plagit (plagit (plagit (plagit (plagit (plagit amatrsky) tudentsk) pokroil) guru) amatrsky) tudentsk) pokroil) Podobnos 88%/76% 5%/5% nedetekovan nedetekovan 80%/80% nedetekovan nedetekovan

20

program2 program2 (plagit guru)

nedetekovan

Delphi
Originl program1 program1 program1 program1 plagit program1 program1 program1 program1 (plagit (plagit (plagit (plagit amatrsky) tudentsk) pokroil) guru) Podobnos 99%/98% nedetekovan nedetekovan nedetekovan

Celkov dojem: Soldny nstroj, ktor spa zkladn poiadavky, priom spracovanie vzorky prebieha vemi rchlo. Jeho nedostatkom je predovetkm nedostaton schopnos zachyti zloitejie plagitorsk prstupy a otzna je taktie jeho vyuitenos pre alie jazyky (vhodnejie by bolo vyuitie externch definci truktr jazyka). Vhodou je podpora viacerch paradigiem programovania, o ide ruka v ruke so irm dosahom aplikcie (netestuj sa len jazyky s inou syntaxou, ale aj inou koncepciou). 3.1.4 MOSS

Implementcia: MOSS je klient-server aplikacia, klient je implementovan ako Perl skript. Algoritmus: Kee porovnvanie prebieha na serveri a autori algoritmus nezverejnili kvli potencionlnemu zneuitiu tudentmi, nevieme uri ako samotn porovnvanie prebieha. Autori sa vak odkazuj na lnok, k dispozcii na [MOSS], kde s spomenut niektor algoritmy na detekciu plagiarizmu. Podmienky pouitia: Pre pouitie aplikcie je nutn sa registrova, registrova sa me ktokovek. Po poslan mailu na zklade intrukci prde automatick odpove, v ktorej sa nachdza samotn klient. Pouitie: Pre pouvatea OS typu Unix/Linux, ktor m rd jednoduch textov aplikcie vemi prjemn, kee perl je tandardnou sasou tchto OS. Je potrebn len spusti dodan skript s parametrom pre sbory, ktor sa maj otestova. Po uploadovan sborov na server sa na serveri vykon kontrola a nsledne klient dostane http link s prezentciou vsledkov. Vsledky s na serveri uloen alch 14 dn, potom s automaticky zmazan. Zhody s zobrazen prehadne poda sborov, usporiadan zostupne poda potu zhodnch riadkov. D sa poui na detekciu plagiarizmu v irokej palete programovacch jazykov. Pre slovensk texty je vak trochu obmedzen, berie do vahy toti iba ASCII kdovanie. Vizualizcia: Okrem percentulnej zhody sa daj zobrazi sbory veda seba, kde je farbami jasne oznaen, ktor asti sa zhoduj a ktor s odlin (ak je prehoden poradie segmentov, farby zhodnch segmentov s rovnak). Klady: pouitie je vcelku jednoduch a prehadn, skript zvldne poui naozaj kad, kto m k dispozcii stroj s vyie spomenutm OS monos porovnva cel adresre ako programy, teda jeden program na jeden adresr (ocenme v prpade rozsiahlejch projektov) monos na vloenie tzv. basefile = obsahuje kd, o ktorom vyuujci predpoklad, e ho bud zdrojov sbory obsahova (rieenie pecifickej lohy) pri pouit vhodnch parametrov je mon uri poet prpadov, kedy vskyt zhodnho segmentu kdu ete povaujeme za plagiarizmus a kedy za tandardn sas vetkch kdov, m sa d vyhn pouitiu basefile a sasne zlepi vpovedn hodnotu vsledkov dobr prezentcia vsledkov Zpory:

21

"nepodpora" inho ako ASCII kdovania, pre pouitie na slovensk texty je to znane obmedzujce. nevedomos o pouitch algoritmoch na detekciu slab detekcia prpadov, kedy bol kd zmenen trochu viac ako len premenovanie premennch, o dokazuj aj vsledky testov pre benho pouvatea me by problm v pouit klienta, kee vina pouvateov doke poui len programy s GUI

Vsledky testovania: Pri programovch kdoch vie odhali ist koprovanie, prpadne jednoduch zmeny, pri sofistikovanejom plagiarizme vak vsledky nie s dobr. Naprklad pri doplovan podmienok o zbyton klauzule, prpadne prepsan typov cyklov tieto nevie detekova. Toto je mon vidie aj v prezentovanch testovacch vsledkoch. Pri pouit na textov sbory odhal aj tie, kde je prehoden poradie slov vo vete a niektor vety s navye, ale ich poet nesmie prevyova 1-2 v danom segmente. programy JAVA, C, Delphi: asov nronos: 2.525s, z toho 2 sekundy upload sborov na server slovensk texty: asov nronos: 8.788s, z toho 6 seknd upload sborov na server C
Originl program1 program1 program1 program1 program2 program2 program2 program2 plagit program1 program1 program1 program1 program2 program2 program2 program2 (plagit (plagit (plagit (plagit (plagit (plagit (plagit (plagit amatrsky) tudentsk) pokroil) guru) amatrsky) tudentsk) pokroil) guru) Podobnos 82%/78% nedetekovan nedetekovan nedetekovan 57%/53% nedetekovan nedetekovan nedetekovan

Java
Originl program1 program1 program1 program2 program2 program2 program2 plagit program1 program1 program1 program2 program2 program2 program2 (plagit (plagit (plagit (plagit (plagit (plagit (plagit amatrsky) tudentsk) pokroil) amatrsky) tudentsk) pokroil) guru) Podobnos 75%/87% 57%/59% 9%/5% 80%/79% 33%/31% 14%/14% 4%/2%

Delphi
Originl program1 program1 program1 program1 plagit program1 program1 program1 program1 (plagit (plagit (plagit (plagit amatrsky) tudentsk) pokroil) guru) Podobnos 93%/92% 56%/53% 32%/28% 27%/22%

Celkov dojem: MOSS je vemi dobr nstroj pre testovanie plagitov zdrojovch kdov. Najlepie sa uplatn v prpade jednoduchho skoprovania kdu, prpadne ahkch modifikci. M vborn podporu pre vysok poet jazykov. Nevhodou je niia rozliovacia schopnos sofistikovanejch plagitov a taktie pre Windows pouvatea aj implementan prostredie klienta.

22

3.1.5 YAP YAP (Yet Another Plague) je systm pre detekciu plagiarizmu v programovch kdoch (strnka autora naznauje, e by do istej miery mal fungova aj s anglickmi textami). Dostupn s verzie YAP1, YAP2 a YAP3. Implementcia: Implementcia systmu YAP je rozdelen do dvoch ast tokenizcia a samotn vyhadvanie plagitov. as tokenizcie je spolon pre vetky 3 verzie a je implementovan ako shell skript. YAP1 je implementovan ako Bourne-shell skript vyuvajci rzne tandardn aplikcie, primrne sdiff (sli na porovnvanie textovch sborov). Zvyn dve verzie s vytvoren v jazyku Perl. Pre dosiahnutie vyej rchlosti porovnvania s algoritmy verzi YAP2 a YAP3 implementovan v jazyku C. Algoritmus: YAP2 vyuva Heckelov algoritmus, pri YAP3 je to Running Karp-Rabin, Greedy String Tiling algoritmus (Michael J. Wise: String Similarity via Greedy String Tiling and Running KaprRabin Matching). Verzia YAP3 vaka pouitiu RKR-GST doke zdetegova plagity aj so zmenenm poradm podreazcov. Podmienky pouitia: YAP 1,2,3 je vone stiahnuten zo strnky autora. Komern pouitie je podmienen zskanm shlasu autora. Pouitie: Detekcia plagiarizmu prebieha v dvoch krokoch. Prvm je tokenizcia textov. Tto je relevantn iba pre programov kdy, pretoe odstrauje vetky symboly, ktor nie s sasou slovnka pre dan programovac jazyk. Tokenizcia sa d opsa nasledovne [YAP]: komentre a textov kontanty s odstrnen vetky psmen s dekapitalizovan rzne synonym s nahraden ich benou formou ak je to mon, funkcie/procedry s rozvit v porad volania vetky symboly, ktor nie s sasou slovnka pre dan programovac jazyk,s odstrnen

Tokenizcia m teda za cie previes zdrojov kdy na o najveobecnejiu formu (v idelnom prpade tak, e neautorsk program bude zhodn s jeho originlom, aj napriek drobnm zmenm v neautorskej verzi). Je zaujmav vimn si bod o nahrdzan funkci ich implementciou. Nahrdzanie je vykonan v porad, v akom sa funkcie navzjom volaj, o umouje pracova aj volaniami funkci z inch funkci. Dleit je poznmka, e nahradenie prebehne, iba ak je to mon (prkladom, kde to mon nie je, s rekurzvne funkcie naivn prstup nahrdzania by viedol v zacykleniu programu, ktor by sa snail nahradi volanie funkcie implementciou, ktor by tto funkciu volala). Vaka odstrneniu vetkch symbolov, ktor nie s sasou jazyka, systm efektvne oddeuje dta a samotn kd. Ignorovanie dt je logick. D sa toti oakva, e rovnak zadanie bude vies k rieeniam s obsahujcim rovnak dta, aj ke nepjde o plagiarizmus. Fza porovnvania vychdza zo sborov so symbolmi, ktor boli vytvoren v predchdzajcej fze. Porovnvan s potom dvojice tchto sborov. Systmy YAP1, YAP2 a YAP3 sa lia iba v tejto fze tokenizcia je spolon pre vetky tri verzie programu. Vizualizcia: YAP je implementovan ako konzolov aplikcia a jeho jedinm vstupom je textov sbor s vsledkami. Klady: jednoduchos pouitia tokenizcia nahradenie funkci ich implementciou 23

pouit algoritmy

Zpory: obmedzenie na Linux/Unix mal prenositenos spsoben (na dnen dobu) exotickou implementciou pre benho pouvatea me by problm v pouit klienta, kee vina pouvateov doke poui len programy s GUI Vsledky testovania: Systm YAP sa nm napriek vynaloenmu siliu nepodarilo skompilova, a preto sme ho nemohli otestova. Celkov dojem: Stroh, nekompromisn a rchle rieenie hadania plagitov v programoch, jednoducho rozriten o schopnos rozliova alie programovacie jazyky vaka oddelenej tokenizcii vstupnch sborov.

3.2 Podobnos slovenskch textov


3.2.1 PlaDeS

Vznikol v rmci tmovho projektu tudentov Toma Hlatkho a Michala Kompana pod vedenm Daniely Chudej. Implementcia: Jedn sa o aplikciu uren pre operan systm Windows. Program je nutn intalova a pre beh je potrebn .NET 3.5 framework. Algoritmus: Aplikcia v sebe implementuje 4 druhy analzy textu. 1. 3-gramy 2. najdlhia spolon podpostupnos [LCS] 3. inverzn frekvencia slov v dokumente [IDF] 4. frekvencia vskytu slov [TF] Podmienky pouitia: Aplikcia je vone prstupn na webe. Pouitie: Programu je mon nastavi hranin podobnos ako aj monos vypn diakritiku pri porovnvan. Poda slov autorov to nem vrazn vplyv na vsledky porovnvania. Pri porovnvan slovenskch textov je mon z textov odstrni stop slov a previes lematizciu, o urchuje samotn analzu. Program podporuje sbory vo formtoch pdf a doc, respektve zip archvy. Je mon prehadva adresre, v ktorch sa bud porovnva vetky sbory, ako aj vybera poadovan sbory. Program m jednoduch pouvatesk prostredie, ktor poda ma bohato postauje na prcu s programom. Ovldacie prvky s logicky oddelen a nie je teda problm program ovlda. Program vizulne informuje pouvatea o vykonvanej innosti o osobne povaujeme za vemi kladn krok. Pri spusten programu sa na obrazovke objav splash screen, poas ktorho sa zrejme nahrvaj z disku konfiguran sbory. Pri skke programu nastala chyba pri vyberan sborov na analzu. Program spadol ak nebol spusten s administrtorskmi prvami. Pri aom spusten program fungoval u sprvne. Vizualizcia:

24

Obr. 6.: Rozhranie programu Plades

Klady:

Prjemn pouvatesk prostredie Monos nastavenia parametrov a metdy detekcie Monos vybra na otestovanie konkrtne sbory alebo cel adresr Rchlos, spracovanie a analza 60 doc sborov trvala 12 mint

Zpory: Nepodporuje obyajn textov sbory Vsledky testovania:


Metda : 3gramy Originl v122_MSI2008_michalek_original v122_MSI2008_michalek_original v122_MSI2008_michalek_original plagit Podobnos v123_MSI2008_michalek_plagiatcopy 96% v124_MSI2008_michalek_plagiatmodify 75% v125_MSI2008_michalek_plagiatresers 77%

Metda : LCS Originl plagit Podobnos v122_MSI2008_michalek_original - v123_MSI2008_michalek_plagiatcopy 10%

25

v122_MSI2008_michalek_original - v124_MSI2008_michalek_plagiatmodify v122_MSI2008_michalek_original - v125_MSI2008_michalek_plagiatresers Metda : IDF Originl v122_MSI2008_michalek_original v122_MSI2008_michalek_original v122_MSI2008_michalek_original Metda : TF Originl v122_MSI2008_michalek_original v122_MSI2008_michalek_original v122_MSI2008_michalek_original Metda : 3gramy Originl v095_MSI2008_kozisek_original v095_MSI2008_kozisek_original v095_MSI2008_kozisek_original Metda : LCS Originl v095_MSI2008_kozisek_original v095_MSI2008_kozisek_original v095_MSI2008_kozisek_original Metda : IDF Originl v095_MSI2008_kozisek_original v095_MSI2008_kozisek_original v095_MSI2008_kozisek_original Metda : TF Originl v095_MSI2008_kozisek_original v095_MSI2008_kozisek_original v095_MSI2008_kozisek_original -

8% 9%

plagit Podobnos v123_MSI2008_michalek_plagiatcopy 100% v124_MSI2008_michalek_plagiatmodify 0% v125_MSI2008_michalek_plagiatresers 0% plagit Podobnos v123_MSI2008_michalek_plagiatcopy 100% v124_MSI2008_michalek_plagiatmodify 98% v125_MSI2008_michalek_plagiatresers 94% plagit Podobnos v096_MSI2008_kozisek_plagiatcopy 98% v097_MSI2008_kozisek_plagiatmodify 65% v098_MSI2008_kozisek_plagiatresers 83% plagit Podobnos v096_MSI2008_kozisek_plagiatcopy 11% v097_MSI2008_kozisek_plagiatmodify 8% v098_MSI2008_kozisek_plagiatresers 11% plagit Podobnos v096_MSI2008_kozisek_plagiatcopy 0% v097_MSI2008_kozisek_plagiatmodify 0% v098_MSI2008_kozisek_plagiatresers 0% plagit Podobnos v096_MSI2008_kozisek_plagiatcopy 100% v097_MSI2008_kozisek_plagiatmodify 97% v098_MSI2008_kozisek_plagiatresers 99%

Celkov dojem: Program PlaDeS sa rad medzi jednoduchie programy, no aj napriek tomu ponka vemi dobr vsledky pri hadan podobnost v sboroch. M v sebe implementovan pokroil algoritmy na hadanie zhd, priom kad jeden z nich m vhody ako aj nevhody. Program sa jednoducho obsluhuje a prca s nm je prjemn. 3.2.2 Sherlock

Sherlock je program, ktor had podobnosti v textovch dokumentoch. Implementcia: Open source, standalone, textov aplikcia, k dispozcii aj sherlock prepsan do Javy [Sherlock]. Algoritmus: Na kontrolu vyuva hashovaciu funkciu. T prirad bloku slov slen odtlaok. Podmienky pouitia: Sherlock je vone prstupn na stiahnutie Pouitie:

26

ovldanie pomocou prepnaov hranin podobnos poet slov na vytvorenie signatry sklad sa z jednho sboru vstup do konzoly alebo sboru je aj sasou BOSSu

Klady: vemi rchly, 69 textovch sborov, kad ~ 20kB za zlomok sekundy Zpory: nefunkn podaktor prepnae, ak je potreba otestova 124 sborov, nutnos vetky vypsa vypisuje len percentulnu zhodu medzi sbormi, iadne bliie informcie Vsledky testovania: C
Originl program1 program1 program1 program1 program2 program2 program2 program2 plagit program1 program1 program1 program1 program2 program2 program2 program2 (plagit (plagit (plagit (plagit (plagit (plagit (plagit (plagit amatrsky) tudentsk) pokroil) guru) amatrsky) tudentsk) pokroil) guru) Podobnos 22% nedetekovan nedetekovan nedetekovan 8% nedetekovan nedetekovan nedetekovan

Java
Originl program1 program1 program1 program2 program2 program2 program2 plagit program1 program1 program1 program2 program2 program2 program2 (plagit (plagit (plagit (plagit (plagit (plagit (plagit amatrsky) tudentsk) pokroil) amatrsky) tudentsk) pokroil) guru) Podobnos 55% 8% 5% 8% 4% 4% nedetekovan

Delphi
Originl program1 program1 program1 program1 plagit program1 program1 program1 program1 (plagit (plagit (plagit (plagit amatrsky) tudentsk) pokroil) guru) Podobnos 16% 12% 8% 8%

Texty
Originl v122_MSI2008_michalek_original v122_MSI2008_michalek_original v122_MSI2008_michalek_original Originl v095_MSI2008_kozisek_original v095_MSI2008_kozisek_original v095_MSI2008_kozisek_original plagit Podobnos v123_MSI2008_michalek_plagiatcopy 100% v124_MSI2008_michalek_plagiatmodify 85% v125_MSI2008_michalek_plagiatresers 67% plagit Podobnos v096_MSI2008_kozisek_plagiatcopy 99% v097_MSI2008_kozisek_plagiatmodify 78% v098_MSI2008_kozisek_plagiatresers 78%

27

Vizualizcia:

Obr. 7. Rozhranie programu Sherlock

Celkov dojem: Program Sherlock je jednoduch konzolov aplikcia, ktor napriek svojej jednoduchosti podva vemi dobr vsledky pri porovnvan textovch sborov. Pvodn verzia sa distribuuje prostrednctvom zdrojovho kdu, ktor je potrebn skompilova, o me odradi niektorch pouvateov. Nakoko je program uren na porovnvanie textov, nie je vhodn ho pouva na porovnvanie zdrojovch kdov, nakoko dva nepresn vsledky.

28

4 Poiadavky na systm
4.1 Ciele projektu
Hlavn ciele nho produktu s zobrazen na obrzku 8. Tieto ciele spolu zko svisia, o na obrzku predstavuj ich spojenia. Vo vine prpadov je spenos jednho ciela zvisl na spenosti inho, no v niektorch prpadoch ide o vzjomn zvislos.

Obr. 8.: Diagram cieov projektu

Predspracovanie a porovnvanie programov Produkt bude porovnva zdrojov kdy rznych programov a hada podobnosti. Zdrojov kd pred samotnm porovnvanm predspracuje poda charakteristiky danho jazyka a jednotliv intrukcie zamen za tokeny. Samotn porovnvanie u me teoreticky alej prebieha nezvisle na type pvodnho jazyka kdu. Predspracovanie a porovnvanie textov alm cieom je vyhadvanie plagitov medzi textami v benom jazyku. Produkt sa bude zameriava najm na slovensk jazyk, ale neskr bude mon rozri funkcionalitu aj o porovnvanie textov v anglickch a alch jazykoch. Pred samotnm porovnvanm sa text taktie predpriprav, m sa odstrnia przdne znaky a stop slov. Tieto dva prv ciele patria medzi najdleitejie a od nich sa odvjaj ostatn.

29

Podpora rznych jazykov Tento cie nadvzuje na predchdzajce ciele. Produkt bude vedie pracova so zdrojovmi kdmi viacerch jazykov, aby sa dosiahla o najvyia vyuitenos. Taktie bude mon spomnan rozrenie o podporu textov v cudzch jazykoch. Skriptovatenos Skriptovatenos priamo svis s podporou viacerch jazykov. Poda skriptov sa bude ovlda prevane predspracovanie kdu a textu. Skriptovanm sa zabezpe jednoduch rozrenie programu, prpadne opravenie existujcich chb v algoritmoch. Vaka tomu nebude nutn pri pridvan a iastonom menen funkcionality zasahovanie do kdu programu, a tak bud mc uvatelia, prpadne in tudenti vylepova tento produkt. Preberanie dajov z externch systmov daje z Internetu, informanch systmov a siet mu vrazne zlepi spenos odhaovania plagitov. Prezentcia a vizualizcia vsledkov Kee vsledok testovania plagitov nie je konen, ale vo vine prpadov je nutn run kontrolovanie programov a textov pouvateom produktu, je vemi dleit aby vsledky testovania boli zrozumiten pre pouvatea. Dobr vizualizcia vsledkov me vrazne uetri jeho as. Automatizcia kontroly plagiarizmu Tento ciea zko svis s ostatnmi ciemi a funkcionalitou produktu. Produkt bude automaticky zisova jazyk kdu, alebo textu, predpriprvi ho, zska daje z externch zdrojov a zobraz vsledky, ktor bude aj vizualizova.

4.2 Analza poiadaviek


Program by mal umoova kontrolova zdrojov kdy (minimlne jazyky Java a C) a slovensk texty a vyhadva v nich plagity. Predspracovanie vstupnch sborov (predovetkm programovch zdrojovch kdov) by mala by skriptovaten, aby bolo mon jednoducho pridva podporu pre alie programovacie jazyky. Skripty by mali zabezpeova celkov predspracovanie a svoj vstup poskytn systmu na kontrolu podobnosti. Dta na kontrolu by mali by zskavan z viacerch zdrojov, konkrtne z pevnho disku, databzy, a informanho systmu (AIS, Moodle). Podporovanmi vstupnmi formtmi okrem textovch sborov by mal by minimlne formt Microsoft Word, prpadne aj Portable Document Format (PDF). Aplikcia by mala ponka prehadn pouvatesk rozhranie, ktor by umoovalo nastavova parametre jednotlivch porovnvacch algoritmov, urova sbory na kontrolu, a pod. Malo by by mon uri, o s m porovnva jeden dokument s mnoinou dokumentov, kad dokument s kadm a pod. alou funkciou by mala by prehadn vizualizcia vsledkov. Minimlne by to malo by farebn zvraznenie podozrivch ast vstupnch sborov, aby tieto mohli by nsledne podroben manulnej kontrole. Systm by mal taktie poskytova grafick zobrazenie tatistiky porovnvania. Kee porovnvanie textov (predovetkm pre vek poet vstupnch sborov) je asovo nron opercia, porovnvacie algoritmy by mali by optimalizovan tak, aby o najefektvnejie vyuvali hardvr potaa. Mala by by implementovan podpora multiprocesorovch systmov (spracovvanie textov vo viacerch samostatnch vlknach).

4.3 Model prpadov pouitia


Na obrzku 9. s zobrazen prpady pouitia produktu a hri ktor vystupuj. So systmom bude pracova v prvom rade pouvate. Kee sa nejedn o systm so zloitou sieovou architektrou, ale skr o samostatn aplikciu, nebude nutn jeho dodaton drba. Preto v prpadoch pouitia

30

nevystupuje administrtor. Uvaujeme iba pouvatea a prpadnho vvojra, ktor by chcel produkt rozri pomocou skriptov.

Obr. 9.: Diagram modelu prpadov pouitia

Spustenie aplikcie Uvate pred prcou s produktom, mus najprv samotn aplikciu spusti. Na tento prpad pouitia nadvzuj nasledujce dva, poda toho o ak druh aplikcie sa jedn. Spustenie standalone aplikcie Uvate spust aplikciu na svojom potai, kde ju m uloen. Jedn sa o ben aplikciu a po jej spusten sa zobraz okno s jednotlivmi polokami. Jednotlivmi tlatkami ovlda funkcionalitu aplikcie. Spustenie online aplikcie

31

Pokia uvate nem aplikciu vo svojom potai, me ju spusti aj online pomocou webovho rozhrania. Aplikcia sa mu zobraz v okne prehliadaa a jej funkcionalita bude rovnak ako v predolom prpade. Po prci s aplikciou jednoducho zavrie okno, alebo zloku v prehliadai. Nastavenie Uvate si bude mc prispsobi program. Vybra si ak algoritmus ma program pouva, ako chce ma zobrazen vsledky, kam ich uklada a hlavne mus vybra sbory, ktor sa maj testova. Monosti testovania Uvateovi sa po vobe druhu testovania, teda i chce testova programy alebo texty, zobraz nastavenie tohto testovania. Pre oba druhy testovania bud niektor spolon nastavenia programu. Voba kontroly programov Uvate vyberie monos kontrolovania zdrojovch kdov programov. Po tejto vobe sa mu zobraz vber algoritmu, nastavenie hranice podobnosti pre podozriv programy, formulr pre vber vstupnch a vstupnch zloiek a alie. Voba kontroly textu Pri vobe testovania dokumentov bude taktie mc si voli z dostupnch algoritmov pre testovanie a predprpravu, alebo vybra jazyk v akom je dokument napsan, pokia je dostupn. Spustenie testovania Po nastaven aplikcie a testovania zvol uvate zaatie testovanie. Poas testovania sa bude zaznamenva a zobrazova trvanie testu, odhadovan as pre dokonenie a stavov riadok s percentulnym dokonenm testu. Zobrazenie vsledkov Uvateovi sa zobrazia vsledky testovania, ktor sa taktie uloia do zvolenej zloky na potai, pre neskoriu prcu s nimi. Bud to prevane dvojice porovnvanch sborov s percentulnymi, alebo inmi zhodami poda algoritmu a zvraznenie jednotlivch podobnch fragmentov. Zobrazenie vizualizcie Pre lepiu prehadnos si uvate vyberie monos vizualizcie vsledkov jednou z dostupnch metd. Tto vizualizcia sa zobraz a taktie ulo vo forme obrzku po dokonen testovania. Prca so skriptami Program bude ponka monos prce so skriptami. V hlavnom menu programu uvate zvol kliknutm na prslun tlatko tto vobu. Pri prci s online aplikciou to bude bezpenostne oetren z dvodu neelanch zsahov do existujcej funkcionality. prava skriptov Pri prave skriptov sa mu zobraz ich zoznam a uvate si vyberie dan skript a zvol si i ho chce zmeni, prpadne zmaza. Pri zmene sa mu zobraz okno s textom, kde ho me upravova a uklada zmeny. Po dokonen prce zavrie formulr vobou nvratu do menu. Pridvanie skriptov Pridvanie skriptov bude podobn ako ich prava. Pri tejto vobe sa uvateovi zobraz przdne okno, kde me napsa dan skript. Nad nm si vyberie nzov skriptu a poas prce bude mc uklada zmeny. Po napsan skriptu sa podobne ako pri prave skriptov vrti sp do menu.

32

4.4 Procesn model


Testovanie programov Na obrzku 10 je zobrazen model procesu testovania sborov so zdrojovm kdom. Na zaiatku si uvate prispsob nastavenie testovania a nsledne ho spust. Program potom najprv tokenizuje kd sborov a potom ich porovnva. Ak pri jednom z tchto procesov dolo k chybe, program ju zobraz a vrti sa nasp. Na konci zobraz vsledky testovania.

Obr. 10. Proces testovania programov.

Testovanie textov Na obrzku 11 je zobrazen model procesu testovania sborov obsahujcim text. Podobne ako pri testovan programov si uvate najprv nastav spsob testovania a potom spust samotn testovanie. Program potom najprv krt stop-slov a ostatn slov upravuje na zkladn tvar. Ak vetko prebehlo spene pokrauje porovnvanm a na konci zobraz vsledok testovania. Ak dolo k chybe vrti sa na zaiatok.

33

Obr. 11. Proces testovania textov.

34

5 Architektonick nvrh rieenia


Architektra systmu je navrhnut tak, aby bola mon systm jednoducho rozirova o podporu novch programovacch jazykov (v prpade kontroly zdrojovch kdov), prirodzench jazykov (kontrola textu), prpadne formtov vstupnch sborov. Znzornen je na obr. 12. Jadro (CORE) lohou jadra je sprostredkovvanie komunikcie medzi ostatnmi modulmi. Jadro by malo by o najjednoduchie a jeho funkcionalita by mala by o najmenia. Graphical User Interface Modul Graphical User Interface (GUI) m za lohu zskava vstupy od pouvatea a zobrazova vstupy systmu. Jeho funkcionalita by mala by obmedzen na minimum, a vetky dta by mu mali by poskytnut inmi modulmi. Command Line Interface Command Line Interface (CLI) sli na ovldanie aplikcie z prkazovho riadku. Sprvanie programu je v takomto prpade ovplyvovan zadanmi parametrami. Combiner lohou modulu Combiner je vytvra dvojice vstupnch sborov, ktor bud prostrednctvom jadra odoslan modulu Parser manager na kontrolu podobnosti. Dvojice sa bud vybera z mnoiny natanch vstupnch sborov na zklade pravidiel, ktor modulu Combiner poskytne modul Compare manager. Compare manager Compare manager definuje pravidl, na zklade ktorch sa vytvraj dvojice sborov urench na kontrolu vzjomnej podobnosti. Vytvran dvojice sborov s postupne posielan modulu Parse manager. Zkladnou funkcionalitou modulu je vytvorenie vetkch usporiadanch dvojc danej mnoiny vstupnch sborov. Tto funkcionalita me by rozren o rzne in pravidl vytvrania dvojc, ktor mu by uiton pri pecilnych prpadoch pouitia systmu. Parse manager Tento modul spravuje skripty, ktor definuj pravidl predspracovania vstupnch sborov. Vstupom pre parse manager je dvojica vstupnch sborov, na ktor je aplikovan dan parser skript. lohov parser skriptov je predspracova vstupn sbory pred aplikovanm porovnvacieho algoritmu. Porovnvacie algoritmy s sasou modulu Parser manager. Loader lohou tohto modulu je natanie textu z rznych formtov sborov. Sbory s zskavan z pevnho disku, databz a rznych externch systmov. Vstupom modulu je mnoina textovch sborov, ktor bud spracovvan systmom. Visualizator Vizualizan modul m za lohu zobrazi prostrednctvom GUI modulu porovnanie vstupnch sborov, ktor boli vyhodnoten ako podobn. Me taktie obsahova vytvranie tatistk porovnvania. Dta na vizualizciu mu poskytne modul Core.

35

Obr. 12. Architektra systmu

36

Literatra
[CDB] Bernstein, D. J.: CDB Constant Database. Dostupn na internete: <http://cr.yp.to/cdb.html> [cit. 22-10-2009] [Clough, 2000] Clough, P.: Plagiarism in natural and programming languages: an overview of current tools and technologies. Department of Computer Science, University of Sheffield (2000), p. 1-31. [eka, 2008] eka, Z.: Vyuit modernch pstup pro detekci plagit. In: Informan technolgie - aplikcie a teria. 2008. [FILIT] Piaek, J., Kravk, M.: Otvoren filozofick encyklopdia. Dostupn na internete: <http://ii.fmph.uniba.sk/~filit/fvp/parafraza.html>. [cit. 22-10-2009] [Grune, 1989] Grune, D., Huntjens, M.: Detecting Copied Submissions in Computer Science Workshops. Vakgroep Informatica, Faculeit Wiskunde & Informatica, 1989. [GSL] GSL - GNU Scientific Library - GNU Project - Free Software Foundation (FSF). Dostupn na internete: <http://www.gnu.org/software/gsl/>. [cit. 22-10-2009] [LCS] Thanh Dao: The Longest Common Substring with Maximal Consecutive. September 2005. Dostupn na internete: <http://www.codeproject.com/KB/recipes/lcs.aspx>. [cit. 22-10-2009] [LM] Kraj, S., Laclavk, M., Novotn, R., Turlkov L: The tool Morphonary: Using of word lemmatization in processing of documents in Slovak. Institute of Computer Science, Univerzita Pavla Jozefa afrika. [MOSS] Schleimer, S., Wilkerson, D. S., Aiken, A.: Winnowing: Local Algorithms for Document Fingerprinting. Marec 2003 [cit. 30-10-2009]. Dostupn na internete: <http://theory.stanford.edu/~aiken/publications/papers/sigmod03.pdf>. [Karp, 1987] Karp, R., Rabin, M.: Efficient Randomized Pattern-Matching Algorithms, IBM Journal of Research and Development 31(2), pp. 249260 (1987). [Sherlock] Demonstration of Sherlock - Plagiarism. Dostupn na <http://www.ics.heacademy.ac.uk/resources/assessment/plagiarism/demo_sherlock.html>. [cit. 22-10-2009] internete:

[Wise, 1993] Wise, M:String Similarity via Greedy String Tiling and Running Karp-Rabin Matching. Dostupn na internete: <http://www.pam1.bcs.uwa.edu.au/~michaelw/ftp/doc/RKR_GST.ps>. [cit. 2210-2009] [YAP] Wise, Michael J.: Plagiarism Detection YAP. Dostupn <http://www.pam1.bcs.uwa.edu.au/~michaelw/YAP.html>. [cit. 22-10-2009] na internete:

37