Duplikatfinder

Andere Sprachen: EnglishEspañolFrançais日本語한국어PortuguêsРусский中文

Der Duplikatfinder ist eine Open-Source-Anwendung zur Erkennung ähnlicher Texte in einer oder mehreren Dateien. Er kann verwendet werden, um 100%ige Duplikate sowie ähnliche, aber nicht identische Inhalte zu finden. Das Tool ist mit mehreren Formaten kompatibel, darunter Klartext, Markdown und XML.

Das Duplikatfinder-Tool kann Ihnen helfen bei:

Beispiel für doppelten Inhalt

Hier ist ein kurzes Beispiel, um Ihnen eine Vorstellung davon zu geben, was das Tool erkennt:

Chunk 1:
Open the Google Play Store on your Android device, search for "AwesomeApp", then tap "Install" to download and install the app.
Chunk 2:
Open the App Store on your iOS device, search for "AwesomeApp", then tap "Get" to download and install the app.

Anleitung

  1. Laden Sie die App herunter. Alternativ können Sie es selbst aus den Quellen erstellen. Führen Sie ./gradlew fatJar mit JDK 21 im Quellverzeichnis aus. Die JAR-Datei liegt anschließend unter build/libs/duplicate-finder.jar .
  2. Stellen Sie sicher, dass Java 21 oder höher auf Ihrem Computer installiert ist
  3. Öffnen Sie im Terminal den Ordner mit der heruntergeladenen .jar-Datei
  4. Führen Sie java -jar duplicate-finder.jar mit den folgenden Parametern aus:

    Parameter Bedeutung Beispiel
    -r / --root Relativer oder absoluter Pfad zum Ordner, in dem Sie nach doppeltem Inhalt suchen möchten. Standard: das aktuelle Arbeitsverzeichnis. -r=./my-project/
    -o / --output Relativer oder absoluter Pfad zum Ordner, in dem Sie die Analyseergebnisse speichern möchten. Standard: ./duplicate_finder_output, relativ zum aktuellen Arbeitsverzeichnis. -o=./my-project/duplicates/
    -f / --fileMask

    Dateien: Geben Sie die zu durchsuchenden Dateierweiterungen ohne führenden Punkt und durch Kommas getrennt an. Mit * werden alle Erweiterungen einbezogen.

    Parser: Jeder Eintrag kann eine Erweiterung allein oder extension:parser sein. Der Parser bestimmt, wie eine Datei zum Vergleich in Textabschnitte aufgeteilt wird. Ohne Angabe wird er anhand der Erweiterung gewählt; unbekannte Erweiterungen verwenden file.

    Standard: Die Standardliste der Erweiterungen ist .md, .mdx, .xml, .adoc, .asciidoc und .properties. Mit -f ersetzen Sie diese Liste.

    Parsernamen (nach dem Doppelpunkt) und die erzeugten Textabschnitte:

    • md – ein Markdown-Element
    • line – eine einzelne Textzeile
    • xml – ein XML-Element
    • adoc – AsciiDoc-Element
    • file – der gesamte Dateiinhalt
    • properties – ein Eigenschaftswert

    -f=md,mdx
    Nur .md- und .mdx-Dateien durchsuchen, beide mit dem Markdown-Parser.

    -f=topic:xml,txt:line
    .topic-Dateien nach XML-Elementen und .txt-Dateien zeilenweise durchsuchen.

    -f="*:line"
    Alle Dateien durchsuchen und jede Zeile als eigenen Textabschnitt behandeln.

    -l / --minLength Die Mindestlänge (in Zeichen) für einen zu analysierenden Textabschnitt. Standard: 100 (Textfragmente kürzer als 100 Zeichen werden ignoriert) -l=150
    -s / --minSimilarity Der Mindestgrad der Ähnlichkeit zwischen zwei Textabschnitten, um als Duplikate betrachtet zu werden. Standard: 0.9 (90%) -s=0.85
    -d / --minDuplicates Die Mindestanzahl von Duplikaten, damit eine Duplikatgruppe gemeldet wird. Standard: 1 (ein Duplikat reicht aus) -d=5
    -ui / --ui Ob die interaktive Benutzeroberfläche verwendet werden soll oder nicht. Optionen:
    • none – keine Oberfläche, nur in Dateien schreiben
    • swing – alte Oberfläche
    • compose – neue Oberfläche, Standard
    -ui=none
    -v / --verbose Die Dauer der Indexierung und Analyse in der Konsole ausgeben. Standardmäßig deaktiviert. Fehler bei übersprungenen Dateien werden unabhängig von dieser Option gemeldet. -v
    -g / --gram (fortgeschritten) N-Gramm-Länge – beeinflusst Geschwindigkeit, Speicherbedarf und Genauigkeit der Analyse. Der Unterschied hängt von den Besonderheiten des Inhalts ab. -g=10
    -w / --keepWhitespace Mehrfache aufeinanderfolgende Leerzeichen im geparsten Inhalt beibehalten. Standardmäßig werden Leerzeichen normalisiert, d.h. mehrere aufeinanderfolgende Leerzeichen werden als eines behandelt und angezeigt. -w
    -i / --inline

    Den Inhalt verschachtelter Elemente in ihr umschließendes Element einbeziehen. Zum Beispiel:

    <parent>Some content including <child>nested content</child></parent>

    Mit dieser Option wird das äußere Element als 'Some content including nested content' geparst, während es standardmäßig als 'Some content including </>' geparst wird.

    -i

Konfigurationsdatei

Sie können Einstellungen in duplicate-finder.properties im Inhaltsverzeichnis (-r oder das aktuelle Verzeichnis) speichern. Verwenden Sie die langen Optionsnamen ohne -- als Schlüssel. Beispiel:

fileMask=topic:xml,md,mdx
minSimilarity=0.85
minLength=200
ui=none

Ohne Argumente wird die Datei aus dem aktuellen Verzeichnis geladen; mit -r wählen Sie ein anderes Inhaltsverzeichnis. Fehlende Einstellungen verwenden die Standardwerte. Die Optionen -o, -ui und -v können gespeicherte Einstellungen überschreiben. Wenn Sie -s, -l, -d, -f, -g, -w oder -i angeben, wird die Konfigurationsdatei vollständig ignoriert.

Befehlsbeispiel

Hier ist ein Beispiel, wie Ihr Befehl aussehen könnte:

java -jar duplicate-finder.jar -r=/Users/me.user/my-site -f=md,mdx -s=0.85 -d=5 -l=200

Der obige Befehl führt Folgendes aus:

Ergebnisse

Je nach Einstellungen und Projektgröße müssen Sie möglicherweise etwas warten, bis die Analyse abgeschlossen ist. Danach werden die Ergebnisse im Duplikat-Viewer geöffnet und im mit der Option '-o' definierten Ordner gespeichert. Standardmäßig werden Textberichte in ./duplicate_finder_output im Arbeitsverzeichnis gespeichert. Mit -ui=none speichern Sie Berichte, ohne den Viewer zu öffnen.

Hier sehen Sie, was im Duplikat-Viewer angezeigt wird:

Duplicate finder UI
  1. Symbolleiste: Konfigurieren Sie die Schriftgröße, Sortierreihenfolge und ob Sie nur einen einzelnen Referenz-Chunk (2) für jede Duplikatgruppe sehen möchten. Mit Fuzzy search können Sie eine Textabfrage eingeben und ähnliche Passagen mit einem einstellbaren Ähnlichkeitsschwellenwert finden.
  2. Referenz-Chunk-Liste: Wählen Sie den Chunk aus, der als Referenz für den Vergleich dient.
  3. Duplikat-Chunk-Liste: Nachdem Sie den Referenz-Chunk (2) ausgewählt haben, zeigt diese Liste die ähnlichen Chunks an. Um ein Duplikat anzuzeigen, wählen Sie es aus der Liste.
  4. Referenz-Chunk-Vorschau: Nachdem Sie den Referenz-Chunk (2) ausgewählt haben, können Sie seinen Inhalt hier anzeigen. Gemeinsame Teile werden grün angezeigt, während unterschiedliche Teile rot angezeigt werden. Je mehr Duplikat-Chunks (3) einen gemeinsamen Teil haben, desto grüner wird er erscheinen.
  5. Duplikat-Chunk-Vorschau: Nachdem Sie den Duplikat-Chunk (3) ausgewählt haben, erscheint hier seine Vorschau. Sie können sie für einen schnellen Vergleich mit dem ausgewählten Referenz-Chunk (4) verwenden.

Mehr erfahren & Kontakt

Wenn Sie sich für die Entwicklung dieses Tools interessieren, schauen Sie sich die zugehörige Blog-Serie an:

Für Feedback können Sie mich über die Kontaktdaten in der Fußzeile dieser Seite erreichen. Ich freue mich über Ihre Anregungen und Feature-Wünsche.

Lizenz

Der Code ist unter der MIT-Lizenz lizenziert, was bedeutet, dass Sie ihn für jeden Zweck frei verwenden, forken und modifizieren können.

all posts ->