Contexto
- Echa un vistazo a Wordle: http://www.wordle.net/
- Se ve mucho mejor que cualquier otro generador de nube de palabras que haya visto
- Nota: la fuente no está disponible; lea las preguntas frecuentes: http://www.wordle.net/faq#code
Mis preguntas
- ¿Hay un algoritmo disponible que haga lo que hace Wordle?
- Si no, ¿cuáles son algunas alternativas que producen tipos similares de salida?
Por qué estoy preguntando
- Sólo curioso
- querer aprender
Respuestas:
Soy el creador de Wordle. Así es como funciona realmente Wordle:
Cuente las palabras, deseche las palabras aburridas y ordene por la cuenta, descendiendo. Mantenga las N palabras principales para algunos N. Asigne a cada palabra un tamaño de fuente proporcional a su recuento. Genere una forma Java2D para cada palabra, utilizando la API Java2D.
Cada palabra "quiere" estar en algún lugar, como "en alguna posición x aleatoria en el centro vertical". En orden decreciente de frecuencia, haga esto para cada palabra:
Eso es. El duro parte es hacer las pruebas de intersección de manera eficiente, para lo cual uso el almacenamiento en caché de último golpe, los cuadros de delimitación jerárquica y un índice espacial quadtree (todos los cuales son cosas sobre las que puede aprender más con un poco de búsqueda diligente).
Editar: como señaló Reto Aebersold, ahora hay un capítulo de libro, disponible gratuitamente, que cubre este mismo territorio: Beautiful Visualization, Capítulo 3: Wordle
fuente
Aquí hay un javascript realmente bueno de Jason Davies que usa d3. Incluso puedes usar webfonts con él.
Demostración: http://www.jasondavies.com/wordcloud/
Github: https://github.com/jasondavies/d3-cloud
fuente
Implementé un algoritmo como lo describe Jonathan Feinberg usando Python para crear una nube de etiquetas. Está muy lejos de las hermosas nubes de wordle.net, pero le da una idea de cómo podría hacerse.
Puedes encontrar el proyecto aquí .
fuente
He creado un componente Silverlight que usa el algoritmo que Jonathan sugiere aquí. El código fuente y los proyectos de ejemplo están disponibles en mi blog:
http://whydoidoit.com
Mi nube le permite colorear y dimensionar palabras según diferentes ponderaciones y admite la selección de palabras (desde una coordenada) y el resaltado de palabras seleccionadas. La fuente es suya para usarla como mejor le parezca.
fuente
Estoy trabajando en WordCram , una biblioteca de procesamiento para hacer nubes de palabras. Está bastante influenciado por Wordle, y está informado por el mismo PDF aeby vinculado anteriormente. Maneja la detección de colisión por usted y le permite enfocarse en cómo desea que sus palabras sean presentadas, coloreadas, rotadas, etc.
fuente
http://code.google.com/apis/visualization/documentation/gallery.html
Echa un vistazo a la palabra nube de visualización. No es tan elegante como wordle.net pero es muy fácil de agregar a su sitio.
fuente
Estaba buscando una visualización similar a una palabra que permitiera asignar color, posición inicial y tamaño de una Cadena relacionada con otros datos, como la relevancia dentro de un texto, no encontré nada, pero gracias a la información que encontré aquí (Especialmente la explicación de Jonathan y el enlace de aeby), finalmente pude implementar ' Cloudio ', que se acerca relativamente a Wordle (al menos eso creo ...) y ofrece las características que estaba buscando.
Se implementa con SWT y JFace, y traté de integrarlo en el modelo MVC de JFace, de modo que pueda configurar proveedores de contenido y etiquetas para modificar el diseño de una nube y agregarlo a otros complementos de Eclipse o RCP aplicaciones También puede modificar la forma en que se calcula la posición inicial de una cadena, de modo que no sea difícil usarla para la visualización del clúster o de lo contrario. Todavía está poco documentado y limitado de alguna manera (e hice la carga inicial hace unas horas, por lo que aún puede ser un poco defectuoso), pero si está interesado, aquí está el enlace:
Y aquí hay un enlace a algunas nubes creadas, en caso de que desee una impresión rápida: https://github.com/sschwieb/Cloudio/wiki/Example-Clouds
Saludos, Stephan
fuente
Aquí puede ver mi implementación de Wordle como la nube. Utiliza el mismo algoritmo espiral y la estructura de datos QuadTree.
http://sourcecodecloud.codeplex.com
o
http://www.codeproject.com/Articles/224231/Word-Cloud-Tag-Cloud-Generator-Control-for-NET-Win
fuente
Lion and Lamb es una aplicación iOS de código abierto que crea nubes de palabras usando las palabras más frecuentes de un libro elegido de la Biblia.
Se basa en el algoritmo descrito por Jonathan Feinberg. La prueba de impacto utiliza un árbol cuádruple, pero los cuadros delimitadores se basan en el rectángulo delimitador del glifo. Quiero dividir el glifo en muchos rectificadores de límite más pequeños para permitir la colocación de palabras dentro del cuadro delimitador de un glifo.
GitHub: https://github.com/PetahChristian/LionAndLamb
fuente
Tengo un generador de Tag Cloud aquí, al que llamo Desorganizador :)
Fuentes TagCloudService y el control de marcado de la maquinilla de afeitar y un WinForm para fines de prueba que puede poner en su blog, perfil, etc., con un pequeño envoltorio alrededor. Utiliza C # 4.0 y System. Dibuja mucho el espacio de nombres.
Lo creé porque con los otros generadores de nubes no puede hacer clic en las etiquetas para navegar y no puede crear animaciones de desplazamiento, para mostrar que se puede hacer clic. Dado que mostrar animación de desplazamiento en HTML es necesario para mí (lo estoy haciendo con superposición, posición absoluta
<a>
etiquetas ) No he desarrollado ninguna visualización de palabras en ángulo: son verticales u horizontales.Advertencia: los enlaces anteriores pueden dejar de ser válidos en unos pocos meses, planeo desatarlo lentamente del proyecto circundante en un proyecto separado.
Puede ver una demostración en funcionamiento en esta publicación de blog de muestra , pero está incompleta y en un sitio incompleto. Contácteme si alguien quiere contribuir, continuaré separándolo lo antes posible.
fuente
Aquí es otra de extremo a extremo implementación de wordle en Python 3 basada en gran medida en el esquema inicial de Jonathan Feinberg (QuadTrees, espirales, etc.).
El código (comentado, con el archivo Léame detallado) está disponible gratuitamente en este repositorio de Github y este es un wordle de muestra creado con el código.
fuente
Hay una pequeña y bonita biblioteca de JavaScript hecha por Tim Dream:
https://github.com/timdream/wordcloud2.js/blob/gh-pages/API.md
Puede crear una nube de palabras en un lienzo o con etiquetas HTML con muchas opciones para modificar el resultado. Se acerca mucho a la salida de Wordle.
fuente