+ All Categories
Home > Documents > Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web...

Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web...

Date post: 31-Jan-2018
Category:
Upload: hathuy
View: 227 times
Download: 3 times
Share this document with a friend
62
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Ș
Transcript
Page 1: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 2: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

Cuprins1. 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

Page 3: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 4: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 5: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 6: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 7: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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ă:

Cosine(ti, tj) = ∑h=1

k

t ih t jh /√∑h=1

k

tih2 ∑

h=1

k

t jh2

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:

idft = logNdf t

7

Page 8: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 9: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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 (Pplagiată , 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

Page 10: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

„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ă DS. 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 DP ș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 DS, 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

Page 11: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 12: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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:

∑t∈ q ∩d

(1+ ln f d , t ) ∙ ln (1+ Nf 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√ f d

∙ ∑t ∈q ∩d

(1+ ln f d ,t ) ∙ ln (1+ Nf t

)

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

Page 13: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

11+ ln (1+|f q−f d|)

∙ ∑t∈q ∩d

Nf t

1+|f q ,t−f d ,t|

Nft este o valoare care reflectă frecvența unui termen în cadrul colecției de documente,

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

Page 14: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 15: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 16: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 17: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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 prezent1, 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 prezent2 ș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/all2 http://db-engines.com/en/ranking

17

Page 18: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 19: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 20: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 21: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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 module4, 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

Page 22: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 23: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 24: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

24

Page 25: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 26: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 27: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 28: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 29: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

„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

Page 30: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 31: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 32: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 33: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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.

Î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.

33

Page 34: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 35: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 36: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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:

numărul¿numărul¿

∗100

36

Page 37: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 38: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

domeniul de studiu (informatică, biologie etc) este nevoie de colecții mari de documente pentru

testare și de feed-back din partea utilizatorilor.

38

Page 39: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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

Page 40: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

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 Melancon, Jacine Luisi, Karoly Negyesi, Greg Anderson, Bojhan Somers,

Stephane Corlosquet, Stefan Freudenberg, Michelle Lauer, Ed Carlevale, Florian Loretan, 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, Sebastian A. Ríos, Juan D. Velasquez: 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

Page 41: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

[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

Page 42: Capitolul 1 – Introducere - cs.ubbcluj.roradu.dragos/tmp/Licenta finala.docx  · Web view(word-correlation factors) definiți în [15]. ... MariaDB sau PostgreSQL pentru stocarea

[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


Recommended