转贴:关于Tag Clouds的实现
一直想系统地提出一个完整的实现tagging的需求,并考虑在某些平台上实现tag clouds的通用方法。正好邂逅一篇东东,留存在这里。感谢作者。
转贴:EndTech @ micy.cn » Tag Clouds相关笔记
Tag Clouds的属性一般有四种* 字号 一般与数目有关
* 排列 字典顺序、随机
* 颜色 固定渐进色、是否加背景等
* 字体 一般为固定Tag Clouds通常是看起来无规律的,不是网格排列,这样看起来才cloudy,会更吸引人。
Tag Clouds不仅是一组看起来有趣的图象,更是一种组织用户贡献信息的导航方式。
Tag Clouds表达的数目多少是通过相对大小来展现的,用于当人们不需要知道每个tag具体表示精确数字是多少时。所以它更多的是给人一种全局的展示感觉,而不是用于查阅细节,这符合它作为导航的定位。
在一个由用户贡献内容的站点中(比如flickr),你不可预见将来某天它的主要内容是什么,不能固定的告诉搜索引擎你站点的description。而Tag Clouds恰恰解决了这个问题,它动态地展示了当前你站点上的内容分布情况和热点。
flickr是第一个将其起名为Tag Clouds并投入使用的站点,来源于Jim Flanagan在自己blog开发的一个perl写的blog插件: Zeitgeist,用来展示来自google和yahoo带来流量的搜索关键词。地址是http://jimfl.tensegrity.net/zeitcode。它使用了随机的颜色和随机的顺序,使得每次看到时,都可能有不同的TAG进入读者的视线。
flickr团队吸取并改进了Zeitgeist的思想:
1. 用它来表示社区用户的贡献,而不仅是搜索引擎的term。
2. 字母顺序代替了随机,增加一种浏览方式。
3. 随机的色彩可能不如单色,它带来了视觉上的复杂性却没有带来更多的信息。
4. 让展示的TAG数目相对来说少一些,不会有好几页。Design Tips for Building Tag Clouds
1. 记住它不单用于展现,也用于导航。
2. 选择合适的语言,比如Perl PHP Python Ruby,他们提供了更好的数组支持(比C/JAVA方便)
3. 要让它可以被spider看到,所以不要用Flash Javascript等实现。
4. 使用字母顺序排列可能比随机好,因为有时可能想查看一个特定名称的TAG,好定位。
5. 避免随机映射(比如随机颜色),它不会带来更多的信息。
6. 迎合用户兴趣是最重要的,取最近一段时间的数据比取所有时间的好,而且它会时常变化,而不是千篇一律。另外,在搜索结果中也可以有所应用,比如根据term展示相关TAG的Tag Clouds会更有趣。
每个Tag所表示的数量,通常都是符合长尾分布的,即大部分Tag使用的次数都很小,而小部分Tag使用的次数非常的高,是一个log曲线。
于是为了在Tag Clouds展示的时候将字的大小控制为线性的,需要对数量做一下对数处理。于是我照着统计了一下GPL.txt中出现次数最多的100个词,它们的Tag Clouds就是这个样子滴。






