Tagging Surfulater Articles, a sneak peak

It is time to do a bit of show and tell about the new Tagging capability being added to Surfulater. The ability to add tags or keywords to articles and then locate articles for specific tags, has been a reasonably common user request. Tagging of content has become extremely popular in recent times, especially on Web sites. I have done a fair amount of research into tagging, folksonomy, ontology, semantic web etc. over the post few years and it is clear there is a lot happening in these areas and we are in many ways still in the early days.

A problem with tags is that single words on their own, are often ambiguous and have no context. For example what does “disk” mean? Is it a hard disk, a record, a CD, a disk in your back or maybe even a plate.

CamelCase (or WikiWords) offer one solution to this, but one I don’t personally like, not that I’ve actually used it much. To quote Wikipedia

CamelCase is the practice of writing compound words or phrases in which the words are joined without spaces and are capitalized within the compound. ex. HardDisk … CamelCase is rarely used in formal written English, and most style guides recommend against its use.

Hierarchical tags are another way to add extra meaning. ex. hard.disk For some time I thought that the ability to use hierarchical tags would be worthwhile, but have in the end decided against that.

To locate articles using tags, my current plan is to enable expressions to be used to specify tag groups. For example: car AND porsche. A tag hierarchy would use car.porsche for this. The problem here is if someone tags porsche instead of car.porsche, then the former won’t appear under the car.porsche listing. It is also more effort to enter hierarchical tags. Expressions offer endless flexibility here. You can find just “car”, just “porsche” “car and porsche”, “car and porsche and not 911” for example.

A tree will be used to show all Tags (as folders) and their matching Articles as children. The aforementioned expressions can be used to specify virtual folders in the tree, along with the matching articles. This will be a new tree in the Knowledge Tree bar.

Until this is all in place and in use, it is difficult to say how well it will work in practice, but I feel it is a good solid starting point.

The next issue is that the use of Tags is a bit of a mess, everyone does their own thing, and there is little standardization, which of course makes using them to find things is less than ideal.

To quote from Wikipedia again:

There are drawbacks to such tag-based systems as well: no standard set of keywords (also known as controlled vocabulary), no standard for the structure of such tags (e.g. singular vs. plural, capitalization, etc.), mistagging due to spelling errors, tags that can have more than one meaning, unclear tags due to synonym/antonym confusion, highly unorthodox and “personalized” tag schemas from some users, and no mechanism for users to indicate hierarchical relationships between tags (e.g. a site might be labeled as both cheese and cheddar, with no mechanism that might indicate that cheddar is a refinement or sub-class of cheese). Services which allow both tags and folders for organizing bookmarks (such as Netvouz) make this less of a problem though. 

I’ll add Surfulater to that list. It goes further by enabling an article to be in many folders at once and letting you add links between articles, to build a web of related information.

In this situation all that folks like me can do is provide the best tools we can and hope they are used wisely. To this end it is important to use a well defined set of tags (see controlled vocabulary), instead of any old ad-hoc words. To help ensure consistent use of specific words I’ve implemented an auto-suggest list which displays words matching the characters typed so far, which you can then pick from. The first image shows the auto-suggest list with matches for the letter d, along with the matching characters bold and underlined as a visual cue. The second image shows the selected word entered as a tag.

Tag auto-suggest list  Word chosen from list

You can also press the Down Arrow key to access a list of all defined tags, as shown here.

Complete auto-suggest list


When you enter a tag word that isn’t present in the tags list, it is automatically added. Next a window opens showing the newly added tags, enabling you to correct or delete these tags as required, as well as add a description. If you are happy with the newly added tags just click “Close” to continue. The design here is to try and impinge as little as possible on your work-flow. An alternative approach would be to prompt you each time you typed a word that didn’t exist and ask if you wanted to add it. This could be quite tiresome, especially during the early stages of building your list of tag words.

As I mentioned on the blog recently the inclusion of tagging has dictated extensive changes to the underlying database engine that Surfulater uses, as  well as several other fairly major framework enhancements. This means that the time to the next release will be a bit longer than usual, but hopefully well worth the wait.