唐杰,劉銘,陳鐿文
(西北大學(xué) 科學(xué)史高等研究院,陜西西安 710127)
自20世紀(jì)80年代始建“古漢語語料庫”以來,經(jīng)過30余年的積累,現(xiàn)已整理出數(shù)億字的古籍?dāng)?shù)據(jù)庫[1]?,F(xiàn)有古籍語料庫中含較多字符集以外的文字,即集外字。該類文字由于無法被OCR識別或通過鍵盤直接錄入,在一定程度上影響了古籍的數(shù)字化及其轉(zhuǎn)換與檢索[2],因而成為古籍?dāng)?shù)字化的重點(diǎn)工作之一;又由于目前的集外字技術(shù)不能適用于計(jì)算機(jī)的自然語言信息處理技術(shù),也成為古籍?dāng)?shù)字化中漢字處理難點(diǎn)之一。出土文獻(xiàn)數(shù)據(jù)庫是關(guān)于中國出土文獻(xiàn)簡、牘、帛書的封閉式數(shù)據(jù)庫,如《簡帛金石資料庫(全文)》《引得市數(shù)據(jù)庫》《漢代簡牘數(shù)位典藏》《漢達(dá)文庫》《瀚唐典籍》等[3],其中存在大量的避諱字、異體字、俗體字、生僻字,多以集外字為主。《瀚唐典籍》采用替換法將集外字認(rèn)定為集內(nèi)字,字庫所用字符集編碼為Unicode5.0字符集[4],《引得市數(shù)據(jù)庫》采用造字法建立集外字字庫,字庫所用字符集編碼為Unicode字符集編碼,參考中央研究院漢字部件檢索系統(tǒng),利用部首結(jié)構(gòu)來查詢集外字[5]。香港理工大學(xué)開發(fā)的“中文古籍網(wǎng)上出版平臺”采用描述法對集外字進(jìn)行描述,字庫所用字符集編碼為Unicode編碼[3]。目前,這些數(shù)據(jù)庫對集外字的信息處理均集中在解決集外字錄入、顯示及檢索功能,尚未關(guān)注集外字在文本信息處理中的應(yīng)用。本文基于課題組建立的《中國出土文獻(xiàn)數(shù)據(jù)庫》中的集外字字庫,提出出土文獻(xiàn)集外字在文本信息處理中的程序化方法。該方法基于《漢典》網(wǎng)站及相關(guān)工具書對先秦至?xí)x期間出土文獻(xiàn)的集外字進(jìn)行整理;使用造字法將所造集外字存儲至Unicode編碼私用區(qū)碼位,建立集外字字庫;結(jié)合四角號碼檢字方案生成輸入法碼表,借助多多輸入法生成器生成集外字輸入法。并以里耶秦簡為例,探討了分詞工具對文本的處理效果。
少數(shù)民族文字、西夏文字、甲骨文字相關(guān)的數(shù)字化研究工作都是從20世紀(jì)下半葉開始的,在這之前,我國使用的是GB2312-80字符集,少數(shù)民族文字、西夏文字、甲骨文字都屬于集外字。通過分析此類集外字的信息處理技術(shù)并借鑒其處理方法,可對出土文獻(xiàn)的集外字處理提供幫助。
藏文由輔音字母、元音符號和標(biāo)點(diǎn)符號構(gòu)成[6],其同時包含橫向拼寫及縱向拼寫,藏文是從20世紀(jì)90年代開始編碼研究工作,1997年發(fā)布了《信息交換用藏文編碼字符集》,該標(biāo)準(zhǔn)包含192個編碼點(diǎn)、169個編碼字符,是按照拼音文字編碼規(guī)律對藏文進(jìn)行編碼[7]。藏文是通過使用造字法,在長寬不等的點(diǎn)陣中造字,字體有點(diǎn)陣字、矢量字、曲線輪廓字,將其保存為Unicode編碼,Unicode編碼范圍為0F00~0FFF,其鍵盤輸入法有字丁、音節(jié)和詞組的形式,通過藏文輸入法實(shí)現(xiàn)藏文自動排版,實(shí)現(xiàn)藏文的輸入輸出。目前藏文和其他少數(shù)民族文字已收錄在CJK字符集中[8],已被規(guī)范為集內(nèi)字,信息處理更加方便。
西夏文是記錄西夏黨項(xiàng)族語言的文字,其文字特征類似于漢字,同為方塊字。自20世紀(jì)后半葉,西夏文數(shù)字化研究逐漸展開,寧夏大學(xué)開發(fā)并研制出了《漢夏字處理及電子字典》,創(chuàng)立了西夏文字字符集[9]。景永時等[10]通過使西夏字與GB2312-80標(biāo)準(zhǔn)漢字共用同一編碼,制作了西夏文字庫,此方法在處理西夏文與漢字同框的文本時需不斷切換字庫。馬希榮等[11]采用位面技術(shù)在GBK的用戶自定義區(qū)分配西夏字編碼,避免了與漢字或其他字符的碼位沖突問題,但其本質(zhì)上并沒有解決西夏文字符編碼問題,字庫不便應(yīng)用于文本信息處理。2016年6月發(fā)布的Unicode9.0版本收錄了西夏文字符,使西夏文字規(guī)范為集內(nèi)字,解決了占用漢字碼位、夏漢同屏共存等問題,對于西夏文字庫在文本信息處理方面的應(yīng)用具有非常重要的作用[12]。著名西夏學(xué)研究專家李范文[13]根據(jù)西夏字結(jié)構(gòu)編排了西夏字的四角號碼,使得西夏字檢索更加方便,為西夏文字?jǐn)?shù)字信息化開辟了捷徑。
甲骨文字形的特點(diǎn)是筆畫繁多、無法區(qū)分、構(gòu)造復(fù)雜[14]。自1990年開始就有專家關(guān)注甲骨文的信息化技術(shù),徐松[15]開發(fā)了“甲骨文象形碼編碼系統(tǒng)”,可實(shí)現(xiàn)甲骨文筆畫檢索。江銘虎等[16]同時制作兩套甲骨文字庫,通過區(qū)位碼和拼音形式輸入甲骨文。顧紹通等[17]根據(jù)甲骨文字形的拓?fù)浣Y(jié)構(gòu)建立了甲骨文輸入法,實(shí)現(xiàn)甲骨文的字形和拼音輸入。劉志祥等[18]建立了字形編碼型甲骨文6位數(shù)字碼輸入法,類似于漢字檢索的四角號碼,實(shí)現(xiàn)精確的甲骨文字的輸入輸出。劉永革等[19]通過對甲骨文的筆畫特征進(jìn)行分析,將構(gòu)成甲骨字的筆畫歸納為九種筆畫,在此基礎(chǔ)上采用香港中文大學(xué)的甲骨文字庫設(shè)計(jì)了甲骨文筆畫輸入法。
字符集是遵循國家或國際標(biāo)準(zhǔn),對每一個字符進(jìn)行定義的唯一代碼[20],常見的漢字字符集有GB2312,BIG5,GBK,GB18030,Unicode[21],其 中Unicode編碼字符集是國際標(biāo)準(zhǔn)字符集,可實(shí)現(xiàn)跨語言文本信息轉(zhuǎn)換[22]。
集外字是指字符集以外的字,不采用特定的技術(shù)方法無法對集外字進(jìn)行錄入、處理及顯示[23],字符集的選擇與集外字的數(shù)量呈負(fù)相關(guān),故在建立字庫時優(yōu)先選擇收錄字符最多的Unicode字符集,其滿足共享、國際通用的條件,同時也是目前古籍?dāng)?shù)字化項(xiàng)目最常用的字符集。
在古籍?dāng)?shù)字化項(xiàng)目中常見的集外字的處理方法大致分為造字法、替換法、描述法[24-25]。
造字法是在字符集的自定義區(qū)為集外字定義編碼,這些編碼與集外字的字形一一對應(yīng)。優(yōu)點(diǎn)是只要有字符集自定義編碼區(qū)的支持,造字的檢索與顯示和集內(nèi)字完全相同,缺點(diǎn)是自定義編碼區(qū)只有13萬余個碼位[26],如果不加限制地造字,碼位很快會消耗殆盡,且不同的古籍?dāng)?shù)字化項(xiàng)目對私用區(qū)碼位的使用可能完全不同,若同時使用這些古籍?dāng)?shù)字化項(xiàng)目,可能發(fā)生私用區(qū)編碼沖突。
替換法是將集外字變換為其他可以輸入的形式,如符號、圖形和集內(nèi)字。此方式的優(yōu)點(diǎn)在于錄入方便簡潔,但是缺點(diǎn)也很明顯。第一,集外字統(tǒng)一替換為某個符號,這些符號基本沒有檢索意義。第二,替換符號未能保留集外字的任何信息,當(dāng)字符集變更時,集外字無法管理。第三,在不清楚替換規(guī)則的情況下,用戶無法理解替換的意義。
描述法是將集外字表示為一個字符串,這個字符串描述了集外字的字形。優(yōu)點(diǎn)是可使用標(biāo)準(zhǔn)化的描述符序列對漢字的構(gòu)造進(jìn)行說明,解決了自然語言描述法的不規(guī)范問題。缺點(diǎn)是很多生僻字結(jié)構(gòu)極為復(fù)雜,拆解困難,一種字存在多種描述方法,且描述后的字不是一個Unicode編碼,而是一組編碼,例如字,需要十三個編碼才可完整描述此字[23],其缺點(diǎn)有:占字節(jié)較多、不利于文本信息處理、需額外軟件支持、所造字形與原字符存在一定差距。
相對而言,造字法是建立出土文獻(xiàn)數(shù)據(jù)庫的較好選擇。第一,出土文獻(xiàn)語料庫是封閉式語料,其字?jǐn)?shù)有限且相對于傳世文獻(xiàn)與自然語言而言較少,據(jù)目前統(tǒng)計(jì)的已釋讀的出土文獻(xiàn)數(shù)據(jù),集外字有2萬余個。第二,造字法可將所造集外字保存為Unicode字符集編碼,將集外字轉(zhuǎn)為集內(nèi)字,目前Unicode供用戶自定義編碼的碼位有137 468個碼位,可自由編輯137 468個集外字。第三,計(jì)算機(jī)的文本信息處理是識別文字所對應(yīng)的字符集編碼,要求集外字“一字一形一碼”。造字法滿足以上三種限制條件,故本文選擇造字法建立出土文獻(xiàn)集外字字庫。
計(jì)算機(jī)的應(yīng)用范圍越來越廣泛,對漢字進(jìn)行數(shù)字化已經(jīng)成為了中文信息處理的必要前提。出土文獻(xiàn)中包含大量的俗體字、異體字等,其中不乏集外字,給研究者合理規(guī)范使用文字帶來了諸多不便。因此,建立出土文獻(xiàn)數(shù)據(jù)庫的必要工作就是對出土文獻(xiàn)的集外字進(jìn)行整理,但古籍版本眾多,且沒有非常嚴(yán)格的統(tǒng)一標(biāo)準(zhǔn),故應(yīng)選擇專業(yè)的文物校釋小組和權(quán)威作者所著的釋文進(jìn)行數(shù)字化和整理工作。基于《說文解字》《康熙字典》此類工具書及《漢典》網(wǎng)站,篩選查找《清華大學(xué)藏戰(zhàn)國竹簡》《望山楚簡》《天水放馬灘秦簡》《里耶秦簡牘》(壹與貳)《張家山漢簡》《懸泉漢簡》等先秦至?xí)x的出土文獻(xiàn)中的集外字。
以里耶秦簡集外字整理工作為例,出土文獻(xiàn)釋文書籍選擇湖南省文物考古研究所編著的《里耶秦簡牘》,其釋文一般按照原文字形釋寫,不識字是按照原樣摹寫。工具書選擇陳偉主編的《里耶秦簡牘校釋》。在里耶秦簡兩卷的集外字整理過程中,對例如9-475中的字“”“”,此字是按照原樣摹寫的字,將其認(rèn)定為集外字進(jìn)行收錄;例如9-478中的字“”,此字是“ ”下側(cè)無法識別,所以對其不進(jìn)行收錄;對文本中的符號例如“”“”,不進(jìn)行收錄;例如8-181中的“”字,在漢典網(wǎng)中未收錄此字,此字也不存在于Unicode字符集中,所以將其收錄為集外字。根據(jù)整理已出版的兩卷《里耶秦簡牘》中的集外字,其在全文不重復(fù)字?jǐn)?shù)的比重約為11.2%,其中集外字個數(shù)202個,兩卷不重復(fù)字?jǐn)?shù)約1 800個。
根據(jù)現(xiàn)篩選查找到的出土文獻(xiàn)集外字,在現(xiàn)有的藏文字庫、西夏文字庫及甲骨文字庫建立方法的基礎(chǔ)上構(gòu)造出土文獻(xiàn)集外字字庫。該工作主要分為兩步:第一步,采用造字法描繪集外字,將集外字描繪成漢字字符形式。藏文、西夏文及甲骨文對其文字采用了“造字法”,即利用造字軟件采用描繪的形式將文字描繪在畫板上。鑒于此,本文也根據(jù)造字法利用計(jì)算機(jī)描繪出土文獻(xiàn)集外字,使得出土文獻(xiàn)集外字成為“漢字”形式。第二步,由于藏文、西夏文及甲骨文在建立字庫時,是將描繪好的字符以Unicode字符集編碼的形式儲存至計(jì)算機(jī)中,故本文也通過參考該方法,將所描繪的集外字存儲至Unicode編碼私用區(qū)碼位。由此,基于以上兩項(xiàng)工作建立起出土文獻(xiàn)集外字字庫。具體的操作步驟如下。
利用High-Logic公司的FontCreator曲線輪廓造字軟件,根據(jù)二次β樣條曲線擬合算法,自動將掃描的集外字圖形數(shù)字?jǐn)M合成盡可能接近原樣摹寫的集外字,可通過調(diào)整文字的輪廓點(diǎn)、線、角度及位置,描繪出較為理想的集外字并保存在對應(yīng)的Unicode編碼私用區(qū)碼位。
現(xiàn)有較常用的出土文獻(xiàn)集外字字庫有“引得市古文字缺字資料庫”“古聯(lián)瀚字輸入法字庫”,但是建立出土文獻(xiàn)集外字字庫無法直接采用其結(jié)果,原因有二:其一,不能包含先秦至?xí)x期間所有出土文獻(xiàn)中的集外字。其二,無法對其字庫進(jìn)行動態(tài)管理。本文所建立的集外字字庫優(yōu)勢在于:第一,集外字?jǐn)?shù)據(jù)更全面,可研究范圍及角度更廣,對每篇出土文獻(xiàn)中的集外字進(jìn)行整理并梳理成表。第二,對字庫實(shí)現(xiàn)動態(tài)管理,根據(jù)出土文獻(xiàn)的更新和Unicode字符集的更新,對字庫中的字進(jìn)行增加或刪改。
在西夏文字庫的建立及夏漢通輸入法生成過程中,西夏文字存在拼音難以讀寫且結(jié)構(gòu)復(fù)雜的特點(diǎn),由于其是仿造漢字而創(chuàng)制的,即以偏旁部首組成方塊字,因此研究者利用此特點(diǎn)建立了西夏文四角號碼檢字法,對所有文字進(jìn)行四角號碼檢字編碼,生成了西夏文輸入法碼表?,F(xiàn)有的檢字方案可分音碼、形碼兩種[27],四角號碼檢字法屬于根據(jù)文字字形查找文字的形碼檢字方案,是用最多不超過5位的阿拉伯?dāng)?shù)字將所有漢字進(jìn)行歸類,此檢字方案對于無法正確讀寫拼音及結(jié)構(gòu)部首繁瑣的文字效率極高,可在計(jì)算機(jī)中高效率錄入此類文字。而出土文獻(xiàn)集外字也存在與西夏文字類似的特點(diǎn),故也可采用四角號碼對其檢字。出土文獻(xiàn)集外字的檢字碼由5位阿拉伯?dāng)?shù)字組成,遵循《四角號碼新詞典》第十版的規(guī)則,對集外字進(jìn)行編碼拆分取號碼順序?yàn)樽笊辖?,右上角,左下角,右下角,附加碼為左下角上方距離最近的筆形對應(yīng)號碼,例如:
本文首先利用四角號碼檢字法對字符編碼,進(jìn)而建立出土文獻(xiàn)集外字的輸入法碼表,在輸入法碼表中需將“0123456789”用其拼音聲母首字母“oyesxwlqbj”代替[28]。其次,按步驟將整理好的輸入法碼表文件導(dǎo)入多多輸入法生成器中并設(shè)置相關(guān)參數(shù),生成“出土文獻(xiàn)集外字輸入法”。圖1為出土文獻(xiàn)集外字輸入法的構(gòu)造流程圖。
圖1 出土文獻(xiàn)集外字輸入法構(gòu)造
里耶秦簡于2002年在里耶古城一號井第一次出土,計(jì)三萬八千余枚簡牘;及于2005年在護(hù)城壕第十一號坑第二次出土,計(jì)五十一枚簡牘。簡牘起止時間為秦始皇二十五年(前222年)至秦二世二年(前208年),內(nèi)容為秦朝洞庭郡遷陵縣遺留的公文檔案,涵蓋了當(dāng)時社會的各個層面[29]。目前已出版《里耶秦簡牘》第一卷和第二卷,兩卷共包含四層,共含6 050條簡,總字?jǐn)?shù)約為12.25萬字。本文在小組建立里耶秦簡數(shù)據(jù)庫的基礎(chǔ)上,建立集外字字庫,并應(yīng)用于里耶秦簡語料庫的建設(shè)中。
中文分詞是文本分類、信息檢索、文本挖掘等中文信息處理工作中的難點(diǎn)和技術(shù)關(guān)鍵點(diǎn),為驗(yàn)證所建字庫及輸入法可使集外字參與到文本信息處理過程中,本文將所造集外字錄入語料庫,以里耶秦簡兩卷文本數(shù)據(jù)庫為例,測試集外字可參與到主流分詞工具的分詞過程。
試驗(yàn)選擇目前自然語言分詞的主流工具jieba[30]。jieba分詞工具本身內(nèi)含詞典,該詞典的主要內(nèi)容是現(xiàn)代漢語及部分古代漢語,但也可根據(jù)用戶需求選擇是否添加自定義詞典,以此保證分詞的準(zhǔn)確率。由于簡牘語言以單字詞居多及與現(xiàn)代漢語實(shí)體名詞有較大區(qū)別的語言特殊性,故在分詞時采取兩種方案,以驗(yàn)證集外字字庫及輸入法建立的必要性。
試驗(yàn)數(shù)據(jù)選擇里耶秦簡第一卷的簡8-458,簡文中包含集外字“”:
遷陵庫真□
鞮瞀卅九(第一欄)
冑廿□
弩二百五十一
臂九十七
弦千八百一(第二欄)
矢四萬九百□
戟二百五十(第三欄)
試驗(yàn)分為兩個方案:方案一,基于jieba分詞工具的默認(rèn)精確切分模式下,不添加用戶自定義詞典進(jìn)行分詞。方案二,添加自定義的包含集外字的分詞詞典進(jìn)行分詞。試驗(yàn)結(jié)果如表1。
表1 集外字文本分詞試驗(yàn)
從表1可見,第一,根據(jù)分詞結(jié)果,用jieba分詞工具對含有集外字的文本直接進(jìn)行分詞時,集外字“”參與了分詞。這說明了“甲”雖然包含集外字,但由于集外字字庫及輸入法的建立,這類集外字可參與至計(jì)算機(jī)對語言的信息處理工作中,最終使得集外字可被讀取、被處理、被寫入。
第四,方案一與方案二的分詞結(jié)果略有出入,主要問題還是在jieba分詞工具的內(nèi)含詞典主要是現(xiàn)代漢語,對于簡牘這類特殊語言,其詞庫及數(shù)據(jù)庫的建設(shè)還未完備,故分詞的準(zhǔn)確率較低。
本文根據(jù)《中國出土文獻(xiàn)數(shù)據(jù)庫》的集外字字庫提出了文本信息處理程序化方法,在實(shí)現(xiàn)集外字的數(shù)據(jù)庫中顯示和檢索功能的基礎(chǔ)上,為出土文獻(xiàn)中集外字參與文本信息處理提供了可行性方案。
本文以里耶秦簡為例,采用造字法將集外字轉(zhuǎn)換為計(jì)算機(jī)可識別的編碼并參與文本信息處理,并建立了出土文獻(xiàn)集外字字庫,提高了數(shù)據(jù)庫的完整性。其次,結(jié)合四角號碼,基于多多輸入法生成器生成集外字輸入法,并以自然語言處理技術(shù)中的基礎(chǔ)任務(wù)——分詞為例,利用已處理的文本數(shù)據(jù)進(jìn)行切分,達(dá)到了較好的處理效果。
在數(shù)字人文背景下,本文利用該方法將適用于現(xiàn)代漢語與傳世文獻(xiàn)文本的信息處理技術(shù)泛化至出土文獻(xiàn)文本中,不僅可直接應(yīng)用于建立出土文獻(xiàn)集外字字庫及文本數(shù)據(jù)庫,且為集外字參與古籍文本的計(jì)算機(jī)處理技術(shù)提供新方法。