Eu sou o criador do Wordle. Veja como o Wordle realmente funciona:
Conte as palavras, jogue fora palavras chatas e classifique pela contagem, descendo. Mantenha as N palavras mais importantes para alguns N. Atribua a cada palavra um tamanho de fonte proporcional à sua contagem. Gere uma Forma Java2D para cada Word, usando a API Java2D.
Cada palavra "quer" estar em algum lugar, como "em alguma posição x aleatória no centro vertical". Em ordem decrescente de freqüência, faça isso para cada palavra:
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
É isso aí. A parte hard está em fazer o teste de interseção eficientemente, para o qual eu uso cache de última ocorrência, caixas delimitadoras hierárquicas e um índice espacial quadtree (todos os quais são coisas sobre as quais você pode aprender mais com algum googling diligente).
Edit: Como Reto Aebersold apontou, há agora um capítulo de livro, disponível gratuitamente, que cobre este mesmo território: Bela Visualização, Capítulo 3: Wordle
Eu implementei um algoritmo como descrito por Jonathan Feinberg usando python para criar uma nuvem de tags. Está longe das belas nuvens do wordle.net, mas dá uma ideia de como isso pode ser feito.
Você pode encontrar o projeto aqui .
Aqui está um muito bom javascript um de Jason Davies, que usa d3. Você pode até usar webfonts com ele.
Demonstração: http://www.jasondavies.com/wordcloud/
Eu criei um componente do Silverlight que usa o algoritmo que Jonathan sugere aqui. O código fonte e exemplos de projetos estão disponíveis no meu blog:
Minha nuvem permite colorir e dimensionar palavras com base em pesos diferentes e oferece suporte à seleção de palavras (de uma coordenada) e ao realce selecionado do Word. A fonte é sua para usar como achar melhor.
Eu estou trabalhando em WordCram , uma biblioteca de processamento para fazer nuvens do Word. É muito fortemente influenciado pelo Wordle, e é informado pelo mesmo PDF por meio do link acima. Ele lida com a detecção de colisão para você e permite que você se concentre em como deseja que suas palavras sejam exibidas, coloridas, giradas etc.
http://code.google.com/apis/visualization/documentation/gallery.html
Confira a visualização da nuvem do Word. Não é tão chique quanto o wordle.net, mas muito fácil de adicionar ao seu site.
Eu estava procurando por uma visualização parecida com um wordle que permitisse atribuir cor, posição inicial e tamanho de uma String relacionada a outros dados, como a relevância em um texto - não encontrei nada, mas graças às informações que encontrei aqui (Especialmente a explicação de Jonathan e o link de aeby), eu poderia finalmente implementar ' Cloudio ', que vem relativamente perto do wordle (pelo menos eu acho que sim ...) e oferece os recursos que eu estava procurando.
Ele é implementado com SWT e JFace e tentei integrá-lo ao MVC-model do JFace, de modo que você possa definir provedores de conteúdo e rótulo para modificar o layout de uma nuvem e adicioná-lo a outros plug-ins do Eclipse ou RCP. apps. Você também pode modificar a forma como a posição inicial de uma string é calculada, de tal forma que não é difícil usá-la para visualização de cluster ou outra coisa. Ele ainda é mal documentado e limitado de algumas maneiras (e eu fiz o upload inicial há algumas horas, então ainda pode ser um pouco bugs), mas se você estiver interessado, aqui está o link:
E aqui está um link para algumas nuvens criadas, caso você queira uma impressão rápida: https://github.com/sschwieb/Cloudio/wiki/Example-Clouds
Felicidades, Stephan
Aqui veja minha implementação do Wordle como nuvem. Ele usa o mesmo algoritmo espiral e a estrutura de dados do QuadTree.
http://sourcecodecloud.codeplex.com
ou
http://www.codeproject.com/Articles/224231/Word-Cloud-Tag-Cloud-Generator-Control-for-NET-Win
Eu tenho um gerador de Tag Cloud aqui, que eu chamo de Disorganizer :)
Fontes TagCloudService e o controle de marcação razor e um WinForm para fins de teste que você pode colocar em seu blog, perfil etc, com um pequeno wrapper isto. Ele usa fortemente o namespace C # 4.0 e System.Drawing.
Eu o criei porque, com os outros geradores de nuvens, você não pode clicar em tags para navegar e não pode criar animações instantâneas, para mostrar que elas são clicáveis. Já que mostrar animação em hover em HTML é necessário para mim (estou fazendo isso com tags <a>
sobrepostas e absolutamente posicionadas), eu não desenvolvi nenhuma exibição de palavra em ângulo - elas são verticais ou horizontais.
Aviso: Os links acima podem ficar inválidos em alguns meses, planejo desatá-lo lentamente do projeto ao redor em um projeto separado.
Você pode ver uma demonstração de trabalho neste exemplo de postagem de blog , mas ela está incompleta e em um site incompleto. Contacte-me se alguém quiser contribuir, vou continuar separando-o o mais cedo possível.
O Lion and Lamb é um aplicativo para iOS de código aberto que cria nuvens do Word usando as palavras mais frequentes de um livro da Bíblia escolhido.
É baseado no algoritmo descrito por Jonathan Feinberg. O teste de hits utiliza uma árvore quádrupla, mas as caixas delimitadoras são baseadas no retângulo delimitador do glifo. Eu quero dividir o glifo em muitos rectos menores para ativar o posicionamento do Word dentro da caixa delimitadora de um glifo.
Aqui está outra implementação ponta-a-ponta do wordle em Python 3 largamente baseado no esboço inicial de Jonathan Feinberg (QuadTrees, espirais, etc.).
O código (comentado, com o arquivo LeiaMe detalhado) está disponível gratuitamente neste repositório Github e este é um exemplo criado com o código.