Inside Paulo Abrantes' head
[ start | index | login or register ]
start > 2007-06-24 > 1

Web: Tag Clouds

Created by pabrantes. Last edited by pabrantes, one year and 152 days ago. Viewed 892 times. #4
[diff] [history] [edit] [rdf]
labels
attachments
tagCloud.jpg (44217)

Web: Tag Clouds

With the arising of web 2.0 concept - where the user is no longer a passive consumer but rather an active content producer - new ways of categorising content start being widely used.

Among those ways there's a very popular which is present in some of the so called "web 2.0 sites", such like >>flickr, >>del.icio.us or >>technorati. I'm talking about >>tags.

A tag is nothing more than a label created by the user that is inserting new contents and it's used to help content categorisation with keywords. A website then starts containing a large amount of tags. This system is similar to a >>Taxonomy, although it has differences:

  • Normally there are no hierarchy on a tag system
  • The tags are created on demand by the user
We call this systems a >>Folksonomy.

It's a really flexible and simple system but, if there is no way to navigate in it, it's pointless.
This is where the concept of >>Tag Cloud shows up.

tagCloud A tag cloud is nothing more than the presentation of the agglomerate of existing tags in the system, with one interesting detail, the frequency of each tag is visually identified by the font size or sometimes by its colour.

The generation of such cloud might look trivial, but it as a few tar pits. I know because I had to develop such system to classify uploaded files on the FenixEDU application.

The first question that arises is, while creating the size algorithm, how should the size be distributed. There are two simple ways that can be chosen, use a linear function to represent it or a logarithmic function. In my opinion the logarithmic works better because it better represents the frequency differences. An interesting >>article can be read in Kentbye's blog.

The algorithm developed for our tag cloud isn't the one suggest by kentbye's since it has the need for more variables such as the popularity count, which acts as a growth delayer until the tag reaches a certain frequency - in other words it's a multiplier to the logarithmic effect.

Another interesting concept that was request for the our tag cloud was a multiple tag search option. Everyone that used a tag cloud knows that by clicking on the tag the contents categorised by such tag usually will be presented. But what if, someone wants to see the contents with tag1 and tag2?

The idea used was simple, each tag on the tag cloud can be clicked to be turned on or off - depending on the state - and tags will be used as filters. Simple solution, that can actually improve user experience.

The management also asked for another requirement, which we called neighbour tags. The concept of neighbour tags can be defined by the following:

  • When no tags are selected there are no neighbour tags.
  • When there is at least one selected tag, neighbour tags are the ones that aren't selected and the intersection with the already selected tags returns a non-empty set of contents.
Such feature acts as a navigation suggestion when using the tag cloud, sort of a look-ahead when applying multiple filters.

But even with these interesting - and I think I can also say useful - concepts if the interface doesn't work well it's totally useless. Gladly all the problems that came up on the presentation of such interface were solved by our web designer, the following rules were followed:

  • Only one single font colour was used.
  • No monospace font was used to increase readability.
  • The bigger the font was, the bigger the padding was to isolate it better from other fonts.
  • When a tag was selected its background would be darker.
  • When a tag was a neighbour the background was still the same colour as a non-selected tag, although its border was darker.
  • Any tag on hover will show the background after being clicked.
It really was an interesting experience to develop such interface and back-office to support it, and in the end we managed to achieve an usable and useful tag cloud interface.

Any questions or remarks regarding the topic are more than welcome.

Icon-Comment jff, one year and 135 days ago. Icon-Permalink

Is it possible to see the algorithm implemented? (or described in some algorithmic language)

Thanks, jff

Icon-Comment pabrantes, one year and 135 days ago. Icon-Permalink

Yes it is, but i don't have the source at home (not I want to have, no work is allowed at homesmiley) but I'll post it tomorrow.
Please login to www.pabrantes.net.
Who am I?
paulo-roca2My name is Paulo Abrantes AKA pabrantes and I'm a software developer. I'm currently employed at >>CIIST working as a Java developer in >>FenixEDU.

This blog is mostly about Java programming, domain driven design and snipsnap bliki developing. Everything written in this blog is my personal opinion and it may not reflect the opinions of my employer and co-workers.


Blog subscription
subscribe by rss subscribe by email

Links
>> Home
>> Paulo's Profile
>> Post History
>> Add to Technorati Favorites
>> Paulo's Photo Gallery
>> WishList
>> Posting without Login

Search Blog
Fellow Bloggers

Recent Posts

Java Programming: Bytecode Injection
Intermission: Sorry For Downtime
Software Developing: Studying The Bliki Domain Model
SnipSnap Developing: Trying to settle a roadmap
System Administration: Load Balancing with Apache
Blogging: Two years have passed
Software Developing: The SnipSnap Saga
Java Programming: Getting your code spicy with Groovy
Software Developing: Fluent Interfaces
Software Developing: Implementing a ShoutBox on SnipsSnip
Software Developing: SnipSnap, SnipIt and SnipSnip
Java Programming: Proxies and Access Control
Java Programming: Proxies and References
Java Programming: References' Package
YALM: Yet Another Layout Modification

For older posts, please refer to post-history for a complete Post History

Logged in Users: (0)
… and a Guest.
This is a modified version of snipsnap.org created by >>Paulo Abrantes