130 likes | 281 Views
Detection of similarity between documents. Axel Bengtsson axel.bengtsson@gmail.com Ola Olsson ola@matematik.nu. Mål. Målet med projektet var att hitta dokument som är mycket lika varandra rent syntaktiskt Användningsområden
E N D
Detection of similarity between documents Axel Bengtsson axel.bengtsson@gmail.com Ola Olsson ola@matematik.nu
Mål • Målet med projektet var att hitta dokument som är mycket lika varandra rent syntaktiskt • Användningsområden • Man kan låta vår applikation köras nyhetsartiklar, böcker, etc för att visa likheter. • Känna igen uppsats-fusk, fusk på skrivningar • Lätt att hitta skillnader mellan avtal, revisioner på dokument.
Algoritmer • Vårt program baseras på två algoritmer som snarare kompletterar varandra än baserar sig på varandras in- och utdata. • TDT (TF-IDF & Cosine similarity rate) • Ordfrekvens • Antalet dokument orden befinner sig • LCS • kontexten
Viktberäkning (TF-IDF) • Den här modulen innehåller algoritmen som ger två dokument en vikt som är beroende på hur lika de är (vikten är givetvis symmetrisk). • Modulen består av: • TF-IDF och Cosine similarity rating • TF-IDF – Term Frequence Inverted Document Frequence
Cosine similarity rating • Som indata tar den här funktionen två dokument och som utdata ges ett poäng (deras likhetspoäng). • 0 om de olika • 1 om de lika
LCS – Longest Common Subsequence Iterativ lösning for(int x=i;x>=0;++x) { for(int y=j;y>0;++y) { if (X[x]==0 || Y[y]==0) ResultMatrix[x][y]=""; if (X[x]==Y[y]) ResultMatrix[x][y] = ResultMatrix[x+1][y+1] + X[x]; else ResultMatrix[x][y] = max(ResultMatrix[x][y+1],ResultMatrix[x+1][y]); } }
GUI • GUI:t används för att välja filer som indata och sedan visa grafiskt vår LCS algoritm. LCS för dokumenten visas i röd text i båda dokumenten. • GUI:t visar två dokument åt gången, alla 2-par av dokument kan väljas med upp och ner knappar. • Som standard visas LCS:en på det paret som har högst cosine similarity rate.
Demonstration Fil1 Hello everybody. this is a test Ola and Axel. Fil2 Hello anyone. What may be the deal. Fil3 Hello anybody. Great program Ola and Axel. 4 observationer som borde stämma när vi kör filerna som indata till vårt program • Ordet “Hello” ska få 0 i vikt då log21= 0. • File1 and File3 är det paret som borde få högst cosine similarity rate då de delar orden ”Ola and Axel”. • Fil1 till Fil2 och Fil2 till Fil3 borde vara värda 0 då de inte har något gemensamt ord överhuvudtaget. • LCS mellan File1 och File3 borde bli “Hello Ola and Axel” då de inte har något annat gemensamt. Om vi kör ett annat test där vi vill köra med en text där ord förekommer endast en gång This is a test. Mot baklänges .test a is This Det som kommer att rödmarkeras kan vara vad som helst beronde på hur max-funktionen för strängarna är implementerad, men vi måste förstå att det endast kommer att markeras ett enda ord.
Utvärdering • Två personer oberoende av varandra rangordnade liknande artiklar från tidningar • Programmet körs och rankar samma tidnings artiklar • Programmet rankade 80% rätt • Problemet var vid stor skillnad på mängden text
Slutsats • Resultatet är bra, TDT och LCS kompletterar varandra på ett bra sätt och det verkar vara eniga. • Problem med att delmängder får ett lågt TDT värde • Halebops avtal • Tdt revisioner