●周澍綺 (南通大學 a.文學院;b.楚辭研究中心,江蘇 南通 226019)
在人工智能領域,漢語的機器學習一直受到學界的關注。不同于英語,漢語多字成句,沒用明顯的中斷和語義間斷,所以漢語的計算機學習需要單獨的切分軟件輔助,常見的算法有最短路徑算法,隱馬爾科夫模型算法(Hidden MarkovModel,HMM)。其中的佼佼者是基于HMM的ICTCLAS系統,其憑借高精度分詞與高速度分析在眾多開放分詞軟件中脫穎而出。研究發現,該系統在切分標注常規漢語時表現出色,但在對中國傳統文獻的處理時,結果并不理想。古文中除對仗等特殊網絡現象之外,語法規律性并不明顯,單純的優化統計和概率的算法對古文切分的效率提高并不明顯。因此,針對古漢語的識別和標引,國內已有研究成果有利用古文注疏切分 《左傳》,[1]有利用音韻識別宋詩,[2]有利用中藥信息優化醫學古籍切分算法,[3]利用互動信息推動“紅學”的發展。[4]
本文以先秦楚辭為研究對象,首先利用ICTCLAS系統以《楚辭》[5]為研究標的進行測試樣本切分。此書兼具橫版古文、白話注釋、白話評注等多個方面的語料,能夠對切分詞算法和標注性能進行多方面性能的評測,如圖1。

圖1 切分詞效率
數據顯示,內容離現在越遠,切分的效率越低,同一內容,開放測試準確率低于封閉測試。在不同內容方面,涉及楚辭的原文切分,在擴大切分詞詞典的情況下,準確率和召回率依舊低于20%。通過上述實驗可以發現,現有切分方式無法直接應用于楚辭,程序和算法無法滿足半自動構建楚辭語料庫的基本要求。因此,楚辭語義化的首要任務就是尋找一種適用于楚辭的預處理方法。
楚辭的預處理可以從古籍格式、行文語法、特征詞表三個方面入手。楚辭文獻具有多種古籍版式:橫版古文、豎版古文、雙行注釋、矮字注釋、標引注釋等不同排版,在斷句、行文、標注方式上都存在明顯差異,所以在ORC階段就需要對數字化文獻進行校勘。行文語法與特征詞表,在ICTCLAS系統中內置語法有相應識別算法和詞典,但是僅靠低效率的統計算法和內置詞典識別楚辭遠遠不夠。所以提高程序對古文識別率,不僅需優化切分技術的邏輯和算法以切分,[6]對切分文本進行有效標注也很重要。
程序標注技術主要分為字典搭配和自然語言處理(NLP)。字典搭配主要通過舉例、頻率、互信息等計量學信息通過大樣本來尋求詞組搭配規律;自然語言處理通過自然語言學習規則找到不同語境下,語素之間的關聯和上下位關系,以典型規則推演普通語境來提高機器識別語料的準確率。一般認為,基于規則的方法性能優于基于統計的方法,但是無論規則還是字典,不同時代的文本都有其適用性,制定具有不同時代特征的語料庫成為研究重點。
通過分析楚辭的一些基本特性,結合字典搭配和NLP,試圖在楚辭語料庫建設中尋找一種標注改進方法來提高程序對楚辭文本的識別率,由此減少人的參與度,實現程序化構建楚辭語料庫。
課題選擇文本工程通用框架平臺GATE,以特征詞表與語義規則為重點,結合數據庫和語義抽取技術,半自動的提取以體詞為主的語義知識。流程如圖2所示。

圖2 語義提取流程
流程核心是特征詞表的整理和語義規則的設計。特征詞表是指在目的文本中具有特殊含義詞的集合,它在同類作品中多次出現,作用相近,一次處理可形成回溯詞庫,在后期的標注抽取中重復使用,減少手工標注錯誤和時間,特征詞能作為楚辭語料提供種子庫。語義規則是楚辭語法中的行文規范。在不同的題材作品中行文方式不同,白話文亦有千般寫法,更何況距今日久的楚辭。利用規則引擎JAPE,以《楚辭語法研究》中的語法規則為基礎,將楚辭語法程序化,提高程序識別的準確率。
GATE[7](General Architecture for TextEngineering)系統是基于規則的信息抽取系統,始于1995年英國的謝菲爾德大學,包括開發環境和框架,以及更常見的概念表示軟件系統組織結構。
GATE作為處理自然語言軟件系統,可以有效地分解成不同類型的組件。
(1) 語言資源 (Language Resources,LRs):表示實體,如詞典,語料庫或本體;
(2) 處理資源 (Processing Resources,PRs):表示主要算法實體,如,解析算法,生成算法;
(3) 可視化資源(Visual Resources,VRs):表示可視化和編輯GUI組件。
GATE支持的文檔類型包括XML、RTF、Email、HTML、SGML以及純文本文件。經歷了數年的發展,GATE已經被應用于廣泛的研究和項目開發。
GATE對楚辭信息抽取系統提高中文識別準確率的同時,還提供全面的先秦文獻詞表作為后續語料庫的訓練語料。
JAPE[8]是Java標注模式引擎 (Java Annotation Patterns Engine)。JAPE提供了基于正規表達式的標注有限狀態轉換,是CPSL(Common Pattern Specification Language)的一個版本。GATE中標注實體采用規則方式主要由規則解釋引擎JAPE觸發。
JAPE語法可以分為左側(LHS) 向右側(RHS)兩個部分,這兩個部分由一系列的模式規則構成為標注特征值提供支持,其中右側規則可以使用Java代碼創建更強的控制。規則的左側(LHS)是一個標注模式,由規則表達操作符(*,?+….)構成。右側(RHS)是標注操作聲明,標注對規則左測的匹配,通過一些模式元素的關系標簽實現到規則右側。左右規則匹配模式可用有三種主要方式指明:① 指明文本的一個字符串;② 指明由Gazetteer,Tokeniser等預先指派的一個標注;③ 指明一個標注的屬性(值)。
在每一個語法的開始處,有兩個選項設置:一個是控制,它定義了Appelt、Brill、All、Once四種規則匹配方法;另一個是調試,用于處理沖突與匹配;如果出現不止一種的匹配,就會顯示沖突;如果沒有標注被定義,所有的標注都會被進行匹配。規則從本質上可以分為兩種類型:第一種不包括內置詞表gazetteer查找功能,可以定義一些小的格式;第二種類型主要依賴內置詞表gazetteer,需要更多的規則來描述所有標注,包含了更大范圍數據的可能性和更強的處理潛力。
通過JAPE語言的理解,設置規則來識別楚辭語法,結合內置詞表gazetteer,提高楚辭文獻中名詞實體識別的準確率。
經分析,基于HMM模型和數據平滑技術的算法對楚辭識別效率并不高,同時,通用詞表的覆蓋面與擴展性有限。更重要的是建設特征詞表是建設楚辭語料庫的基礎。因此,需要建設一個楚辭知識特征詞表。
詞表的建設要經過分析文本特征。根據現代漢語中詞的用法劃分,將文本內容用詞歸類為實詞、虛詞等四大類十一個小類。[9]按照功用分為注釋類、知識類。其中注釋類指具有具體含義的實用性名詞,以體詞、謂詞、加詞為主,包含子類專有名詞,方位名詞、形容詞、加詞(區別詞);此類詞有具體含義,可追根溯源。知識類是不可量名詞,謂詞中的動詞以及全部副詞。此類詞主要以抽象指代含義為主。同一個詞在不同語境中所指代的含義不同。以此為基礎構建滿足分類要求的詞表以擴充GATE自帶詞表。設立新的常用詞詞表,增加虛詞、專用名詞庫,以《楚辭》中《離騷》《九歌》《九章》等21篇,句式整齊的文本作為實驗文本,經專家校對修改,形成初始特征詞庫。
根據楚辭句式,句法,創作時期[10]對《楚辭》各篇進行區分。楚辭在不同時代有不同的研究版本,根據歷代注和疏的版本,專家學者研究成果,參考作者(屈原,宋玉等)、成文時代(懷王時期,襄王時期)、寫作風格(說理型,散文型)等多種元素,分析《楚辭》行文語境,將楚辭的行文語境分為三類,即句式型、虛詞型、特殊詞語,詳細分類如下。
(1) 句式型。①“離騷型”(《離騷》《九章》):兩句一韻,上句末尾用“兮”;百神翳其備降兮,九疑繽其并迎。②“橘頌型”(《橘頌》《涉江》《抽思》《懷沙》《亂辭》):兩句一韻,“兮”字位于下句末;后皇嘉樹;橘徠服兮。③“九歌型”(《九歌》各篇):兩句一韻,前后皆在句中用“兮”,且兮字都在每句的倒數第三個字;靈偃蹇兮姣服,芳菲菲兮滿堂(東皇太一)。
(2)虛詞型。屈原利用虛詞將四言拓展為長句,所以根據諸多虛詞將楚辭斷為不同的短語,減少句子的長度更易于標注,如“兮”多做虛詞用于表達頌唱和歌唱的節奏,所以“靈偃蹇兮姣服,芳菲菲兮滿堂”。根據虛詞,分為靈偃蹇、姣服、芳菲菲、滿堂。
(3)特殊詞語。在楚辭中,連綿詞、雙聲疊韻的使用較為頻繁,這些詞在標注過程中,常會遇到因為句讀不正確而造成大量的歧義;將所有連續出現即ABB結構的詞都統一標注,單獨列出重言(疊詞)、連綿(雙聲連綿,疊韻)、并列復合詞、類義并列復合詞、反義并列復合詞等特殊詞語。
ANNIE是GATE中的一個信息抽取系統。所有的ANNIE組件通信任務通過GATE標注文檔和資源。
整體考察余華先鋒創作時期內誕生的作品則可以發現,他對于開拓暴力、瘋癲、死亡、漫游等敘事的廣度與深度可謂是樂此不疲,在《河邊的錯誤》、《古典愛情》、《鮮血梅花》之前及同一時期的《十八歲出門遠行》、《現實一種》、《一九八六》等皆有探索,如果說創作的主題是相對單一的,那么這種形式實驗便可以被視為是余華先鋒創作過程求新求變的表現。而從上述的分析也顯示出,作為具有特定形式的傳統文體所原有的文學母題為余華的創作既提供了寫作素材,也提供了更多思考現代性問題的契機或媒介。
ANNIE詞表是ANNIE的一部分,每個獨立的詞表都是一個普通的文本文件。每一系列有一個lists.def的索引文件用來描述所有這樣的詞表列表文件,列表文件與索引文件在同一目錄下,通常同gazetteer詞表同一級。詞表查找器從關系庫中查找所有在文本中出現的實例,通過詞表索引文件獲取實例和本體間的關系,然后給出文本中實例的列表。索引文件表述了每個列表的主要類型,次要類型和語言,之間用冒號隔開。新增楚辭詞表def文件配置內容,第一列是表名,第二列是主要類型,第三列是次要類型,如圖3。這些列表被編譯至有限狀態,來匹配的任何文本字符串將被指定主要類型和次要類型的特征標注。主要類型,次要類型和語言將作為特征值添加到Lookup標注中。如place.lst詞表中,列表與文檔中某些文本匹配,詞表處理資源將產生一個Lookup標注,特征主要類major指向noun,次要類指向place。

圖3 楚辭語料預設關系
楚辭所用詞存在古今異義、詞義擴大、詞義變更等問題,GATE缺乏專業領域詞表,自帶的基礎中文處理組件尚不足標注古文,所以需要在數字化楚辭詞典的基礎上,借鑒領域專家研究成果,合并切分詞訓練庫,選出古今異義、用法差異的詞進行刪剔,修改、構建楚辭領域詞表。表1是詞表歸類中的部分名詞。依照詞性劃分楚辭中的詞類,制作語義特征詞表,見表2。

表1 名詞詞表歸類

表2 詞性分類與數量
在構建楚辭特征詞庫后,還需要設定標注規則。規則分為兩種,一類識別詞表中已設定的詞,一類標注詞表中未錄入的詞。規則會在詞后方添加詞性標記,結果以XML格式校對,存檔。
第一類規則是楚辭行文中的實體,如人名、官職、神靈名等,其標志符唯一。此類規則主要依附于ANNIE,Gazetteer詞表,同時利用命名實體識別規則(統一以jape后綴文件存儲)。程序利用lists.def在目標文本和后臺詞表建立聯系(Lookup),系統會標注目標文本中與詞典文件中相匹配的詞或詞組。部分詞表代碼如下。

凡詞表中所錄的詞會被規則標注,右側結果在多類規則執行后,目標文檔不僅顯示人名泛指,也包括植物名、感情類名詞等更多的標注結果。在進行詞表匹配后,開放式文本中會存在沒有被詞表收錄的詞,這類詞的詞性和分類就需要依靠第二類規則半自動判斷未錄入詞。
未錄入詞判斷是以現代漢語語法為基礎,這類規則,需要根據短語的固定結構從已知獲得未知。從已知的短語的結構和部分詞的詞來判斷未知詞,以固定結構與已知詞性相搭配識別未知詞。
從行文邏輯上觀察,先秦散文楚辭中存在的多種短語。就漢語語法,每一種楚辭短語都存在組成的固定結構,見表3。

表3 楚辭短語構成
以方位型短語為示例,方位型短語常見結構為:兮+方位名詞+方位助動詞。
同理可將表3中四類短語轉換為規則代碼。
(1)并列型。并列型以基本短語出現在楚辭中,句法結構簡單,在知識抽取過程中準確率高,關系關聯明確。如秋蘭兮麋蕪,羅生兮堂下《少司命》。
(2)偏正型。偏正型由兩部分組成,并且這兩部分是修飾和被修飾的關系。修飾部分叫做修飾詞語;被修飾部分叫做中心詞語。我們標注其中心詞語為有效知識。如魚隣隣,波滔滔《九歌·河伯》。
(3)動賓結構。動賓結構就是這兩個成分組在一起,前置位是謂詞(動詞為主),后置位是體詞;謂詞+體詞(名詞或代詞),如鳴篪兮吹竽《九歌·東君》。


規則的使用一方面可以重復標注不同文獻中的楚辭相關名詞,另一方面能夠擴大楚辭特征詞庫。代碼將語法層面的短語轉換為程序能識別的格式,結合已收集詞表,在規則既定的情況下,推理出詞表中未錄入的詞進行詞性標注。

表4 標注準確率

圖4 虛詞比例與標注準確率

圖5 標注準確率與字數關系
結構化的規則設定后,以離騷、九歌、橘頌作為訓練樣本,以相同類型不同內容的《九章》,《涉江》,《抽思》等篇章為樣本進行測試,結果如表4。
虛詞比例與標注準確率如圖4,準確率多集中于40%-80%,虛詞的比例同標注的準確率正比,在以楚辭為代表先秦散文詩中,虛詞的位置較為固定,一般存在于句中與句末,主要用于斷句。
從圖5中可以發現,各類型內部波動較大。有效標注率與字數成反比,整體而言,字數:九歌型<橘頌型<離騷型;準確率:九歌型>橘頌型>離騷型。
規則的設定在考慮語法本身的復雜度時,也要考慮穿插在同一文本中不同語法類型結合的方式。在同一篇文章中,多重格式相互組合,隨著篇幅的增長,組合愈復雜,準確率愈低,給人工校對帶來一定困難。規則與詞表可以將目標文本按詞性標注,標注后的文檔以有序的自帶庫或者通用的網頁文檔存儲。無序的楚辭數字文本在標注后以XML存儲,方便二次利用和構建楚辭語料庫。
楚辭語義標注至此告一段落,但從這次標注過程可以發現,楚辭的程序標注仍有很多方面需要注意。
首先,規則的上下位關系。同一文本需要接受不同規則的識別,規則的執行順序不同直接影響標注的準確率,按體詞,加詞,謂詞的執行順序在試驗后進行調整的結果,能降低標注的錯誤率,但具體詞性和推導的執行和位置依然值得深入探討。其次,楚辭語料庫規模造成數據稀疏。數據訓練集不足不僅造成標注的準確率偏低,也可能導致設定規則的適用性不足,無法系統地評判規則的實施效率,這點不僅需要增加詞表的體積和種類,也要在數據平滑技術上加以研究。最后,處理后的文本以XML存儲可以給學習和研究增加方便,但是在此基礎上的研究才剛剛開始,結合不同算法和挖掘技術來提高XML文檔的使用效率也需要進一步的努力。
[1]徐潤華,陳小荷.一種利用注疏的《左傳》分詞新方法[J].中文信息學報,2012,26(3):3-5.
[2]穗志方,等.宋代名家詩自動注音研究及系統實現 [J].中文信息學報,1997,12(2):3-6.
[3]方曉陽,等.TF型中藥數據庫的建立與應用[J].中國中藥雜志,2002(5):2-3.
[4]羅鳳珠.以“互動觀念”建立“紅樓夢網路資料中心”對紅學發展之影響[J].紅樓夢學刊·一九九七年增刊,1997(2):2-5.
[5]周建忠,賈捷.楚辭[M].南京:鳳凰出版社,2009.
[6]錢智勇,等.基于HMM的楚辭自動分詞標注研究 [J].圖書情報工作,2014,58(4):105-110.
[7] Hamish,Cunningham.DevelopingLanguageProcessing Componentswith GATE Version 7(a User Guide)[J/OL].[2014-10-20].http://gate.ac.uk/.
[8] DhavalThakker,TahaOsman.GATEJAPEGrammar TutorialVersion1.0[J/OL].[2014-10-20].http://gate.ac.uk/sale/tao/splitch8.html#chap:jape.
[9]齊滬揚.對外漢語教學語法[M].上海:復旦大學出版社,2005.
[10]廖序東.楚辭語法研究[M].北京:商務印書館,2006.