Hallo,
nehmen wir an ich hätte einen Quelltext geschrieben. Ich kenne Filename und - größe, Hashsumme etc.
Jemand ändert nun den Dateinamen und ergänzt den Inhalt geringfügig. Name und Hash ändern sich.
Gibt es eine Möglichkeit die weitgehende Ähnlichkeit der beiden Dateien in irgendeinem Maß festzulegen? (Vergleich auf alle möglichen Substrings an allen möglichen Orten fällt wegen Aufwands aus.)
Mir fällt die git rename -Logik ein. Dazu finde ich aber weder Code noch Logik...
Hat jemand eine idee?
TIA!
Bernhard
Bernhard Schiffner bernhard@schiffner-limbach.de (Di 14 Dez 2010 10:50:00 CET):
Hallo,
nehmen wir an ich hätte einen Quelltext geschrieben. Ich kenne Filename und - größe, Hashsumme etc.
Jemand ändert nun den Dateinamen und ergänzt den Inhalt geringfügig. Name und Hash ändern sich.
Gibt es eine Möglichkeit die weitgehende Ähnlichkeit der beiden Dateien in irgendeinem Maß festzulegen? (Vergleich auf alle möglichen Substrings an allen möglichen Orten fällt wegen Aufwands aus.)
Mir fällt die git rename -Logik ein. Dazu finde ich aber weder Code noch Logik...
Hat jemand eine idee?
Vielleicht bei rsync mal die Logik hinter --fuzzy ansehen.
Oder die Worthäufigkeiten zählen. Dann vielleicht noch die Häufigkeiten von Wortpaaren oder ganzen Sätzen. Oder die Whitespace-Verteilung.
Vielleicht hilft es auch weiter, verschiedene unscharfe Spamerkenner zu analysieren.
On 14.12.2010 10:50, Bernhard Schiffner wrote:
Hallo!
nehmen wir an ich hätte einen Quelltext geschrieben. Ich kenne Filename und - größe, Hashsumme etc.
Jemand ändert nun den Dateinamen und ergänzt den Inhalt geringfügig. Name und Hash ändern sich.
Gibt es eine Möglichkeit die weitgehende Ähnlichkeit der beiden Dateien in irgendeinem Maß festzulegen? (Vergleich auf alle möglichen Substrings an allen möglichen Orten fällt wegen Aufwands aus.)
Mir fällt die git rename -Logik ein. Dazu finde ich aber weder Code noch Logik...
Hat jemand eine idee?
Ich denke eine Spamfilter auf Basis von SpamAssassin müsste doch genau das machen (inzwischen macht er denke ich noch mehr, aber der ursprüngliche Gedanke war glaube ich die Implementierung eines Bayes-Filters).
Wenn man sich mal die Parameter anschaut (oder gleich das entsprechende Perl-Modul?), lässt der sich bestimmt missbrauchen...
Alternativ zu Bayes kann man auch irgendwas mit Fuzzy machen, dort ist mir allerdings der theoretische Hintergrund immer etwas willkürlich gewählt :P
Marcus
Gibt es eine Möglichkeit die weitgehende Ähnlichkeit der beiden Dateien in irgendeinem Maß festzulegen? (Vergleich auf alle möglichen Substrings an allen möglichen Orten fällt wegen Aufwands aus.)
Mir fällt die git rename -Logik ein. Dazu finde ich aber weder Code noch Logik...
Hat jemand eine idee?
Ich würds mit diff probieren :)
Viele Grüße, morphium
On Tuesday 14 December 2010, Bernhard Schiffner wrote:
nehmen wir an ich hätte einen Quelltext geschrieben. Ich kenne Filename und - größe, Hashsumme etc.
Jemand ändert nun den Dateinamen und ergänzt den Inhalt geringfügig. Name und Hash ändern sich.
Gibt es eine Möglichkeit die weitgehende Ähnlichkeit der beiden Dateien in irgendeinem Maß festzulegen? (Vergleich auf alle möglichen Substrings an allen möglichen Orten fällt wegen Aufwands aus.)
Naja, diff kommt nahe ran.
z.B. diff -bwBE -U 0 file1 file2 | wc -l
-bwBE ignoriert alle Typen von Whitespace (ich habe bestimmt zu viel ignoriert oder so)
-U 0 - macht ein unified diff ohne Context-Zeilen
Sollte dieser Befehl jetzt eine Zahl ausgeben, die signifikant kleiner ist als "wc -l <file1", dann ist es sehr wahrscheinlich dass file2 nicht sonderlich originell ist... ;-)
Sollte die Zahl jedoch wesentlich größer sein, dann sind die Dateien mindestens neu sortiert worden.
Reicht Dir diese Aussage? Oder wolltest Du noch irgendwas sinnvolles mit dem Ergebnis machen?
Mir fällt die git rename -Logik ein. Dazu finde ich aber weder Code noch Logik...
Siehe git sourcen? :-P
Konrad
lug-dd@mailman.schlittermann.de