2008-11-11 10 views
8

Tengo una colección de elementos que el usuario necesita para agrupar/categorizar de varias maneras. En aras de un ejemplo, digamos que es una colección de coches y el usuario quiere clasificarlos de la siguiente manera:Interfaz de usuario más elegante para categorizar elementos?

  • color (rojo, plata, azul, negro, etc.) de forma
  • Cuerpo (hatch, sedán, coupé, stationwagon, etc.)
  • Asientos (2, 4, 5, 6, etc.)
  • etc.

¿alguna vez ha llegado a través de una forma muy elegante de hacer esto que le permite al usuario libertad total para definir sus propias categorías y valores es?

Obviamente, habrá muchos sacrificios para hacer en cualquier diseño. Por ejemplo, un diseño que se puede aprender puede no ser eficiente, y viceversa. O algunos diseños pueden ser más exigentes de bienes raíces que otros. Y algunos tardarán mucho más en desarrollarse que otros.

Independientemente, si ha visto o diseñado un buen patrón para esto, me interesaría saberlo. Si tienes capturas de pantalla, mucho mejor.

Intento de aclaración: las etiquetas son una gran manera de categorizar las cosas, pero en todas las implementaciones que he visto, solo hay un nivel de etiquetado. El usuario generalmente no puede definir una categoría/propiedad y el valor del artículo en esa categoría. Para usar el ejemplo anterior y el etiquetado de StackOverflow, etiquetaría un automóvil como "azul", "sedán", "4", y así sucesivamente. StackOverflow no tendría conocimiento inherente de que un artículo no podría etiquetarse como "sedán" y "cupé".

La interfaz en la que estoy pensando necesitaría saber ese tipo de cosas, por lo que la sugerencia de atributos definidos por el usuario es más acorde con lo que estoy pensando. Estoy ansioso por encontrar un ejemplo concreto de cómo ese tipo de sistema podría implementarse con elegancia (en una aplicación de escritorio, si eso hace la diferencia).

¿Es eso más claro? Si no, deja un comentario e intentaré aclararlo de nuevo. :)

+0

Supongo que sabía sobre las etiquetas y se pregunta acerca de las IU concretas, ¿no? Como dónde colocar las imágenes, cómo solicitar etiquetas, qué contenedores usar y más. –

Respuesta

9

Parece que tiene dos tareas: Tarea 1 Categorizar objetos, donde para una serie de objetos, el usuario asigna a cada uno una categoría (valor) en cada una de sus múltiples dimensiones (atributos). Tarea 2: Crear y modificar dimensión y categorías.

Fuera de los modeladores de datos, programadores orientados a objetos y diseñadores de bases de datos, la idea de dimensiones y categorías es un concepto muy difícil de comprender. Debe estar preparado para que los usuarios no entiendan la diferencia entre categorías y dimensiones. Sin embargo, los usuarios generalmente comprenderán las tablas, donde cada columna es una dimensión (que comprende varias categorías) y cada fila es un objeto. Tanto como sea posible, trabaje con tablas.

La primera pregunta clave es descubrir a través de la investigación del usuario el grado en que las Tareas 1 y 2 están integradas o separadas.

Si las tareas están integradas, y los usuarios cambian fluidamente de una a otra sin pensarlo mucho, entonces un diseño de IU debe tener una tabla de objetos por dimensión, pero proporcionar una columna en blanco (o un "Insertar" botón) para permitir al usuario agregar una dimensión. El encabezado de columna tiene el nombre de la dimensión, que el usuario puede editar. Debajo del encabezado hay un espacio que enumera las categorías de esa dimensión. Cada nombre de categoría es editable y hay una línea en blanco (o el botón Insertar) para agregar una nueva categoría. Debajo están los objetos para categorizar, cada uno con una lista desplegable en cada columna para la dimensión.

En las pruebas de usabilidad, tenga cuidado con los usuarios que intentan establecer la categoría de un objeto haciendo clic en una categoría en la lista de categorías, en lugar de seleccionar desde la lista desplegable. Haga que la lista de categorías aparezca visualmente separada para evitar esto.

Es posible que desee un botón para ocultar/mostrar las listas de categorías, ya que esto puede ocupar mucho espacio (incluso cuando se utilizan barras de desplazamiento). Incluso si las Tareas 1 y 2 están estrechamente integradas, creo que encontrará que los usuarios pueden querer quitar las listas de categorías a veces.

Si encuentra que las Tareas 1 y 2 están separadas, rara vez se realizan juntas (por ejemplo, los usuarios suelen configurar sus dimensiones y luego categorizar un grupo de objetos), entonces es mejor con una ventana (o página) separada para cada tarea, aunque debería ser fácil navegar de ida y vuelta entre ellos. Por ejemplo, aunque los usuarios pueden configurar sus dimensiones de antemano y luego rara vez modificarlas, a veces un usuario se dará cuenta de que necesita una nueva categoría para una dimensión al categorizar un objeto inusual, por lo que proporciona una opción de menú "Agregar categoría" que lleva al usuario a la ventana Administrar categorías, con una nueva categoría insertada para la dimensión actual a la espera de que el usuario proporcione un nombre.

La ventana para Tarea 1 es la misma que antes: tabla de objetos con una columna de listas desplegables para cada dimensión, pero excluye las listas de categorías, la edición de los nombres de dimensión y la capacidad de agregar una nueva dimensión. Esto es más eficiente si el usuario necesita buscar objetos que necesitan categorizar o reclasificar, o si generalmente el usuario necesita comparar un objeto con otros (por ejemplo, para decidir cómo categorizar el objeto). Sin embargo, si la tarea del usuario está realmente limitada a categorizando un objeto de uno en uno en base a información externa (por ejemplo, transcribir información del papel), considere un formulario en lugar de una tabla, mostrando una matriz de cuadros de lista, uno para cada atributo. Con un solo clic de cada cuadro de lista para establecer cada categoría, esto es más rápido que usar listas desplegables.

La ventana para la Tarea 2 podría ser como la parte del encabezado de la primera tarea. Es coherente con la tabla utilizada para la Tarea 1 y permite a los usuarios ver categorías para múltiples dimensiones a la vez, ayudándoles a descubrir el mejor esquema de categorización (por ejemplo, ayudarles a encontrar dónde esencialmente la misma categoría aparece en dos dimensiones diferentes). Sin embargo, si el espacio es un problema, considere una lista de dimensiones, cada una de las cuales muestra una lista de categorías en una relación de detalle maestro.

Lo último en potencia y flexibilidad del usuario para la Tarea 2 es un control tipo árbol. El nivel de raíz del árbol comprende dimensiones y el siguiente paso en la jerarquía comprende las categorías dentro de cada dimensión. La principal ventaja es que admite dimensiones que son dependientes de en categorías. Por ejemplo, uno puede tener una dimensión Tipo de vehículo que incluye categorías como Coche, Barco, Avión, etc. Para la categoría Automóvil, uno puede tener una dimensión de Tipo de cuerpo con categorías que solo se aplican a esa categoría (Coupe, Hatchback, etc.) Las dimensiones dependientes se representan en el árbol por ramas de una categoría. El resultado es que el árbol alterna entre dimensiones y categorías con cada nivel en.

Es importante distinguir visualmente las categorías de las dimensiones, tal vez por diferentes iconos, y tal vez también diferentes tipos de letra; algo para decirles a los usuarios que los pasos alternos en la jerarquía son cualitativamente diferentes (por ejemplo, si crea una Dimensión, deberías crear al menos dos categorías). Incluso así, proporcione un medio de recuperación fácil si los usuarios confunden dimensiones con categorías (por ejemplo, les permite mover un montón de "dimensiones" a otras dimensiones, convirtiendo las primeras en categorías).

Quiero enfatizar nuevamente la dificultad que tiene la gente con abstracciones como dimensiones y categorías. Incluso cuando lo entienden, las personas generalmente tienen grandes dificultades para crear dimensiones y categorías decentes por sí mismas. Existen interacciones complicadas que pueden dar lugar a que necesite pensar detenidamente (por ejemplo, ¿qué ocurre con la categorización de objetos cuando una categoría se mueve a una nueva dimensión?). Si espera que cada usuario realmente cree sus propias dimensiones novedosas, entonces es posible que desee volver a pensar seriamente todo su enfoque. Es una tarea intrínsecamente complicada.

El usuario es mucho mejor si ya existe un esquema multidimensional relevante en la cultura, organización o dominio (como el que tenemos para los automóviles). Por supuesto, si ya existe un esquema, entonces puede investigarlo e instalarlo como un conjunto predeterminado de dimensiones en su producto. La Tarea 2 solo necesita soporte para que los usuarios expertos puedan ajustarla.

+0

Una respuesta impresionantemente detallada. :) Una imagen/dibujo me hubiera ayudado a visualizar algunos aspectos mejor, pero sigue siendo muy bueno. En mi caso, no es necesario que admita subdimensiones, pero la mayoría de sus consejos siguen vigentes. Sin embargo, le daré una semana más o menos antes de aceptar cualquier respuesta. –

+0

Finalmente, vuelva a esto y vuelva a leer, y entienda correctamente, su respuesta. De hecho es impresionante. Gracias por tomarse el tiempo. Lo marcaré como la respuesta aceptada ahora. –

0

Es posible que esté malentendiendo su pregunta, pero no es muy similar, si no exactamente para qué son las etiquetas (como en desbordamiento de pila y gmail). ¿O estás buscando algo más específico que eso?

4

Puede usar las etiquetas : Haga que el usuario etiquete cada imagen, luego muestre un conjunto de miniaturas de imágenes ordenadas por etiquetas.

Tal vez más avanzadas que las etiquetas serían un conjunto de atributos definidos por el usuario. Por ejemplo, en lugar de etiquetar una imagen con "rojo", márquela con un atributo "color = rojo".

1

Sugeriría un sistema de etiquetado similar al aquí en stackoverflow. Permitirles etiquetar las imágenes, luego ver por etiqueta o combinación de pestañas. Al ver la página, muestra las miniaturas de las imágenes y las etiquetas de esa imagen debajo de ella.

Editar: Según sus aclaraciones, podría tener tipos de etiquetas. Cuando el usuario define su propia etiqueta, necesitaría especificar de qué tipo deriva. Con eso en mente, necesitaría limitar las etiquetas a solo uno de ese tipo.

TagType { Color, Seats, BodyType, Seats } 
TabSubType { Color-Red, Color-Blue, Color-Green, Seats-2, Seats-4, ... } 

Cuando un usuario desea agregar una etiqueta a las etiquetas, dele un desplegable con TagType. Debajo, da luego otro menú desplegable con los TabSubTypes. Déles una opción para "Definir nuevo" que hará que aparezca un cuadro de texto donde pueden escribir en un nuevo tipo.

También agregaría estas opciones al menú contextual para que los usuarios puedan ver las etiquetas en un menú de estilo de árbol. También puede tomar la tecla presionada incluso cuando se enfoca una imagen, busque el nombre TagType y TagSubType y presente un menú de opciones para elegir. Si no se encuentran coincidencias, ofrezca una opción de "Haga clic para agregar nueva etiqueta".

1

La Clasificación Facetada es una forma de categorizar las cosas que no reciben la atención que merecen. Le permite definir categorías mutuamente excluyentes y proporcionar un valor para cada elemento de contenido para cada categoría. Por ejemplo, podría clasificar los vinos por región, variedad, cosecha y precio, y un usuario realizaría su búsqueda seleccionando uno o más valores en una o más categorías. Por ejemplo, "rojos franceses o italianos por debajo de $ 40". Suponiendo que tiene los datos de categoría a mano, esta es a menudo la técnica de clasificación y búsqueda más poderosa disponible, mejor que tratar de encajar todo en una sola jerarquía o confiar en las etiquetas.

Para implementar esto en el back-end, cree tablas para cada categoría y llénelas con los distintos valores. A continuación, cree una tabla que contenga una clave externa para cada tabla de categorías, junto con un campo que contenga el contenido. Esto es similar a una tabla de "hechos" en el diseño de base de datos dimensional.

Para hacerte una idea de cómo funciona esto en la interfaz de usuario, echa un vistazo a Facetmap. No puedo responder por su producto porque no lo he usado, pero he implementado algo similar para mis propias aplicaciones con buenos resultados.

http://www.facetmap.com/

Una vez más, las ideas detrás de la clasificación facetada merecen más atención, y sé que no los estoy haciendo justicia aquí. Para un tratamiento entretenida del sujeto por Clay Shirky, escuchar a "La ontología es Sobrevalorado":

http://itc.conversationsnetwork.org/shows/detail470.html

+0

* Según lo que puedo decir * en el sitio de mapa de facetas, su producto está más dirigido a 'usuarios' que escriben un archivo XML de fondo, que luego es traducido por su aplicación y presentado en varios formatos diferentes. No es exactamente en lo que estaba pensando. Quiero que los usuarios no técnicos definan categorías, etc. –

+0

En otras palabras, la parte de atrás suena bien, pero es la parte delantera que estoy buscando. –

0

Ok, bueno, tienden a seguir sobre esto demasiado, pero El etiquetado es sólo un ejemplo de lo puedes hacerlo con un gráfico triple, por ejemplo, usando RDF. [Insertar enlace a Wikipedia]. Ahora sé que dijiste que las etiquetas no son suficientes, según los requisitos para anidar, pero no hay ninguna razón por la que no puedas seguir "etiquetando etiquetas" como hijos de otros.

Car|Tagged_with|Red 
Red|Is_child_of|Colours 

De esta manera los datos permanecen ultra flexible, y realmente la brecha entre lo que son datos, y lo que es metadatos se vuelve borrosa.

0

Parece un problema que debe abordarse especialmente para que los usuarios clasifiquen los datos dimensionales en dimensiones adicionales (más simplificadas) (grupos o categorías como quieran llamarlos) para que puedan visualizar mejor los datos a través de la simplificación categorías/dimensiones.

El usuario necesita poder importar una lista, crear dimensiones para la lista y luego categorizar la lista de manera intuitiva en función de esas dimensiones. La creación de las dimensiones consistiría en nombrar/renombrar la dimensión (nombre de la columna) y luego agregar/renombrar/eliminar las categorías (elementos de columna) de esa dimensión. Debería ser sencillo cambiar entre la creación de nuevas dimensiones y la categorización de los elementos de la lista de forma individual o en bloque utilizando las nuevas dimensiones creadas por el usuario. El usuario podría exportar la lista con la columna o columnas adicionales (dimensiones) que contienen las categorías creadas recientemente.

La idea es que sería mucho más fácil de usar que tener una tabla y agregarle columnas. Idealmente, podría seleccionar elementos en la lista y luego asignarles un elemento de categoría validado de la lista de dimensiones creada por el usuario que rellenaría automáticamente una tabla de solo lectura que podría exportarse. Entrada = lista, salida = lista detalladamente categorizada. No se requiere una hoja de cálculo.

Cuestiones relacionadas