關(guān)于信息系統(tǒng)組織方式的一個提案
序言
昨日整理Gmail信箱之時,覺有不便之處,于是進(jìn)入“Suggest a feature for Gmail”的頁面,準(zhǔn)備提些建議。不意一只靈感的小蟲悄悄爬上腦梢,急欲捕之而后快。遂作“A Proposal on
Organization of Information System”一文,以備Gmail參考之用。甘冒不謙之嫌,竊以為該提案是對包括文件系統(tǒng)、郵件系統(tǒng)等在內(nèi)的信息系統(tǒng)的組織方式的一種創(chuàng)新。為讓更多的國內(nèi)同仁了解,現(xiàn)將此文譯成中文。倉促成文,還望諸位方家不吝賜教。
鄭暉于2008年5月19日
1. 引言
我們生活在一個信息時代,但有時信息帶來的負(fù)擔(dān)甚至超過收益。從用戶的角度看,大多數(shù)信息系統(tǒng)包括文件系統(tǒng)、郵件系統(tǒng)和各類基于菜單的系統(tǒng)本質(zhì)上都是層級(hierarchical)結(jié)構(gòu)的。隨著信息量的遞增,系統(tǒng)的可用性卻在遞減。這種結(jié)構(gòu)的主要缺陷是它僅提供了通往目標(biāo)信息的單一通道。用戶在任何一個轉(zhuǎn)角處走錯都可能導(dǎo)致最終迷路。如果一個信息系統(tǒng)能支持多路通道,情況就會得到改善。有鑒于此,本文借助Gmail系統(tǒng)的一些思想提出了一個切實可行的方案。
2.信息檢索之困
信息是個好東西,可儲存和重新獲取卻令人頭痛。日復(fù)一日地,一個典型的計算機(jī)用戶瀏覽并保存網(wǎng)頁,收集心儀的書簽和RSS,從BT或emule上下載文件,收發(fā)電子郵件,編寫文檔或程序。他愉悅地享受著這一切,直到有一天他發(fā)現(xiàn)自己逐漸為信息超載所困擾。一個明顯的跡象是他時不時感到有點頭暈——他的桌面凌亂不堪,各種圖標(biāo)如沙丁魚般“濟(jì)濟(jì)一堂”;他的書簽菜單展開來如巨毯般一直拖到地上;他的信箱塞滿郵件,鼓鼓囊囊、幾欲暴裂。他開始意識到如果這種狀況不改變,他的腦袋一定比硬盤或郵箱更早爆炸。此后,他養(yǎng)成了將文件、書簽和郵件整理到層級文件夾中的習(xí)慣。情況果然大為改觀。惜乎好景不長,文檔數(shù)量增長迅猛,文件夾越來越多、越來越深。將一個文檔保存到合適的地方需要花費時間,而找回當(dāng)初下載或創(chuàng)建的文檔則更花時間。整日在樹狀結(jié)構(gòu)中穿梭,他有些倦惱和迷失了。他知道自己擁有一棵遮天蔽日的圣誕樹,上面掛滿了琳瑯滿目的禮物,可是沒有多少是觸手可及的。每每在掘地三尺仍一無所獲之后,他不得不懷疑自己的記憶,偶爾也忍不住懷疑機(jī)器的記憶。明知那些失蹤之物從來不會自動跳出來,他還是情不自禁地沖著電腦歇斯底里:那些該死的文檔到底躲到哪里去了?時不時地,他又滑回老習(xí)慣:將所有最新的文件保存到桌面,不為別的,只是那里似乎更方便更令人放心。我們不禁要問:這種困境的根源是什么?
3. Gmail解決方案
問題出在傳統(tǒng)的信息組織方式上,即樹(或森林)型結(jié)構(gòu)。這種層級結(jié)構(gòu)應(yīng)付大量信息尚勝任有余,但對于海量信息則有些不堪重負(fù)。隨著信息量的膨脹,樹型結(jié)構(gòu)越來越力不從心。許多文件夾中的列表不可避免地變長,一些文件夾被深層嵌套。在文件系統(tǒng)中,通過在Windows中創(chuàng)建捷徑或在Unix類的操作系統(tǒng)中創(chuàng)建符號鏈接(symbolic link)能一定程度上緩解一些癥狀,但顯然不能根治。作為一種有趣的替代方案,Google的Gmail提供了他們稱作“標(biāo)簽”(label)的工具。一個標(biāo)簽是一種文字標(biāo)記,它能與其他的標(biāo)簽同時應(yīng)用到一條信息上。開始許多用戶抱怨它,因為他們習(xí)慣了文件夾風(fēng)格。但這種抱怨慢慢減少,用戶發(fā)現(xiàn)他們的信息不再是藏于密密叢林的游擊隊,而是一字排開等待檢閱的正規(guī)軍。所有最近的信息都在頂部,而這在精心組織的文件夾系統(tǒng)中是不可能的。用戶不再為如何分類信息而犯難,他們可以在每條信息上貼上任意多的標(biāo)簽。找一個特定的信息也很容易,既可用自定義標(biāo)簽來過濾,也可用系統(tǒng)標(biāo)簽如inbox,
sent, star, chat, trash等來過濾。他們還能通過收信人、發(fā)信人、主題和信息內(nèi)容來搜索。更好的是,用戶可定義過濾器自動為來信貼標(biāo)簽。這種解決方案,今后我們稱為標(biāo)簽結(jié)構(gòu),不必囿于郵件管理系統(tǒng),它能有效地用于文件系統(tǒng)和其他諸如知識管理系統(tǒng)之類的信息系統(tǒng)。
4. 改進(jìn)方案
標(biāo)簽結(jié)構(gòu)并非盡善盡美。盡管與信息數(shù)量比,標(biāo)簽要少得多,但依然會泛濫。在Gmail的標(biāo)簽結(jié)構(gòu)中,所有用戶定義的標(biāo)簽是獨立而平等的,但事實上——不同的標(biāo)簽在重要性、緊急性和常用性上可能大相徑庭;一些標(biāo)簽有著內(nèi)在聯(lián)系;同一信息上的不同標(biāo)簽在相關(guān)度上也有所不同。比如,“工作”或“家庭”的標(biāo)簽更重要,“待做”或“考試”的標(biāo)簽更緊急,“體育”或“電影”的標(biāo)簽對一個體育迷或電影迷來說更常用。當(dāng)一個程序員將一些資料標(biāo)記為“Java”或“C++”后,他很希望它們能自動加上“程序語言”和“OOP”的標(biāo)簽,以便今后它們能出現(xiàn)在一個列表中。最后,一些標(biāo)簽可能比另外的標(biāo)簽更能描述一條信息。綜合以上考慮,我們提出如下可行方案。
- 在標(biāo)簽結(jié)構(gòu)中引入層級結(jié)構(gòu)。我們將標(biāo)簽視作信息的元數(shù)據(jù),并將它們以傳統(tǒng)的樹型結(jié)構(gòu)來組織。這樣我們將兩個世界最好的部分結(jié)合起來,取長補(bǔ)短。實際上我們可以走得更遠(yuǎn)。我們知道,層級樹型結(jié)構(gòu)在圖論中是有向樹,只要有意義,我們可以把標(biāo)簽結(jié)構(gòu)推廣為有向圖(digraph)。這意味著一個標(biāo)簽可以有多個上級,有點類似一些OOP語言中的多繼承。顯然當(dāng)所有的標(biāo)簽都是樹根(即無子標(biāo)簽)時,就退化為Gmail的標(biāo)簽結(jié)構(gòu)。
- 為標(biāo)簽引入重要性、緊急性和常用性權(quán)重,標(biāo)簽可按權(quán)重排序。Gmail的星號標(biāo)簽可作此用,但粒度過粗。常用性權(quán)重可在每次訪問后自動增值,這樣最常用的標(biāo)簽總在前面。標(biāo)簽還能按最近訪問時間來排序。如是,用戶最關(guān)心的信息抬眼即是、垂手可得。
- 引入主標(biāo)簽。一項信息的某個標(biāo)簽可設(shè)為主標(biāo)簽。從這種意義上講,傳統(tǒng)的樹型結(jié)構(gòu)是我們這種結(jié)構(gòu)的特例:每個文件夾名正是一個標(biāo)簽名。(但有一個細(xì)微差別:同樣的文件夾名在不同的路徑下不會象標(biāo)簽名那樣發(fā)生沖突)如果主標(biāo)簽的相關(guān)度是1,那么其他標(biāo)簽的相關(guān)度應(yīng)在0和1之間,這為搜索和排序提供了新的準(zhǔn)則。
- 引入別名標(biāo)簽。標(biāo)簽允許有多個名字,這些名字可以是同義詞、縮寫甚至是不同的語種。別名還能更強(qiáng)大:用戶可一個標(biāo)簽定義為其他標(biāo)簽的邏輯組合。例如,“我的程序”可定義為“我的文檔and程序”,“娛樂”可定義為“體育or小說or電影”等等。
- 引入線信(thread)。用戶能建立thread將相關(guān)信息連接起來。Gmail中有會話(conversation),但用戶無法自己合并相關(guān)郵件。thread 對信息跟蹤和保留不同版本的信息非常有用,這種聚合使得信息系統(tǒng)更加緊湊連貫。
5. 結(jié)論
要定位一項信息,用戶在層級系統(tǒng)中需要點擊文件夾在展開,在標(biāo)簽系統(tǒng)中需要點擊標(biāo)簽來過濾。我們沒有提及搜索是因為搜索較慢且有些信息不以文本形式存在。標(biāo)簽系統(tǒng)是更好的解決方案,但仍有不足之處。為了進(jìn)一步方便信息檢索,我們設(shè)計了含權(quán)有向圖標(biāo)簽結(jié)構(gòu)(weighted
diagraph tag structure),這是一種結(jié)合樹型結(jié)構(gòu)的優(yōu)點的標(biāo)簽結(jié)構(gòu)。一個具此結(jié)構(gòu)的信息系統(tǒng)應(yīng)該更加平易近人且令人愉快,它的用戶可以象悠閑的養(yǎng)魚人,不管往池塘里投入多少條魚,只要一聲口哨,他想要的那條就會搖頭擺尾地游過來。