黃傳連 郭世仁 周志德
摘要:研究了《聲律啟蒙》原文文本的聲韻格律的虛實(shí)對(duì)應(yīng),設(shè)計(jì)了對(duì)應(yīng)電子數(shù)據(jù)庫的結(jié)構(gòu)化方式,給出了從文本到數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換的算法流程,得到的數(shù)據(jù)庫為進(jìn)一步的智能檢索系統(tǒng)提供了基礎(chǔ)。
關(guān)鍵詞:聲律啟蒙;中文自然語言處理;數(shù)據(jù)庫
0.引言
清朝康熙年間車萬育所作的《聲律啟蒙》是訓(xùn)練兒童應(yīng)對(duì)、掌握聲韻格律的啟蒙讀物。它分為上下卷,按韻分編,包羅天文、地理、花木、鳥獸、人物、器物等的虛實(shí)應(yīng)對(duì)。從單字對(duì)到雙字對(duì),三字對(duì)、五字對(duì)、七字對(duì)到十一字對(duì),聲韻協(xié)調(diào),瑯瑯上口,從中可以得到語音、詞匯、修辭的訓(xùn)練。
本文研究的主要目的,是以《聲律啟蒙》原始本為基本參考,利用信息技術(shù)和自然語言處理技術(shù)全面對(duì)其電子化和信息加工,構(gòu)建一個(gè)完整的數(shù)據(jù)庫,為下一步的智能檢索和學(xué)習(xí)輔助系統(tǒng)的設(shè)計(jì)和開發(fā)提供基礎(chǔ)。
1.相關(guān)背景
對(duì)聯(lián)是我國(guó)的一種傳統(tǒng)文學(xué),是音形義合一的漢字所特有的藝術(shù)。在中國(guó)民間,對(duì)聯(lián)已經(jīng)被廣泛的使用超過一千年的時(shí)間了。對(duì)聯(lián)和詩一樣,使用精練的語言,不過,對(duì)聯(lián)更講究形式的工整,要求上下聯(lián)字?jǐn)?shù)相等,斷句一致,詞性相對(duì),平仄相合。正是因?yàn)橛辛诉@些嚴(yán)格的形式要求,對(duì)對(duì)聯(lián)并非易事,古人因此也常把對(duì)對(duì)聯(lián)當(dāng)作考驗(yàn)才學(xué)的一種方式。對(duì)現(xiàn)代人來說,由于對(duì)傳統(tǒng)文學(xué)的生疏和缺乏對(duì)對(duì)聯(lián)的練習(xí),對(duì)對(duì)聯(lián)就更是不容易了。對(duì)聯(lián)寫作的困難使得對(duì)聯(lián)這項(xiàng)傳統(tǒng)藝術(shù)在現(xiàn)代社會(huì)被使用得越來越少,除了過年貼在門上的春聯(lián),其他地方已經(jīng)很難再看到人們使用對(duì)聯(lián)。為了使對(duì)聯(lián)寫作變得更加容易和有趣,使對(duì)聯(lián)這項(xiàng)傳統(tǒng)藝術(shù)能夠在現(xiàn)代社會(huì)發(fā)揚(yáng)光大。微軟開發(fā)了計(jì)算機(jī)自動(dòng)對(duì)聯(lián)系統(tǒng)——“電腦對(duì)聯(lián)”,希望利用計(jì)算機(jī)快速的計(jì)算和強(qiáng)大的記憶能力幫助人們更輕松的完成對(duì)聯(lián)的寫作。
雖然如此,微軟的工作是針對(duì)傳統(tǒng)對(duì)聯(lián)進(jìn)行計(jì)算機(jī)智能化擬對(duì)。而對(duì)于一本適合兒童應(yīng)對(duì)和掌握聲韻格律的啟蒙讀物《聲律啟蒙》的結(jié)構(gòu)化、電子化和智能化工作尚未見公開文獻(xiàn)。
本文在數(shù)據(jù)模型基礎(chǔ)上設(shè)計(jì)了應(yīng)對(duì)電子數(shù)據(jù)庫,基于《聲律啟蒙》原文文本的分析和研究,對(duì)各韻字、韻句格式進(jìn)行分析,按照其規(guī)律通過窮舉的方法轉(zhuǎn)換數(shù)據(jù)到相關(guān)數(shù)據(jù)庫中。進(jìn)而使用程序?qū)崿F(xiàn)了文本到結(jié)構(gòu)化數(shù)據(jù)的自動(dòng)抽取和存儲(chǔ)。以此數(shù)據(jù)庫為基礎(chǔ),可以進(jìn)一步實(shí)現(xiàn)對(duì)各韻字進(jìn)行相關(guān)對(duì)仗詞匯的查詢以及《聲律啟蒙》的應(yīng)對(duì)輔助學(xué)習(xí)系統(tǒng)。
2.數(shù)據(jù)庫的設(shè)計(jì)
(一)對(duì)應(yīng)《聲律啟蒙》文本的分析
首先,按照對(duì)聯(lián)中韻字的虛實(shí)對(duì)應(yīng)應(yīng)該建立一個(gè)表,其屬性應(yīng)為上聯(lián)韻字、下聯(lián)韻字等,為減少系統(tǒng)冗余,應(yīng)為韻字單位建立一個(gè)表。韻字表中應(yīng)該具有記錄韻字出處、出自何句、注釋等屬性,以便用戶在檢索時(shí)能夠更快更準(zhǔn)確的得到期望的結(jié)果,這便形成了最基本的數(shù)據(jù)庫表。為了擴(kuò)展韻字中的字所表達(dá)的信息,擴(kuò)展出帶有拼音、簡(jiǎn)碼等信息,以此為對(duì)搜索功能擴(kuò)展提供數(shù)據(jù)基礎(chǔ)。最后,考慮到用戶在檢索得到結(jié)果后方便查看結(jié)果條目的原文,因此,應(yīng)為書籍章節(jié)及原文提供獨(dú)立的數(shù)據(jù)表格。
(二)數(shù)據(jù)庫庫關(guān)系圖
根據(jù)上述設(shè)計(jì)分析,本系統(tǒng)數(shù)據(jù)庫應(yīng)具有章節(jié)、映射、關(guān)鍵字、對(duì)仗及原文五大表,各表具有如下關(guān)系:一個(gè)關(guān)鍵字對(duì)應(yīng)多個(gè)映射,一個(gè)章節(jié)對(duì)應(yīng)多個(gè)原文,一個(gè)章節(jié)對(duì)應(yīng)多個(gè)映射,對(duì)仗中的上下聯(lián)均對(duì)應(yīng)不同的映射,數(shù)據(jù)庫全局關(guān)系圖如圖1所示。
(1)章節(jié)表(chapter):保存章節(jié)名、章節(jié)序號(hào)信息,具有外鍵回自身表,以示章節(jié)問樹形結(jié)構(gòu)關(guān)系:
(2)關(guān)鍵字表(KeyWord):用戶檢索關(guān)鍵字入口,包括關(guān)鍵字、拼音、簡(jiǎn)碼、注音等描述關(guān)鍵字的信息;
(3)映射表(Mapping):將不同章節(jié)中包含的關(guān)鍵字與映射表進(jìn)行關(guān)聯(lián),與章節(jié)表,關(guān)鍵字表進(jìn)行外鍵映射,并有出處、注釋等屬性:
(4)原文表(OriginText):就保存?zhèn)€章節(jié)原文的數(shù)據(jù)表格,與章節(jié)表進(jìn)行外鍵映射:
(5)對(duì)仗表(Parallelism):與映射表進(jìn)行外鍵映射,列明個(gè)映射間虛實(shí)對(duì)應(yīng)關(guān)系。
3.《聲律啟蒙》文本電子化轉(zhuǎn)換程序的設(shè)計(jì)
(一)程序結(jié)構(gòu)設(shè)計(jì)
鑒于將《聲律啟蒙》轉(zhuǎn)化為電子數(shù)據(jù)庫過程的復(fù)雜性,本程序設(shè)計(jì)應(yīng)以模塊化為設(shè)計(jì)思想對(duì)系統(tǒng)進(jìn)行設(shè)計(jì),將復(fù)雜問題簡(jiǎn)單化。因此,將轉(zhuǎn)換過程拆分為4大模塊:
(1)對(duì)電子文本進(jìn)行讀?。?/p>
(2)對(duì)讀取的電子文本按上下對(duì)句進(jìn)行切分;
(3)分析切分得到的上句與下句,找出所有潛在的虛實(shí)對(duì)應(yīng):
(4)將分析結(jié)果及章節(jié)、原文等信息保存至數(shù)據(jù)庫進(jìn)行持久化操作:
其次,考慮到使用本程序結(jié)構(gòu)以對(duì)其他與聲韻格律有關(guān)書籍進(jìn)行轉(zhuǎn)換以擴(kuò)展數(shù)據(jù)庫語料及不同文本轉(zhuǎn)換的方式可能存在不可預(yù)料的差異,所有模塊的設(shè)計(jì)都針對(duì)接口進(jìn)行編程,使程序模塊可以進(jìn)行可插撥式的替換。
根據(jù)以上設(shè)計(jì)思路,本程序可分為4大模塊:文本讀取模塊(TextReader)、文本切割模塊(TextSpliter)、數(shù)據(jù)分析模塊(Analyser)、數(shù)據(jù)存儲(chǔ)模塊(Preservable),與此對(duì)應(yīng)的程序結(jié)構(gòu)如圖2所示。
下面重點(diǎn)介紹文本閱讀器和文本分割器的設(shè)計(jì)和實(shí)現(xiàn)。
(二)文本閱讀器(TextReader)的詳細(xì)設(shè)計(jì)
文本閱讀器的實(shí)現(xiàn)用于對(duì)原文本電子文本進(jìn)行讀取,并轉(zhuǎn)化為具有一定通用性的原始數(shù)據(jù)模型,且各書籍原文本段落排列結(jié)構(gòu)存在一定差異,因此除實(shí)現(xiàn)本模塊的功能外還須對(duì)原始文本進(jìn)行一定程度格式化,以實(shí)現(xiàn)無差異讀取的能力?!堵暵蓡⒚伞吩急靖髡掠幸粏巫謽?biāo)題,每章共有三個(gè)段落。因此,以《聲律啟蒙》卷一·東為例,其文本如下圖所示:
如上圖可見,一段格式化后的問題應(yīng)包括以下幾部分:
(1)章節(jié)序號(hào):用于與書本序號(hào)及二級(jí)序號(hào)進(jìn)行組合得到最終的章節(jié)序列號(hào):
(2)章節(jié)名:包含在“[]”括號(hào)中,與實(shí)際章節(jié)名稱對(duì)應(yīng);
(3)原文:原文應(yīng)該以段落為單位,以分隔符“-”為起止標(biāo)志的一段或以上的列表。
對(duì)于按章節(jié)為單位文本塊,文本閱讀器應(yīng)提供讀取單個(gè)文本快或讀取全部文本塊等方法。
DefaultTextReader為對(duì)應(yīng)《聲律啟蒙》以及對(duì)應(yīng)格式化文本的文本讀取類,對(duì)相應(yīng)格式文本文件進(jìn)行讀取。并將讀取得到的數(shù)據(jù)保存為擴(kuò)展了章節(jié)類屬性的適配器中,使原始數(shù)據(jù)得到了保存,為之后的轉(zhuǎn)換及分析步驟提供基礎(chǔ)數(shù)據(jù)。
(三)文本分割器(TextSpliter)詳細(xì)設(shè)計(jì)
文本分割器對(duì)讀取得到的原文按段落進(jìn)行切割l引,得到過濾多余標(biāo)點(diǎn)、字符的上下聯(lián)字串,并確定與之對(duì)應(yīng)的原文單句。
(1)分割算法的設(shè)計(jì)及算法流程
由于《聲律啟蒙》原文各段格式具有一定相似性,利用控制符作為過濾段落通配字符串,并對(duì)控制符控制的部分在隊(duì)列中進(jìn)行排列加以輸出,即可實(shí)現(xiàn)對(duì)《聲律啟蒙》原文進(jìn)行分割。
定義控制符以“{”為起始標(biāo)記,以“}”為結(jié)束標(biāo)記,若讀取通配符為控制符,則跟據(jù)控制符定義內(nèi)容對(duì)原文進(jìn)行截取,若為普通字符,原文則跳過對(duì)應(yīng)字符??刂品麅?nèi)容應(yīng)符合“{fulL][sizel*]}格式,其中[UIL]表示該字符塊是上聯(lián)字符還是下聯(lián)字符,[sizel*]表示字符長(zhǎng)度,“*”表示最大長(zhǎng)度,即取字串直到莫字符為標(biāo)點(diǎn)“,”或“?!?/p>
根據(jù)上述描述,可與原文段對(duì)應(yīng)的通配符應(yīng)為:
{U1}對(duì){L1},{U1}對(duì){L1},{U2}對(duì){L2}。{U2}對(duì){L2},{U2}對(duì){L2}。{U3},{L3},{U2}對(duì){L2}。{U5},{L5}。{U7},{L7}。{U*},{U*};{L*},{L*}。
算法流程如圖5所示:
(2)文本分割器的對(duì)應(yīng)實(shí)現(xiàn)
DefaultTextSpliter實(shí)現(xiàn)TextSpliter接口,以《聲律啟蒙》為算法研究對(duì)象實(shí)現(xiàn)了對(duì)應(yīng)的文本切割算法。其中,splitParagraph()為實(shí)現(xiàn)算法的方法體,splitParagraphList()為對(duì)多個(gè)段落進(jìn)行批量分割的內(nèi)置方法,其類結(jié)構(gòu)如圖6所示。
數(shù)據(jù)分析模塊與文本分割器設(shè)計(jì)結(jié)構(gòu)具有一定相似性,負(fù)責(zé)對(duì)文本分割器分割過后的數(shù)據(jù)文本進(jìn)行進(jìn)一步加工,以窮舉的方法得到所有潛在的虛實(shí)對(duì)應(yīng)。
4.結(jié)語
本文致力于把《聲律啟蒙》的原始格律文本進(jìn)行數(shù)據(jù)庫結(jié)構(gòu)化存儲(chǔ)這一目標(biāo),在分析器原始文本基礎(chǔ)上,設(shè)計(jì)了對(duì)應(yīng)的數(shù)據(jù)庫結(jié)構(gòu)以及文本轉(zhuǎn)換流程。利用實(shí)現(xiàn)的轉(zhuǎn)換程序,經(jīng)對(duì)應(yīng)的文本格式化及數(shù)據(jù)轉(zhuǎn)換對(duì)全文上下2卷共30章進(jìn)行了處理,得到的數(shù)據(jù)庫包括了潛在關(guān)鍵字13881個(gè),原文映射17562個(gè)及虛實(shí)對(duì)應(yīng)8781對(duì)。這個(gè)數(shù)據(jù)庫為下一步的智能檢索以及《聲律啟蒙》學(xué)習(xí)輔助系統(tǒng)的開發(fā)和應(yīng)用奠定了基礎(chǔ)性的工作。