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