Informatik

Liebe/-r wer-weiss-was Experte/-in,

Zuerst mal ein freundliches Hallo!

Ich bin 17 Jahre alt, und mache gerade ein Ferialpraktikum bei einer Softwarefirma. Meine Aufgabe ist es, eine konzeptionelle Arbeit über Tag Clouds zu schreiben. Programmieren an sich ist dabei nicht meine Aufgabe.
Ich erbitte eure geschulten Gehirne, meine Verwirrung bezüglich der Formeln aufzulösen.

Tag Clouds werdet ihr vielleich kennen; es handelt sich um sogennante Schlagwortwolken (schauderhafte Übersetzung).
Eine Tag Cloud greift auf ein System zu, auf dem Tags/Stichworte gespeichert sind (so wie Flickr, Delicioso, Technorati,…) und stellt die Tags, gemäß einer Hierarchie dann unterschiedlich groß (oder farbig, oder unterstrichen,…) dar.
Die Hierarchie der Tags kommt bei einer klassischen Tag Cloud durch die Häufigkeit des Tags im System zustande = Häufigere Tags sollen größer dargestellt werden.

Ich habe nun schon viel im Internet recherchiert, und finde verschiedenste Formeln, die von der Größenverteilung, dann wieder von Interpolation (ist das in dem Fall das selbe?), und von logarithmischen Tag Clouds reden.
Wenn ich die Formeln einzeln sehe, ergeben sie auch Sinn, nur schaffe ich es nicht, das ganze in einen Kontext zu bringen.
Auf jeder Seite scheinen andere Formeln zu stehen, und ich kann sie einfach nicht in Einklang miteinander bringen!
Was mir fehlt, ist ein ÜBERBLICK.

Meine Fragen drehen sich dabei weniger um das Programmieren an sich, sondern rein um die mathematischen Überlegungen hinter einer Tag Cloud

Kann mir irgendjemand sagen:

  1. Was muss generell mathematisch in einer Tag Cloud geschehen?

  2. Welche Formeln brauche ich in einer Tag Cloud umbedingt?

  3. Was ist der genaue Unterschied zwischen einer linearen und einer logarithmischen Tag Cloud?

  4. Was hat eine Tag Cloud mid Interpolation zu tun?

  5. Brauche ich eine eigene Formel um die „Gewichtung“ der Tags zu ermitteln, oder soll ich als Gewicht die pure Häufigkeit nehmen? Gibt es hier mehrere Möglichkeiten?

  6. Brauche ich eine oder zwei Formeln um die Gewichtung des Tags und dessen Größe in der Tag Cloud zu berechnen?

Ich hoffe, die Fragen erscheinen nicht zu plump und naiv. Ich bin dankbar für jede Antwort oder Information zum Thema Tag Cloud Mathematik.

Liebe/-r wer-weiss-was Experte/-in,

Zuerst mal ein freundliches Hallo!

Hallo!

Tag Clouds werdet ihr vielleich kennen; es handelt sich um
sogennante Schlagwortwolken (schauderhafte Übersetzung).

Habe zwar nie mit Tag Clouds gearbeitet, aber die mathematischen Grundlagen kann ich dir dazu wohl etwas erklären.

Wie du ja schon sagtest, arbeiten Tag Clouds auf absoluten Häufigkeiten, also zB der Anzahl wie oft ein Gegenstand einer Datenbank mit einem Schlagwort verbunden wird. Nehmen wir dazu als Beispiel eine Filmdatenbank, in der einzelne Filmtitel mit Beschreibung/Beurteilung abgelegt werden, und dann einem oder mehreren Genres zugeordnet werden können. Die Tags (in diesem Fall also die Genres, zB Action/Drama/Sci-Fi/…) dienen hierbei als Navigationshilfe, da sie Filme in Genres einteilen. Stellt man nun die einzelnen Genres über ihre absolute Häufigkeit dar, so bekommt man ein „Histogramm“, das für jedes Genre die Anzahl der Filme angibt, die diesem Genre zugeordnet wurden. Zu beachten ist, dass ein Film auch mehreren Genres zugeordnet werden kann, weshalb absolute Häufigkeiten (die Anzahl der Verlinkungen) benutzt werden.
Tag-Clouds nehmen nun den Raum der Schlagwörter (man hat also in dem Sinne ein Schlagwort-Wörterbuch) und versuchen diese über ihre Häufigkeiten in Bezug zueinander zu setzen, um damit eine Hierarchie - also eine Ordnung - aufzubauen, die es einem Benutzer möglich machen soll über diese Schlagwörter zu Navigieren bzw Suchanfragen zu beantworten.

  1. Was muss generell mathematisch in einer Tag Cloud
    geschehen?

Die Tag-Cloud nimmt einen Eintrag aus dem Schlagwort-Wörterbuch und berechnet (wenn dies nicht schon on-the-fly mit neuen Einträgen gemacht wurde) die Anazhl seines Vorkommens über die zugrundeligende Datenbank. Dies wird für jeden Tag gemacht.
Bei der Darstellung in einer Tag-Cloud werden nun die absoluten Häufigkeiten einzelner Tags in Relation zueinander gesetzt. Diese Repräsentation kann, wie du schon sagtest, mit verschiedenen Mitteln wie Schriftgröße/Farbe/Formatierung/… erzielt werden.
Angenommen wir stellen mit Schriftgrößen dar und haben 4 verschiedene Größen zur Verfügung. Das heißt, dass wir den Raum der Häufigkeiten auf den Raum der Schriftgrößen abbilden. Diese Abbildung ist i.A. nicht invertierbar, da die Eingangsdaten einen größeren Wertebereich repräsentieren, und damit eine Daten-/Informationsreduktion stattfindet. Hierzu weiter mit dem Beispiel: Häufigkeiten im Intervall [a,b] werden auf 4 Schriftgrößen reduziert. Nehmen wir an, wir haben 10 verschiedene Genres die wir darstellen wollen, und jedes Genre hat eine absolute Häufigkeit Pa(i) : i=1,…,10.
Action: Pa(1) = 197 mal in DB
Drama: Pa(2) = 123 mal in DB
Sci-Fi: Pa(3) = 69 mal in DB

Wollen wir diese Hierarchie nun linear, also gleichmäßig-verteilt aufbauen, so teilen wir den Bereich der Häufigkeiten durch die Anzahl der Schriftarten, Bsp.:
Häufigkeiten min: 0, max: 200
0-50: kleinste Schriftgröße (z.B. 10)
51-100: Schriftgröße 15
101-150: Schriftgröße 20
151-200: Schriftgröße 25
Dies ist jedoch (abhängig davon welche Häufigkeiten die einzelnen Genres haben) problematisch, und oft keine geeignete Repräsentation der Daten. Z.B. könnte es sein, dass 9 von den 10 Tags eine Häufigkeit zwischen 0 und 50 haben, und nur das 10te (sagen wir Drama) eine von 190. Damit würde die Tag-Cloud ein Tag hervorheben, und die anderen wären alle gleich groß. Dies wäre keine große Hilfe für den Benutzer, da er damit nur wüßte dass „Drama“ wesentlich öfter vorkommt als die anderen Tags, jedoch nicht in welcher Relation die restlichen Tags zueinander stehen.

  1. Welche Formeln brauche ich in einer Tag Cloud umbedingt?

Die Formel für die lineare Abbildung ist auf Wiki gegeben,
http://de.wikipedia.org/wiki/Schlagwortwolke
sie macht genau das in (1) beschriebene - teilt den Bereich zwischen tmin und tmax in gleich Große Teile (auch Bins genannt) und ordnet diesen Bins Schriftgrößen zu. Ein Tag wird dann über seine Häufigkeit einem Bin zugeordnet, und bekommt damit eine Schriftgröße.

  1. Was ist der genaue Unterschied zwischen einer linearen und
    einer logarithmischen Tag Cloud?

Wie in (1) erwähnt ist die Darstellung der Daten problematisch, je nachdem welche Häufigkeitsverteilung die Daten aufweisen. Deshalb kann man alternativ auch logarithmisch skalieren, was bedeutet dass der Bereich z.B. so aussehen würde:
kleinste Schriftgröße 10: 0-10
Schriftgröße 15: 11-100
Schriftgröße 20: 101-1000
Schriftgröße 25: 1001-10001
Damit bekommt man eine bessere Skalierung für kleinere Werte, da eine lineare Skalierung die Bins in 10000/4 = 2500 teilen würde. Damit hat man also eine bessere Auflösung für den kleinen Wertebereich, auf Kosten der Auflösung im höheren Wertebereich. Man sollte beim Design der Funktion also ca. wissen wie die Daten aufgebaut sind.

  1. Was hat eine Tag Cloud mid Interpolation zu tun?

Interpolation bezeichnet in dem Sinne deine Skalierung bzw die Einteilung in Bins. Da du von einem Minimalwert schrittweise in Richtung Maximalwert unterteilst. In (1) wird zB der Bereich 0-200 durch 4 Werte „interpoliert“, 0 -> 51 -> 101 -> 151 -> 200. Logarithmisch ist das dann wie in (2) 0 -> 11 -> 101 -> 1001 -> 10000.

  1. Brauche ich eine eigene Formel um die „Gewichtung“ der Tags
    zu ermitteln, oder soll ich als Gewicht die pure Häufigkeit
    nehmen? Gibt es hier mehrere Möglichkeiten?

I.A. wird die absolute Häufigkeit genommen, natürlich können auch andere Faktoren in die Formel für die „Wertigkeit“ eines Tags miteinbezogen werden. Hängt wieder davon ab, welche Information die Tag-Cloud darstellen soll, also Design-Frage.

  1. Brauche ich eine oder zwei Formeln um die Gewichtung des
    Tags und dessen Größe in der Tag Cloud zu berechnen?

Denke das wurde zuvor beantwortet.

Grüße,
ziD

Lieber ziD!

Erstmal wow. Mit so einer kompetenten und ausführlichen Erklärung hätte ich wirklich nicht so schnell gerechnet. Das hat mir schon sehr geholfen.
Eine kleine Frage hätte ich allerdings noch zu der Wikipediaformel:
Ich tue mir etwas schwer, in der Formel das zu erkennen, was du in (1) gemacht hast.
Wo bzw. wie unterteilt wikipedia tmin bis tmax (steht doch im nenner??)

und für was genau steht fmax? für die maximale fontgröße in pixel oder für den höchsten bin?

und warum ist als Lösung bei wikipedia si (müsste doch fi sein oder?)

Könntest du die Formel noch etwas genauer erklären?
Tut mir leid, dich nochmals zu belästigen, aber ich scheine bei dir ja eine Goldmine des Wissens gefunden zu haben.

Hallo!

Eine kleine Frage hätte ich allerdings noch zu der
Wikipediaformel:
Ich tue mir etwas schwer, in der Formel das zu erkennen, was
du in (1) gemacht hast.
Wo bzw. wie unterteilt wikipedia tmin bis tmax (steht doch im
nenner??)

Die Formel sieht ja so aus:

si = CEIL[fmax * ((ti - tmin)) / (tmax - tmin))]
= CEIL[fmax * ( Tver / (tmax - tmin)] (1)
= CEIL[fmax * Tskal] (2)

mit ti > tmin, sonst würde 0 oder was negatives rauskommen.

CEIL ist dabei einfach eine Aufrundung. D.h. z.B.
2.8 -> 3
1.1 -> 2
0.0001 -> 1
2 -> 2

Die gesamte Formel macht nun folgendes:

(1) durch (ti - tmin) wird eine Verschiebung des Ursprungs durchgeführt - für ti = tmin ist die Funktion gleich Null, für ti > tmin kommt eine Zahl größer Null raus. Diese steht im Zähler, wir nennen sie Tver.

(2) der Nenner, also (tmax - tmin) skaliert nun den Zähler aus (1) auf den Bereich deiner Häufigkeiten. Anders gesagt: [Tskal := Tver / (tmax - tmin)] drückt ti als einen Anteil des Wertebereichs aus, den deine Häufigkeiten annehmen können. D.h. also nach der Division kommt (sofern ti nicht größer als tmax war) eine Zahl zwischen (0,1] raus.

(3) danach wird Tskal, das im Bereich (0,1] liegt, mit der maximal verfügbaren Schriftgröße multipliziert. D.h. für große ti (nahe an tmax) kommen große Schriftgrößen raus (nahe an fmax), für kleine ti (nahe an tmin) kommen kleine Schriftgrößen raus (nahe an Null).

(4) da man nur ganze Zahlen für Schriftgrößen nehmen kann (man kann i.A. keine halben Pixel darstellen), wird diese reelle Zahl durch CEIL auf eine ganze Zahl aufgerundet.

Insgesamt also einfach eine lineare Skalierung bzw. Transformation der Häufigkeiten auf Schriftgrößen.

Bsp:
tmin sagt, welche minimale Häufigkeit auf die kleinste Schriftgröße abgebildet wird. Wenn man tmin erhöht, also z.B. tmin = 5, so werden Tags die weniger oft vorkommen als 6 [also: ti

hallo
das problem ist ein statistik problem. suche in einem buch über statistik und verteilung.

gruss

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]