Encontre documentos semelhantes entre duas pilhas de documentos [fechados]

0

Estou procurando maneiras de encontrar documentos semelhantes entre dois grupos de documentos de texto. Eu sei maneiras de comparar dois arquivos. Mas estou procurando maneiras de fazer isso entre dois grupos de arquivos.

Digamos que o Grupo 1 tenha 100.000 documentos e o Grupo 2 tenha 5000 documentos. Eu quero saber se algum documento no Grupo 2 é semelhante aos documentos do Grupo 1 e a pontuação de similaridade.

Obrigado por qualquer conselho.

B

    
por Brian 11.01.2018 / 17:58

1 resposta

2

Eu vou assumir que você se importa com o arquivo "content". Determinar arquivos idênticos é fácil, qualquer localizador de duplicação fará o seguinte:

  1. GNU / Linux: find . ! -empty -type f -exec md5sum {} + | sort | uniq -w32 -dD
  2. GNU / Linux: fdupes (geralmente disponível com sudo apt install fdupes )
  3. GNU / Linux: duff (geralmente disponível com sudo apt install duff
  4. Windows: CCleaner
  5. Windows: dupeGuru [1]
  6. Windows: Removedor de arquivos duplicados

Para arquivos "Similares" em geral, fica mais difícil - muito mais difícil. Se você está procurando fotos / imagens semelhantes, confira . dupeGuru acima tem uma pesquisa de similaridade de imagem que alguns acham que é OK, mas perderá algumas que você pode achar que são quase idênticas (ou idênticas). Na verdade, as imagens estenograficamente alteradas parecerão idênticas a você, mas não a um algoritmo de comparação de arquivos. Algum processamento de imagem AI vai fazer bem com estes, mas eu estou supondo que você não quer construir um desses.

Agora, para a péssima notícia: se você quiser procurar por todos os tipos de arquivos "semelhantes", mas não idênticos, como arquivos de texto, PDFs, arquivos ZIP, etc., você precisará encontrar manipuladores específicos para cada um deles. você pode não ficar feliz com os resultados, mesmo depois de muito trabalho.

Por quê? Vamos examinar dois documentos do Microsoft Word como exemplo: um com "Hello World" e o outro "Hello world!" ("W" - > "w" e um "!" Adicionado). Eu diria que você gostaria que eles tivessem uma pontuação muito alta de similaridade. Infelizmente, eles podem ser radicalmente diferentes (> 90% dos bytes) se uma versão for de 1997 e a outra a partir de 2007 ou se a meta-informação for diferente ou o formato tiver mudado. Mas se você tivesse um processo que extraísse apenas o texto dos arquivos, então seria muito mais capaz de lidar com isso, você teria que lidar com as complexidades das diferenças de texto (minúsculas, remover pontuação e branco espaço, e depois comparar?).

Da mesma forma, se você tiver dois arquivos PDF idênticos em termos de como eles aparecem ao abri-los, eles ainda poderão ser > 90% diferentes no nível de byte se houver fontes incorporadas, todas as meta-informações adicionadas e visualizações de imagem incorporadas, enquanto a outra é despojada apenas para as coisas necessárias para impressão e assume que o sistema possui todas as fontes.

Último exemplo: arquivos compactados de qualquer tipo. Para vários algoritmos comuns usados, pequenas alterações no arquivo, principalmente no início do arquivo, podem ter alterações drásticas nos bytes gravados no disco. Então aqui também, você teria que descomprimir o (s) arquivo (s), potencialmente de forma recursiva, e então comparar. E, nesse caso, você deseja reportar a comparação de arquivos compactados ou a comparação de arquivos não compactados das informações contidas? Observe que muitos formatos de arquivo usavam compactação com perdas ou sem perdas em parte ou em todos os arquivos.

Em suma, a menos que você tenha milhares de arquivos em quase formato idêntico , talvez esteja vendo um projeto muito longo.

    
por 11.01.2018 / 18:31