Localizador de Duplicatas
Outras línguas: EnglishEspañolFrançaisDeutsch日本語한국어Русский中文
O localizador de duplicatas é uma aplicação de código aberto para detectar texto similar em um ou mais arquivos. Pode ser usado para encontrar duplicatas 100% assim como conteúdo que é semelhante, mas não idêntico. A ferramenta é compatível com vários formatos, incluindo texto simples, Markdown e XML.
A ferramenta de localização de duplicatas pode ajudar você com:
- Detecção de plágio
- Gerenciamento de conteúdo
- Otimização de SEO
- Desduplicação de dados
Exemplo de conteúdo duplicado
Aqui está um exemplo rápido para te dar uma ideia do que a ferramenta detecta:
Como usar
- Baixe o aplicativo. Alternativamente, você pode construir você mesmo a partir de as fontes.
Execute
./gradlew fatJarcom o JDK 21 no diretório do código-fonte. O JAR estará embuild/libs/duplicate-finder.jar. - Certifique-se de que o Java 21 ou uma versão posterior esteja instalado no seu computador
- No terminal, abra a pasta com o arquivo .jar que você baixou
-
Execute
java -jar duplicate-finder.jarcom os seguintes parâmetros:Parâmetro Significado Exemplo -r/--rootCaminho relativo ou absoluto para a pasta onde você deseja procurar conteúdo duplicado. Padrão: o diretório de trabalho atual. -r=./my-project/-o/--outputCaminho relativo ou absoluto para a pasta onde você deseja salvar os resultados da análise. Padrão: ./duplicate_finder_output, relativo ao diretório de trabalho atual. -o=./my-project/duplicates/-f/--fileMaskArquivos: Liste as extensões de arquivo a analisar, separadas por vírgulas e sem o ponto inicial. Use * para incluir todas as extensões.
Parser: Cada entrada pode ser apenas uma extensão ou extension:parser. O parser determina como um arquivo é dividido em trechos de texto para comparação. Se omitido, ele é escolhido pela extensão; extensões desconhecidas usam file.
Padrões: A lista padrão de extensões é .md, .mdx, .xml, .adoc, .asciidoc e .properties. Especificar -f substitui essa lista.
Nomes dos parsers (após os dois-pontos) e os trechos de texto que produzem:
- md – um elemento markdown
- line – uma única linha de texto
- xml – um elemento XML
- adoc – elemento AsciiDoc
- file – o conteúdo do arquivo inteiro
- properties – o valor de uma propriedade
-f=md,mdx
Analisar apenas arquivos .md e .mdx, usando o parser de Markdown para ambos.-f=topic:xml,txt:line
Analisar arquivos .topic como elementos XML e arquivos .txt linha por linha.-f="*:line"
Analisar todos os arquivos, tratando cada linha como um trecho de texto separado.-l/--minLengthO comprimento mínimo (em caracteres) para um fragmento de texto a ser analisado. Padrão: 100 (fragmentos de texto com menos de 100 caracteres são ignorados) -l=150-s/--minSimilarityO grau mínimo de semelhança entre dois fragmentos de texto para serem considerados duplicados. Padrão: 0.9 (90%) -s=0.85-d/--minDuplicatesO número mínimo de duplicados para que um grupo de duplicados seja relatado. Padrão: 1 (um duplicado é suficiente) -d=5-ui/--uiSe deve usar a interface interativa ou não. Opções: - none – sem interface, apenas grava em arquivos
- swing – interface antiga
- compose – nova interface, padrão
-ui=none-v/--verboseMostrar os tempos de indexação e análise no console. Desativado por padrão. Os erros dos arquivos ignorados são exibidos independentemente desta opção. -v-g/--gramcomprimento do ngrama (avançado) – afeta a velocidade, o uso de memória, e a precisão da análise. A diferença depende das especificidades do conteúdo. -g=10-w/--keepWhitespaceMantém as ocorrências de múltiplos espaços consecutivos no conteúdo analisado. Por padrão, os espaços em branco são normalizados, o que significa que vários espaços consecutivos são tratados e exibidos como um só. -w-i/--inlineIncluir o conteúdo dos elementos aninhados no elemento que os envolve. Por exemplo:
<parent>Some content including <child>nested content</child></parent>Com esta opção ativada, o elemento externo será analisado como 'Some content including nested content', enquanto por padrão, ele é analisado como 'Some content including </>'.
-i
Arquivo de configuração
Você pode salvar as configurações em duplicate-finder.properties na pasta de conteúdo (-r ou o diretório atual). Use os nomes longos das opções sem -- como chaves. Por exemplo:
fileMask=topic:xml,md,mdx
minSimilarity=0.85
minLength=200
ui=none Execute sem argumentos para carregar o arquivo do diretório atual ou use -r para selecionar outra pasta de conteúdo. As configurações ausentes usam os valores padrão. As opções -o, -ui e -v podem substituir os ajustes salvos. Passar -s, -l, -d, -f, -g, -w ou -i ignora completamente o arquivo de configuração.
Exemplo de comando
Aqui está um exemplo de como seu comando pode parecer:
java -jar duplicate-finder.jar -r=/Users/me.user/my-site -f=md,mdx -s=0.85 -d=5 -l=200
O comando acima fará o seguinte:
-
-r=/Users/me.user/my-site– procurar conteúdo similar em '/Users/me.user/my-site' e seus subdiretórios -
-f=md,mdx– considerar apenas arquivos com as extensões '.md' e '.mdx' e analisá-los de acordo com as regras do Markdown -
-s=0.85– reportar apenas correspondências com uma similaridade de 85% ou mais -
-d=5– reportar apenas textos que são duplicados 5 ou mais vezes -
-l=200– reportar apenas textos com 200 caracteres ou mais
Resultados
Dependendo das configurações e do tamanho do projeto, pode ser necessário esperar um pouco para que a análise seja concluída. Depois disso, os resultados serão abertos no visualizador de duplicatas e salvos na pasta definida com a opção de linha de comando '-o'. Por padrão, os relatórios de texto são salvos em ./duplicate_finder_output no diretório de trabalho. Use -ui=none para salvar os relatórios sem abrir o visualizador.
Aqui está o que você vê no visualizador de duplicatas:
- Barra de ferramentas: configure o tamanho da fonte, a ordem de classificação e se deseja ver apenas um único fragmento de referência (2) para cada um dos grupos de duplicatas. Use Fuzzy search para inserir uma consulta de texto e encontrar trechos semelhantes com um limite de similaridade ajustável.
- Lista de fragmentos de referência: selecione o fragmento que servirá como referência para comparação.
- Lista de fragmentos duplicados: depois de selecionar o fragmento de referência (2), esta lista mostrará os fragmentos que são semelhantes a ele. Para visualizar um duplicado, selecione-o na lista.
- Pré-visualização do fragmento de referência: depois de selecionar o fragmento de referência (2), você pode visualizar seu conteúdo aqui. As partes comuns são mostradas em verde, enquanto as diferentes são mostradas em vermelho. Quanto mais fragmentos duplicados (3) tiverem essa parte em comum, mais verde aparecerá.
- Pré-visualização do fragmento duplicado: depois de selecionar o fragmento duplicado, sua pré-visualização aparecerá aqui. Você pode usá-la para uma comparação rápida com o fragmento de referência selecionado (4).
Saiba mais e entre em contato
Se você está interessado no desenvolvimento desta ferramenta, confira a série de postagens no blog relacionada:
- Localizador de Duplicatas para Texto
- Localizador de texto duplicado: Requisitos
- Junie Codes (Suporte AsciiDoc)
- Buscador de Duplicatas de Texto: Algoritmo
Para feedback, você pode entrar em contato usando os contatos no rodapé desta página. Ficarei feliz em ouvir seus pensamentos e pedidos de recursos.
Licença
O código está licenciado sob a licença MIT, o que significa que você é livre para usá-lo para qualquer propósito, assim como bifurcá-lo e modificá-lo.