Kontext
- Schauen Sie sich Wordle an: http://www.wordle.net/
- Es sieht viel besser aus als alle anderen Wortwolkengeneratoren, die ich gesehen habe
- Hinweis: Die Quelle ist nicht verfügbar. Lesen Sie die FAQ: http://www.wordle.net/faq#code
Meine Fragen
- Gibt es einen Algorithmus, der das tut, was Wordle tut?
- Wenn nein, welche Alternativen führen zu ähnlichen Ausgaben?
Warum ich frage
- nur neugierig
- möchte lernen
Antworten:
Ich bin der Schöpfer von Wordle. So funktioniert Wordle tatsächlich:
Zähle die Wörter, wirf langweilige Wörter weg und sortiere nach der Anzahl, absteigend. Behalten Sie die oberen N Wörter für einige N bei. Weisen Sie jedem Wort eine Schriftgröße zu, die proportional zu seiner Anzahl ist. Generieren Sie mithilfe der Java2D-API eine Java2D-Form für jedes Wort.
Jedes Wort "will" irgendwo sein, beispielsweise "an einer zufälligen x-Position in der vertikalen Mitte". Führen Sie dies in absteigender Reihenfolge der Häufigkeit für jedes Wort aus:
Das ist es. Der schwierige Teil besteht darin, die Kreuzungstests effizient durchzuführen, für die ich Last-Hit-Caching, hierarchische Begrenzungsrahmen und einen räumlichen Quadtree-Index verwende (all dies sind Dinge, über die Sie mit etwas sorgfältigem Googeln mehr lernen können).
Bearbeiten: Wie Reto Aebersold betonte, gibt es jetzt ein frei verfügbares Buchkapitel, das dasselbe Gebiet abdeckt: Schöne Visualisierung, Kapitel 3: Wordle
quelle
Hier ist ein wirklich schönes Javascript von Jason Davies, das d3 verwendet. Sie können damit sogar Webfonts verwenden.
Demo: http://www.jasondavies.com/wordcloud/
Github: https://github.com/jasondavies/d3-cloud
quelle
Ich habe einen von Jonathan Feinberg beschriebenen Algorithmus implementiert, der Python zum Erstellen einer Tag-Cloud verwendet. Es ist weit weg von den schönen Wolken von wordle.net, aber es gibt Ihnen eine Vorstellung davon, wie es gemacht werden könnte.
Das Projekt finden Sie hier .
quelle
Ich habe eine Silverlight-Komponente erstellt, die den hier vorgeschlagenen Algorithmus verwendet. Der Quellcode und Beispielprojekte sind alle in meinem Blog verfügbar:
http://whydoidoit.com
In meiner Cloud können Sie Wörter basierend auf unterschiedlichen Gewichtungen einfärben und dimensionieren. Sie unterstützt die Wortauswahl (aus einer Koordinate) und die Hervorhebung ausgewählter Wörter. Die Quelle liegt bei Ihnen, wie Sie es für richtig halten.
quelle
Ich arbeite an WordCram , einer Verarbeitungsbibliothek zum Erstellen von Wortwolken. Es ist ziemlich stark von Wordle beeinflusst und wird durch dasselbe PDF informiert, das oben verlinkt ist. Es übernimmt die Kollisionserkennung für Sie und ermöglicht es Ihnen, sich darauf zu konzentrieren, wie Ihre Wörter angeordnet, gefärbt, gedreht usw. werden sollen.
quelle
http://code.google.com/apis/visualization/documentation/gallery.html
Schauen Sie sich die Wortwolkenvisualisierung an. Nicht so schick wie wordle.net, aber ganz einfach zu Ihrer Website hinzuzufügen.
quelle
Ich suchte nach einer wortähnlichen Visualisierung, mit der Farbe, Anfangsposition und Größe eines Strings in Bezug auf andere Daten, wie z. B. die Relevanz innerhalb eines Textes, zugewiesen werden können. Ich habe nichts gefunden, aber dank der Informationen, die ich hier gefunden habe (Besonders Jonathans Erklärung und Aebys Link), ich könnte endlich ' Cloudio ' implementieren, das Wordle relativ nahe kommt (zumindest denke ich das ...) und die Funktionen bietet, nach denen ich gesucht habe.
Es ist mit SWT und JFace implementiert, und ich habe versucht, es in das MVC-Modell von JFace zu integrieren, sodass Sie Inhalts- und Label-Anbieter so einstellen können, dass sie das Layout einer Cloud ändern und es anderen Eclipse-Plugins oder RCP hinzufügen Apps. Sie können auch die Art und Weise ändern, in der die Anfangsposition einer Zeichenfolge berechnet wird, sodass es nicht schwierig ist, sie für die Clustervisualisierung oder für andere Zwecke zu verwenden. Es ist immer noch schlecht dokumentiert und in gewisser Weise eingeschränkt (und ich habe den ersten Upload vor einigen Stunden durchgeführt, daher ist es möglicherweise immer noch ein bisschen fehlerhaft), aber wenn Sie interessiert sind, hier der Link:
Und hier ist ein Link zu einigen erstellten Clouds, falls Sie einen schnellen Eindruck wünschen: https://github.com/sschwieb/Cloudio/wiki/Example-Clouds
Prost, Stephan
quelle
Hier sehen Sie meine Implementierung von Wordle wie Cloud. Es verwendet denselben Spiralalgorithmus und die QuadTree-Datenstruktur.
http://sourcecodecloud.codeplex.com
oder
http://www.codeproject.com/Articles/224231/Word-Cloud-Tag-Cloud-Generator-Control-for-NET-Win
quelle
Lion and Lamb ist eine Open-Source-iOS-App, die Wortwolken mit den häufigsten Wörtern aus einem ausgewählten Buch der Bibel erstellt.
Es basiert auf dem von Jonathan Feinberg beschriebenen Algorithmus. Beim Hit-Test wird zwar ein Quad-Baum verwendet, die Begrenzungsrahmen basieren jedoch auf dem Begrenzungsrechteck des Glyphen. Ich möchte die Glyphe in viele kleinere Begrenzungsbereiche aufteilen, um die Wortplatzierung innerhalb des Begrenzungsrahmens einer Glyphe zu ermöglichen.
GitHub: https://github.com/PetahChristian/LionAndLamb
quelle
Ich habe hier einen Tag Cloud Generator, den ich Disorganizer nenne :)
Quellen TagCloudService und das Rasiermesser-Markup-Steuerelement sowie eine WinForm zu Testzwecken , die Sie mit einem kleinen Wrapper in Ihr Blog, Profil usw. einfügen können. Es verwendet stark C # 4.0 & System.Drawing-Namespace.
Ich habe es erstellt, weil Sie mit den anderen Cloud-Generatoren nicht auf Tags klicken können, um zu navigieren, und keine Hover-Animationen erstellen können, um zu zeigen, dass sie anklickbar sind. Da das Anzeigen der Hover-Animation in HTML für mich erforderlich ist (ich mache dies mit überlagerten, absolut positionierten
<a>
Tags), habe ich keine Wortanzeige in einem beliebigen Winkel entwickelt - sie sind entweder vertikal oder horizontal.Warnung: Die oben genannten Links können in einigen Monaten ungültig werden. Ich plane, sie langsam vom umgebenden Projekt in ein separates Projekt zu lösen.
Sie können eine funktionierende Demo in diesem Beispiel-Blog-Beitrag sehen , diese ist jedoch unvollständig und befindet sich auf einer unvollständigen Website. Kontaktieren Sie mich, wenn jemand etwas beitragen möchte. Ich werde es so schnell wie möglich trennen.
quelle
Hier ist noch eine weitere End-to-End- Implementierung von wordle in Python 3, die weitgehend auf dem ursprünglichen Entwurf von Jonathan Feinberg (QuadTrees, Spiralen usw.) basiert.
Der Code (kommentiert, mit detaillierter ReadMe-Datei) ist in diesem Github-Repository frei verfügbar. Dies ist ein Beispielwort, das mit dem Code erstellt wurde.
quelle
Es gibt eine hübsche kleine JavaScript-Bibliothek von Tim Dream:
https://github.com/timdream/wordcloud2.js/blob/gh-pages/API.md
Es kann eine Wortwolke auf einer Leinwand oder mit HTML-Tags mit vielen Optionen zum Ändern des Ergebnisses erstellen. Es kommt der Ausgabe von wordle sehr nahe.
quelle