星期三, 12月 14, 2005

談古契書資料處理:之四

古契書檢索系統,一般需要處理時間的問題。

什麼意思呢?一個提供全文檢索 (full-text retrieval) 的系統,難道還不夠嗎?

從某些層面來看,只有全文檢索的確不夠。例如,若我們只想查閱某些年代的資料,全文檢索因為無法辨識文件的年代,就無法提供「只搜尋清朝乾隆年間文件」的選項,因而回傳的結果,將會因為含有大量「非乾隆年間文件」而使檢索效率降低。

好吧,那我們怎麼提供全文以外的檢索呢?

一般來說,需要有詮釋資料 (metadata) 的配合。詮釋資料,就是用來說明資料特性的一些東西。例如,Windows 檔案系統有所謂的「延伸檔名」,它就算是一種詮釋資料。由於 .jpg、.gif、.wav、.doc、.xls 各表示不同的檔案格式,應用程式就能藉由這項資訊分辨處理的方式。

可是,古契書本身是沒有詮釋資料的。要將它數位化,就已經會遇到一堆問題了,哪有資源來為每份契書額外加上詮釋資料呢?於是,就會有「從文件中,自動擷取時間資訊」的想法。

讓我們先看一份完整、加過標注的古契書:

od-ta_01516_000005
竹北二堡十寮庄土名七寮三五之二、三五之三

立截出山園字人周明盛兄弟等。緣因先年承買李家之山園,係叔侄兄弟人等備本,按作參股,每股備出本銀壹拾參元陸角正,盛備出本銀陸元捌角正。爰是族戚酌議,福叔姆邱氏備出本銀陸元捌角正,計共每壹股本銀壹拾參元陸角正,將此山園截出四至界址。東至貳鬮毗連種竹為界;南至路生屋角水壢透上;西至大龍種竹為界;北至糞箕窩分水為界。四至界址,即日經族面踏分明。愿將此山園壹處與叔姆邱氏前去掌管,收租納課,永為己業,日後子孫人等不敢異言生端等情。此乃二比甘愿,兩無迫勒。口恐無憑,今欲有憑,立截出山園字壹紙,付為執照。
即日批明:福叔姆邱氏備出本銀陸大元捌角正。立批照。

場見叔 元寶(印)
代筆人 廖青雲(花押)

明治丙申年捌月 日立截出山園字人 周明盛(花押)

其中,「明治丙申年捌月 日」就是很明顯的時間資訊。

當我們要從文件中擷取出這類資訊,會發覺正規表示式 (regular expression) 實在是一個方便的工具。例如,寫一個簡單的式子:

(明治|同治|光緒)\S{1,5}年\S{1,2}月.{1,3}日

就可以擷取出「明治丙申年捌月 日」、「同治拾貳年桂月 日」、「光緒丙子年拾貳月 日」等字串。其中,「\S」 代表任意的「非空白 (white-space) 字元」,「.」可以比對任意的字元,而「{m,n}」則表示符合的字元數目要在 m 與 n 之間。

當然啦,現實總不是那麼簡單與美好。和之前幾篇 posts 類似,總有些打錯的字、莫名其妙的斷行、以及更冗長的時間寫法(例如,「光緒八年歲次壬午拾壹月 日」之類)。此外,古時候中國是採用農曆,有時會有「潤八月」之類的字串出現。因此,要找出合用的正規表示式,就會複雜許多。

6 則留言:

被掛掉的阿尼 提到...

你乾脆寫一個文法算了^^

lcat 提到...

感覺上還是建議半自動吧?每次碰到例外就修改 regular expression,比對失誤的機率應該會越來越低。

tu 提到...

麻煩的是,機器不會告訴你「發生失誤了」啊。

大多數的古契書都有年代日期,但有的就沒有、或者因為「原稿殘破、不堪辨識」。

因此,也不能假設「每篇文件都有日期」。
所以,大致上只能邊做邊看,嘗試將 regular expression 修到「可以取得夠滿意時間字串」的地步。

lcat 提到...
網誌管理員已經移除這則留言。
lcat 提到...

小小的建議,人力適當的介入是需要的,前一陣子想要自動做某些判斷,結果一不小心產生了一千多筆垃圾,還好是在測試環境,最後乾脆重建 :(

tu 提到...

沒有關係啦~

部分原因是,這些地方並不需要花費太大的功夫;另外有部分原因,則是可以藉此複習一下 regular expression 的一些用法。

更重要的,或許是:我只是在做 prototype ,因此光是「identifying risks」本身,就已經是很有趣的事情了...