Contexto
- Dê uma olhada no Wordle: http://www.wordle.net/
- É muito mais bonito do que qualquer outro gerador de nuvem de palavras que eu já vi
- Nota: a fonte não está disponível - leia o FAQ: http://www.wordle.net/faq#code
Minhas perguntas
- Existe um algoritmo disponível que faça o que o Wordle faz?
- Se não, quais são algumas alternativas que produzem tipos semelhantes de saída?
Por que estou perguntando
- apenas curioso
- quero aprender
Respostas:
Eu sou o criador do Wordle. Veja como o Wordle realmente funciona:
Conte as palavras, jogue fora as palavras chatas e classifique pela contagem, descendo. Mantenha as N palavras principais por um número N. Atribua a cada palavra um tamanho de fonte proporcional à sua contagem. Gere um Java2D Shape para cada palavra, usando a API Java2D.
Cada palavra "quer" estar em algum lugar, como "em alguma posição aleatória x no centro vertical". Em ordem decrescente de frequência, faça o seguinte para cada palavra:
É isso aí. A parte difícil é fazer o teste de interseção com eficiência, para o qual eu uso o cache de última ocorrência, caixas delimitadoras hierárquicas e um índice espacial de quadtree (todas as coisas sobre as quais você pode aprender mais com alguns investigadores diligentes).
Edit: Como Reto Aebersold apontou, agora existe um capítulo do livro, disponível gratuitamente, que cobre o mesmo território: Beautiful Visualization, Chapter 3: Wordle
fonte
Aqui está um javascript muito bom de Jason Davies que usa d3. Você pode até usar webfonts com ele.
Demonstração: http://www.jasondavies.com/wordcloud/
Github: https://github.com/jasondavies/d3-cloud
fonte
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 idéia de como isso pode ser feito.
Você pode encontrar o projeto aqui .
fonte
Eu criei um componente Silverlight que usa o algoritmo que Jonathan sugere aqui. O código fonte e os exemplos de projetos estão disponíveis no meu blog:
http://whydoidoit.com
Minha nuvem permite colorir e dimensionar palavras com base em diferentes ponderações e suporta a seleção de palavras (a partir de uma coordenada) e o realce de palavras selecionadas. A fonte é sua para usar como achar melhor.
fonte
Estou trabalhando no WordCram , uma biblioteca de Processamento para criar nuvens de palavras. É bastante influenciado pelo Wordle e é informado pelo mesmo PDF vinculado acima. Ele lida com a detecção de colisão e permite que você se concentre em como deseja que suas palavras sejam dispostas, coloridas, giradas etc.
fonte
http://code.google.com/apis/visualization/documentation/gallery.html
Confira a visualização em nuvem de palavras. Não é tão chique quanto o wordle.net, mas é muito fácil de adicionar ao seu site.
fonte
Eu estava procurando por uma visualização semelhante a uma palavra 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 encontrou nada, mas graças às informações que encontrei aqui (Especialmente a explicação de Jonathan e o link de aeby), finalmente pude implementar o ' Cloudio ', que fica relativamente próximo do wordle (pelo menos acho que sim ...) e oferece os recursos que eu estava procurando.
Ele é implementado com SWT e JFace e tentei integrá-lo ao modelo MVC do JFace, para que você possa configurar provedores de conteúdo e rótulo para modificar o layout de uma nuvem e adicioná-lo a outros plug-ins ou RCP do Eclipse. aplicativos. Você também pode modificar a maneira como a posição inicial de uma string é calculada, de modo que não seja difícil usá-la para visualização de cluster ou então. Ele ainda está mal documentado e limitado de algumas maneiras (e eu fiz o upload inicial algumas horas atrás, por isso ainda pode ser um pouco complicado), 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
Cheers, Stephan
fonte
Aqui, veja minha implementação do Wordle como nuvem. Ele usa o mesmo algoritmo espiral e a estrutura de dados QuadTree.
http://sourcecodecloud.codeplex.com
ou
http://www.codeproject.com/Articles/224231/Word-Cloud-Tag-Cloud-Generator-Control-for-NET-Win
fonte
Lion and Lamb é um aplicativo iOS de código aberto que cria nuvens de palavras usando as palavras mais frequentes de um livro escolhido da Bíblia.
É baseado no algoritmo descrito por Jonathan Feinberg. O teste de acerto utiliza uma árvore quádrupla, mas as caixas delimitadoras são baseadas no retângulo delimitador do glifo. Eu quero dividir o glifo em várias linhas delimitadoras menores para permitir o posicionamento da palavra na caixa delimitadora de um glifo.
GitHub: https://github.com/PetahChristian/LionAndLamb
fonte
Eu tenho um gerador de nuvem de tags aqui, que chamo de desorganizador :)
Fontes TagCloudService e o controle de marcação de barbear e um WinForm para fins de teste que você pode colocar em seu blog, perfil etc., com um pequeno invólucro. Ele usa o namespace C # 4.0 e System.Drawing fortemente.
Eu o criei porque, com os outros geradores de nuvem, você não pode clicar nas tags para navegar e não pode criar animações flutuantes, para mostrar que elas são clicáveis. Como mostrar a animação instantânea em HTML é necessária para mim (estou fazendo isso com
<a>
tags sobrepostas e absolutamente posicionadas ), não desenvolvi a exibição de palavras em nenhum ângulo - elas são verticais ou horizontais.Aviso: os links acima podem ficar inválidos em alguns meses, pretendo desatá-lo lentamente do projeto ao redor em um projeto separado.
Você pode ver uma demonstração funcional nesta postagem de blog de exemplo , mas está incompleta e em um site incompleto. Entre em contato comigo se alguém quiser contribuir, vou continuar separando o mais rápido possível.
fonte
Aqui está mais uma implementação de ponta a ponta do wordle no Python 3, amplamente baseada no esboço inicial de Jonathan Feinberg (QuadTrees, espirais etc.).
O código (comentado, com arquivo Leia-me detalhado) está disponível gratuitamente neste repositório do Github e este é um exemplo de wordle criado com o código.
fonte
Existe uma pequena e agradável biblioteca JavaScript criada por Tim Dream:
https://github.com/timdream/wordcloud2.js/blob/gh-pages/API.md
Ele pode criar uma nuvem de palavras em uma tela ou com tags HTML com muitas opções para modificar o resultado. Ele chega muito perto da saída do wordle.
fonte