it-swarm.com.de

Wie kann man die Ähnlichkeit einer Datei mit einer anderen visualisieren?

Problem

Mein Dateisystem ist ein Chaos, im Laufe der Jahre habe ich viel zu viele Downloads gesammelt, die ich nicht dekomprimieren und organisieren wollte, Code, der endlosen Kopien + Einfügungen und Verbesserungen unterworfen war, und viele Bilder und Dokumente, die im Grunde genommen sind die gleiche Datei nur mit einigen geringfügigen Änderungen/Überarbeitungen.

Ich möchte die Ähnlichkeit einer Datei mit jeder anderen Datei anzeigen, solange sie über dem angegebenen Schwellenwert liegt. Das gleiche möchte ich auch mit Ordnern machen.

Erläuterung: Hier geht es nicht darum, die Unterschiede zwischen zwei oder mehr Dateien zu visualisieren, sondern darum, wie die Ähnlichkeit jeder Datei mit allen anderen Dateien (viele bis viele) dargestellt wird.


Hintergrund

Was ich für einen guten Ansatz hielt, wäre, zwei Arten von Perspektiven zu haben: eine, die nur Dateien anzeigt, und eine andere, die nur Dateien anzeigt. Dann würde ich für jeden Knoten (Datei/Ordner) einen Kreis anzeigen (möglicherweise könnte die Kreisdimension direkt proportional zur Datei-/Ordnergröße sein), den ich mit allen anderen ähnlichen Knoten verbinden würde. Der Abstand zwischen den Knoten wäre umgekehrt zur Ähnlichkeit zwischen ihnen, und die Aktionen wären über einen Kontext oder ein Seitenmenü verfügbar.

Diese Idee hat jedoch einige Probleme:

  1. wenn es viele Knoten gibt, hätten entweder die Kreise einen unmöglichen kleinen Bereich oder der Abstand zwischen ihnen wäre winzig oder der Bildlaufbereich wäre ärgerlich groß

  2. wenn die Knotengröße direkt proportional zur Dateigröße wäre, würde das obige Problem noch verstärkt, oder es würde einige Überlappungen geben, die die gesamte Navigation unbrauchbar machen würden.

Ich dachte daran, etwas wie das (aber dieses spiegelt nicht die Stärke der Ähnlichkeit wider) oder wie das (das die von mir beschriebenen Probleme hat) zu verwenden über). Gibt es ein Designmuster, das hier passen würde?

Ich würde gerne so etwas wie den Muffin Player machen:

muffin visionflow

Aber sie haben den Vorteil, dass sie ihre Knoten in nur zwei Achsen aufteilen können, und sie haben auch die Tiefenabmessung (obwohl ich mir über den Zweck nicht ganz sicher bin).

5
Alix Axel

Wie Sie bereits erwähnt haben, würde ein einfaches Schema allein sehr wahrscheinlich zu einer Informationsüberflutung führen, da sich zu viele Knoten überlappen. Meiner Meinung nach müssen Sie einen kombinierten Ansatz wählen und wahrscheinlich zunächst die Filterung der Suchergebnisse zulassen, beispielsweise für einen bestimmten Ordnerbaum.

Was den kombinierten Ansatz betrifft, müssen Sie meines Erachtens in Betracht ziehen, Elemente aus den beiden folgenden Bereichen auf hoher Ebene zu kombinieren.

Markieren Sie die aktuelle Datei, die verglichen wird.

Möglichkeiten umfassen:

  • Farbe - Machen Sie es rot oder grün oder weiß oder ...
  • Größe - Machen Sie es zum größten Objekt
  • Form - Machen Sie daraus einen Kreis, ein Quadrat oder ein Dreieck, obwohl mir die Idee eines Ziels gefällt
  • Position - Machen Sie es zentral auf dem Bildschirm oder oben links oder rechts ODER setzen Sie es in einer Explorer-ähnlichen Ansicht ab.

Unterscheiden Sie alle zusätzlichen Dateien

  • Farbe
    • Einfaches Schema: Rote Dateien sind unterschiedlich, gelbe Dateien haben nur minimalen Inhalt, blaue Dateien teilen einen erheblichen Teil des Inhalts und grüne Dateien sind identisch
    • Schattierung: Je heller die Dateien variieren, desto heller sind sie vom aktuellen Farbton. Möglicherweise wechseln Sie wie oben beschrieben zu einer anderen Farbe entlang des Spektrums.
  • Größe - Kleinere Dateien haben weniger mit der aktuell ausgewählten Datei gemeinsam, da weiter entfernte Objekte kleiner erscheinen.
  • Form: Vielleicht stimmen Sternformen eng überein, vielleicht sind spitze Formen weiter entfernt und abgerundete Formen sind näher. Dieser könnte subjektiv variieren.
  • Speicherort: Dateien, die näher am Ziel liegen, passen besser zum Ziel. Sie können mit der obigen Größe kombiniert werden, um ein vertrautes dreidimensionales Gefühl zu erzeugen. Wie das Navigieren von Knoten auf einer Karte des Sonnensystems in einem Konsolenspiel.
2
Joshua Drake

Wenn Sie versuchen, eine Dateistruktur (einen Baum) zu visualisieren und nach Möglichkeiten zu suchen, sie zu beschneiden, können Sie einige Dinge tun.

Die Größe des Blobs muss mit der Größe der Datei verknüpft werden.

Der Abstand vom Zentrum könnte mit dem Abstand von der Wurzel (C :) verknüpft werden, und bei Auswahl könnte der LCS (größte gemeinsame Teilzeichenfolge) zugeordnet werden. Je länger die Teilzeichenfolge, desto näher sollten die Knoten sein.

Die Farbe kann mit der Dateitypzuordnung verknüpft sein, Medien können orange, ausführbar blau usw. sein.

Vielleicht möchten Sie Sätze verwandter Dateien (nach Ordner) umkreisen und die Größe eines solchen anzeigen. Ich weiß, dass diese kleinen Dateien häufig eine Menge Speicherplatz beanspruchen können, aber der Grund, warum Sie sie nicht beschneiden, ist, dass Sie nicht wissen, woher sie kommen.

wenn Ihre Größenunterschiede sehr groß sind, lassen Sie den Benutzer beispielsweise einen Protokollskalierungsalgorithmus auswählen. EX: xkcd.com/482/

Wenn der Größenunterschied jedoch so groß ist, ist es wahrscheinlich sinnlos, kleine Dateien zu bereinigen. BEARBEITEN: Wenn Sie für alles viele zu viele tun, wird Ihre Verarbeitungszeit verdammt groß sein, wenn Sie über ein azyklisches ungerichtetes Diagramm von allem bis zu allem sprechen, das einen längsten gemeinsamen Teilstring ausführt. Das Vis könnte die geringste Ihrer Sorgen sein. :(

1
VoronoiPotato

Eine mögliche Lösung wäre die Verwendung einer selbstorganisierenden Karte (oder SOM ) - einer Karte, auf der der Inhalt der Datei zur Bestimmung ihres Speicherorts verwendet wird. und ähnliche Dateien landen nahe beieinander. Dieser Ansatz wäre streng und zuverlässig, aber viel Arbeit.

Sample SOM

(Beispiel von hier geschnappt: http://jaanbi.blogspot.co.nz/2010/03/kohonens-self-organizing-maps-in.html )

Die Herausforderung bei diesem Ansatz ist zweifach.

Zuerst müssen Sie autonom (dh ohne menschliches Eingreifen) einen Satz von Längen-n-Vektoren generieren, um Ihren Satz von Dateien darzustellen (dies bedeutet, dass automatisch die Merkmale der Dateien identifiziert werden, mit denen Ähnlichkeit und Differenz bewertet werden können).

Sobald Sie diesen Satz von Vektoren haben, besteht die andere Herausforderung darin, diesen n-dimensionalen Raum mit einer verzerrten Projektion auf eine zweidimensionale Karte abzubilden.

Früher habe ich an einem System gearbeitet, das genau dies tat - man konnte ihm einen Korpus von vielen tausend Dokumenten zuführen und eine Karte mit den allgemeinen Themen und Themen erstellen, wobei ähnliche Dokumente nebeneinander und unterschiedliche Dokumente getrennt waren.

0
Bevan

Ich habe kürzlich ein ähnliches Problem gelöst. Ich habe Tausende von hauptsächlich PDF -Dateien, die über Jahre gesammelt wurden, und vermutet, dass es viele doppelte Dateien gab.
Meine Lösung war überhaupt nicht so ausgefeilt wie die in den anderen Antworten erwähnten Beziehungskarten.
Mit einem Befehlszeilenbefehl habe ich eine Textdatei erstellt, die die Dateinamen und ihre Größen (und weitere Zusatzdaten als Datum) enthält und nach Größe sortiert ist.
Diese einzelne Aktion verband einfache Duplikate, die ich aufgrund ähnlicher oder gleicher Dateinamen erkennen konnte.
Ich weiß, dass dies keine Antwort auf diese spezielle Frage ist, aber ich habe sie angesprochen, weil sie überraschend schnell und effektiv war.

0
Juan Lanus

Ich denke, Ihr aktueller Lösungs-/Denkprozess ist zu kompliziert. Wenn Sie nur daran interessiert sind, wie ähnlich eine Datei einer anderen Datei ist, scheint es, dass die visuelle Darstellung der Dateigröße keine Rolle spielt. Sie beschäftigen sich nur mit zwei Dingen:

  1. Welche Dateien ähneln einer Datei?
  2. Wie ähnlich ist jede Datei der aktuellen Datei?

1 - Aus Ihren Beispielen geht hervor, dass Sie glauben, dass Sie am Ende viel ähnlicher Dateien haben werden. Sind Sie sicher, dass dies der Fall ist? Wenn nicht, ist ein statischeres Layout möglicherweise einfacher zu navigieren als die von Ihnen bereitgestellten ultra-dynamischen Beispiele. Ich kann dies erweitern, wenn Sie möchten und wenn Sie eine Antwort darauf haben, mit wie vielen ähnlichen Dateien Sie wirklich zu tun haben.

2 - Wenn Sie in Kreisen verkauft werden, können Sie eine einfache Kreisdiagrammdarstellung jeder Datei verwenden. Nehmen wir an, Ihr Cut-Off liegt bei 90% Ähnlichkeit, alles, was darunter liegt, ist nicht nah genug, um eine Rolle zu spielen. Ihr Kreisdiagramm muss also nur 0% -10% (90-100) darstellen. Dies ist ein Bereich, der klein genug ist, um die Unterschiede in den Diagrammen sehr deutlich zu machen. Sie können auch Farbe an diesen Bereich binden. Beginnen Sie bei etwas Hellem und werden Sie dann dunkler, wenn sie sich dem Matching nähern.

0
John S