Finden Sie ähnliche Dokumente zwischen zwei Dokumentenstapeln

344
Brian

Ich suche nach Möglichkeiten, ähnliche Dokumente zwischen zwei Textdokumenten zu finden. Ich kenne Möglichkeiten, zwei Dateien zu vergleichen. Ich suche jedoch nach Möglichkeiten, dies zwischen zwei Dateigruppen zu tun.

Nehmen wir an, Gruppe 1 hat 100.000 Dokumente und Gruppe 2 5000 Dokumente. Ich möchte wissen, ob ein Dokument in Gruppe 2 den Dokumenten in Gruppe 1 und die Ähnlichkeitsbewertung ähnlich ist.

Danke für jeden Rat.

B

0
Ähnlichkeit basierend auf was? Name? Art? Dateigröße? Inhalt? Eric F vor 6 Jahren 0

1 Antwort auf die Frage

2
Gabe

Ich gehe davon aus, dass Sie sich für die Datei "Inhalt" interessieren. Das Bestimmen identischer Dateien ist einfach, jeder Duplizierungsfinder wird den Trick ausführen:

  1. GNU / Linux: find . ! -empty -type f -exec md5sum {} + | sort | uniq -w32 -dD
  2. GNU / Linux: fdupes (oft verfügbar mit sudo apt install fdupes)
  3. GNU / Linux: duff (oft verfügbar mitsudo apt install duff
  4. Windows: CCleaner
  5. Windows: dupeGuru [1]
  6. Windows: Doppelter Dateientferner

Bei "ähnlichen" Dateien wird es im Allgemeinen schwieriger - viel schwieriger. Wenn Sie nach ähnlichen Fotos / Bildern suchen, schauen Sie sich an. Wie finde ich doppelte Fotos in einem sehr großen Datenpool (Dutzende bis Hunderte von Gigs)? . dupeGuruoben gibt es eine Bildähnlichkeitssuche, von der einige denken, dass sie in Ordnung ist, aber einige werden vermisst werden, die Sie für nahezu identisch (oder identisch) halten. In der Tat sehen stenographisch veränderte Bilder für Sie identisch aus, jedoch nicht für einen Algorithmus zum Vergleichen von Dateien. Einige Bildverarbeitungs-KI eignen sich gut für diese, aber ich gehe davon aus, dass Sie keine davon erstellen möchten.

Nun zu den wirklich schlechten Nachrichten: Wenn Sie nach allen Arten von Dateien suchen möchten, die "ähnlich" sind, aber nicht identisch sind, wie z. B. Textdateien, PDFs, ZIP-Dateien usw., müssen Sie für jede eine bestimmte Handler finden, und möglicherweise nicht Seien Sie mit den Ergebnissen auch nach viel Arbeit zufrieden.

Warum? Sehen wir uns zwei Microsoft Word-Dokumente als Beispiel an: eines mit "Hello World" und das andere "Hello World!" ("W" -> "w" und ein "!" Hinzugefügt). Ich würde davon ausgehen, dass Sie möchten, dass diese Ähnlichkeiten sehr hoch sind. Leider können sie sich radikal unterscheiden (> 90% der Bytes), wenn eine Version aus dem Jahr 1997 und die andere aus dem Jahr 2007 stammt oder wenn die Meta-Informationen unterschiedlich sind oder das Format geändert wurde. Wenn Sie jedoch einen Prozess hätten, der nur den Text aus den Dateien extrahierte, wären Sie viel besser in der Lage, damit umzugehen. Sie müssten sich nur mit der Komplexität von Textunterschieden befassen (alles in Kleinbuchstaben schreiben, Interpunktion entfernen und Raum und dann vergleichen?).

Wenn Sie über zwei identische PDF-Dateien verfügen, die sich beim Öffnen unterscheiden, können sie auf Byte-Ebene immer noch um mehr als 90% voneinander abweichen, wenn Schriftarten, alle hinzugefügten Meta-Informationen und eingebettete Bildvorlagen eingebettet sind Die andere ist auf das Notwendige beschränkt, was zum Drucken benötigt wird, und nimmt an, dass das System alle Schriftarten besitzt.

Letztes Beispiel: Komprimierte Dateien jeglicher Art. Bei einer Reihe gebräuchlicher Algorithmen können winzige Änderungen in der Datei, insbesondere zu einem frühen Zeitpunkt in der Datei, drastische Änderungen an den Bytes verursachen, die auf die Festplatte geschrieben werden. Daher müssen Sie auch hier die Datei (en) dekomprimieren, möglicherweise rekursiv, und dann vergleichen. Möchten Sie in diesem Fall den Vergleich der komprimierten Dateien oder den Vergleich der unkomprimierten Dateien der enthaltenen Informationen zurückmelden? Beachten Sie, dass viele Dateiformate in einem Teil oder in allen Dateien verlustbehaftet oder verlustfrei komprimiert werden.

Kurz gesagt, wenn Sie nicht Tausende von Dateien in nahezu identischem Format haben, betrachten Sie möglicherweise ein sehr langwieriges Projekt.