2009-03-05 16 views
5

Dadas las palabras y sus frecuencias y un área de la pantalla de bienes raíces, ¿cuáles son los buenos enfoques para instalar una nube de etiquetas en el espacio? Las dos variables que se me ocurre para manipular son:Adaptación de la nube de etiquetas al espacio disponible

  • Los tamaños de fuente (tanto absolutas como el gradiente)
  • Número de palabras

enfoque Todo lo que puedo pensar requiere iteración, como el establecimiento de una límite superior en el número de palabras y luego usar búsqueda binaria en tamaños de fuente hasta que las palabras se ajusten al área. Prefiero tener una solución analítica.

Una de las complicaciones de mi situación es que las nubes se pueden cambiar de tamaño, por lo que el algoritmo debe ser capaz de manejar 100x100 píxeles o 1000x1000 píxeles razonablemente bien.

Editar: Debería haber dicho que esto es para una aplicación de cliente enriquecido, no la web (de ahí la posibilidad de cambiar el tamaño). Además, esperaba escuchar alguna experiencia como "nadie mira más de 100 palabras en la nube de etiquetas, así que no te molestes en mostrarlas".

Respuesta

0

Esto suena como knapsack problem, pero se invierte y con más variables. No existe una solución completa trivial, pero es probable que pueda encontrar un algoritmo heurístico que se acerque a la solución óptima en la mayoría de los casos.

PD: Solo puede hacer que esto funcione de manera confiable con tamaños de fuente medidos en píxeles. Los tamaños de fuente medidos en píxeles son Bad Thing (TM) en un buen diseño web.

0

Puede crear un conjunto predeterminado de rangos de incidencia, que luego podrían relacionarse con un tamaño de fuente en su nube. Por ejemplo:

  • 0 - 100: 1 em
  • 101-500: 1,2 em
  • 501-1000: 1,4 em negrita
  • 1001-1500: 1,8 em negrita
  • 1501-2000 : 2.0 em negrita cursiva/subrayado/parpadeando/lo que sea, etc ...

Puede escalar la nube agregando un desplazamiento fijo a todos los rangos según el tamaño del contenedor.

+0

¿Hay alguna forma de obtener el tamaño de un contenedor medido en ems? – Sparr

2

Lo que hacemos en software Cartógrafo es

  • tienen un tamaño máximo de fuente,
  • mapa Math.sqrt(term.frequency) a este rango (ya que las palabras son áreas 2D),
  • sólo se muestran los 30 primeros (más o menos) términos,
  • excluir cualquier letra pequeña, es decir, tamaño de fuente menor que 6 pt,
  • ordenar los términos en la nube alfabéticamente.

Alternativas

  • En lugar de mostrar el top 30, elija la parte superior k de tal manera que no hay barras de desplazamiento.
  • En lugar de asignar la palabra más frecuente al tamaño de fuente máximo, utilice una asignación global de manera que el tamaño de palabra sea comparable entre las nubes (esto depende de su caso de uso).

A mi leal saber y entender, no hay estudios empíricos sobre las nubes plazo están disponibles (tal vez Jonathan Feinberg, de la fama Worlde, sabe más en ese sentido).

Cuestiones relacionadas