Estoy tratando de detectar si un artículo o publicación en el foro es una entrada duplicada dentro de la base de datos. He pensado en esto, llegando a la conclusión de que alguien que duplica el contenido lo hará usando uno de los tres (en descendente difícil de detectar):
- copia simple pegue todo el texto
- copiar y pegar partes del texto fusionándolo con el suyo
- copiar un artículo de un sitio externo y disfrazarse como propio
Preparación de texto para análisis
Básicamente cualquier anomalía; El objetivo es hacer que el texto sea lo más "puro" posible. Para obtener resultados más precisos, el texto está "estandarizado" por:
- Eliminando los espacios en blanco duplicados y recortando al principio y al final.
- Las nuevas líneas están estandarizadas a \ n.
- Se eliminan las etiquetas HTML.
- El uso de un RegEx llamado URL de Daring Fireball se elimina.
- Yo uso el código BB en mi aplicación para que vaya a.
- (ä) centavos y extranjeros (además de Enlgish) se convierten a su forma no extranjera.
Guardo información sobre cada artículo en (1) tabla de estadísticas y en (2) tabla de palabras clave.
(1) Tabla de estadísticas Las siguientes estadísticas se almacenan sobre el contenido textual (al igual que esta publicación)
- longitud del texto
- recuento de letras
- el recuento de palabras
- recuento de oraciones
- palabras promedio por oración
- índice de legibilidad automatizada
- puntaje de niebla
Para los idiomas europeos, deben usarse Coleman-Liau y el Índice de legibilidad automatizada, ya que no utilizan el conteo de sílabas, por lo que deben producir una puntuación razonablemente precisa.
(2) Tabla de palabras clave
Las palabras clave se generan al excluir una gran lista de palabras vacías (palabras comunes), por ejemplo, 'the', 'a', 'of', 'to', etc., etc.
Data de muestra
- longitud del texto, 3963
- letter_count, 3052
- número de palabras, 684
- sentencia_contador, 33
- word_per_sentence, 21
- gunning_fog, 11.5
- auto_read_index, 9.9
- palabra clave 1, asesinado
- palabra clave 2, oficiales
- palabra clave 3, policía
Cabe señalar que una vez que se actualiza un artículo, todas las estadísticas anteriores se regeneran y podrían tener valores completamente diferentes.
¿Cómo podría utilizar la información anterior para detectar si un artículo que se publica por primera vez ya existe en la base de datos?
Soy consciente de que cualquier cosa que diseñe no será perfecta, el mayor riesgo es (1) El contenido que no es un duplicado se marcará como duplicado (2) El sistema permite que pase el contenido duplicado.
Por lo tanto, el algoritmo debe generar un número de evaluación de riesgos a partir de 0 sin riesgo duplicado, siendo posible 5 duplicado y 10 duplicado. Cualquier cosa por encima de 5, entonces hay una buena posibilidad de que el contenido esté duplicado. En este caso, el contenido podría marcarse y vincularse a los artículos que son posibles duplicados y un humano podría decidir si desea eliminarlo o permitirlo.
Como dije antes, estoy almacenando palabras clave para todo el artículo, sin embargo, me pregunto si podría hacer lo mismo en base al párrafo; Esto también significaría una mayor separación de mis datos en la base de datos, pero también facilitaría la detección de (2) en mi publicación inicial.
Estoy pensando en el promedio ponderado entre las estadísticas, pero en qué orden y cuáles serían las consecuencias ...