Domanda

Ciao a tutti in tutto il mondo,

Sfondo

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

Il Plagio analizzatore:

  1. Scansione di tutti i paragrafi del documento caricato. Analizzare percentuale di ogni paragrafo copiato da quale sito.
  2. Evidenziare solo le parole copiati esattamente da quale sito in ogni paragrafo.

Il mio obiettivo principale è quello di sviluppare qualcosa di simile Turnitin, migliorata se possibile.

Ho meno di 6 mesi per sviluppare il programma. Ho ambito quanto segue:

  1. Implementazione Web Crawler. Probabilmente sarà utilizzando Lucene API o sviluppare il mio Crawler (che uno è migliore in termini di sviluppo tempo e anche l'usabilità?).
  2. di hashing e indicizzazione. Per migliorare la ricerca e l'analisi.

Domande

Ecco le mie domande:

  1. Can MySQL negozio che quante più informazioni?
  2. Mi sono perso eventuali argomenti importanti?
  3. Quali sono le vostre opinioni riguardo a questo progetto?
  4. Tutti i suggerimenti o le tecniche per eseguire l'analisi di somiglianza?
  5. un paragrafo può essere generato un hash, così come le parole?

Grazie in anticipo per qualsiasi aiuto e consigli. ^^

È stato utile?

Soluzione

Avete considerato un altro progetto che non è destinato al fallimento a causa della mancanza di risorse disponibili a voi?

Se si vuole veramente andare alla "Hey, andiamo a strisciare tutto il web!" percorso, si sta andando ad avere bisogno di uscire cose come HBase e Hadoop e un sacco di macchine. MySQL sarà gravemente insufficiente. Turnitin sostiene di aver scansione e l'indicizzazione di 12 miliardi di pagine. indice di Google è più simile a [redatto]. MySQL, o per quella materia, qualsiasi RDBMS, non può scalare fino a quel livello.

L'unico modo realistico si sta andando ad essere in grado di tirare fuori questo è che se fai qualcosa di sorprendentemente intelligente e capire come costruire query a Google che rivelerà il plagio di documenti che sono già presenti nell'indice di Google. Mi consiglia di utilizzare una coda di messaggi e accedere alle API di ricerca in modo sincrono. La coda di messaggi permetterà anche di andare a diminuire le vostre domande fino a un tasso ragionevole. Evitare le parole di stop, ma si sta ancora cercando corrispondenze quasi esatte, in modo da query dovrebbe essere come: "* quick brown fox jumped over * lazy dog" Non preoccupatevi l'esecuzione di query che finiscono come: "* * went * * *" e ignorare i risultati che tornano con 94.000.000 colpi. Coloro che non sarà plagio, saranno citazioni famose o query eccessivamente generali. Siete alla ricerca di entrambi sotto i 10 colpi o qualche migliaio di colpi che tutti hanno una corrispondenza esatta sulla vostra frase originale o qualche simile metrica. E anche allora, questo dovrebbe essere solo un euristica - non contrassegnare un documento a meno che non ci sono un sacco di bandiere rosse. Al contrario, se tutto torna come pari a zero successi, che sei stato insolitamente originale. ricerca Book ha bisogno tipicamente domande più precise. Sufficientemente roba sospetto dovrebbe innescare richieste HTTP per le pagine originali, e le decisioni finali dovrebbe sempre essere di competenza di un essere umano. Se un documento cita le sue fonti, che non è plagio, e si vorrà per rilevare che. I falsi positivi sono inevitabili, e sarà probabilmente comune, se non costante.

Si tenga presente che i TOS proibiscono in modo permanente la memorizzazione di qualsiasi parte dell'indice di Google.

In ogni caso, si è scelto di fare qualcosa di estremamente difficile, non importa come si costruisce, e probabilmente molto costoso e richiede molto tempo a meno che non si coinvolgono Google.

Altri suggerimenti

1) Rendere il proprio web crawler? sembra che si può facilmente utilizzare tutto il tuo tempo a disposizione solo per questo compito. Provare a utilizzare una soluzione standard per questo:. Non è il cuore del programma

È ancora avrà l'opportunità di fare il proprio o provare un altro in seguito (se avete tempo a sinistra!). Il vostro programma dovrebbe funzionare solo su file locali in modo da non essere legato ad una specifica crawler / API.

Forse avrete nemmeno bisogno di utilizzare diversi crawler per siti diversi

2) hashing interi paragrafi è possibile. Si può solo hash qualsiasi stringa. Ma, naturalmente, questo significa che è possibile controllare solo per paragrpahs interi copiati esattamente. Forse frasi sarebbero un'unità meglio provare. Probabilmente è opportuno "normalizzare" (trasformata di) le frasi / paragrpahs prima di hashing per risolvere le differenze minori come maiuscolo / minuscolo.

3) MySQL può memorizzare una grande quantità di dati.

Il solito consiglio è: attenersi a standard SQL. Se si scopre di avere modo troppi dati si avrà ancora la possibilità di utilizzare un'altra implementazione SQL.

Ma, naturalmente, se si dispone di troppi dati, iniziare a guardare modi per ridurre o almeno a ridurre ciò che è in MySQL. ad esempio è possibile memorizzare hash in MySQL, ma le pagine originali (se necessario) in file normali.

Codice in linea di solito è distribuito sotto licenza OpenSource. E la maggior parte del codice è solo esercitazioni. Secondo la tua logica, la copia di qualsiasi cosa, da qualsiasi sito web è plagio. Il che significa che non è possibile accettare e utilizzare qualsiasi risposta che si ottiene qui. Se davvero si vuole completare il progetto, basta scrivere un sistema che confrontare il codice da parte degli studenti nella stessa classe e le classi precedenti. E 'molto più efficiente. Un esempio di un tale sistema è MOSS (c'è anche un articolo parlando di come funziona ). Questa cosa è realmente efficace senza crawler web.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top