Question

Contexte

Mes questions

  • Existe-t-il un algorithme disponible qui fait ce que Wordle fait ?
  • Si non, quelles sont les alternatives qui produisent des types de résultats similaires ?

Pourquoi je demande

  • juste curieux
  • vouloir apprendre
Était-ce utile?

La solution

Je suis le créateur de Wordle.Voici comment Wordle fonctionne réellement :

Comptez les mots, jetez les mots ennuyeux et triez par nombre, par ordre décroissant.Gardez les N premiers mots pour certains N.Attribuez à chaque mot une taille de police proportionnelle à son nombre.Générez une forme Java2D pour chaque mot, à l'aide de l'API Java2D.

Chaque mot « veut » être quelque part, par exemple « à une position x aléatoire dans le centre vertical ».Par ordre décroissant de fréquence, faites ceci pour chaque mot :

place the word where it wants to be
while it intersects any of the previously placed words
    move it one step along an ever-increasing spiral

C'est ça.Le dur une partie consiste à effectuer efficacement les tests d'intersection, pour lesquels j'utilise la mise en cache du dernier coup, des cadres de délimitation hiérarchiques et un index spatial quadtree (qui sont autant de choses sur lesquelles vous pouvez en apprendre davantage avec une recherche assidue sur Google).

Modifier:Comme Reto Aebersold l'a souligné, il existe désormais un chapitre de livre, disponible gratuitement, qui couvre ce même territoire : Belle visualisation, chapitre 3 :Mot

Autres conseils

J'ai implémenté un algorithme tel que décrit par Jonathan Feinberg en utilisant Python pour créer un nuage de tags.C'est loin des beaux nuages ​​de wordle.net mais cela vous donne une idée de comment cela pourrait être fait.

Vous pouvez trouver le projet ici.

J'ai créé un composant Silverlight qui utilise l'algorithme suggéré par Jonathan ici.Le code source et les exemples de projets sont tous disponibles sur mon blog :

http://pourquoidoidoit.com

Color word cloud

Mon cloud vous permet de colorer et de dimensionner les mots en fonction de différentes pondérations et prend en charge la sélection de mots (à partir d'une coordonnée) et la mise en surbrillance des mots sélectionnés.Vous pouvez utiliser la source comme bon vous semble.

Example Word Cloud

Voici un très joli javascript de Jason Davies qui utilise d3.Vous pouvez même utiliser des polices Web avec.

Démo :http://www.jasondavies.com/wordcloud/

GitHub :https://github.com/jasondavies/d3-cloud

je travaille sur WordCram, une bibliothèque de traitement pour créer des nuages ​​de mots.Il est assez fortement influencé par Wordle et est informé par le même PDF lié ci-dessus.Il gère la détection des collisions pour vous et vous permet de vous concentrer sur la façon dont vous souhaitez que vos mots soient disposés, colorés, pivotés, etc.

http://code.google.com/apis/visualization/documentation/gallery.html

Découvrez la visualisation du nuage de mots.Pas aussi sophistiqué que wordle.net mais très facile à ajouter à votre site.

Je cherchais une visualisation de type mot qui permettrait d'attribuer la couleur, la position initiale et la taille d'une chaîne liée à d'autres données, comme la pertinence dans un texte - je n'ai rien trouvé, mais grâce aux informations que j'ai trouvées ici (Surtout l'explication de Jonathan et le lien d'aeby), j'ai enfin pu implémenter 'Cloudio', qui se rapproche relativement de wordle (du moins je le pense...) et offre les fonctionnalités que je recherchais.

Il est implémenté avec SWT et JFace, et j'ai essayé de l'intégrer dans le modèle MVC de JFace, de sorte que vous puissiez configurer les fournisseurs de contenu et d'étiquettes pour modifier la présentation d'un cloud et l'ajouter à d'autres plugins Eclipse ou RCP. applications.Vous pouvez également modifier la façon dont la position initiale d'une chaîne est calculée, de sorte qu'il ne soit pas difficile de l'utiliser pour la visualisation de cluster ou autre.Il est encore mal documenté et limité à certains égards (et j'ai fait le téléchargement initial il y a quelques heures, donc il est peut-être encore un peu buggé), mais si vous êtes intéressé, voici le lien :

Et voici un lien vers quelques nuages ​​créés, au cas où vous voudriez une impression rapide : https://github.com/sschwieb/Cloudio/wiki/Example-Clouds

Bravo, Stephan

Voir ici mon implémentation de Wordle comme cloud.Il utilise le même algorithme en spirale et la structure de données QuadTree.

http://sourcecodecloud.codeplex.com

ou

http://www.codeproject.com/Articles/224231/Word-Cloud-Tag-Cloud-Generator-Control-for-NET-Win

Lion and Lamb est une application iOS open source qui crée des nuages ​​de mots en utilisant les mots les plus fréquents d'un livre choisi de la Bible.

Il est basé sur l'algorithme décrit par Jonathan Feinberg.Les tests de frappe utilisent un arbre quadruple, mais les cadres de délimitation sont basés sur le rectangle de délimitation du glyphe.Je souhaite diviser le glyphe en plusieurs rectangles de délimitation plus petits pour permettre le placement des mots dans le cadre de délimitation d'un glyphe.

GitHub : https://github.com/PetahChristian/LionAndLamb

A word cloud of the Bible book of Revelation

J'ai ici un générateur de Tag Cloud, que j'appelle Désorganisateur :)

Sources TagCloudServiceet le contrôle du balisage du rasoir et un WinForm à des fins de testque vous pouvez mettre dans votre blog, profil, etc., avec un petit emballage autour.Il utilise fortement l’espace de noms C# 4.0 et System.Drawing.

Je l'ai créé car avec les autres générateurs de cloud, vous ne pouvez pas cliquer sur les balises pour naviguer et vous ne pouvez pas créer d'animations de survol pour montrer qu'elles sont cliquables.Puisqu'il est nécessaire pour moi d'afficher une animation de survol en HTML (je le fais avec des éléments superposés et positionnés de manière absolue) <a> balises) Je n'ai pas développé d'affichage de mots sous n'importe quel angle - ils sont verticaux ou horizontaux.

Attention : les liens ci-dessus peuvent devenir invalides dans quelques mois, je prévois de les détacher progressivement du projet environnant dans un projet distinct.

Vous pouvez voir une démo fonctionnelle sur cet exemple d'article de blog, mais il est incomplet, et dans un site incomplet.Contactez-moi si quelqu'un souhaite contribuer, je procéderai à la séparation dès que possible.

En voici encore un autre de bout en bout implémentation de wordle dans Python3 largement basé sur l'esquisse initiale de Jonathan Feinberg (QuadTrees, spirales, etc.).

Le code (commenté, avec fichier ReadMe détaillé) est disponible gratuitement sur ce site. Dépôt Github et ceci est un exemple de mot créé avec le code.

Macbeth

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top