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