• 沒有找到結果。

擷取後出處處理流程及方法

Chapter 4 出處自動化擷取與補正

4.2 擷取後出處處理流程及方法

擷取原始出處以後,尤其如條目開頭的出處,因為其格式多變,並且不只是 標題,有些也含有朝代、作者等資訊,因此需要以程式自動化方式處理乾淨,且 其朝代、作者與標題的關係也能一併呈現。以下是文字檔中出處種類為書目篇章 於條目開頭顯示之原始出處格式舉例:

 明‧王肯堂‧證治準繩

 魏張揖廣雅

 宋‧范成大桂‧海金石志

 地理通釋‧歷代戶口

 小雅正月篇

 楊儀傳

 本草綱目

如以上所示,有些出處會以「‧」區隔朝代、作者、書目及篇章,然而有些

「‧」所在位置卻是錯的。有些出處沒有區隔,朝代、作者、書目、篇章相連一 起。更總的來說,每個出處並不一定含有完整的朝代、作者、書目等資訊,有些 缺少朝代,有些缺少作者,更有些是缺少書目,只存在篇章名稱。為了將出處格 式統一化與補正錯誤及缺漏,於本節介紹一套設計之出處處理的流程,並分項說 明各階段方法。下圖 Fig. 4-2 為出處處理的流程圖。

Fig. 4-2 出處處理流程圖

4.2.1 自動斷詞

由於有許多出處的朝代、作者、書名篇章等字串相連一起,因此需要將它們 分開成各個獨立的項目,也利於後續自動標籤的進行。《集成》因為是現今所存最 大的類書,所以在此階段將以《集成》所收錄的所有出處作為斷詞之參考來源。

在程式的處理上,首先分別為書目篇章以及詩詞曲賦的出處各建立資料庫並 存入原始出處,書目篇章總計有 66411 個不同出處,而詩詞曲賦總計有 68900 個 不同出處。之後將「‧」去除並分別執行自動斷詞的程式,程式之 pesudocode 如 以下所示:

function autoBreak(DB $source_db)

sort by .length for each $target_source in $source_db DESC // (a) for each $target_source in $source_db

for each $compared_source in $source_db

if $compared_source is substring of $target_source // (b) add "[ ]" on substring in $target_source

end if end for end for end function

(b) 如果$compared_source 是$target_source 的子字串,就在$target_source 中 出現的子字串用括號夾住。

以下是實際出處自動斷詞的範例:

→ 董仲舒春秋繁露竹林篇(原始書目篇章出處)

→ [董仲舒春秋繁露]竹林篇(有另一出處為「董仲舒春秋繁露」)

→ [董仲舒[春秋繁露]]竹林篇(有另一出處為「春秋繁露」)

→ 董仲舒#春秋繁露#竹林篇(斷詞完成,共計三個獨立項目)

由於書目篇章出處長度在三字以內的容易造成錯誤斷詞,如「春秋#四傳」及

「後#漢書」,因此不放入自動斷詞程式處理,另參照原始出處的「‧」斷開。

4.2.2 自動標籤

在上個階段所自動斷出的獨立項目必須加上標籤,方可得知每個項目究竟是 朝代、作者、書目還是篇章。就出處種類來說,書目篇章和詩詞曲目各有其不同 的項目組合模式,觀察得到後如下表 Table 4-2:

項目數 書目篇章之出處 詩詞曲賦之出處 備註

> 6 - -

D:朝代(Dynasty) A:作者(Author) T:標題(Title) C:篇章(Chapter)

6 DATCCC -

5 DATCC、ATCCC -

4 DATC、ATCC、TCCC - 3 DAT、DTC、ATC、TCC DAT 2 DT、AT、TC、CC DT、AT

1 T、C A、T

Table 4-2 出處種類與項目數關係之出處模式表

另外也使用百家姓以及在 3.3 節所整理出的朝代列表作標籤的判斷。以下為自 動標籤程式的 pesudocode:

function autoLabel(DB $source_db)

sort by .items for each $target_source in $source_db DESC // (a) for each $target_source in $source_db

check DYNASTY_LIST, SURNAME_LIST // (b)

check PATTERN_TABLE and label($target_source) else

for each $compared_source in $source_db check $compared_source.labeled // (c) end for

if(check)

label($target_source) else

label($target_source, default) // (d) end if

end if end for end function

(a) 對於每個出處項目數排序,項目多的優先排序。

(b) 用朝代列表或百家姓列表檢查第一個項目是否為朝代或作者。

(c) 用已標籤的出處檢查是否存在相同名稱之項目。

(d) 如果皆不存在,則用預設的出處模式標籤。

以下是實際出處自動標籤的範例:

 範例一:

→ 元#陶宗儀#輟耕錄#書畫褾軸(自動斷詞結果)

→ D:元、A:陶宗儀、T:輟耕錄、C1:書畫褾軸

(判斷第一項目為朝代,出處模式為項目數 4 的"DATC")

 範例二:

→ 輟耕錄#綠石頭(自動斷詞結果)

→ T:輟耕錄、C1:綠石頭

(判斷第一項目,因前例已將「輟耕錄」標籤為"T",因此出處模式為項目 數 2 的"TC")

另外在標籤的過程之中,因用百家姓判別的緣故,有些書目及篇章名會與作 者名稱混淆,例如「唐會要」、「吳志注」等,另外以列表判斷處理。

4.2.3 補缺資訊

如上小節範例,可以得知範例二中《輟耕錄》其實應該就是元朝的陶宗儀所 著,但是原始出處卻未提供此種資訊。出處資料庫中存在著許多類似這樣缺少部 分資訊,並且可以由其他地方將缺漏的部分補完之出處,因此需要以程式來達到 自動補缺資訊的需求。程式在比對出處的時候,以標題名稱為主,篇章名稱為輔。

以下是補缺資訊程式的 pesudocode:

function autoPatch(DB $source_db) for each $target_source in $source_db

if $target_source.T is not NULL

if $target_source.D or $target_source.A is NULL for each $compared_source in $source_db

if ($target_source.T = $compared_source.T) and ($compared_source.D or $compared_source.A is not NULL) // (a)

patch($target_source) end if

end for end if else

if $target_source.C is not NULL // (b)

for each $compared_source in $source_db

if ($target_source.C = $compared_source.C) and ($compared_source.D or $compared_source.A or

$compared_source.T is not NULL) // (c) patch($target_source)

end if end for end if end if end for end function

(b) 此段程式碼於詩詞曲賦之出處不用執行(因無篇章之結構)。

(c) 若比對後篇章相同,則補上缺失的朝代、作者或標題。

以下是實際出處補缺資訊的範例:

 範例一:

→ T:金匱要略(自動標籤結果)

→ D:漢、A:張機、T:金匱要略

(有另一出處為 D:漢、A:張機、T:金匱要略)

 範例二:

→ C1:蔡徵傳(自動標籤結果)

→ T:陳書、C1:蔡徵傳

(有另一出處為 T:陳書、C1:蔡徵傳)

有些篇章名稱可能被若干本不同的書目所包含。例如在出處資料庫中《漢書》、

《後漢書》、《前漢書》、《演繁露》、《丹鉛總錄》這五本書目同樣地含有〈王莽傳〉

此一篇章,因此在補缺書目資訊時並無法確定應該補上之書目,需要參照原始條 目內文並以第三方古籍作內容比對。目前作法為註記此類情形於資料庫中,而此 類出處情形目前計有 1504 筆,詳細列表請參照附錄三。另外也存在有些篇章在原 始出處書目中找不到有任何包含關係,暫以篇章名視為書目名來處理這類情況。

4.2.4 Query 偵錯與修正

前三階段執行完畢後,隨機從資料庫中抽樣檢查,約有六至七成整理後的出 處資訊是正確的,而剩下之三至四成其錯誤原因大致可歸類為以下幾點:

 經典緯書:如《春秋元命苞》、《尚書璇璣鈐》等,在上述階段執行完畢 後分別被處理成 T:春秋、C1:元命苞以及 T:尚書、C1:璇璣鈐。

 後人於原古籍之編修:如《玉堂閒話補闕》、《資治通鑑綱目考證》等,

會分別被處理成 T:玉堂閒話、C1:補闕以及 T:資治通鑑、C1:綱目、

C2:考證。

 罕見姓氏作者:如稅與權所著之《易學啟蒙小傳》會被標籤為 T:稅與權、

C1:易學啟蒙小傳。

 原文字檔錯誤:標示出處的書名號所括文字有誤,如「《徐光啟農政全書

曰》」與「《孔子家》」,前者多括一「曰」字,後者少括一「語」字。

為了提升出處處理品質,此一階段會在資料庫中執行多數之偵錯 query,並將 有錯誤疑慮的出處取出,再以其他權威資料佐證並修正錯誤。所用的權威資料大 部分為:

 《古今圖書集成》原書

 中國基本古籍庫[17]

 國家圖書館[18]、國立臺灣大學圖書館[19]

 漢籍電子文獻資料庫[20]

 中央研究院數位文化中心[21]

 中國哲學書電子化計劃[22]

在修正錯誤的同時也一併整理了別名列表,目前有 86 筆別名資料對,詳細列 表請參照附錄四。

相關文件