Textvergleicher
Auf dieser Seite kann man automatisch Unterschiede und Gemeinsamkeiten zweier Texte finden lassen. Ein solches Werkzeug und seine Ausgabe werden häufig nach einem Programm aus den 1970er Jahren als Diff bezeichnet.
Wozu ist ein Textvergleicher gut?
Ich nutze automatische Vergleiche von Texten in verschiedenen Fällen:
- Wenn ich für jemanden einen Text korrigiert habe, speise ich neuerdings Original und bearbeitete Version in den Textvergleicher ein. So kann ich vor der Abgabe noch einmal gezielt meine Bearbeitungen kontrollieren, andererseits kann der Auftraggeber bei Interesse schauen, was genau ich verändert habe.
- Um als Programmierer die Änderungen zwischen verschiedenen Versionen eines Computerprogramms haarklein zu verfolgen, schaue ich mir die von einem Textvergleicher automatisch gefundenen Unterschiede zwischen altem und neuem Quelltext des Programms an.
- Beim Anlegen von Sicherungskopien von Fotos vergleiche ich Dateilisten vom Sicherungsmedium mit Dateilisten auf dem Hauptrechner. Anhand der Gemeinsamkeiten und Unterschiede sehe ich schnell, von welchen Dateien ich bereits ein Backup angelegt habe und welche noch gesichert werden müssen.
Nützlich kann ein Textvergleich auch sein, wenn man von einem Dienstleister neue Allgemeine Geschäftsbedingungen angekündigt bekommt. Anhand eines Vergleiches der alten und neuen AGB sieht man rasch, was gelöscht und was neu eingefügt wurde.
Wie funktioniert der Textvergleicher?
Um zwei Texte zu vergleichen, werden beide zunächst in Stücke zerlegt. Der Textvergleicher wendet dann einen Algorithmus zum Finden der längsten gemeinsamen Teilfolge von Stücken zweier Texte an. Ein ähnlicher Algorithmus wird im englischen Wikipedia-Artikel longest common subsequence problem detailliert beschrieben. Anders als dort dargestellt behandelt der Textvergleicher hier aber nicht alle Stücke gleich, sondern misst langen Stücken ein größeres Gewicht als kürzeren Stücken zu. Was am Ende nicht zur berechneten längsten gemeinsamen Teilfolge gehört, wird als Unterschied zwischen den Texten hervorgehoben.
Feinheiten
Abhängig vom Kontext zerlegen Menschen Texte bei einem Vergleich unterschiedlich fein. Die folgenden vier Sätze illustrieren das:
- Ein Gerücht geht um im Dorf.
- Ein Verbrecher geht um im Dorf.
- Ein Versprecher geht um im Dorf.
- Ein Versprächer geht um im Dorf.
Beim Vergleich der Sätze 1 und 2 würde fast jeder sagen, das Wort „Gerücht“ sei gegen das Wort „Verbrecher“ ausgetauscht worden. Kaum jemand würde sagen: „G“ wurde gegen „V“ und „ücht“ gegen „brecher“ ausgetauscht, während „er“ gleich blieb. Menschen denken hier also instinktiv auf der Ebene ganzer Wörter. Beim Vergleich der Sätze 2 und 3 ist das weniger deutlich. Ich denke, einige Leute würden ebenfalls auf Wortebene, andere auf die Buchstabenebene gehen und sagen, „b“ wurde durch „sp“ ersetzt. Beim Vergleich der Sätze 3 und 4 würde dann fast jeder einen Rechtschreibfehler auf Buchstabenebene ausmachen.
Es gibt auch Beispiele, bei denen Menschen weder auf Buchstaben- noch auf Einzelwortebene setzen. Findet man im Vergleich von Teilnehmerlisten von Vereinstreffen anstelle von „Max Mustermann“ in einer Liste „Max Meier“ in einer anderen, wird niemand auf Buchstabenebene und kaum jemand auf Wortebene denken. Die meisten werden stattdessen die Namen als komplette Einheiten sehen und würden sagen, „Max Mustermann“ sei statt „Max Meier“ da gewesen.
Eine so flexible Differenzierung beherrschen Diff-Programme nicht. Für einen automatischen Textvergleich muss man sich in der Regel festlegen, ob Texte in Buchstaben, Wörter, Wortgruppen, Sätze, … unterteilt werden sollen.
Für die Funktion „Ganze Zeilen vergleichen“ werden die Texte an allen Zeilenumbrüchen gestückelt. Die Funktion „Erst Zeilen, dann Wörter vergleichen“ macht dies genauso, hängt aber noch eine Stufe an: Aufeinanderfolgende Zeilen, bei denen sich linker und rechter Text unterscheiden, werden an den Leerzeichen in kleinere Teilstücke gebrochen und detailliert verglichen. Für die Funktion „Zeilen mit Wörtern vergleichen“ wird sofort der komplette Text an Zeilenumbrüchen und Leerzeichen gestückelt und die Zeilen einander so zugeordnet, dass am Ende so viele Zeichen wie möglich übereinstimmen. Diese Methode ist am langsamsten, liefert aber manchmal noch bessere Ergebnisse als „Erst Zeilen, dann Wörter vergleichen“.
Wo liegen die Grenzen des Textvergleichers?
Der Textvergleicher schaut nach Übereinstimmungen und Abweichungen zwischen Texten, ohne die Reihenfolge von Textstücken zu ändern. Daher identifiziert er verschobene Textabschnitte nicht als Verschiebungen, sondern im linken Text als Löschung und im rechten Text als Einfügung. Bei vielen Anwendungen ist das kein Problem, aber wenn man beispielsweise auf Plagiatsjagd ist, kann ein komplexeres Programm, das einem auch Verschiebungen automatisch als solche anzeigt, sinnvoll sein.
Textvergleicher können Unterschiede zwischen Texten finden, aber sie können nicht tatsächlich herausfinden, wie der Text geändert wurde. Ein Beispiel: Auf dem Weg vom Textschnipsel „wir müssen eins zusammenzählen“ zum Schnipsel „wir müssen eins und eins zusammenzählen“ könnte der Autor genauso gut „eins und“ nach „müssen“ eingefügt haben, wie er „und eins“ vor „zusammenzählen“ eingefügt haben könnte. Das Ergebnis ist dasselbe. Der Textvergleicher zeigt Variante zwei an, aber das muss nicht sein, was der Autor tat.