Ähnliche Dateien finden
-
Ich habe ein Programm geschrieben, das mir zu einer Textdatei alle "ähnlichen" Textdateien aus einem Ordner heraussucht. Dazu vergleiche ich jedes Wort der betrachteten Datei mit jedem Wort jeder anderen Datei und definiere "ähnlich" ab einer gewissen Übereinstimmung.
Das hat wunderbar funktioniert. Nun ist aber der Ordner größer geworden und die Textdateien wachsen auch immer weiter, so dass ich mir Gedanken über einen effizienteren Algorithmus mache. Es ist schwierig, dazu etwas zu finden, weil überall nur fertige Tools angeboten werden.
Habt ihr Vorschläge, wie ich die Vergleiche einschränken könnte?
-
Klar, definierst du ähnlich um in weniger ähnlich.
-
Was ist Ähnlichkeit?
Ähnlichkeit der Worthäufigkeiten der häufigsten Wörter? Damit erkennst Du die Ähnlichkeit der Schreiber, also ein Text von mir über Keltische Gesänge ist in gewisser Weise durchaus ähnlich einem Text von mir über Tastaturlayouts.
Ähnlichkeit der Worthäufigkeiten der seltendsten Wörter? Damit erkennst Du eher, über welches Thema der Text ist. Aber zu selten ist doof. Besser aus einer globalen Liste die Wortwahrscheinlichkeiten bzw deren Kehrwerte oder gar deren Logarithmen nehmen und mit der relativen Häufigkeit im Text verrechnen, um damit eine "Signifikanz" der Wörter zu finden. Kurz Shannon lesen. Und davon speicherst Du für jede Textdatei die 100 dicksten. Dann sind Textvergleiche reduziert auf Listenvergleiche von je 100 Wörtern. Zwei Texte, die über Tastaturlayouts gehen, werden sehr dicht beeinander sein, weil "Tastaturlayout" allgemein so selten ist und viele Punkte bringt und noch dazu in beiden Texten oft vorkommt (neben Taste, Bigramm, Kollisiion, Finger, Geschwindigkeit, Anschlag...).
-
Gute Idee, danke
So werd ich es mal versuchen.