Sto cercando di rilevare se un articolo o un post sul forum è una voce duplicata all'interno del database. Ho riflettuto su questo, giungendo alla conclusione che qualcuno che duplica il contenuto lo farà usando uno dei tre (in ordine discendente difficile da rilevare):
- copia semplice incolla l'intero testo
- copia e incolla parti di testo unendole con le proprie
- copia un articolo da un sito esterno e esegui il masquerade come proprio
Preparazione del testo per l'analisi
Praticamente qualsiasi anomalia; l'obiettivo è rendere il testo il più "puro" possibile. Per risultati più accurati, il testo è "standardizzato" da:
- Strippaggio degli spazi bianchi duplicati e ritaglio di inizio e fine.
- Le nuove righe sono standardizzate per \ n.
- I tag HTML vengono rimossi.
- Usando un RegEx chiamato Daring Fireball, gli URL vengono rimossi.
- Uso il codice BB nella mia applicazione in modo tale che vada a
- (ä) ccented e foreign (oltre a Enlgish) vengono convertiti nella loro forma non straniera.
Conservo le informazioni su ciascun articolo nella (1) tabella delle statistiche e nella (2) tabella delle parole chiave.
(1) Tabella delle statistiche Le seguenti statistiche sono memorizzate sul contenuto testuale (molto simile a questo post)
- lunghezza del testo
- numero di lettere
- numero di parole
- numero di frasi
- parole medie per frase
- indice di leggibilità automatica
- gunning fog score
Per le lingue europee dovrebbe essere utilizzato Coleman-Liau e l'indice di leggibilità automatizzata in quanto non usano il conteggio delle sillabe, quindi dovrebbe produrre un punteggio ragionevolmente accurato.
(2) tabella delle parole chiave
Le parole chiave vengono generate escludendo un enorme elenco di parole di arresto (parole comuni), ad esempio "il", "un", "di", "a", ecc. ecc.
Dati campione
- text_length, 3963
- letter_count, 3052
- word_count, 684
- frase_count, 33
- word_per_sentence, 21
- gunning_fog, 11.5
- auto_read_index, 9.9
- Parola chiave 1, uccisa
- parola chiave 2, ufficiali
- parola chiave 3, polizia
Va notato che una volta che un articolo viene aggiornato tutte le statistiche di cui sopra vengono rigenerate e potrebbero essere valori completamente diversi.
Come potrei utilizzare le informazioni di cui sopra per rilevare se un articolo che viene pubblicato per la prima volta, è già presente nel database?
Sono a conoscenza che tutto ciò che progetterò non sarà perfetto, il più grande rischio è (1) Il contenuto che non è un duplicato verrà contrassegnato come duplicato (2) Il sistema consente il contenuto duplicato attraverso.
Quindi l'algoritmo dovrebbe generare un numero di valutazione del rischio da 0 in cui nessun rischio duplicato 5 è possibile duplicato e 10 duplicato. Qualunque cosa al di sopra di 5 allora c'è una buona possibilità che il contenuto sia duplicato. In questo caso il contenuto potrebbe essere contrassegnato e collegato all'articolo che sono possibili duplicati e un essere umano potrebbe decidere se eliminarlo o consentire.
Come ho detto prima sto memorizzando le parole chiave per l'intero articolo, tuttavia mi chiedo se potrei fare lo stesso sul paragrafo; questo significherebbe anche separare ulteriormente i miei dati nel DB, ma sarebbe anche più facile da rilevare (2) nel mio post iniziale.
Sto pensando alla media ponderata tra le statistiche, ma in quale ordine e quali sarebbero le conseguenze ...