Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Visualisierung von von Daten (https://www.delphipraxis.net/159267-visualisierung-von-von-daten.html)

frieder2008 21. Mär 2011 09:13

Visualisierung von von Daten
 
Liebe Leute,

ich habe ein neues Problem, bei dem mir bisher jeglicher Ansatz fehlt:

Ich habe Daten, die miteinander verglichen werden. Als Ergebnis dieser Vergleichsbereichnungen habe ich zB 10 Dateien, die jeweils die Vergleichswerte ('Ähnlichkeit') zu allen anderen Dateien enthalten:

DataName1
DataName2 VergleichsWert2-1
DataName3 VergleichsWert3-1
DataName4 VergleichsWert4-1
...

DataName2
DataName1 VergleichsWert1-2
DataName3 VergleichsWert3-2
DataName4 VergleichsWert4-2
...

DataName10
DataName1 VergleichsWert1-10
DataName2 VergleichsWert2-10
DataName3 VergleichsWert3-10


Ich habe also eine Matrix an Daten (String/Wort) und ihrer 'Ähnlichkeit' (Extended). Ich möchte jetzt gerne alle Daten so visualisieren, dass zu jedem Datensatz zB die ersten 3 'ähnlichsten' anderen DS gruppiert werden - und das natürlich iterativ.

Bisher habe ich die Daten immer als DOT exportiert und in Gephi automatisch visualisiert. Ich würde das aber gerne im kleinen selbst bauen (nicht in Netzwerk- sondern z.B. als 'Ähnlichkeitsfelder'-Darstellung).

Hat jemand eine Idee für einen Ansatz? - Ich habe von Datenvisualisierung in delphi (TGraphic o.ä.) kaum/keine Erfahrung.

Danke und viele Grüße,
frieder

sx2008 21. Mär 2011 09:40

AW: Visualisierung von von Daten
 
Zitat:

Zitat von frieder2008 (Beitrag 1089978)
'Ähnlichkeitsfelder'-Darstellung

??? Hier sagt ein Bild mehr als 1000 Worte.
Aufmalen, abfotografieren, nachbearbeiten und hier posten wäre ne gute Möglichkeit.

frieder2008 21. Mär 2011 09:48

AW: Visualisierung von von Daten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok, stimmt.

Das angehängte Bild ist ein Screenshot eines Programms (CCDB), das ähnliches realisiert. Das Bild visualisiert die Ähnlichkeit von Wörtern. Man stelle sich nun dazu vor, dass hinter jedem abgebildeten Wort ein DS mit den 'Ähnlichkeitswerten' (Extended) aller anderen Wörter steckt und danach werden die Wörter dann 'automatisch' gruppiert.

Wenn ich sowas hinbekäme, wärs natürlich saucool. Aber vielleicht gibts andere Ideen?

Danke und Gruß,
frieder

Klaus01 21. Mär 2011 09:58

AW: Visualisierung von von Daten
 
.. vielleicht sehe ich es nicht richtig.

Aber auf dem Bild ist nicht die Ähnlichkeit von Wörtern,
sondern die Ähnlichkeit der Bedeutung der Wörter zu sehen.

Zum ersteren würde mir Levenshstein Distanz einfallen.

Zu zweiteren eine große Datenbank mit Wörtern und deren Bedeutung.

Grüße
Klaus

BUG 21. Mär 2011 10:13

AW: Visualisierung von von Daten
 
Zitat:

Zitat von Klaus01 (Beitrag 1089982)
Aber auf dem Bild ist nicht die Ähnlichkeit von Wörtern,
sonder die Ähnlichkeit der Bedeutung der Wörter zu sehen.

Das ist völlig egal, da er die "Ähnlichkeitswerte" bereits hat und es nur um die Darstellung geht ;)

frieder2008 21. Mär 2011 10:15

AW: Visualisierung von von Daten
 
Ja, richtig. Visualisiert werden soll auch bei mir die Ähnlichkeit von Wortbedeutungen; wie das geht, weiß ich und ist bereits implementiert. Problem ist die Visualisierung.

Zitat:

Zitat von Klaus01 (Beitrag 1089982)
Zum ersteren würde mir Levenshstein Distanz einfallen.

Oje, ich bin kein Mathematiker/Informatiker ;) Dieses Prinzip war mir bereits bekannt, aber ich habe nicht die geringste Ahnung, wie ich das codetechnisch angehen könnte, mit welchen Komponenten o.ä.

Eine Idee wäre folgende, zu der ich aber einen delphi-Ansatz/Anfang bräuchte:
- Feste Matrix an Feldern (z.B. 10x10 Wörter)
- Startwort festlegen und in die Mitte setzen
- die ersten 4 'ähnlichsten' Wörter drum herum gruppieren

###########Wort3
#############|
####Wort2 - WortUrspr - Wort1
#############|
###########Wort4

- Dann Wort2 nehmen, erste 4 ähnlichste Wörter dazu und ebenso um Wort2 herum gruppieren
* dabei 'Ähnlichkeit' zu allen anderen bisher dargestellten Wörtern prüfen
* Wenn z.B. Wort2x1 auch im 'Ähnlichkeitsradius (erste 4 ähnlichste Wörter)' von Wort1 liegt, dann entsprechend umgruppieren

###########Wort2 - Wort2x1[=Wort5]
#############|#####|
####Wort3 - WortUrspr - Wort1
#############|
###########Wort4

Tja, aber WIE umgruppieren?!?

(Ich glaube, visualisieren müsste ich dann nicht einmal als Bild, sondern da reichte dann ja eine Tabelle o.ä.).

Gruß, frieder

Klaus01 21. Mär 2011 10:36

AW: Visualisierung von von Daten
 
.. würde ich grafisch lösen.

Verschiedene Radien welche die Distanz zum "Ursprungswort" (Zentrum) verdeutlichen.
O.k. das würde nur funktionieren wenn sich alle Ähnlichkeiten auf das "Ursprungswort"
beziehen.

Grüße
Klaus

Gausi 21. Mär 2011 11:07

AW: Visualisierung von von Daten
 
Du hast also gewissermaßen eine Matrix, die Ähnlichkeiten zwischen den Objekten angibt, und willst die Objekte so anordnen, dass ähnliche Objekte nahe beieinander stehen?

Das ist allgemein ein ziemlich komplexes Thema, und lässt sich z.B. mit Multidimensionaler Skalierung lösen, bzw. mit dem SMACOF-Verfahren. Damit hast du zwar immer noch nicht die Tabellenstruktur, aber das wäre ein erster Ansatz, um die Wörter zu plazieren.

Für Nicht-Mathematiker ist das wahrscheinlich nichts - ggf. gibt es für den Fall hier noch einfachere Methoden.

http://de.wikipedia.org/wiki/Multidi...ale_Skalierung
http://en.wikipedia.org/wiki/Stress_majorization

BUG 21. Mär 2011 11:26

AW: Visualisierung von von Daten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn das keine wissenschaftliche Anwendung ist, würde ich mir erstmal nicht so viele Gedanken machen und die Tabelle mit einem einfachen Schema ausfüllen, wobei man schon benutzte Worte einfach wegstreicht nicht mehr betrachtet.

Hier ein Vorschlag, um eine weitere "Schicht" hinzuzufügen:
Anhang 33667
Dazu bräuchtest du noch die Möglichkeit, den Abstand zu 2 Worten zu ermitteln, was man probeweise einfach mit sqrt(sqr(DistanzZuA) + sqr(DistanzZuB)) regeln könnte.


Eventuell reicht so ein naiver Ansatz ja aus :stupid:

frieder2008 21. Mär 2011 11:36

AW: Visualisierung von von Daten
 
Danke für die Infos.

Zitat:

Zitat von BUG (Beitrag 1090006)
wobei man schon benutzte Worte einfach wegstreicht.

Hm, das verstehe ich doch nicht ganz. Es sollen eig. keine Wörter gestrichen werden, sondern dann im Zweifel umgruppiert. Aber ich sehe ein, dass das nicht so einfach wird.

Zitat:

Zitat von Gausi (Beitrag 1090001)
Du hast also gewissermaßen eine Matrix, die Ähnlichkeiten zwischen den Objekten angibt, und willst die Objekte so anordnen, dass ähnliche Objekte nahe beieinander stehen?

Ja. Bei Gephi lässt sich das schon ganz gut automatisch machen, ist aber halt extern und wird als Netzwerk dargestellt. Und ich habe keinen weiteren Zugriff auf die Visualisierung (Click-Ereignis o.ä.).

Zitat:

Zitat von Gausi (Beitrag 1090001)
Das ist allgemein ein ziemlich komplexes Thema, und lässt sich z.B. mit Multidimensionaler Skalierung lösen, bzw. mit dem SMACOF-Verfahren. Damit hast du zwar immer noch nicht die Tabellenstruktur, aber das wäre ein erster Ansatz, um die Wörter zu plazieren.

Hat das hier schon mal jemand gemacht oder gibt es irgendwo einen Bsp.-Code, dem ich mich experimentell mal nähern könnte?

Oder weitere Ideen?

Danke und gruß,
frieder

WM_CLOSE 21. Mär 2011 11:45

AW: Visualisierung von von Daten
 
Wie viele Wörter willst du denn visualisieren?
Ich sage mal so, die Datenmenge, um die Wörter einzeln zu gruppieren wird exponenziell ansteigen:
Im Beispiel 1 Ähnlichkeit=1Byte
10 wörter: 10 Wörter haben je zu 10 Wörtern Ähnlichkeit: 100 Bytes
100 Wörter: 100 Wörter haben je zu 100 Wörtern Ähnlichkeit: 10Kb
1000 Wörter: 1000 Wörter haben je zu 1000 Wörtern Ähnlichkeit: 1Mb

frieder2008 21. Mär 2011 11:50

AW: Visualisierung von von Daten
 
Hm, gute Frage. Also visualisieren würde ich gerne bis zu 3000 Wörter unter Berücksichtigung ihrer jeweils bis zu 3 ähnlichsten anderen Wörter. Das werden dann wohl so um die 3000^3 Durchläufe, wenn ich das richtig sehe...

Aber mir reichte auch, wenn ich von einem Ausgangswort z.B. in 5 Stufen jeweils die nachfolgenden 3 ähnlichsten Partner visualisierte. Das wäre schon sehr schön :)

Wort1
Wort1x1-3
Wort1x1x1-3
Wort1x1x1x1-3

Gruß, frieder

Gausi 21. Mär 2011 11:58

AW: Visualisierung von von Daten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von frieder2008 (Beitrag 1090012)
Hat das hier schon mal jemand gemacht oder gibt es irgendwo einen Bsp.-Code, dem ich mich experimentell mal nähern könnte?

Drüben in der EE hab ich das mal bei einem Adventsrätsel gemacht (da war die Methode zwar mit Kanonen auf Spatzen geschossen, ist aber hübsch anzusehen). Für das Rätsel habe ich ein "Bildformat" gebaut, das nicht die Positionen der schwarzen Pixel speichert, sondern die Abstände eben dieser zueinander. Das Programm rechnet aus der Matrix in der Datei dist.mat dann die Positionen zurück.

Zitat:

Zitat von frieder2008 (Beitrag 1090019)
Also visualisieren würde ich gerne bis zu 3000 Wörter unter Berücksichtigung ihrer jeweils bis zu 3 ähnlichsten anderen Wörter.

Das reicht für das Verfahren nicht - da wird schon eine halbwegs volle Matrix benötigt, also auch die Ähnlichkeit sehr unterschiedlicher Wörter. Und bei 3000 Wörtern dauert das auch ein paar Minuten. ;-)

Jumpy 21. Mär 2011 12:04

AW: Visualisierung von von Daten
 
Ist denn diese Ähnlichkeitsfunktion Kommutativ oder wie das heißt, d.h. ist die Ähnlichkeit von Wort1 zu Wort2 die selbe wie die Ähnlichkeit von Wort2 zu Wort1?

Wenn Wort1 und 2 sehr sehr ähnlich sind: Dann angenommen Wort 3 und 4 die nächstähnlichen zu Wort1. Sind sie dann auch die nächstähnlichen zu Wort2?

Das kann man mMn doch nicht mehr schön darstellen, oder hab ich das mit dem visualisieren falsch verstanden? Geht es um Cluster-Bildung?

frieder2008 21. Mär 2011 13:23

AW: Visualisierung von von Daten
 
Ich
Zitat:

Zitat von Jumpy (Beitrag 1090029)
Ist denn diese Ähnlichkeitsfunktion Kommutativ oder wie das heißt, d.h. ist die Ähnlichkeit von Wort1 zu Wort2 die selbe wie die Ähnlichkeit von Wort2 zu Wort1?

Wenn Wort1 und 2 sehr sehr ähnlich sind: Dann angenommen Wort 3 und 4 die nächstähnlichen zu Wort1. Sind sie dann auch die nächstähnlichen zu Wort2?

Ich habe 3 Werte; Ähnlichkeit A:Wort1->Wort2, B:Wort2->Wort1, C:A+B/2 - D.h. Ein Wort kann einen ähnlichen Kotext wie ein anderes haben, muss aber nicht umgekehrt sein.

Gruß,
frieder

frieder2008 21. Mär 2011 14:24

AW: Visualisierung von von Daten
 
Zitat:

Zitat von Gausi (Beitrag 1090026)
Das reicht für das Verfahren nicht - da wird schon eine halbwegs volle Matrix benötigt, also auch die Ähnlichkeit sehr unterschiedlicher Wörter. Und bei 3000 Wörtern dauert das auch ein paar Minuten. ;-)

Hm, ich verstehe; das ist ein interessanter Ansatz, wobei ich noch nicht wirklich weiß, ob ich den codetechnisch hinbekomme. Ich versuchs mal und melde mich, wenn ich nicht mehr weiter komme.

Danke und Gruß,
frieder


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz