2009-10-14 7 views
5

Hola a todos en todo el mundo,plagio Analyzer (en comparación contra el contenido web)

Antecedentes

Soy un estudiante de último año de Ciencias de la Computación. He propuesto mi proyecto final de doble módulo, que es un analizador de plagio, que utiliza Java y MySQL.

El plagio analizador:

  1. Analizar todos los párrafos del documento cargado. Analiza el porcentaje de cada párrafo copiado de cada sitio web.
  2. Resalta solo las palabras copiadas exactamente de cada sitio en cada párrafo.

Mi principal objetivo es desarrollar algo así como Turnitin, mejorado si es posible.

Tengo menos de 6 meses para desarrollar el programa. Tengo el alcance de lo siguiente:

  1. Implementación web sobre orugas. Probablemente esté utilizando Lucene API o desarrollando mi propio Crawler (¿cuál es mejor en términos de desarrollo de tiempo y también de usabilidad?).
  2. Hashing and Indexing. Para mejorar la búsqueda y el análisis.

Preguntas

Aquí están mis preguntas:

  1. Puede MySQL tienda que toda la información?
  2. ¿Extrañé algunos temas importantes?
  3. ¿Cuáles son sus opiniones sobre este proyecto?
  4. ¿Alguna sugerencia o técnica para realizar el análisis de similitud?
  5. ¿Se puede hastar un párrafo, así como las palabras?

Gracias de antemano por cualquier ayuda y consejo. ^^

+2

¿No tiene esto que ver con sus compañeros? ;-) – Steve314

+0

Es posible que desee echar un vistazo a la distancia de compresión normalizada: http://stackoverflow.com/questions/1085048/how-would-you-code-an-anti-plagiarism-site/1085085#1085085 – Stephan202

+1

Gracias a mucho Stephan202 por destacar eso! ;) –

Respuesta

4

¿Usted ha considerado otro proyecto que no está condenado al fracaso debido a la falta de recursos disponibles para usted?

Si realmente quiere ir a la "Hey, vamos a arrastrarse toda la web!" ruta, tendrás que contar cosas como HBase y Hadoop y muchas máquinas. MySQL será extremadamente insuficiente. TurnItIn afirma haber rastreado e indexado 12 mil millones de páginas. El índice de Google es más parecido a [redactado]. MySQL, o para el caso, cualquier RDBMS, no puede escalar a ese nivel.

La única manera realista que va a ser capaz de tirar de esto es que si haces algo asombrosamente inteligente y encontrar la manera de construir consultas a Google que revelarán el plagio de los documentos que ya están presentes en el índice de Google. Recomiendo usar una cola de mensajes y acceder a la API de búsqueda de forma síncrona. La cola de mensajes también le permitirá reducir sus consultas a una velocidad razonable. Evita detener palabras, pero aún estás buscando coincidencias casi exactas, por lo que las consultas deberían ser como: "* quick brown fox jumped over * lazy dog" No te molestes en ejecutar consultas que acaben así: "* * went * * *" E ignora los resultados que se obtienen con 94,000,000 de visitas. Esos no serán plagio, serán citas famosas o consultas demasiado generales. Está buscando ya sea menos de 10 visitas o miles de visitas que tengan una coincidencia exacta en su oración original o alguna métrica similar. Y aun así, esto debería ser solo una heurística: no marques un documento a menos que haya muchas banderas rojas. Por el contrario, si todo vuelve como cero hits, están siendo inusualmente originales. La búsqueda de libros generalmente necesita consultas más precisas. Las cosas suficientemente sospechosas deberían desencadenar solicitudes HTTP para las páginas originales, y las decisiones finales siempre deberían ser competencia de un ser humano. Si un documento cita sus fuentes, eso no es plagio, y querrá detectarlo. Los falsos positivos son inevitables, y probablemente sean comunes, si no constantes.

en cuenta que las condiciones de servicio prohíben almacenar permanentemente cualquier parte del índice de Google.

En cualquier caso, ha optado por hacer algo muy duro, no importa cómo se construye, y probablemente muy caro y consume mucho tiempo a menos que involucra a Google.

+0

Además, los aciertos de las páginas de la Wikipedia son más una bandera roja que otros, y al menos con Wikipedia, es razonable descargar todo el contenido y procesarlo directamente. –

+1

Gracias a un millón de Bob Aman por todos los consejos dados y problemas importantes destacados. Su amabilidad es realmente muy apreciada. Bien Bob, no hay nada que ver conmigo con respecto al proyecto que he propuesto. Haré mi mejor esfuerzo ya que me he decidido a desafiar esto. Espero que mi sueño se realice. Siempre quiero hacer algo que me interese y me ayuda a mejorar mis habilidades. Voy a explorar la API de búsqueda de Google. Me pregunto si habrá alguna restricción de Google porque estoy considerando utilizar Lucene (API de búsqueda de código abierto de Java). ¡Gracias de nuevo! ;) –

+0

Por cierto, Bob Aman, en el futuro de estos 6 meses, si tengo algún problema (algo que hubiera intentado con todas mis fuerzas), ¿puedo pedirles sus pautas aquí? Realmente gracias una vez más por su voluntad de compartir su conocimiento. Lamento haber respondido tarde también debido a mi ajetreo de las últimas semanas. –

1

1) Haga su propio rastreador web? parece que puede usar fácilmente todo el tiempo disponible solo para esta tarea. Intente utilizar una solución estándar para eso: no es el corazón de su programa.

Aún tendrá la oportunidad de hacer la suya propia o probar otra después (¡si le queda tiempo!). Su programa debería funcionar solo en archivos locales para no estar vinculado a un rastreador/API específico.

Tal vez hasta que utilizar diferentes rastreadores para diferentes sitios

2) Hashing párrafos enteros es posible. Puedes simplemente cortar cualquier cadena. Pero, por supuesto, eso significa que solo puede verificar paragrpahs completos copiados exactamente. Tal vez las oraciones serían una mejor unidad para probar. Probablemente deberías "normalizar" (transformar) las oraciones/paragrpahs antes de hash para resolver diferencias menores como mayúsculas/minúsculas.

3) MySQL puede almacenar una gran cantidad de datos.

El consejo habitual es: se adhieren a SQL estándar. Si descubre que tiene demasiados datos, aún tendrá la posibilidad de utilizar otra implementación de SQL.

Pero por supuesto, si usted tiene demasiados datos, a empezar por mirar maneras de reducirlo o por lo menos reducir lo que está en MySQL. por ejemplo, puede almacenar hashes en MySQL pero páginas originales (si es necesario) en archivos sin formato.

+0

Hola Siukurnin, muchas gracias por los consejos y problemas destacados. Toda la información y los consejos dados se tendrán en cuenta cuando empiece a desarrollar mi sistema propuesto. –

0

El código en línea se distribuye generalmente bajo licencias de OpenSource. Y la mayor parte del código es solo tutoriales. De acuerdo con su lógica, copiar cualquier cosa desde cualquier sitio web es plagio. Lo que significa que no puede aceptar ni usar ninguna respuesta que obtenga aquí. Si realmente desea terminar su proyecto, simplemente escriba un sistema que compare el código de los estudiantes de la misma clase y clases anteriores. Es mucho más eficiente. Un ejemplo de dicho sistema es MOSS (también hay un documento que habla sobre cómo funciona). Esto es realmente eficiente sin ningún rastreador web.

+0

Sí Piligrim, soy muy consciente de eso ... simplemente resultó ser que he propuesto el Analizador de Plagio, que comparaba con los contenidos de la web. Por lo tanto, no puedo cambiar mi alcance. Gracias de todos modos por sus sugerencias e información. ;) –

Cuestiones relacionadas