Erhalten Sie den Unterschied zwischen zwei regulären Literaturtexten (nicht Quellcode), mit Markup bei Änderungen

Wie bekomme ich den Differenztext von zwei E-Books in reinen Text konvertiert? Es handelt sich bei beiden um das gleiche Buch, aber in unterschiedlichen Ausgaben, so dass ein Großteil des Textes bis auf die Änderungen der Silbentrennung und Zeichensetzung genau gleich ist.

Ich habe die vorherige Ausgabe gelesen, daher möchte ich jetzt nur die Änderungen der neuen Ausgabe überfliegen und nicht die gesamte neue Ausgabe noch einmal lesen. Und das könnte nicht nur für ein Buch hilfreich sein, sondern für viele!

Dinge, die ich gefunden habe, aber sie lösen die Aufgabe nicht:

  • Das Dienstprogramm "diff" und GUI-Dienstprogramme vom Typ "diff" sind für die Verwendung mit Software-Quellcodes gedacht, da ihre Vergleichseinheit eine einzelne Textzeile ist, was bei Text in natürlicher Sprache nicht der Fall ist, der natürlich nicht durch Zeilen begrenzt ist.
  • Die Dienstprogramme 'wdiff' und 'dwdiff' sind für die Verwendung mit gewöhnlichem Text gedacht, nicht mit Quellcodes, da sie einen Vergleich nach 'Wörtern' durchführen, die als Ergebnis der Textaufteilung durch bestimmte Trennzeichen betrachtet werden. Aber in der Praxis finden beide aus unbekannten Gründen keine Ähnlichkeiten in identischen Teilen von Büchern, wie denselben Sätzen, sogar ganzen gleichen Kapiteln
  • Anti-Plagiat-Software lässt solche Funktionen einfach nicht zu, es handelt sich um große, komplexe Spezialsoftware, die interaktiv arbeitet und nicht in der Lage ist, die Ausgabe "Unterschied von natürlichem Text" stapelweise zu erzeugen

Jedes lokale Betriebssystem oder ein entfernter Online-Dienst reicht aus.

Für welches Betriebssystem?
Keine Einschränkungen, jedes lokale Betriebssystem oder jeder Remote-Online-Dienst reicht aus
Hast du WinMerge probiert? Wenn Sie die Übereinstimmungen und nicht die Ähnlichkeiten wollen, macht es den Job.
Ja, WinMerge JP und alle in der Liste der Diff-Alternativen sind für den zeilenorientierten Quellcode-Typ-Dateivergleich

Antworten (1)

Angenommen, Sie können dafür ein Konsolenprogramm verwenden, würde ich vorschlagen vimdiff. Es ist ein mit dem Vim -Editor gepacktes Tool , das zwei Dateien als Eingabe nimmt und sie Seite an Seite mit synchronisiertem Scrollen und spezieller Hervorhebung präsentiert, um zu markieren, welche Zeilen unterschiedlich sind und was sich tatsächlich in einer Zeile geändert hat. Es ist intelligent genug, um das Verschieben von Textblöcken (aber nicht unbedingt komplexe Neuordnungen von Text) zu handhaben, und faltet (versteckt) auch automatisch Abschnitte der beiden Dateien, die identisch sind.

Abhängig davon, wie der Text in diesen beiden E-Books tatsächlich fließt, haben Sie möglicherweise Probleme, Unterschiede zu finden. Wenn zum Beispiel eine Reihe von Absätzen in einem Abschnitt in einer völlig anderen Reihenfolge sind, aber ansonsten identisch sind, erkennen viele Tools nicht, dass sie gleich sind (vielleicht erkennen sie einen von ihnen, aber nicht alle). Dies ist einfach ein Nebeneffekt der Funktionsweise von Vergleichstools, und Sie werden wahrscheinlich kein Tool finden, das das Auffinden solcher Unterschiede richtig automatisieren kann (und wenn Sie dies tun, ist es wahrscheinlich äußerst spezifisch in dem, was es tut).

Auch kleine Randnotiz, aber diffnicht 'nur für Software-Quellcode'. Es hat einfach Schwierigkeiten, natürlich fließenden Text zu handhaben (wie Sie es in den meisten E-Books finden werden, selbst wenn es in einfachen Text konvertiert wird), weil es zeilenorientiert und nicht wortorientiert ist.

Ich kann Konsolenprogramme verwenden und habe alle genannten 'diff', 'wdiff' und 'dwdiff' ausprobiert. So wie vim ein GUI-Gegenstück hat, hat auch vimdiff seine Version: "gvim -d file1.txt file2.txt". Während das Vorhandensein einer GUI ein richtiges Feature ist, bleibt das Kernproblem bestehen. Das Problem liegt, wie Sie bereits erwähnt haben, im zeilenbasierten Vergleichsalgorithmus, der für den Vergleich von natürlich fließendem Text nicht nützlich ist. Das Dienstprogramm dwdiff ist in dieser Hinsicht besser, aber noch nicht einmal annähernd zufriedenstellend. Ich denke, das Problem erfordert einen ausgefeilteren Ansatz, wie die Verwendung von Algorithmen zur Verarbeitung natürlicher Sprache (NLP) zum Aufteilen von Sätzen und Wörtern
Ursprüngliche Frage aktualisiert, um die Arbeit von dwdiff zu beschreiben