2009-10-14 7 views
5

Ciao a tutti in tutto il mondo,Plagio Analyzer (confrontato con Web Content)

Sfondo

Sono uno studente dell'ultimo anno di Informatica. Ho proposto il mio progetto Final Double Module che è un analizzatore di plagio, utilizzando Java e MySQL.

Il Plagio analizzatore:

  1. scansione tutti i paragrafi del documento caricato. Analizza la percentuale di ogni paragrafo copiato da quale sito web.
  2. Evidenzia solo le parole copiate esattamente da quale sito Web in ogni paragrafo.

Il mio obiettivo principale è sviluppare qualcosa come il Turnitin, se possibile migliorato.

Ho meno di 6 mesi per sviluppare il programma. Ho esaminato il seguente:

  1. Implementazione Web crawler. Probabilmente utilizzerà l'API di Lucene o lo sviluppo del mio crawler (quale è migliore in termini di sviluppo del tempo e anche di usabilità?).
  2. Hashing e indicizzazione. Per migliorare la ricerca e l'analisi.

Domande

Ecco le mie domande:

  1. Can MySQL negozio che molte informazioni?
  2. Mi sono perso argomenti importanti?
  3. Quali sono le vostre opinioni riguardo a questo progetto?
  4. Eventuali suggerimenti o tecniche per l'esecuzione dell'analisi di somiglianza?
  5. Un paragrafo può essere sottoposto a hash, oltre che a parole?

Grazie in anticipo per qualsiasi aiuto e consiglio. ^^

+2

Questo non conta come erba sui tuoi compagni studenti? ;-) – Steve314

+0

Si consiglia di dare un'occhiata alla distanza di compressione normalizzata: http://stackoverflow.com/questions/1085048/how-would-you-code-an-anti-plagiarism-site/1085085#1085085 – Stephan202

+1

Grazie a lotto Stephan202 per evidenziarlo! ;) –

risposta

4

Avete considerato un altro progetto che non è destinato a fallire a causa della mancanza di risorse a vostra disposizione?

Se vuoi davvero andare a "Ehi, facciamo strisciare tutto il web!" percorso, avrai bisogno di rompere cose come HBase e Hadoop e molte macchine. MySQL sarà gravemente insufficiente. TurnItIn afferma di aver scansionato e indicizzato 12 miliardi di pagine. L'indice di Google è più simile a [redatto]. MySQL, o comunque, qualsiasi RDBMS, non può scalare fino a quel livello.

L'unico modo realistico in cui riuscirai a ottenere questo risultato è se fai qualcosa di sorprendentemente intelligente e scopri come costruire query su Google che riveleranno il plagio dei documenti che sono già presenti nell'indice di Google. Ti consigliamo di utilizzare una coda di messaggi e accedere all'API di ricerca in modo sincrono. La coda dei messaggi consentirà inoltre di limitare le query a un ritmo ragionevole. Evita le parole di stop, ma stai ancora cercando corrispondenze quasi esatte, quindi le query dovrebbero essere come: "* quick brown fox jumped over * lazy dog" Non preoccuparti di eseguire query che finiscono come: "* * went * * *" E ignorare i risultati che tornano con 94.000.000 di accessi. Quelli non saranno plagio, saranno citazioni famose o domande eccessivamente generali. Stai cercando o meno di 10 colpi o di qualche migliaio di colpi che hanno tutti una corrispondenza esatta sulla tua frase originale o qualche misura simile. E anche allora, questo dovrebbe essere solo un euristico - non contrassegnare un documento a meno che non ci siano molte bandiere rosse. Al contrario, se tutto torna a zero, sono insolitamente originali. La ricerca di libri richiede in genere query più precise. Le cose sufficientemente sospette dovrebbero far scattare richieste HTTP per le pagine originali e le decisioni finali dovrebbero sempre essere la portata di un essere umano. Se un documento cita le sue fonti, non è un plagio e vorrete rilevarlo. I falsi positivi sono inevitabili e probabilmente saranno comuni, se non costanti.

essere consapevoli che la TOS proibiscono in modo permanente la memorizzazione di qualsiasi parte dell'indice di Google.

Indipendentemente da ciò, hai scelto di fare qualcosa di estremamente difficile, indipendentemente da come lo costruisci, e probabilmente molto costoso e dispendioso in termini di tempo, a meno che tu non coinvolga Google.

+0

Inoltre, gli hit per le pagine di Wikipedia sono più di una bandiera rossa di altri, e almeno con Wikipedia, è ragionevole scaricare l'intero contenuto ed elaborarlo direttamente. –

+1

Grazie a un milione di Bob Aman per tutti i consigli e le questioni importanti evidenziate. La tua gentilezza è davvero molto apprezzata. Bene Bob, non c'è nessuna svolta per me riguardo al progetto che ho proposto. Farò del mio meglio mentre ho deciso di sfidarlo. Spero che il mio sogno si realizzi. Voglio sempre fare qualcosa nel mio interesse e mi aiuta a migliorare le mie capacità. Ho intenzione di esplorare l'API di ricerca di Google. Mi chiedo solo se esistono restrizioni di Google perché sto considerando di utilizzare Lucene (API di ricerca open source Java). Grazie ancora! ;) –

+0

A proposito, Bob Aman, nel futuro di questi 6 mesi, se avessi problemi (cosa che avrei provato molto duramente), posso chiedere le tue linee guida qui? Davvero grazie ancora per la vostra disponibilità a condividere le vostre conoscenze. Ci scusiamo per aver risposto tardi anche a causa della mia frenetica delle ultime settimane. –

1

1) Crea il tuo web crawler? sembra che tu possa facilmente utilizzare tutto il tempo a tua disposizione solo per questo compito. Prova a utilizzare una soluzione standard per questo: non è il cuore del tuo programma.

Hai ancora la possibilità di crearne uno o provarne un altro dopo (se ne hai il tempo!). Il tuo programma dovrebbe funzionare solo su file locali in modo da non essere legato a un crawler/API specifico.

Forse avrete nemmeno bisogno di utilizzare diversi crawler per siti diversi

2) Hashing interi paragrafi è possibile. Puoi semplicemente cancellare qualsiasi stringa. Ma ovviamente questo significa che puoi controllare solo per interi paragrpa copiati esattamente. Forse le frasi sarebbero una unità migliore da testare. Probabilmente dovresti "normalizzare" (tranform) le frasi/paragrpah prima dell'hash per risolvere le differenze minori come maiuscole/minuscole.

3) MySQL può memorizzare molti dati.

Il consiglio abituale è: attenersi allo standard SQL. Se scopri di avere troppi dati, avrai comunque la possibilità di utilizzare un'altra implementazione SQL.

Ma ovviamente se si dispone di troppi dati, iniziare osservando i modi per ridurlo o almeno ridurre quello che c'è in mySQL. per esempio è possibile memorizzare hash in MySQL ma pagine originali (se necessario) in file semplici.

+0

Ciao Siukurnin, grazie mille per i consigli e le questioni evidenziate. Tutte le informazioni e i consigli dati saranno presi in considerazione quando inizierò a sviluppare il mio sistema proposto. –

0

Il codice online viene in genere distribuito sotto licenze OpenSource. E la maggior parte del codice è solo tutorial. Secondo la tua logica, copiare qualsiasi cosa da qualsiasi sito web è un plagio. Il che significa che non puoi accettare e utilizzare alcuna risposta che ottieni qui. Se vuoi veramente finire il tuo progetto, scrivi semplicemente un sistema che confronti il ​​codice degli studenti nella stessa classe e nelle classi precedenti. È molto più efficiente Un esempio di tale sistema è MOSS (c'è anche un articolo che parla di come funziona). Questa cosa è davvero efficiente senza web crawler.

+0

Sì Piligrim, ne sono perfettamente consapevole ,,, proprio quello che è successo è stato il Plagiarism Analyzer che ha confrontato i contenuti web. Quindi, non posso cambiare la mia portata. Grazie comunque per i tuoi suggerimenti e informazioni. ;) –