Pregunta

Contexto

Mis preguntas

  • ¿Hay un algoritmo disponible que haga lo que hace Wordle?
  • Si no, ¿cuáles son algunas alternativas que producen tipos similares de resultados?

¿Por qué pregunto?

  • solo curioso
  • quiero aprender
¿Fue útil?

Solución

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:

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

Eso es todo. La parte difícil es hacer las pruebas de intersección de manera eficiente, para lo cual utilizo el almacenamiento en caché de último golpe, cuadros de límite jerárquicos y un índice espacial de quadtree (todo lo cual es algo sobre lo que puede aprender más con algunos búsqueda diligente).

Editar: como Reto Aebersold señaló, ahora hay un capítulo de libro, disponible gratuitamente, que cubre este mismo territorio: Hermosa visualización, Capítulo 3: Wordle

Otros consejos

He implementado un algoritmo como lo describe Jonathan Feinberg usando Python para crear una nube de etiquetas. Está lejos de las hermosas nubes de wordle.net, pero le da una idea de cómo podría hacerse.

Puede encontrar el proyecto aquí .

He creado un componente Silverlight que utiliza el algoritmo que Jonathan sugiere aquí. El código fuente y los proyectos de ejemplo están disponibles en mi blog:

http://whydoidoit.com

Nube de palabras de color

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.

Ejemplo de nube de palabras

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

Estoy trabajando en WordCram , una biblioteca de procesamiento para crear 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.

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.

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 Encontré aquí (especialmente la explicación de Jonathan y el enlace de aeby), finalmente pude implementar ' Cloudio ', que se acerca relativamente a wordle (en 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 Eclipse- complementos o aplicaciones RCP. 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 (y realicé 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

Aquí puede ver mi implementación de Wordle como en 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

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

 Una nube de palabras del libro bíblico de Apocalipsis

Tengo un generador de Tag Cloud aquí, al que llamo Desorganizador :)

Fuentes TagCloudService y el razor markup control y un WinForm para fines de prueba que puedes poner en tu blog, perfil, etc., con un pequeño envoltorio alrededor. Utiliza C # 4.0 & Amp; System.Drawing namespace fuertemente.

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 etiquetas <a> superpuestas y posicionadas absolutamente) 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á incompleto y en un sitio incompleto. Contácteme si alguien quiere contribuir, continuaré separándolo lo antes posible.

Aquí hay otra implementación de extremo a extremo 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.

 Macbeth

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top