Sunteți pe pagina 1din 42

UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA

FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

SPECIALIZAREA INFORMATICĂ – ROMÂNĂ

LUCRARE DE LICENȚĂ
Serviciu web pentru identificarea lucrărilor
plagiate

Conducător ştiinţific:
Lect. Dr. Radu DRAGOȘ

Absolvent:
Bianca Teodora PETRE

2013
Cuprins
1. Capitolul 1 – Introducere..............................................................................................3
1.1. Obiective...............................................................................................................4
1.2. Contribuții originale..............................................................................................4
1.3. Structura lucrării....................................................................................................5
2. Capitolul II – Metode de identificare a similarităților între documente.......................6
2.1. Analiza similitudinii..............................................................................................6
2.2. Compararea documentelor la nivel de propoziție.................................................8
2.3. Compararea documentelor folosind factori de corelație.......................................9
2.4. Clasificare și amprentare.....................................................................................11
2.4.1. Clasificarê....................................................................................................11
2.4.2. Amprentare..................................................................................................13
3. Capitolul III –Tehnologii Web....................................................................................16
3.1. PHP, Apache și MySQL......................................................................................16
3.2. HTML, CSS și jQuery.........................................................................................18
3.3. Drupal..................................................................................................................20
3.3.1. Noțiuni de bază............................................................................................21
3.3.2. Teme Drupal.................................................................................................23
4. Capitolul IV – Aplicație de detectare a plagiatului.....................................................25
4.1. Preprocesarea documentelor...............................................................................26
4.2. Compararea documentelor..................................................................................27
4.3. Funcționalități ale aplicației................................................................................30
4.4. Analiza rezultatelor.............................................................................................36
5. Capitolul V – Concluzii..............................................................................................38
5.1. Activități propuse................................................................................................39
6. Bibliografie.................................................................................................................40
1. Capitolul 1 – Introducere

A plagia înseamnă a folosi sau a copia parțial ideile altcuiva fără a cita autorul original,
sau conform [6], „a lua, a fura ideile, expresiile, invențiile cuiva și a le prezenta drept creații
proprii; a publica pe numele său fragmente din lucrarea altuia; a comite un furt literar”.
Termenul „plagiere” își are originea în cuvântul latin „plagium”, care în secolul I
însemna răpirea unui sclav sau a unui copil, iar plagiatorul („plagiarius”) însemna jefuitor,
răpitor sau om care ajuta infractorii să se ascundă. În anul 1601, termenul „plagiere” a fost
introdus în limba engleză de dramaturgul Ben Jonson, pentru a descrie furtul literar. [10]
Într-adevăr, cuvântul „plagiere” este sinonim cu furtul, dar acțiunea de a plagia este mai
gravă întrucât persoana care plagiază fură ceva unic: ideile, creativitatea și personalitatea
autorului – ceea ce îl reprezintă de fapt.
În ziua de azi, plagiatul este destul de comun printre studenți, profesori și cercetători și
devine o problemă din ce în ce mai serioasă. Un factor care contribuie la această situație este
accesul foarte ușor la Internet, adică la numeroase publicații online pe care studenții le găsesc și
le copiază sau le modifică cu ușurință. Internetul cuprinde cel mai mare număr de articole și
informații publice online, iar o mare parte din această informație este publicată în mai mult de o
singură locație. O căutare pe Internet a unui subiect returnează rezultate aproape identice în zeci
de locații diferite.
În urma studiilor s-a descoperit că plagiatul în universități a crescut semnificativ în ultima
jumătate de secol, ceea ce a afectat calitatea educației primite de studenți. Cadrele universitare
știu că pentru a avea cunoștințe bogate în orice domeniu, studenții au nevoie de informația
furnizată de paginile web, însă aceștia sunt tentați să utilizeze informațiile găsite pentru a
„practica” plagiatul. Informațiile trebuie utilizate în mod legal și moral, adică o persoană trebuie
să știe cum să folosească informația: cum să o găsească, cum să o structureze, să o evalueze și să
o modeleze din propriul punct de vedere. Acest lucru constituie o competență pe care orice
student absolvent ar trebui să o aibă, însă din cauza faptului că nu există sisteme de detectare a

3
plagiatului în fiecare universitate, cei mai mulți studenți preferă să copieze decât să scrie lucrări
originale.
Detectarea plagiatului poate ajuta cadrele universitare să îmbunătățească calitatea
educației studenților. De aceea, acest subiect a fost dezbătut în ultimii ani atât în universități, cât
și în cercurile politice. Au fost dezvoltate numeroase aplicații comerciale de detectare a
plagiatului, care utilizează diferite metode. Majoritatea aplicațiilor sunt capabile să identifice
fraze plagiate în care s-a modificat ordinea cuvintelor, s-au înlocuit cuvintele cu sinonimele lor,
propoziții scurte legate într-o frază sau fraze împărțite în propoziții scurte etc.

1.1. Obiective

Obiectivele generale ale lucrării de față sunt:


- definirea plagiatului și descrierea tehnicilor de plagiere
- prezentarea diverselor metode de identificare a similarităților dintre texte
- dezvoltarea unei aplicații care compară documente și identifică care dintre acestea sunt
plagiate
- prezentarea tehnologiilor utilizate pentru realizarea aplicației.
Scopul principal este de a readuce tehnicile de învățare pe care Internetul le-a schimbat
prin furnizarea atâtor resurse ușor de găsit și de copiat. Pentru a realiza scopul propus, am
dezvoltat o aplicație web de detectare a plagiatului, care, printr-o interfață user-friendly, le
permite studenților să se înregistreze și să își depună lucrările atribuite, iar cadrelor didactice să
identifice, pentru fiecare lucrare în parte, secvențele suspecte și documentele sursă din care
acestea provin.

1.2. Contribuții originale

În general, un student care plagiază lucrări existente pentru a realizeaza un eseu, copiază
porțiuni mari de text pe care le modifică (uneori) prin reordonarea sau ștergerea unor cuvinte, ca
să pară originale. Ulterior, studentul adaugă paragrafe originale pentru a finaliza tema atribuită.
Metoda propusă în această lucrare, numită SimilarDocumentsDetection (SimDD), a fost creată cu
scopul de a identifica astfel de documente.
Ideea de bază a metodei SimDD este că un paragraf poate fi considerat plagiat dacă mai
mult de 3 dintre termenii din acesta au fost găsiți la distanțe relativ apropiate în documentul

4
original. SimDD verifică dacă un document suspect DP este plagiat comparând cuvintele cheie
din acesta cu toate cuvintele cheie din celelalte documente din baza de date și astfel identifică (i)
propozițiile copiate, (ii) propozițiile care au fost create prin unirea sau despărțirea unor propoziții
din documentul original și (iii) propozițiile în care cuvintele au fost amestecate.

1.3. Structura lucrării

În continuare, lucrarea este structurată pe 3 capitole, după cum urmează.


În Capitolul 2 – „Metode de identificare a similarităților între documente” – sunt
evaluate mai multe tehnici de detectare a plagiatului dezvoltate până în prezent din diverse
lucrări. Metodele prezentate sunt diferite din multe puncte de vedere, prezentând abordări
originale pentru fiecare aspect ce trebuie studiat în procesul de detectare a plagiatului: stocarea
documentelor într-o bază de date, preprocesarea documentelor în vederea comparării rapide a
textelor, vizualizarea rezultatelor etc.
Capitolul 3 – „Tehnologii Web” – prezintă tehnologiile utilizate pentru dezvoltarea soft-
ului. Pentru a crea o aplicație web, este nevoie de tehnologii pentru stocarea informațiilor, pentru
partea de logică a aplicației, care oferă dinamism paginilor web și pentru partea de prezentare,
adică tot ce ține de interfață.
În Capitolul 4 – „Aplicație de detectare a plagiatului” – este detaliată metoda propusă și
sunt prezentate deciziile care au fost luate pentru implementarea algoritmului de comparare a
textelor. De asemenea, capitolul prezintă funcționalitățile aplicației de detectare a plagiatului și o
analiză a rezultatelor obținute.
Ultimul capitol – „Concluzii” – cuprinde concluziile generale ale studiului realizat și
activitățile propuse pentru îmbunătățirea aplicației.

5
2. Capitolul II – Metode de identificare a similarităților
între documente

În această secțiune sunt evaluate mai multe metode de detectare a plagiatului dezvoltate
până acum, sunt prezentate avantaje și dezavantaje ale acestora precum și tehnici ale plagiatului
care sunt sau nu identificate.
Deoarece un document plagiat nu este (neapărat) identic cu documentul original, folosind
tehnici convenționale de căutare, documentele plagiate se confundă cu cele care sunt pur și
simplu pe aceeași temă.
De aceea s-au dezvoltat numeroase tehnici de detectare a plagiatului, fiecare având o
abordare diferită: calcularea gradului de similitudine între documente la nivel de propoziție,
paragraf sau șiruri de n caractere luând în considerare cuvintele comune, detectarea
documentelor plagiate pe baza amprentelor digitale ale acestora, identificarea cuvintelor
înlocuite cu sinonimele lor etc.
Metodele prezentate determină propoziții plagiate prin parafrazare, despărțire, lipire și
reodonare, dar și propoziții direct copiate.

2.1. Analiza similitudinii

În [19] Shanmugasundaram Hariharan propune o metodă de identificare a plagiatului prin


analiza similitudinii dintre documente, folosind metrici precum cosinus, Dice, Jaccard, Hellinger
sau Harmonic.
Pentru a studia rata de plagiere din universitatea lor, autorii acestui proiect au atribuit
studenților împărțiți pe grupe articole de realizat într-o săptămână, fiecare grupă având subiect
diferit.
Primul pas al metodei propuse este preprocesarea documentelor, care constă în eliminarea
cuvintelor de legătură, a caracterelor speciale (“ “ . ! ? ( ) , ; etc) și a sufixelor. Eliminarea
sufixelor este o operație care trebuie aplicată pentru a obține originea comună a cuvintelor din

6
aceeași familie lexicală. În compararea textelor, acest pas ajută foarte mult pentru a putea
considera cuvintele cu sens și formă comună ca fiind identice. Acest proces este util deoarece
compară termenii eficient și identifică propoziții care sunt similare în forma lor originală.
În urma preprocesării documentelor, sunt obținute 2 liste de cuvinte, cărora li se aplică
metrici precum cosinus, Dice, Jaccard, Hellinger sau Harmonic, iar în urma evaluării rezultatelor
s-a dovedit că formula cosinusului este cea mai relevantă:


k k k
Cosine(ti, tj) = ∑ t ih t jh / ∑ t 2ih ∑ t 2jh
h=1 h=1 h=1

unde vectorul ti corespunde termenilor din primul document, iar tj celor din documentul cu care
este comparat.
De obicei termenilor li se atribuie valori date de numărul de apariții în cadrul
documentului sau de diverse metode de ponderare, de exemplu tf-idf.
TF-IDF (Term Frequency - Inverse Document Frequency) este o metodă care atribuie o
pondere (greutate) fiecărui cuvânt dintr-un document inclus într-o colecție, pondere ce reflectă
importanța termenului în colecția respectivă. Valoarea TF-IDF crește proporțional cu numărul de
apariții ale cuvântului în document, dar este compensată de frecvența cuvântului în colecția de
documente. [4]
Fiecărui termen dintr-un text i se atribuie o greutate care depinde de numărul de apariții
ale acestuia în document. Cea mai simplă abordare este considerarea greutății egală chiar cu
numărul de apariții ale termenului t în documentul d. Acest sistem de ponderare se numește Term
Frequency și se notează tft,d, cu indicii care denotă termenul (t) și respectiv documentul (d).
Având în vedere că într-o colecție de documente cu subiect comun, unii termeni nu mai
sunt atât de importanți deoarece apar prea des ca să fie relevanți, această metodă utilizează
frecvența în documente (document frequency). Aceasta este notată cu dft și egală cu numărul de
documente din colecție care conțin termenul t.
Idf (Inverse Document Frequency) se calculează astfel:

N
idft = log
df t

7
unde N este numărul de documente din colecția dată. Așadar, idf este o măsură care decide dacă
un termen este frecvent sau nu într-o colecție, valoarea rezultată fiind mare dacă termenul este
comun, și mică altfel.
În final, termenii au valoarea:

tf-idft,d = tft,d × idft

Rezultatele acestui studiu au dovedit că 70% din studenți au plagiat, cei cu aceeași temă
având lucrări aproape identice.

2.2. Compararea documentelor la nivel de propoziție

În [5] se prezintă un algoritm de comparare a documentelor la nivel de propoziție. Autorii


au considerat că propozițiile sunt componenetele din care un limbaj natural este compus, la fel ca
instrucțiunile într-un limbaj de programare, și că paragrafele fiind prea lungi, similitudinea dintre
ele ar fi mult mai mare decât între propoziții. [5]
Această metodă presupune 4 pași. Primul pas este preprocesarea documentelor - citirea
documentelor și parsarea acestora în obiecte de tip Document care conțin o listă de obiecte de tip
Propoziție, care la rândul lor conțin o listă de cuvinte obținute după eliminarea cuvintelor prea
comune, a cuvintelor de legătură și a celor care se repetă.

Exemplu:
Propoziția 1: Maria a avut gripă.
Propoziția 2: În timp ce Ionel era sănătos, Maria a avut gripă.
După procesare:
Propoziția 1: {maria, avut, gripă}
Propoziția 2: {timp, ionel, era, sănătos, maria, avut, gripă}.

Al doilea pas este compararea documentelor. Fiecare document este împărțit în propoziții
și este calculată o valoare care reprezintă gradul de similitudine între 2 propoziții. Această
valoare este calculată în funcție de numărul de cuvinte comune și lungimile propozițiilor. În
exemplul de mai sus, cele 2 propoziții au 3 cuvinte în comun, ceea ce înseamnă 100% din
propoziția 1 și 43% din propoziția 2. Valoarea similitudinii reprezintă media aritmetică dintre
cele două procentaje, adică 71,5%. Apoi se stabilește o valoare limită (Similarity Threshold), iar

8
dacă valoarea calculată între 2 propoziții este mai mare sau egală cu această constantă, legătura
dintre propoziții este salvată.
La sfârșitul procesului, rezultatul este salvat într-o structură de date care conține toate
legăturile dintre proprozițiile din textul suspect și propozițiile din documentele cu care este
comparat, care depășesc valoarea limită stabilită. O legătură este de forma (P plagiată , Poriginală,
valoare_similitudine(Pplagiată, Poriginală)), unde,
- Pplagiată este o propoziție din documentul suspect (dp) care a fost considerată
plagiată,
- Poriginală este o propoziție dintr-unul dintre documente din colecție în care au fost
găsite similarități cu documentul dp,
- valoare_similitudine(Pplagiată, Poriginală) este valoarea asociată celor 2 propoziții
explicată mai sus.
S-a considerat că multe dintre similaritățile dintre 2 documente cu același titlu sunt
cauzate de folosirea acelorași surse, care, în majoritatea cazurilor au fost citate corect. De aceea,
la pasul 3, rezultatele sunt filtrate astfel încât propozițiile care au referință comună să fie
eliminate.
La final, fiecărui document i se atribuie o valoare, calculată în funcție de asemănările
dintre acesta și cel mai similar document dintr-o anumită categorie (clasificate pe teme).

2.3. Compararea documentelor folosind factori de corelație

O altă metodă de identificare a plagiatului este prezentată în [13] și constă atât în


detectarea adăugării, ștergerii și înlocuirii cuvintelor cu sinonimele lor cât și în identificarea
frazelor care au fost unite sau împărțite în mai multe propoziții.
Metoda propusă compară documentele tot la nivel de propoziție, însă determină gradul de
similitudine dintre 2 documente utilizând factori de corelație între cuvinte (word-correlation
factors) definiți în [15]. Factorul de corelație a 2 cuvinte reprezintă o valoare care determină dacă
cele 2 cuvinte sunt asemănătoare sau identice din punct de vedere semantic.
Asemănator metodei anterioare, procesul începe prin eliminarea cuvintelor
nesemnificative din document și aducerea cuvintelor derivate la forma de bază. Mai mult,
aceasta metodă elimină propozițiile scurte, ca urmare a probabilității ridicate ca doi autori total
diferiți să creeze fraze scurte asemănatoare. De exemplu „Acest lucru nu este adevărat.” sau

9
„Acesta este un exemplu.”. Cu cât propozițiile sunt mai lungi, cu atât probabilitatea e mai mică
să semene între ele.
Crearea unei propoziții plagiate pornind de la o propoziție de bază prin reordonarea
cuvintelor este o metodă des întâlnită. Având în vedere acest lucru, în metoda descrisă în [13] nu
se ia in considerare ordinea termenilor în propoziții, ci doar adăugarea, înlocuirea și ștergerea
cuvintelor.
Factorii de corelație utilizați în metoda propusă au fost calculați utilizând 880,000 de
documente de pe Wikipedia pe baza frecvenței lor de apariție împreună și a distanței relative în
documente [13]. Astfel, similitudinea dintre 2 propoziții este media aritmetică a factorilor de
corelație dintre cuvintele dintr-o propoziție de bază S și cele dintr-o propoziție P din documentul
de analizat.
Algoritmul prezentat este capabil să identifice propoziții dintr-un document (plagiat) DP
care au fost create unind sau despărțind propoziții dintr-un document sursă D S. O propoziție P
este "inclusă" într-o propoziție inițială S dacă majoritatea cuvintelor din P sunt (semantic), la fel
ca și (unele dintre) cuvintele din S. Astfel, se stabilește o valoare limită, iar dacă media
artimetică calculată pentru a identifica similitudinea între cele 2 propoziții depășește pragul
stabilit, atunci ea este considerată inclusă. Aceeași strategie este aplicată pentru a identifica
propozițiile unite.
După ce se determină gradul de similitudine dintre oricare 2 propoziții din D P și DS, se
alege pentru fiecare P din DP cea mai asemănătoare propoziție din DS (SenSim(Pi, DS)), în ideea
că o propoziție poate fi găsită în mai multe locuri într-un document. Având aceste valori, se
calculează procentajul de plagiere – media artimetică a valorilor SenSim.
Pentru a clasifica un document DP ca fiind variantă plagiată a unui alt document D S, s-a
stabilit o valoare limită (Lim), astfel încât dacă procentajul de plagiere dintre cele 2 documente
depășește Lim, atunci acesta este considerat plagiat.
Testele au fost făcute pe 2 seturi de documente diferite, iar acuratețea a fost de 100%,
respectiv 96.2%, algoritmul clasificând greșit 3,8% articole dintr-unul dintre seturi, însă niciun
document original nu a fost clasificat greșit. [13]

10
2.4. Clasificare și amprentare

În [20] sunt evaluate 2 metode des întâlnite pentru identificarea documentelor care au
aceeași sursă, denumite coderivate: amprentarea digitală (fingerprinting) – concepută în special
pentru determinarea coderivatelor și clasificarea (ranking) – tehnică dezvoltată pentru
identificarea unor resurse pornind de la o interograre dată. De asemenea sunt prezentate variante
ale acestor metode pentru identificarea celei mai bune dintre ele și o extindere a clasificării
dezvoltată de autori.
Cele 2 metode sunt foarte diferite, însă au elemente în comun, cum ar fi preprocesarea
documentelor înainte de indexare. Acest proces constă în eliminarea cuvintelor de legătură și a
sufixelor – avantajul fiind reducerea timpului de procesare a documentului de verificat, fără nicio
degradare a calității rezultatelor returnate. [20]

2.4.1. Clasificarea

Clasificarea [20] este utilizată pentru identificarea celor mai bune potriviri dintr-o bază de
date pornind de la o interogare și este utilizată pe scară largă în motoarele de căutare de pe
Internet. Această metodă constă în 2 pași:
(i) colecția de documente este indexată;
(ii) o interogare este dată, pentru găsirea rezultatelor care o conțin într-o bază de date;
Indexarea [21] este un proces care ajută la organizarea cantităților mari de informații,
astfel încât interogările să fie rezolvate eficient, iar părțile relevante de text să fie extrase rapid. O
colecție de documente stocată (sau nu) într-o bază de date se presupune că este un set de
documente separate, fiecare fiind caracterizat de un set de termeni (cuvinte) și astfel, cu ajutorul
indecșilor se pot identifica rapid documentele care conțin anumite combinații de termeni sau care
pur și simplu sunt considerate a fi relevante pentru setul de termeni dat.
Interogările sunt utilizate pentru calcularea gradului de similitudine (folosind o funcție
specială numită măsurarea similitudinii [20]) pentru fiecare document dintr-o colecție.
Rezultatele sunt returnate în ordine descrescătoare, cel cu gradul cel mai înalt fiind cel mai
asemănător și suspect de plagiere.
Există mai multe funcții care măsoară similitudinea, printre care produsul intern – una
din cele mai simple și practice măsurători [20] și produsul intern normalizat.

11
Fiind date: o interogare q (fiecare termen din interogare este notat cu t) și un document d
în care este efectuată căutarea, produsul intern este produsul a două componente: frecvența și
greutatea termenilor care se găsesc atât în interogare cât și în document.
Frecvența unui termen este o valoare raportată la importanța termenului în documentul
curent de verificat și este 1 + lnfd,t , unde fd,t este numărul de apariții ale termenului t în
documentul d, iar greutatea unui termen reprezintă importanța unui termen în toată colecția de
documente. Cea din urmă are valoarea ln(1+N/ft), N este numărul de documente din colecție, iar
ft este numărul de documente care îl conțin pe t.
Produsul intern se calculează astfel:

N
∑ ( 1+ln f d , t ) ∙ ln ⁡(1+ f
t ∈q ∩ d
)
t

și returnează valori mari în cazul documentelor în care termenii din interogare apar de multe ori.
Așadar documentele mari tind să fie în top – lucru nu neapărat relevant. Avantajul principal este
timpul de execuție.
Pentru rezolvarea problemei documentelor lungi, autorii au propus o metodă care
normalizează produsul intern împărțind rezultatul cu rădăcina pătrată a lui fd (numărul de termeni
din documentul d).

1 N
∙ ∑ ( 1+ ln f d , t ) ∙ ln ⁡( 1+ )
√ f d t ∈ q∩d ft

Pornind de la aceste măsurători, [20] prezintă o metodă care, spre deosebire de formulele
de mai sus, a fost dezvoltată pentru compararea de documente întregi, nu pentru găsirea unor
documente plecând de la o interogare. Ideea de bază a metodei este că 2 documente sunt similare
dacă conțin un număr similar de apariții ale cuvintelor. [20]
Astfel, diferența dintre frecvența unui termen în documentul-interogare (q) și frecvența
aceluiași termen în documentul cu care se verifică, notată cu |fq,t - fd,t|, trebuie să fie mică. De
asemenea lungimile documentelor, fq și fd, trebuie să fie apropiate.
Similitudinea dintre documente este calculată astfel:

12
N
1 ft
∙ ∑
1+ ln ( 1+|f q−f d|) t ∈q ∩ d 1+|f q , t−f d ,t|

N
este o valoare care reflectă frecvența unui termen în cadrul colecției de documente,
ft
unde N este numărul total de documente din colecție, iar f t este numărul de documente care îl
conțin pe t.
Normalizarea acestui produs intern se realizează împărțind rezultatul cu logaritmul
diferenței dintre lungimile documentelor. Este necesar acest proces, deoarece dacă se compară un
document de dimensiune mică cu unul de dimensiune foarte mare, este posibil ca termenii din
primul document să fie găsiți foarte des în cel de-al doilea datorită lungimii acestuia. De
asemenea, s-a preferat utilizarea logaritmului din diferență în locul diferenței simple deoarece
valoarea diferenței tinde să influențeze prea mult rezultatul valorii finale [20]. De exemplu,
pentru documentele de lungime aproximativ egală (1000 și respectiv 1005 cuvinte), prin
normalizarea folosind diferența, valoarea similitudinii este împărțită la 6, dar documentele diferă
doar 0.5%.

2.4.2. Amprentare

Această metodă este utilizată pentru compararea documentelor coderivate, adică a celor
care provin din aceeași sursă. Amprentarea presupune atribuirea unei valori (a unei „descrieri”)
fiecărui document dintr-o colecție – această valoare reprezentând conținutul documentului
respectiv, iar comparând aceste valori se poate determina gradul de similitudine dintre
documente.
Amprenta unui document este o colecție de numere întregi numite puncte caracteristice.
De obicei, o amprentă este generată selectând subșiruri dintr-un document asupra cărora se aplică
o formulă matematică [20]. Aceasta este asemănătoare unei funcții de hashing și produce un
punct caracteristic. Așadar, când un document este verificat de plagiere, i se generează amprenta
digitală și în funcție de numărul de puncte caracteristice pe care le are în comun cu documentul
cu care este verificat, se stabilește gradul de similitudine dintre cele 2 documente.
Procesul constă în 4 sarcini:

13
i. găsirea unei funcții care să transforme subșiruri în puncte caracteristice;

Pentru rezultate bune, funcția trebuie să fie precisă, rapidă (când se face o interogare pe o
colecție mare, se generează un număr foarte mare de puncte caracteristice), reproductibilă
(pentru un șir să se returneze de fiecare dată aceeași valoare) și să se stabilească un interval în
care să fie inclusă valoarea returnată.
Un exemplu de astfel de funcție este [16]:

h(ci) = h(ci-1) ⊕ (A(ci) + h(ci-1) ⫹ 6 +h(ci-1) ⫺ 2), i>0

unde c0 c1...ck este un șir, A(ci) este o funcție care convertește un caracter într-un număr întreg
(de obicei valoarea ASCII asociată), ⫹ și ⫺ reprezintă shift-are la stânga, respectiv la dreapta,
iar ⊕ reprezintă operația booleană XOR (Exclusive OR). Pentru primul caracter din orice șir
se dă o valoare inițială.
Dacă valoarea maximă pe care o poate lua funcția f este m, atunci valoarea unui șir este
dată de:

h(șir) = h(ck) mod m.

ii. stabilirea lungimii subșirurilor (granularitatea);

Granularitatea are un impact puternic asupra preciziei întregului proces [20] și poate fi un
număr fix de caractere sau un număr fix de propoziții. Cu cât granularitatea este mai mare, cu
atât similaritatea dintre documente devine mai mică.

iii. stabilirea numărului de puncte caracteristice din care să fie alcătuită amprenta
digitală a documentului;

Pentru a decide mai ușor dacă documentele sunt sau nu coderivate, acestea trebuie
descompuse într-un număr cât mai mare de puncte caracteristice. Acest număr poate fi fix, sau
variabil – în funcție de lungimea documentului. Alegerea unui număr variabil poate conduce la
favorizarea documentelor lungi.

iv. alegerea unui algoritm care selectează subșirurile din document (strategia de
selecție).

14
Există multe strategii de selecție, unele fiind potrivite pentru amprentare cu număr fix de
puncte caracteristice și altele pentru cea cu număr variabil. Dacă a fost stabilit numărul de puncte
caracteristice – k, atunci k subșiruri vor fi selectate din document. Cea mai simplă selecție este
selectarea tuturor subșirurilor de lungime g (granularitatea), această strategie producând cea mai
mare amprentă care se poate genera pentru un document.
O altă strategie este selectarea frazelor în funcție de frecvență, cele mai rare având un rol
mai important. Această metodă presupune calcularea punctelor caracteristice, sortarea lor în
funcție de numărul de apariții în document și selectarea celor mai rare. De obicei un punct
caracteristic apare o singură dată, ceea ce înseamnă că vor fi eliminate numai subșirurile care
sunt foarte comune.

15
3. Capitolul III –Tehnologii Web

O aplicație web este o aplicație client-server care cuprinde 2 părți: partea de front-end
(client) și partea de back-end (server).
Modelul client/server este o arhitectură ce descrie relația dintre 2 programe care se află
fie pe același calculator, fie pe calculatoare diferite. Clientul face o cerere la server, iar serverul
procesează cererea și returnează un răspuns.
În cazul aplicațiilor web, browser-ul (navigatorul) este clientul care trimite cereri unui
server web. Un client poate solicita pagini statice, care nu necesită niciun fel de procesare pe
partea de server, sau pagini dinamice, care cuprind script-uri scrise într-un anumit limbaj de
programare pe care serverul web le interpretază și le trimite înapoi clientului sub formă de
pagină statică.
Într-o aplicație web, partea de client (HTML, JavaScript) se ocupă cu prezentarea
informațiilor, iar partea de server (PHP, ASP, Perl) se ocupă cu stocarea și procesarea acestora.

3.1. PHP, Apache și MySQL

PHP este un limbaj de scripting folosit pe scară largă în dezvoltarea paginilor și a


aplicațiilor web. A fost creat de Rasmus Lerdof în anul 1995, din dorința acestuia de a crea un
script pentru a urmări numărul de vizitatori ai site-ului său. [11]
Inițial PHP însemna Personal Home Page și a fost lansat ca un proiect open source, de-a
lungul timpului mulți dezvoltatori alăturându-se la perfecționarea soft-ului. În 1997 PHP a fost
numit cum este și în prezent ”PHP: Hypertext Preprocessor” și reprezintă unul dintre cel mai
importante și populare limbaje de programare web. [11]
Fiind un limbaj de scripting, PHP aduce multe avantaje programatorilor, de exemplu
codul scris nu trebuie compilat, ceea ce îl face ușor de editat și testat. Majoritatea limbajelor de
programare necesită compilarea fișierelor în cod mașină înainte de rulare, proces care presupune
mult timp.

16
Rulat din linia de comandă, PHP permite crearea de aplicații independente, însă
principalul scop al PHP-ului este crearea de script-uri pentru a fi rulate pe un server web,
permițând modificarea paginilor web înainte ca acestea să fie transmise de server către
browserele utilizatorilor.
Pentru utilizarea PHP-ului pe un site web, este nevoie de un server care să proceseze
script-uri PHP. Apache este un server HTTP de tip open source, care, odată instalat pe calculator,
permite dezvoltatorilor să ruleze scripturi PHP local, fapt pentru care, Apache este un element
important pentru dezvoltarea locală. [11]
Apache este cel mai popular server web în prezent 1, având așadar o contribuție mare în
dezvoltarea Internetului. Există multe module (plugin-uri) care au fost create pentru a extinde
funcționalitatea serverului Apache. Printre cele mai importante funcționalități ale serverului
Apache se numără suportul pentru CGI (Common Gateway Interface) și găzduirea virtuală
(posibilitatea găzduirii mai multor site-uri simultan pe același server).
Pentru site-urile dinamice o componentă importantă este stocarea datelor astfel încât ele
să poată fi modificate rapid și ușor – acest lucru fiind principala diferență între un site dinamic și
un site static realizat în HTML. Deoarece PHP nu oferă o metodă eficientă de stocare a
informațiilor, este nevoie de un sistem de gestiune a bazelor de date relaționale (SGBD).
MySQL este unul dintre cele mai populare SGDB-uri open source în prezent 2 și este
foarte des întâlnit împreună cu PHP. Acesta a fost inițial lansat în 1996 și este denumit după
numele fiicei principalului autor și co-fondator Michael Widenius [17], My, și SQL (Structured
Query Language).
MySQL permite dezvoltatorilor să stocheze datele în tabele structurate pe linii și coloane
pentru ca informația să fie bine organizată, ușor de găsit, modificat, adăugat și șters. MySQL este
un server de baze de date SQL multi-user (controlează accesul la date pentru a garanta că mai
mulți utilizatori pot lucra simultan cu acestea) și multi-thread (mai multe fire de execuție).
MySQL utilizează limbajul de programare SQL, limbaj care se ocupă atât cu inserări,
interogări, ștergeri și modificări asupra informațiilor dintr-o bază de date, cât și cu controlul
accesului la o bază de date. SQL este un limbaj specific pentru gestiunea datelor în SGBD-uri.

1 http://w3techs.com/technologies/overview/web_server/all
2 http://db-engines.com/en/ranking

17
3.2. HTML, CSS și jQuery

Pentru ca o pagină web să poată fi afișată într-un browser (navigator), este necesară
utilizarea unui limbaj de marcare, care are ca scop structurarea și prezentarea documentului.
HTML (acronimul de la HyperText Mark-up Language) este limbajul de marcare care stă la baza
paginilor web și folosește etichete denumite tag-uri care oferă indicații de redare a informației.
Browser-ul interpretează tag-urile, și astfel documentul este structurat în diferite moduri: tabele,
liste, paragrafe, titluri etc. [23]
Standardele HTML sunt menținute de World Wide Web Consortium (W3C), o ascociație
fondată și condusă în prezent de Tim Berners-Lee [14], care are ca scop dezvoltarea standardelor
pentru World Wide Web în vederea creșterii și a îmbunătățirii acestuia, pentru a-l face accesibil
tuturor utilizatorillor.
Orice fișier HTML ar trebui să înceapă cu declarația <!DOCTYPE>, care informează
browser-ul despre versiunea de HTML în care este scrisă pagina. Următorul tag este
<html>..</html>, tag-ul care le cuprinde pe toate celelalte și care spune browser-ului că
documentul curent este de tip HTML. Apoi este elementul <head>..</head>, care adaugă
informații despre documentul HTML, cum ar fi titlu (prin tag-ul <title>), cuvinte cheie,
descriere, detalii despre autor (folosind tag-ul <meta>, care ajută la controlarea modului în care
motoarele de căutare indexează site-ul) și adaugă, de asemenea, fișiere externe utilizând tag-ul
<link>. Zona care va fi afișată în browser este delimitată de <body>..</body>. Aceasta cuprinde
toate elementele fișierului HTML: imagini, câmpuri, text, liste, tabele etc.
În timp ce HTML structurează conținutul unui document, este nevoie de un instrument
care să îl stilizeze și să îl formateze. CSS (Cascading Style Sheet) este un limbaj de stilizare care
se ocupă cu acest lucru, personalizând tag-urile (etichetele) HTML, XML și XHTML, iar
standardele sale sunt menționate tot de W3C [18]. Utilizând CSS se poate formata orice element
al unei pagini web, de la culorile textelor, margini, imagini și culori de fundal la poziționarea
elementelor în pagină, acest lucru realizându-se prin proprietăți. CSS are o sintaxă simplă,
proprietățile fiind specificate prin cuvinte cheie din limba engleză: font, font-size, text-align,
margin, padding, float, height, border, background etc.

18
CSS se poate adăuga direct în interiorul tag-urilor HTML prin atributul „style” (de
exemplu <p style=”font-size: 13px;”> Paragraf </p>), acesta fiind numit CSS inline, sau în
partea de head a fișierului HTML cu ajutorul tag-ului <style>, numit CSS intern :

<head>

<style type=”text/css”>

p{

font-size: 13px;

</head>

Cea mai bună metodă însă este utilizarea unui fișier CSS extern, care să fie inclus tot în
partea de head a fișierului HTML cu ajutorul tag-ului <link>:

<link rel=”stylesheet” type=”text/css” href=”style.css”>,

deoarece modificările ulterioare să fie făcute numai în fișierul CSS, nu și în HTML.


JavaScript este un limbaj de programare, de tip script, care lucrează pe partea de client și
care definește comportamentul elementelor într-o pagină Web [12]. În general, JavaScript este
utilizat pentru a adăuga funcționalități unei pagini Web, de exemplu să răspundă la diferite
acțiuni (click, mișcarea mouse-ului, apăsarea unei taste), să comunice cu serverul, să valideze
date și multe altele.
JavaScript a fost dezvoltat de firma Netscape, de Brendan Eich, sub numele de LiveScript
[22], pentru a extinde funcționalitățile HTML. JavaScript a apărut din necesitatea de a rezolva
sarcini relativ simple pe partea de client și de a face mai interactivă navigarea în cadrul site-ului.
JQuery [12] este o librărie JavaScript concepută de către John Resig în anul 2006 pentru
a simplifica lucruri precum parcurgerea unui document HTML, animațiile, apelurile AJAX și
manipularea evenimentelor. JQuery este cea mai populară librărie JavaScript în prezent3 și a
schimbat modul de codare în JavaScript a multor dezvoltatori. De asemenea, au fost create sute
de plugin-uri care extind funcționalitatea jQuery, prin urmare acesta este un instrument esențial
pentru orice porțiune de scripting pe partea de client.

3 http://w3techs.com/technologies/overview/javascript_library/all

19
JQuery oferă modalități elegante de selectare a elementelor dintr-o pagină, schimbă
proprietăți din CSS dinamic și poate modifica chiar și conținutul paginii, simplifică schimbul de
informații cu server-ul fără încărcarea paginii (apeluri AJAX) și nu în ultimul rând, adaugă
animații interesante și complexe paginilor Web.

3.3. Drupal

Scrierea aplicațiilor web poate fi simplificată prin utlizarea unui sistem de gestionare a
conținutului (Content Management System – CMS), precum WordPress, Joomla sau Drupal.
Aceste CMS-uri facilitează dezvoltarea rapidă a aplicațiilor, permițând dezvoltatorilor să se
concentreze asupra sarcinilor ce duc la atingerea scopului propus, fără a fi nevoiți să
implementeze funcționalități de bază, cum ar fi gestionarea utilizatorilor.
Drupal este un sistem de gestionare a conținutului scris în PHP, îmbinat cu JavaScript
(cea mai folosită librărie fiind jQuery) pe partea de front-end, iar ca bază de date se poate utiliza
MySQL, MariaDB sau PostgreSQL pentru stocarea conținutului unui site, dar și a configurărilor.
Drupal permite utilizarea oricărei baze de date care acceptă PHP, deoarece interfața bazei de date
este bazată pe PDO (PHP data object), care oferă un strat de abstractizare pentru accesarea
datelor [3]. Acest lucru înseamnă că indiferent de baza de date utilizată, instrucțiunile de
preluare, modificare, adăugare a datelor sunt la fel.
Drupal este mai mult decât un CMS, este o platformă puternică și flexibilă utilizată
pentru a crea aplicații web, bloguri, forumuri, magazine online etc, iar fiecare versiune majoră
conține un API (Application Programming Interface) îmbunătățit.

3.3.1. Noțiuni de bază

Drupal este construit din module – plugin-uri care adaugă funcționalități la un site.
Drupalul de bază (Drupal core) instalat cu setările prestabilite (cu modulele de bază) are toate
funcționalitățile importante pe care orice CMS ar trebui să le conțină: autentificare, înregistrare,
definirea tipurilor de utilizatori (user roles) și de conținut (content types), definirea permisiunilor
pe care le au utilizatorii în funcție de roluri, crearea de pagini de un anumit tip definit, editarea și
gestionarea acestora etc.

20
Drupal a fost proiectat ca să fie personalizat, dar acest lucru se face adăugând module, nu
prin modificarea codului de bază. Modulele trebuie activate pentru a adăuga funcționalitatea
oferită.
Astfel, pentru extinderea funcționalităților de bază există module contrib (sau de
contribuție) care sunt de asemenea open-source și care zilnic sunt îmbunătățite de comunitatea
Drupal. Pe site-ul oficial există peste 20 000 de module 4, printre care cele mai importante, care
sunt utilizate aproape pe orice site, sunt:

 Views – se ocupă cu sortarea și listarea conținutului după criterii stabilite de utilizator.


Nume acestui modul vine de la terminologia din bazele de date, views – o interogare
complexă stocată într-un tabel. Acest modul permite selectarea unor anumite părți dintr-
un conținut după criteriile dorite însă fără a scrie nicio linie de cod, ci printr-o interfață
grafică care creează interogarea dorită. Exemple de view-uri comune: cele mai recente
postări ale unui utilizator (pentru bloguri), evenimente care urmează să se petreacă, cele
mai vândute produse etc.

 Panels – oferă posibilitatea de a crea pagini personalizate cu ușurință, deoarece pune la


dispoziția utilizatorului un sistem drag and drop prin care se poate proiecta structura unei
pagini vizual și se poate plasa conținutul în cadrul paginii în funcție de layout-ul creat. De
exemplu, o pagină de start poate avea o imagine de prezentare în partea de sus, un meniu
pe partea stângă și un conținut principal în spațiul rămas.

 Pathauto – generează în mod automat URL-uri (alias-uri) pentru diferite tipuri de


conținut (pagini de un anumit tip, pagini ale utilizatorilor). Alias-urile se bazează pe
modele definite de administrator, de exemplu, pentru pagini de tip ”proiect” să se
genereze URL-uri de tipul www.example.com/proiect/nume-proiect.

 Date – permite adăugarea câmpurilor de tip dată în orice tip de conținut, afișate cu
calendare tip pop-up.

4 https://drupal.org/project/Modules

21
Pentru adăgarea unei funcționalități specifice unui site, orice utilizator poate crea un
modul nou, iar funcțiile din acest modul sunt apelate de Drupal pe rând. Aceste oportunități în
care modulele „se afirmă” sau „se agață” de tot ce se întamplă în Drupal se numesc „hooks”
(cârlige). Un cârlig este o funcție PHP, numită my_module_name(), unde „my_module” este
numele modulului și „name” este numele hook-ului [7]. Pentru a extinde Drupal, un modul nu
trebuie decât să implementeze un hook, aceasta fiind cea mai comună (și corectă) metodă de a
modifica Drupal de bază. Când Drupal dorește să permită intervenția din partea modulelor, el
verifică care dintre modulele sale implementează un anumit hook și apelează hook-ul respectiv
în toate cele care îl implementează.
Un exemplu concret al acestui proces este momentul în care un utilizator se înregistrează
pe un site. Drupal apelează hook_user_login, ceea ce înseamnă că fiecare funcție din orice modul
(de bază, de contribuție sau personalizat) ce respectă convenția de nume (nume_modul +
nume_cârlig) va fi apelată.
O porțiune de conținut, care poate fi o postare într-un blog, o descriere a unui eveniment,
a unui produs sau pur și simplu o pagină normală este numită nod. Nodurile pot avea câmpuri
(field-uri) personalizate, care definesc un tip de nod (content type). Astfel, se poate crea un tip de
nod „proiect” (care conține, de exemplu, 3 field-uri: titlu, o imagine și un fișier) pentru a putea fi
ulterior create noduri cu această structură, completând câmpurile din interfață.
Blocurile reprezintă o parte importantă, ele fiind bucăți de conținut reutilizabil (meniuri,
un formular de căutare sau autentificare, un top al celor mai vizitate noduri etc), care pot fi
afișate pe anumite pagini, după anumite criterii setate.
Modulul Taxonomy permite clasificarea conținutului unui site în categorii și subcategorii,
prin crearea de vocabulare (de exemlu vocabularul „Produse”) şi adăugarea la vocabularul creat
a termenilor („Computere”) și a sub-termenilor („Laptopuri”, „Desktop PC”). Fiecare porțiune
de conținut este etichetată cu un termen dintr-un vocabular și astfel cantități mari de conținut pot
fi clasificate astfel încât utilizatorii să găsească rapid ceea ce îi interesează.
Utilizatorii, rolurile și permisiunile reprezintă o parte foarte utilă dezvoltată în Drupal.
Utilizatorii sunt conturile înregistrate pe un site, iar rolurile ajută la securitatea și administrarea
site-ului respectiv. Drupal permite crearea de roluri pentru orice grup de utilizatori care au
anumite privilegii. Implicit, Drupal are 2 roluri de utilizatori: anonim (utilizatori care nu au cont
sau care nu s-au înregistrat) și autentificat (utilizatori înregistrați care își pot edita profilul

22
personal). Ulterior se pot crea roluri pentru orice tip de utilizatori care urmează să acceseze un
site. De exemplu pentru un magazin online se pot crea rolurile client și vânzător, clientul având
permisiuni precum vizualizare și cumpărare produse, iar vânzătorii având în plus permisiuni de
editare, adăugare și ștergere produse.

3.3.2. Teme Drupal

O temă în Drupal este o colecție de fișiere care returnează aspectul unui site, așadar
acestea conțin HTML, CSS, JavaScript, imagini, dar și PHP. Temele se bazează pe fișiere numite
template-uri (șabloane) cu extensia .tpl.php, prin care Drupal determină cum să genereze HTML-
ul pe care trebuie să-l trimită la server.
Șabloanele conțin porțiuni mari de HTML, combinate cu mici fragmente (de obicei
afișări de variabile) care sunt generate dinamic de Drupal pe măsură ce se contruiește o pagină și
care reprezintă conținutul propriu-zis. Șabloanele sunt folosite pentru orice bucată de conținut:
meniuri, noduri, comentarii, regiuni dintr-o pagină, blocuri, câmpuri și chiar pentru pagini
întregi sau tipuri de pagini.
În orice temă există un fișier numit template.php în care sunt procesate datele de ieșire ce
urmează a fi introduse în codul HTML din fișiere de tip șablon. Acest fișier nu este necesar, dar
este recomandată utilizarea acestuia pentru a păstra fișierele de tip șablon curate, și pentru a
organiza preprocesarea datelor .
În prezent există peste 1700 de teme5 de contribuție, dezvoltate de comunitatea Drupal.
Se poate descărca și utiliza orice temă de pe site-ul oficial și acestea pot fi extinse, creându-se
astfel sub-teme care moștenesc toate caracteristicile temei părinte.
Pentru crearea unei teme noi este nevoie de un fișier nume_temă.info pentru ca Drupal să
recunoască tema, fișier în care trebuie definite regiunile (cum va fi secționată o pagină) și
fișierele șablon, CSS și JavaScript care vor fi utilizate.
Legătura între noțiunile descrise anterior este evidențiată în Fig. 3.1.

5 https://drupal.org/project/themes

23
Fig. 3.1 – Prezentare generală simplificată a unui site creat în Drupal [2]

24
4. Capitolul IV – Aplicație de detectare a plagiatului

Pentru a identifica similarități între documente, există 2 abordări principale. Una dintre
acestea este compararea textelor folosind amprente digitale, valori ce reprezintă descrieri
asociate fiecărui document. O amprentă este o colecție de numere întregi numite puncte
caracteristice, obținute prin aplicarea unor formule matematice asupra subșirurilor din document
și care sunt folosite pentru căutarea rapidă în celelalte documente din colecție.
O altă abordare este analiza amănunțită a unui grup de documente, metodă care constă în
compararea cuvintelor pentru a determina secvențe plagiate și gradul de similitudine dintre
oricare două texte. Deși costul vitezei în etapa de comparare poate fi mai mare decât în cazul
amprentării, această abordare are avantajul producerii de rezultate mai lizibile.
Pentru a identifica și a vizualiza ulterior cât mai exact paragrafele și cuvintele care au fost
copiate sau modificate, am decis să implementez un algoritm din a doua categorie. Așadar
metoda propusă, numită SimilarDocumentsDetection (SimDD), compară cuvintele din oricare 2
documente dintr-o colecție și detectează astfel paragrafe suspecte.
În procesul comparare a 2 documente, se pune problema împărțirii documentului suspect
în fragmente de text (sau șiruri de cuvinte cheie), astfel încât fiecare fragment să fie căutat în
documentul cu care se compară. Această porțiune de text este asemănătoare unei interogări
pentru motoarele de căutare.
Plecând de la ideea că, în medie, un paragraf are aproximativ 10-20 de cuvinte
semnificative, în metoda propusă, documentele suspecte au fost împărțite în șiruri de 15 cuvinte
cheie. Împărțirea în propoziții este o alegere des întâlnită în sistemele de comparare a textelor,
dar uneori propozițiile pot fi prea scurte, sau prea lungi ca să fie relevante. Paragrafele pot fi, de
asemenea, foarte mari, fapt care poate conduce la identificarea greșită a unor porțiuni care nu
sunt de fapt plagiate.
Primul pas al acestei metode este preprocesarea documentelor, în urma căruia fiecare text
este reprezentat sub forma unei liste de cuvinte cheie. Apoi, sunt luate câte 15 cuvinte cheie și se
compară, pe rând, cu câte un document dintr-o colecție. Pentru fiecare document, sunt returnate

25
secvențe în care au fost găsite mai multe cuvinte cheie apropiate. Ideea de bază a acestei metode
este că un fragment poate fi considerat plagiat dacă are mai mult de 3 cuvinte comune cu un alt
fragment dintr-un document.
Algoritmul propus a fost dezvoltat în scopul îndeplinirii următoarelor obiective:
1. Să identifice mai multe tehnici de plagiere, cum ar fi copierea totală, parțială,
amestecarea cuvintelor, reordonarea paragrafelor etc.
2. Să afișeze rezultatele într-un format care poate fi ușor de interpretat.
3. Să compare în detaliu documentele, astfel încât să fie găsită orice secvență
plagiată.

4.1. Preprocesarea documentelor

Etapa de preprocesare a documentelor presupune parcurgerea acestora și salvarea


cuvintelor cheie în fișiere.
Preprocesarea constă în aplicarea a 3 filtre: eliminarea diacriticelor și transformarea
tuturor literelor mari în litere mici, eliminarea cuvintelor de legătură și a caracterelor speciale și
eliminarea sufixelor cuvintelor.
Diacriticele au fost eliminate atât pentru compararea mai ușoară a cuvintelor, cât și pentru
identificarea unor cuvinte copiate care în textul original au fost articulate, iar în textul plagiat
sunt nearticulate, sau invers. De exemplu: „masă” și „masa”.
Literele mari au fost transformate în litere mici în ideea că unele propoziții sunt plagiate
prin reordonarea cuvintelor, ceea ce înseamnă că un cuvânt care a fost în mijlocul propoziției
originale, în cea plagiată poate fi primul. Aceste două operații au fost aplicate în faza de
preprocesare pentru a economisi timp în etapa de comparare.
Cuvintele de legătură („de”, „și”, „că”, „însă” etc) și caracterele speciale (. ! ? , / ) nu
au o valoare importantă în procesul de comparare a textelor deoarece sunt prea comune și nu au
nicio relevanță într-o propoziție, de aceea ele pot fi eliminate pentru reducerea timpului de
procesare, fără afectarea calității rezultatelor obținute.
Eliminarea sufixelor este o operație care a fost aplicată pentru a obține originea comună a
cuvintelor din aceeași familie lexicală. În compararea textelor, acest pas este util pentru a putea
considera cuvintele cu sens și formă comună ca fiind identice și pentru a identifică propoziții

26
care sunt similare în forma lor originală. Am presupus că, în general, cuvintele de bază au
aproximativ 5 litere, așadar au fost eliminate restul literelor din cuvintele lungi.

Exemplu:
Propoziția inițială: „Din cauza faptului că rata de plagiere a crescut semnificativ în ultima vreme,
calitatea educației primite de studenți a fost afectată.”
Propoziția după aplicarea filtrelor: {cauza faptu rata plagi cresc semni ultim vreme calit educa
primi stude fost afect}.

4.2. Compararea documentelor

După etapa de preprocesare, pentru fiecare proiect există, pe lângă documentul original,
un fișier de tip text în care sunt salvate cuvintele cheie. Aceste fișiere, numite fișiere procesate,
sunt utilizate pentru identificarea fragmentelor suspecte.
Compararea unui document DP cu celelalte documente din colecție începe prin împărțirea
fișierului său procesat în mai multe fișiere (fișiere interogare), fiecare conținând 15 cuvinte.
Algoritmul compară fiecare interogare cu fișierul procesat al fiecarui document și
returnează toate secvențele de cel puțin 3 cuvinte aflate la distanță mai mică de 5 (în fișierul
procesat).
Datorită acestei abordări, pot fi identificate mai multe tehnici de plagiere. Una dintre
acestea este crearea unei propoziții P dintr-o propoziție originală S, în care cuvintele au fost
reordonate, înlocuite sau șterse. Algoritmul determină secvențele în care cuvintele au fost
amestecate, deoarece nu ține cont de ordinea în propoziție; acesta caută o secvență de oricare n
(n≥3) cuvinte consecutive din cele 15 ale fișierului interogare. De asemenea, dacă au fost cuvinte
adăugate, algoritmul este în continuare capabil să identifice fraza plagiată, deoarece acesta
identifică secvențe de cuvinte suspecte aflate la distanță de cel mult 5 cuvinte, așadar dacă între 2
cuvinte cheie a fost adăugat încă unul, cele 2 cuvinte vor fi detectate la distanță de 1 cuvânt.

Exemplu:
Propoziția inițială: Peste 30% din studenții de la Medicină sunt voluntari la o asociație.
Propoziția plagiată: Peste 30% din studenții de la Facultatea de Medicină sunt voluntari la o
asociație.

27
Complexitatea algoritmului este O(n + m), unde n este numărul de termeni din
documentul cu care este verificată o interogare, iar m este numărul de cuvinte din interogare care
au fost găsite în document. Întotdeauna m este mai mic sau egal cu n, ceea ce înseamnă că
procesarea unei interogări se face timp liniar, O(n).

i=0;
pentru fiecare cuvânt c din document
dacă c ∈ query
cuvinte_găsite[i] = poziție_cuvânt
sf.dacă
sf.ptr

lungime_secvență = 0; start = cuvinte_găsite[1];


pentru i=1..c
dacă (cuvinte_găsite[i] - cuvinte_găsite[i-1] < 5)
lungime_secvență++;
altfel
dacă (lungime_secvență > 3)
returnează secvență găsită;
sf.dacă
sf.dacă
start = cuvinte_găsite[i];
lungime_secvență = 0;
sf.ptr

Algoritm 1 – Pseudocod pentru compararea unui query cu un document

Pentru a reduce timpul de execuție, algoritmul de comparare a textelor a fost scris în


limbajul awk.
AWK este un limbaj de programare care a fost conceput pentru procesarea textelor aflate
în fișiere. Numele provine de la inițialele autorilor Alfred V. Aho, Peter J. Weinberger and Brian
W. Kernighan [1]. Funcția de bază a acestui limbaj este citirea liniilor dintr-un fișier, pentru a
căuta potriviri cu un anumit șablon (pattern). Când este găsită o potrivire, se execută o acțiune pe
această linie, după care procesul se reia.
Pentru același set de teste, a fost calculat timpul de execuție al algoritmului scris în php și
în awk. S-a utilizat o comandă PowerShell numită Measure-Command, comandă care execută un
script sau un cmdlet (scripturi PowerShell care efectuează o singură funcție) și calculează timpul
de execuție al acesteia6.

Pentru evaluarea timpilor de execuție ai agloritmilor s-a comparat propoziția


6 http://www.powershellmanual.com/measure-command

28
„Din cauza faptului că rata de plagiere a crescut semnificativ în ultima vreme,
calitatea educației primite de studenți a fost afectată.”

cu paragraful

„În urma studiilor s-a descoperit că plagiatul în universități a crescut semnificativ în


ultima jumătate de secol, ceea ce a afectat calitatea educației primite de studenți. Cadrele
universitare știu că pentru a avea cunoștințe bogate în orice domeniu, studenții au nevoie de
informația furnizată de paginile web, însă aceștia sunt tentați să utilizeze informațiile găsite
pentru a „practica” plagiatul.”

În urma preprocesării, datele utilizate în algoritmi au fost următoarele:

- cuvinte cheie din prima propoziție: „cauza”, „faptu”, „rata”, „plagi”, „cresc”, „semni”, „ultim”,
„vreme”, „calit”, „educa”, „primi”, „stude”, „afect”;
- cuvinte cheie din documentul original: „urma”, „studi”, „desco”, „plagi”, „unive”, „cresc”,
„semni”, „ultim”, „jumat”, „secol”, „afect”, „calit”, „educa”, „primi”, „stude”, „cadre”, „unive”, „stiu”,
„cunos”, „bogat”, „domen”, „stude”, „nevoi”, „infor”, „furni”, „pagin”, „web”, „tenta”, „utili”, „infor”,
„gasit”, „pract”, „plagi”.

Fig. 4.1 – Timpii de execuție pentru algoritmul de căutare în limbajele awk și php

29
4.3. Funcționalități ale aplicației

Aplicația oferă, pe lângă detectarea plagiatului, diverse funcționalități cum ar fi: înregistrare,
autentificare, editarea profilului unui utilizator, adăugarea și gestionarea proiectelor proprii de
către studenți.
O prezentare generală a funcționalităților aplicației create este ilustrată în Fig. 4.2.

Fig. 4.2 – Funcționalitățile aplicației

Fig. 4.3 – Autentificarea utilizatorilor

30
Un utilizator se poate autentifica dacă are deja un cont (Fig.4.3), sau își poate crea un
cont, prin completarea câmpurilor: e-mail, nume, prenume, parolă (Fig. 4.4). După ce a fost
înregistrat, utilizatorul își poate edita profilul în funcție de tipul de cont pe care și l-a creat –
profesor sau student (Fig. 4.5, Fig. 4.6).

Fig. 4.4 – Înregistrare utilizator

31
Fig. 4.5 – Editare profil student Fig. 4.6 – Editare profil profesor

Un student își poate vizualiza proiectele (Fig. 4.7) și poate, de asemenea să își depună
proiecte noi (Fig. 4.8). Un profesor poate vizualiza studenții de la secția la care predă (Fig. 4.9) și
poate detecta dacă lucrările pe care aceștia le-au depus sunt plagiate sau nu.

Fig. 4.7 – Vizualizare proiecte

32
Fig. 4.8 – Adăugare proiect nou

Fig.4.9 – Vizualizare studenți

O caracteristică importantă pe care orice soft de detectare a plagiatului ar trebui să o aibă


este vizualizarea rezultatelor în urma comparării textelor într-un format ușor de interpretat.

33
În aplicația dezvoltată, rezultatele sunt afișate pe o pagină împărțită în 2 (Fig. 4.10): în
partea din stânga este documentul inițial, în care sunt evidențiate paragrafele care au fost găsite
suspecte și în partea dreaptă sunt afișate cele mai importante paragrafe din primele 3 documente
în funcție de numărul de similarități identificate însoțite de numele și autorul proiectului original.

Fig. 4.10 – Comparare document suspect cu primele 3 cele mai asemănătoare

De asemenea, interfața permite compararea documentului suspect 1 la 1 (Fig. 4.11).


Făcând click pe unul dintre textele din partea dreaptă, celelalte paragrafe dispar și este afișat
întregul document selectat cu toate secvențele în care au fost găsite cuvinte comune.

34
Fig. 4.11 – Compararea documentului suspect cu un document.

Pentru fiecare paragraf suspect din documentul verificat, la trecerea cursorului deasupra
acestuia, este afișat numele documentului (sau a documentelor) în care a fost găsit (Fig. 4.12).
De asemenea, textele sunt încadrate în porțiuni de lungime fixă, dotate cu bară de scroll,
pentru a putea parcurge textele în sus și în jos în scopul identificării propozițiilor comune.

35
Fig. 4.12 – Identificarea textelor originale din care au fost luate paragrafele selectate

4.4. Analiza rezultatelor

Pentru a testa metoda propusă și a evalua acuratețea algoritmului, a fost folosită o


colecție de documente, ale căror subiectele erau din același domeniu (Informatică).
În această colecție, 5 lucrări au fost plagiate, prin (i) ștergerea unor paragrafe din
documentul inițial D, (ii) adăugarea unor propoziții în D și (iii) modificarea unor propoziții din D
prin reordonarea și derivarea cuvintelor. Au fost făcute comparații între fiecare dintre aceste 5
documente cu restul colecției, și a fost calculată acuratețea metodei SimDD raportată la
rezultatele obținute, astfel:

36
fragmente
de
numărul¿ clasificate corect
∗100
numărul ¿ fragmente

Rezultatul a fost 87.2%, algoritmul clasificând 12.8% dintre fragmente ca fiind plagiate,
ceea ce înseamnă că SimDD returnează uneori rezultate pozitive false, însă nu rezultate negative
false, toate secvențele plagiate fiind întotdeauna identificate.
Au fost făcute teste și pentru documentele originale, pentru a verifica corectitudine
algoritmului. Pentru unele dintre lucrări, s-au găsit secvențe scurte de cuvinte din documente cu
același subiect, secvențe care nu erau neapărat plagiate. Hotărârea de a afișa aceste documente în
care au fost găsite numai secvențe scurte, a fost luată pentru compararea cu ochiul liber a
documentelor cu aceeași temă, pentru a se stabili dacă au aceeași structură sau dacă au fost
înlocuite sinonime în propozițiile originale.

37
5. Capitolul V – Concluzii

În urma studiului realizat, au fost evaluate diverse metode de detectare a textelor plagiate
și au fost prezentate avantaje și dezavantaje ale acestora. Printre metodele existente studiate, se
numără următoarele:

- analiza similitudinii folosind metrici precum cosinus, Dice sau Jaccard

- compararea documentelor la nivel de propoziție prin atribuirea unei valori care reflectă
gradul de similitudine dintre oricare 2 propoziții

- clasificarea documentelor în ordinea descrescătoare a valorilor date de funcțiile de


măsurare a similitudinii, cum ar fi produsul intern sau produsul intern normalizat

- amprentarea documentelor în vederea comparării rapide ale acestora.

Metodele studiate prezintă diferite tehnici de implementare, deciziile fiind luate în


vederea scopului propus: obținerea unui cost mic al vitezei în etapa de comparare a
documentelor, vizualizarea rezultatelor într-o formă cât mai ușor de interpretat, clasificarea
documentelor în funcție de gradul de plagiere etc.
Pentru identificarea similarităților dintre documente, am dezvoltat o aplicație care a fost
testată pe un set de lucrări originale, dar și plagiate. Metoda propusă se bazează pe cuvinte
vecine pentru detectarea paragrafelor plagiate. Au fost considerate cuvinte vecine acele cuvinte
din documentul suspect care apar la distanțe relativ apropiate în documentul cu care este
verificat. SimDD identifică documentele care au fost plagiate prin mai multe tehnici precum
copierea paragrafelor în totalitate sau parțial, dar și prin reordonarea, adăugarea și ștergerea
cuvintelor în propozițiile originale. Rezultatele obținute în urma experimentului efectuat
dovedesc faptul că algoritmul are o acuratețe de 87.2%, rata de eroare fiind obținută în urma
comparării a 2 lucrări cu temă comună, unde termenii de specialitate apar frecvent.
Desigur, aceasta nu este o aplicație pentru producție ci a fost realizată în scop academic.
Pentru perfecționarea ei și calibrarea algoritmului de detectare a plagiatului în funcție de

38
domeniul de studiu (informatică, biologie etc) este nevoie de colecții mari de documente pentru
testare și de feed-back din partea utilizatorilor.

5.1. Activități propuse

Pentru extinderea aplicației, printre activitățile care vor fi luate în considerare, se numără
permiterea depunerii lucrărilor în format PDF sau Word, ceea ce resupune conversia
documentelor la text, și permiterea înregistrării pe site doar acelor utilizatori care dețin adrese de
e-mail din anumite domenii (cs/scs).
Referitor la îmbunătățirea algoritmului de căutare, o activitate propusă este testarea unei
colecții mai mari de documente, pentru optimizarea performanței și a calității rezultatelor
obținute. Acest lucru se poate face prin filtrarea rezultatelor astfel încât să nu fie considerate
plagiate acele paragrafe comune care sunt corect citate în 2 documente diferite, sau cele care
conțin numai cuvinte care au o frecvență mare în documentele cu temă comună.

39
6. Bibliografie

[1] Arnold D. Robbins: GAWK: Effective AWK Programming,


http://www.gnu.org/software/gawk/manual/gawk.html.

[2 ] A. Chavan: Drupal Ingredients Diagram: Let's start at the very beginning...,


http://www.urbaninsight.com/comment/2206.

[3] Benjamin Melançon, Jacine Luisi, Károly Négyesi, Greg Anderson, Bojhan Somers,
Stéphane Corlosquet, Stefan Freudenberg, Michelle Lauer, Ed Carlevale, Florian Lorétan, Dani
Nordin, Ryan Szrama, Susan Stewart, Jake Strawn, Brian Travis, Dan Hakimzadeh, Amye
Scavarda, Albert Albala, Allie Micka, Robert Douglass, Robin Monks, Roy Scholten, Peter
Wolanin, Kay VanValkenburgh, Greg Stout, Kasey Qynn Dolin, Forest Mars, Sam Boyer, Mike
Gifford and Claudina Sarahe: Definitive Guide To Drupal, Apress, New York, 2011.

[4] Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze: An Introduction to


Information Retrieval, Cambridge University Press, Cambridge, England, 2010.

[5] Daniel R. White and Mike S. Joy: Sentence-Based Natural Language Plagiarism Detection,
ACM Journal of Educational Resources, 4 (2004), 1-20.

[6] Dex Online, definiție a plagia, „Dicționarul Explicativ al limbii române, ediția a II-a, DEX
'98”, Academia Română, Institutul de Lingivstică „Iorgu Iordan”, Ed. Univers Enciclopedic,
1998, http://dexonline.ro/definitie/plagia.

[7] Drupal community: Drupal.org Community Documentation,


https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7.

[8] Felipe Felipe Bravo-Marquez, Gaston L'Huillier, Sebastián A. Ríos, Juan D. Velásquez: A
Text Similarity Meta-Search Engine Based on Document Fingerprints and Search Results
Records, Proceedings of the 2011 IEEE/WIC/ACM International Conferences on Web
Intelligence and Intelligent Agent Technology, 1 (2011), 146-153.

40
[9] Introna, Lucas and Hayes, Niall: „Plagiarism Detection Systems and International Students:
Detecting plagiarism, copying or learning?” in Student Plagiarism in an Online World:
Problems and Solutions. Idea Group Publishing, Hershey and London, 2007, pp. 108-122

[10] Jack Lynch: The Perfectly Acceptable Practice of Literary Theft: Plagiarism, Copyright,
and the Eighteenth Century, http://www.writing-world.com/rights/lynch.shtml.

[11] Jason Lengstorf: PHP for Absolute Beginners, Apress, New York, 2009.

[12] Jonathan Chaffer, Karl Swedberg: Learning jQuery Third Edition, Packt Publishing,
Birmingham, UK, 2009.

[13] Nathaniel Gustafson, Maria Soledad Pera, Yiu-Kai Ng: Nowhere to Hide: Finding
Plagiarized Documents Based on Sentence Similarity, Proceedings of the 2008 IEEE/WIC/ACM
International Conference on Web Intelligence and Intelligent Agent Technology, December
(2008), 690-696.

[14] Mary Bellis: The History of the Internet,


http://inventors.about.com/od/istartinventions/a/internet.htm.

[15] M. Pera and Y.-K. Ng.: Utilizing Phrase-Similarity Measures for Detecting and Clustering
Informative RSS News Articles, Integrated Computer-Aided Engineering, 15 (2008), 331-350.

[16] M.V. Ramakrishna and J. Zobel: Performance in practice of string hashing function,
Proceedings of the Fifth International Conference on Database Systems for Advanced
Applications, April(1997), 178-185.

[17] MySQL 3.23, 4.0, 4.1 Reference Manual,


http://dev.mysql.com/doc/refman/4.1/en/history.html.

[18] Robert Schifreen: How to create Web sites and applications with HTML, CSS, Javascript,
PHP and MySQL, Oakworth Business Publishing Ltd, UK, 2009.

[19] - Shanmugasundaram Harihara: Automatic Plagiarism Detection Using Similarity Analysis,


The International Arab Journal of Information Technology, 4 (2012), 322 326.

41
[20] - Timothy C. Hoad and Justin Zobel: Methods for Identifying Versioned and Plagiarized
Documents, Journal of the American Society for Information Science and Technology, 54 (2003),
203-215.

[21] Witten, I.H., Moffat, A., & Bell, T.C.: Managing gigabytes: Compressing and indexing
documents and images (2nd ed.), Morgan Kaufmann, San Francisco, CA, 1999.

[22] w3c: A Short History of JavaScript,


http://www.w3.org/community/webed/wiki/A_Short_History_of_JavaScript.

[23] w3schools: HTML Introduction, http://www.w3schools.com/html/html_intro.asp.

42

S-ar putea să vă placă și