Detekce plagiátorství
Možná jste v minulém roce také zahlédli zprávy, že univerzity a vydavatelé vědeckých časopisů se o problém plagiátorství začali více zajímat - např. systém Masarykovy univerzity, do něhož se zapojila řada vysokých škol (nikoli však Univerzita Karlova) či v minulém roce spuštěný projekt CrossCheck, který využívá dat z CrossRef, což je vlastně světově největší databáze vědecké literatury [5, 9]. Kolem plagiátorství a zejména plagiátorů se jako mouchy rojí mnoho otázek řekněme etického či společenského významu (viz např. diskuze v jednom z čísel Ikara či v masmédiích [3, 10, 11, 12]), ale pokud jsme zvědaví, jak to vlastně technicky funguje, jsme udržování spíše v milosrdné neznalosti. Pokud jste však přece jen dumali nad tím, jak to může fungovat, možná je tento článek to pravé pro vás.
Začneme jednoduchým příkladem. Máme před sebou dvě věty, které vypadají podobně [1] a chceme v nich nalézt duplicity. Počítače, jak všichni víme, nejsou žádné inteligentní bytosti. Dokáží sice velmi rychle porovnávat řetězce znaků, ale samozřejmě o nich vědí jen to, zda jsou, či nejsou stejné. To je tedy první základní princip detekce. Pokud víme toto, musíme se ptát, co je porovnáváno. Obsah sdělení, forma sdělení, slova, písmena, libovolné znaky, bity?
Dokument 2: Před rokem 1998 byly všechny studie ovlivněny...
Inu, i u těch nejlepších, geniálních a prostě ohromně sofistikovaných systémů to bude to předposlední (tedy písmena a slova) a ostatní je marketingový humbuk. Takže celkem jednoduché věci, řekneme si, ovšem v obrovském balení, pokud mají být srovnávány statisíce a miliony dokumentů. A protože systémy, pokud mají být užitečné, musí obsahovat co největší množství textů, je nasnadě, že se jedná o velmi zajímavé problémy, a lidé hledají nejlepší možné cesty mezi tím, jak přesná a rychlá detekce bude (mimochodem, víte, že jeden z tvůrců Google, S. Brin, pracoval také na systémech pro odhalování plagiátů? [5]).
Vraťme se k našemu příkladu. Relativně nejpřesnější metodou detekce dvou stejných vzorů by bylo srovnávání tzv. demokratické - tedy "každého s každým". V databázi o velikosti 1 000 dokumentů by šlo o jeden milión párů, což je sice velké číslo, ale proces by skončil relativně brzy [2]. U těch větších kolekcí bychom se museli smířit s malinko delším obdobím. Asi někdy v příštím roce či století - v závislosti na technice, zvláště pokud uvažujeme, že texty jsou různě dlouhé a není možné srovnávat celé dokumenty, kapitoly a dokonce ani menší části textu. Je nutno hledat uvnitř - mohou to být stejné znaky, stejná slova, sousloví, stejné skupiny slov či celé věty a výjimečně i odstavce. Tím jsme zmínili další dva předpoklady automatického zpracování: 1) srovnávají se řetězce extrahované z textu, 2) srovnávané řetězce mají vždy stejnou délku.
Tato délka je libovolná a záleží na tvůrcích softwaru, jak dlouhé části budou porovnávány. Musíme si jen uvědomit, že někdy půjde o délku vyjádřenou ve znacích, jindy ve slovech, větách či obsahových jednotkách (to kdybychom se dívali na systém, který provádí sémantickou analýzu). Ale vždy to bude "určitá jednotka" o velikosti x. Pro náš hypotetický systém bychom mohli zvolit např. délku m=15, tj. 15 znaků. Ilustrujme si základní problémy porovnávání "každého s každým".
před rokem 1998 <-> šechny studie p
před rokem 1998 <-> echny studie pu
před rokem 1998 <-> chny studie pub
před rokem 1998 <-> hny studie publ
před rokem 1998 <-> ny studie publi
před rokem 1998 <-> y studie publik
před rokem 1998 <-> studie publiko
před rokem 1998 <-> studie publikov
V našem příkladě je délka řetězce m=15 znaků a pokud máme text o velikosti čtyř stran (asi tří tisíc znaků), představuje to 2 985 vzorků o délce m (3000 - m). A i kdybychom zvolili m vyšší, např. 60, bude to stále velmi vysoké číslo – 2 940 vzorků pro jeden dokument.
Předpokládejme, že řetězce se v textu neopakují - usnadníme si tak příklad. Aby stroj objevil případy opisování o délce m=15, musel by v nejhorším případě zpracovat 8 910 225 dvojic a to jen pro dva různé dokumenty. Vyhledávání v takovém množství s použitím indexů je prakticky nemožné, protože celý dokument (tedy jeho jednotlivé vzorky) by byl 2 985 krát větší než zdrojový text. Chceme-li zachytit všechny možné kombinace, které se mohou vyskytovat v jiném dokumentu. A to jsme ještě nezmínili druhý největší problém - přesnost.
S délkou srovnávaného řetězce m se bude zvyšovat přesnost detekce, tj. systém bude schopen zachytit případy skutečného plagiátorství a nikoliv zdánlivou shodu, kdy dva lidé píší "stejně". Avšak přesnost se bude zvyšovat pouze do určité hranice, a až ji překročíme, bude zase klesat. Kdybychom např. hranici stanovili na délku m=5, pak se zjistí, že každý opisuje od každého a velmi zhusta. Systém najde obrovské množství duplicit, ale většina z nich budou jen nevýznamné shody.
Množství falešných hitů se sníží při délce m=15, a bude stále klesat až do okamžiku, kdy překročíme jistou neviditelnou čáru. Tehdy se začne výrazně snižovat i schopnost systému vůbec nějaký plagiát odhalit. Např. řetězce o délce m=15 by našly nejméně 50 případů v každém dokumentu, při m=60 by číslo nalezených shod bylo už podstatně nižší. Při délce m=250 znaků jich bude velmi málo, ale zase si můžeme být už téměř jisti, že se jedná o velmi podivnou "náhodu". Ovšem jiné a kratší pozitivní příklady plagiátorství přitom zůstanou nedetekovány - všechny, které jsou kratší než 250 znaků. Tedy klidně i celý odstavec, který byl opsán, nebude odhalen, protože je dlouhý pouze 249 znaků.
Tolik základní principy
Pokud plánujete stát se plagiátory a už se radujete, že detekce není prakticky možná, měli byste číst dále. Je sice pravda, že není reálné srovnávat všechno se vším, ale problém má různá řešení.V odborné literatuře je popsána řada algoritmů a také systémů pro detekci plagiátorství, které různými způsoby porovnávají dokumenty - ať už je porovnání založeno na jednoduchém srovnávání znakových řetězců, náhodném vyhledávání, výpočtech sémantických podobností či překryvu vektorových modelů obsahu dokumentu - všechny tyto přístupy se nějakým způsobem vyrovnávají s problémy naznačenými výše. V zásadě (a připouštím, že se mohu mýlit) se však jedná o dvě základní otázky:
- Jak snížit počet porovnávaných vzorků?
- Jak snížit velikost vzorků, abychom je mohli uložit a využívat pro pozdější porovnávání?
Podívejme se nejdříve na efektivní uložení v databázi/indexu. Namísto řetězců (tj. kusů textu), které jsou celkem dlouhé a zabírají hodně místa, je možné vytvořit jakýsi jedinečný a digitální otisk textu (fingerprint). Tento otisk bude mnohem kratší než původní text a zpracování a vyhledávání bude proto i rychlejší, přitom si však otisk zachová schopnost identifikovat daný úsek textu a odlišit ho od ostatních vzorků.
Existuje množství algoritmů [13], ale pro účely ilustrace si můžeme navrhnout i vlastní. Dejme tomu, že budeme počítat pouze souhlásky [3] a ještě k tomu ignorovat diakritiku:
publiKovaNe pred -> pblkvnprd
S pomocí této jednoduché transformace se zmenší velikost vzorku o 30 %, a kdybychom vypočítali např. kontrolní součet a převedli text na číslo, bude možno celý otisk uložit ve zlomku původní velikosti (měřeno v bytech). Transformace bude výhodná, protože šetří místo, navíc se s její pomocí vyřeší některé další problémy. Otisk převádí původní vzor do jakési zjednodušené formy a výsledek může ignorovat znaky textu, které nás z hlediska detekce plagiátů nezajímají - např. diakritická znaménka, náhodné (či chtěné) překlepy, číslice, formátovací značky apod.
Ano, samozřejmě má vše i své stinné stránky. Záleží na implementaci algoritmu a ta naše zcela jistě není ideální. V textu mohou být kombinace znaků, které dávají stejný otisk (např. "publikováno při d[nešní...]) a také "výroba otisků" si vyžádá zvýšenou režii. A pokud chceme odhalené plagiáty ještě někdy vidět v jejich původní podobě (např. pro analýzu výsledků), pak stejně musíme nějakým způsobem plný text uchovat a spolu s ním také informaci o pozici otisku. Ovšem snížení velikosti indexu za to stojí a lepší algoritmy zaručí výrazně nižší pravděpodobnost omylů. To vše ve svém efektu přispěje k rychlejší detekci, a proto je velmi žádoucí porovnávat reprezentaci textů, nikoliv texty samotné.
Ovšem stále jsme se nevypořádali s množstvím otisků - pořád je nutno porovnat miliony kombinací, a přitom 99,9 % z nich zbytečně. Kdyby se nám podařilo vybrat jen ty "důležité" otisky, zpracování se zrychlí neuvěřitelným způsobem. Ale jak to udělat? Není nakonec smyslem detekce odhalit, co ještě neznáme, o čem nevíme, kde hledat?
Mnoho implementací bude tento problém řešit výběrem otisků podle "určitého pravidla" - je např. vybírán každý n-tý otisk, řekněme každý desátý z možných variant. Nebo jsou vybírány vzorky náhodně či z částí textu, které připadají tvůrcům softwaru důležité.
Zmenšením množství otisků se však zmenšuje i pravděpodobnost odhalení plagiátů a tato degradace je neodhadnutelná. Nelze vypočítat, s jakou pravděpodobností budou odhaleny plagiáty, a stěží může někdo smysluplně tvrdit, že plagiátoři se omezují pouze na námi zvolené části dokumentu nebo že opisují a vkládají pouze každou osmou větu a nebo že při náhodném výběru bude vybrán dostatečný počet vzorků a mezi nimi budou dostatečně zastoupeny případy plagiátorství, které vybereme i z dalšího dokumentu [4].
Výběrem otisků se tedy řeší problém rychlosti, ale nepředvídatelným způsobem se snižuje přesnost. Tvůrci systémů proto provádí řadu experimentů nad skutečnými daty a snaží se nastavit jednotlivé parametry tak, aby pokud možno výsledky odhalily nejvyšší možný počet plagiátů a zpracování netrvalo týdny a měsíce. Nikdo ale nezaručí, že systém se "nedívá" jinam, než by měl. Situace se podobá výlovu ryb sítí, jejíž oka mají jistý tvar a hustotu. Velké ryby v ní uvíznou, ale ty střední a menší se chytí možná - záleží jaksi na náhodě.
Doufám, že na to nezapomeneme, až jednou přijde doba, kdy bude někdo nekriticky tvrdit, že systém je schopný odhalit všechny případy plagiátorství. Až se bude někdo ohrazovat výsledky automatické detekce plagiátorství. V dalším díle tohoto článku si ukážeme jeden z přístupů, který všechny výše uvedené problémy řeší velmi originálním způsobem a má potenciál zarmoutit velkou řadu "opisovatelů" - jako se ostatně už mnoha z nich stalo [14].
- Někdo by řekl, že obsah je stejný, ale to by byl omyl. Nevíme, zda v druhém případě byly studie "publikované" či studie "provedené". Ale pro ilustraci automatizované detekce plagiátorství to může být zajímavý příklad.
- Omlouvám se všem, kteří očekávají čísla podle rychlosti procesoru, I/O operace, v závislosti na průměrné době zpracování jednoho dokumentu. Podle mého soudu je to zbytečné, jde nám pouze o ilustraci problému.
- Možná po vzorů Féničanů, kteří samohlásky v abecedě také neměli.
- Asi nás napadne, že náhodný výběr má lepší šance na úspěch, ale zapomínáme, že v případě textů je problém závažnější - nehovoříme o náhodném výběru určitého vzorku (jednotek) z populace X. Nejde ani tak o to, že neznáme rozložení textu. Zdaleka nejzávažnější problém představuje samotný charakter textu jako "sdělení" - výběrový vzorek je pak nutno uvažovat nikoliv jako vzorek z textu, ale jako vzorek z možných variací. To je zásadní problém náhodného výběru v tomto případě. Nevybírají se kuličky z jednoho pytlíku, ale atomy z jedné kuličky. Kombinace a parametry pro výběr atomů mohou přitom být velmi rozdílné pro každý dokument.
- BRIN, S.; DAVIS, J.; GARCIA-MOLINA, H. Copy Detection Mechanisms for Digital Documents [online]. [cit. 2007-07-10]. Appeared in SIGMOD '95, 1995. Dostupné na World Wide Web: <http://dbpubs.stanford.edu:8090/pub/1995-43 [4]>.
- SI, A.; LEONG, H. V.; LAU, R. W. CHECK. A Document Plagiarism Detection System. In Proceedings of ACM Symposium for Applied Computing. February 1997, s. 70–77.
- DAHL, Stephan. Turnitin(R): The student perspective on using plagiarism detection software. Active Learning in Higher Education. 2007, 8, s. 173-191.
- Turnitin.com [online]. [cit. 2007-06-10]. Dostupný na World Wide Web: <http://www.turnitin.com/static/home.html [5]>.
- VAVŘÍKOVÁ, Lucie. CrossCheck - nová služba v boji proti plagiátorství. Ikaros [online]. 2007, roč. 11, č. 09 [cit. 2007-11-06]. Dostupný na World Wide Web: <http://www.ikaros.cz/node/4293 [6]>. URN-NBN:cz-ik4293. ISSN 1212-5075.
- BRANDEJSOVÁ, Jitka. Odhalování plagiátů na Masarykově univerzitě. Ikaros [online]. 2006, roč. 10, č. 11 [cit. 2007-11-06]. Dostupný na World Wide Web: <http://www.ikaros.cz/node/3676 [7]>. URN-NBN:cz-ik3676. ISSN 1212-5075.
- SCHLEIMER, S.; WILKERSON, D.; AIKEN, A. Winnowing: Local Algorithms for Document Fingerprinting. In Proceedings of the ACM SIGMOD International Conference on Management of Data. June 2003, s. 76–85.
- SOROKINA, D., et al. Plagiarism Detection in arXiv [online]. [cit. 2007-09-19]. Dostupné na World Wide Web: <http://www.cs.cornell.edu/~daria/papers/PlagiarismDetection_full.pdf [8]>.
- NOVÁK, Petr. Zpráva ze semináře Systémy pro zpřístupňování eVŠKP 2008. Ikaros [online]. 2008, roč. 12, č. 11 [cit. 2009-02-01]. Dostupný na World Wide Web: <http://www.ikaros.cz/node/5087 [9]>. URN-NBN:cz-ik5087. ISSN 1212-5075.
- VESELÁ, Miroslava. Habilitační práce aneb jak ji neopsat sám od sebe. Ikaros [online]. 2008, roč. 12, č. 9 [cit. 2009-02-01]. Dostupný na World Wide Web: <http://www.ikaros.cz/node/4973 [10]>. URN-NBN:cz-ik4973. ISSN 1212-5075.
- Diskuse k článku "Zlínského děkana usvědčili z plagiátorství, titul mu ale zůstane". iDNES.cz [online]. [cit. 2009-02-01] Dostupné na World Wide Web: <http://zpravy.idnes.cz/diskuse.asp?iddiskuse=A080709_085836_studium_bar [11]>.
- Potvrzeno. Děkan opsal habilitační práci. Tyden.cz [online]. [cit. 2009-02-01]. Dostupné na World Wide Web: <http://www.tyden.cz/rubriky/domaci/potvrzeno-dekan-opsal-habilitacni-praci_69787_diskuze.html [12]>.
- Fingerprint (computing). In Wikipedia, the free encyclopedia [online]. [cit. 2009-02-01]. Dostupné na World Wide Web: <http://en.wikipedia.org/wiki/Fingerprint_(computing)#Fingerprinting_algorithms [13]>.
- arXiv.org - 65 admin withdrawals [online]. [cit. 2009-02-01]. Dostupné na World Wide Web: <http://arxiv.org/new/withdrawals.aug.07.html [14]>.