Buscador de Duplicados
Otros idiomas: EnglishFrançaisDeutsch日本語한국어PortuguêsРусский中文
El buscador de duplicados es una aplicación de código abierto para detectar texto similar en uno o más archivos. Puede usarse para encontrar duplicados al 100% así como contenido que es similar pero no idéntico. La herramienta es compatible con varios formatos, incluidos texto plano, Markdown y XML.
La herramienta de búsqueda de duplicados puede ayudarte con:
- Detección de plagios
- Gestión de contenidos
- Optimización SEO
- Desduplicación de datos
Ejemplo de contenido duplicado
Aquí tienes un ejemplo rápido para darte una idea de lo que detecta la herramienta:
Cómo usar
- Descarga la aplicación. Alternativamente, puedes construirlo tú mismo desde las fuentes.
Ejecuta
./gradlew fatJarcon JDK 21 en el directorio del código fuente. El JAR estará enbuild/libs/duplicate-finder.jar. - Asegúrate de que Java 21 o una versión posterior esté instalado en tu computadora
- En la terminal, abre la carpeta con el archivo .jar que descargaste
-
Ejecuta
java -jar duplicate-finder.jarcon los siguientes parámetros:Parámetro Significado Ejemplo -r/--rootRuta relativa o absoluta a la carpeta donde desea buscar contenido duplicado. Por defecto: el directorio de trabajo actual. -r=./my-project/-o/--outputRuta relativa o absoluta a la carpeta donde desea guardar los resultados del análisis. Por defecto: ./duplicate_finder_output, relativo al directorio de trabajo actual. -o=./my-project/duplicates/-f/--fileMaskArchivos: Indica las extensiones de archivo que se van a analizar, separadas por comas y sin el punto inicial. Usa * para incluir todas las extensiones.
Analizador: Cada entrada puede ser una extensión sola o extension:parser. El analizador determina cómo se divide un archivo en fragmentos de texto para compararlos. Si se omite, se elige según la extensión; las extensiones desconocidas usan file.
Valores predeterminados: La lista predeterminada de extensiones es .md, .mdx, .xml, .adoc, .asciidoc y .properties. Al especificar -f, se reemplaza esta lista.
Nombres de analizadores (después de los dos puntos) y los fragmentos de texto que producen:
- md – un elemento de markdown
- line – una sola línea de texto
- xml – un elemento XML
- adoc – elemento AsciiDoc
- file – el contenido completo del archivo
- properties – el valor de una propiedad
-f=md,mdx
Analizar solo archivos .md y .mdx, usando el analizador de Markdown para ambos.-f=topic:xml,txt:line
Analizar los archivos .topic como elementos XML y los archivos .txt línea por línea.-f="*:line"
Analizar todos los archivos, tratando cada línea como un fragmento de texto independiente.-l/--minLengthLa longitud mínima (en caracteres) de un fragmento de texto para ser analizado. Por defecto: 100 (los fragmentos de texto más cortos que 100 caracteres se ignoran) -l=150-s/--minSimilarityEl grado mínimo de similitud entre dos fragmentos de texto para ser considerados duplicados. Predeterminado: 0.9 (90%) -s=0.85-d/--minDuplicatesEl número mínimo de duplicados para que se informe un grupo de duplicados. Predeterminado: 1 (un duplicado es suficiente) -d=5-ui/--uiSi usar la interfaz de usuario interactiva o no. Opciones: - none – sin interfaz, solo escribir en archivos
- swing – interfaz antigua
- compose – nueva interfaz, predeterminada
-ui=none-v/--verboseMostrar los tiempos de indexación y análisis en la consola. Desactivado por defecto. Los errores de los archivos omitidos se muestran independientemente de esta opción. -v-g/--gramlongitud de ngrama (avanzada) – afecta la velocidad, el uso de memoria, y la precisión del análisis. La diferencia depende de las especificidades del contenido. -g=10-w/--keepWhitespaceMantén las ocurrencias de múltiples espacios consecutivos en el contenido analizado. Por defecto, los espacios en blanco se normalizan, lo que significa que varios espacios consecutivos se tratan y se muestran como uno solo. -w-i/--inlineIncluir el contenido de los elementos anidados en su elemento contenedor. Por ejemplo:
<parent>Some content including <child>nested content</child></parent>Con esta opción activada, el elemento externo se analizará como 'Some content including nested content', mientras que por defecto se analiza como 'Some content including </>'.
-i
Archivo de configuración
Puedes guardar los ajustes en duplicate-finder.properties en la carpeta de contenido (-r o el directorio actual). Usa los nombres largos de las opciones sin -- como claves. Por ejemplo:
fileMask=topic:xml,md,mdx
minSimilarity=0.85
minLength=200
ui=none Ejecuta sin argumentos para cargar el archivo del directorio actual, o usa -r para seleccionar otra carpeta de contenido. Los ajustes no indicados usan sus valores predeterminados. Las opciones -o, -ui y -v pueden modificar los ajustes guardados. Si se pasa -s, -l, -d, -f, -g, -w o -i, se ignora por completo el archivo de configuración.
Ejemplo de comando
Aquí tienes un ejemplo de cómo podría ser tu comando:
java -jar duplicate-finder.jar -r=/Users/me.user/my-site -f=md,mdx -s=0.85 -d=5 -l=200
El comando anterior hará lo siguiente:
-
-r=/Users/me.user/my-site– buscar contenido similar en '/Users/me.user/my-site' y sus subdirectorios -
-f=md,mdx– considerar solo archivos con las extensiones '.md' y '.mdx' y analizarlos según las reglas de Markdown -
-s=0.85– reportar solo coincidencias con una similitud del 85% o más -
-d=5– reportar solo textos que se duplican 5 o más veces -
-l=200– reportar solo textos que tienen 200 caracteres o más
Resultados
Según la configuración y el tamaño del proyecto, es posible que tengas que esperar un poco a que se complete el análisis. Después de eso, los resultados se abrirán en el visor de duplicados y se guardarán en la carpeta definida con la opción de línea de comandos '-o'. Por defecto, los informes de texto se guardan en ./duplicate_finder_output dentro del directorio de trabajo. Usa -ui=none para guardar los informes sin abrir el visor.
Estos son los pasos que verá en el visor de duplicados:
- Barra de herramientas: configure el tamaño de fuente, el orden de clasificación y si desea ver solo un fragmento de referencia (2) para cada uno de los grupos de duplicados. Usa Fuzzy search para introducir una consulta de texto y encontrar pasajes similares con un umbral de similitud ajustable.
- Lista de fragmentos de referencia: seleccione el fragmento que servirá como referencia para la comparación.
- Lista de fragmentos duplicados: después de seleccionar el fragmento de referencia (2), esta lista mostrará los fragmentos que son similares a él. Para previsualizar un duplicado, selecciónelo de la lista.
- Vista previa del fragmento de referencia: una vez que haya seleccionado el fragmento de referencia (2), puede previsualizar su contenido aquí. Las partes comunes se muestran en verde, mientras que las diferentes se muestran en rojo. Cuantos más fragmentos duplicados (3) tengan esta parte en común, más verde se verá.
- Vista previa del fragmento duplicado: después de seleccionar el fragmento duplicado, su vista previa aparecerá aquí. Puede usarlo para una comparación rápida con el fragmento de referencia seleccionado (4).
Más información y contacto
Si está interesado en el desarrollo de esta herramienta, consulte la serie de blogs relacionada:
- Buscador de Duplicados para Textos
- Buscador de Duplicados de Texto: Requisitos
- Junie Codifica (Soporte AsciiDoc)
- Buscador de Duplicados de Texto: Algoritmo
Para comentarios, puede comunicarse utilizando los contactos en el pie de página de esta página. Estaré encantado de escuchar sus opiniones y solicitudes de funciones.
Licencia
El código está licenciado bajo la licencia MIT, lo que significa que eres libre de usarlo para cualquier propósito, así como de bifurcarlo y modificarlo.