徐潤華,陳小荷
(南京師范大學(xué) 語言信息科技研究中心,江蘇 南京 210097)
先秦文獻(xiàn)專指秦朝統(tǒng)一之前、誕生于春秋戰(zhàn)國時代的一大批優(yōu)秀文學(xué)作品,它們形式上豐富多彩、內(nèi)容上斑駁燦爛,奠定了我國兩千多年文學(xué)發(fā)展歷史的堅(jiān)實(shí)基礎(chǔ)。目前已知的先秦傳世文獻(xiàn)不過數(shù)十種,而其中又以《左傳》的篇幅為最大。隨著時代的發(fā)展,古籍文獻(xiàn)的數(shù)字化、語料化的需求越來越大,[1]索引化、結(jié)構(gòu)化的應(yīng)用越來越廣,這也使得對先秦文獻(xiàn)進(jìn)行信息處理方面的研究具有了更加積極的意義。
然而現(xiàn)階段,針對先秦文獻(xiàn)在信息處理方面所做的研究還比較匱乏,并且多停留在使用現(xiàn)代漢語信息處理方法來處理古漢語的模式上,缺乏對先秦文獻(xiàn)體裁、古漢語語言風(fēng)格等特殊之處的有針對性處理。正是在這種背景下,本文以先秦傳世文獻(xiàn)中篇幅最大的《左傳》為研究對象,討論了一種從先秦文獻(xiàn)本身特點(diǎn)出發(fā)、充分考慮古漢語信息處理特殊性的《左傳》分詞新方法,并希望籍此能給整個先秦文獻(xiàn)的信息處理研究帶來有益的啟示和幫助。
現(xiàn)代漢語自動分詞的一般模式是: 人工標(biāo)注-模型訓(xùn)練-機(jī)器標(biāo)注。人工標(biāo)注的工作量通常很大,模型訓(xùn)練需要大規(guī)模語料支持,機(jī)器標(biāo)注的最終效果取決于標(biāo)注語料與訓(xùn)練語料的相似程度。先秦文獻(xiàn)卻并不適用于現(xiàn)代漢語的這套分詞模式: 先秦傳世文獻(xiàn)只有數(shù)十種,每種文獻(xiàn)的篇幅都不大,篇幅最大的《左傳》也只有28萬字,多數(shù)文獻(xiàn)只是幾萬字的篇幅,有的甚至只有幾千字?,F(xiàn)有的常見統(tǒng)計(jì)模型所需要的參數(shù)規(guī)模往往都很大,即使把某篇先秦文獻(xiàn)全部都用作于訓(xùn)練,訓(xùn)練語料的規(guī)模也顯得不足。
此外,從語料處理角度看,先秦文獻(xiàn)的語料大多是封閉的,各篇文獻(xiàn)之間的差異比較大,語料的同質(zhì)性很低。文獻(xiàn)間的差異主要體現(xiàn)在時代差異、學(xué)派差異、題材差異和體裁差異等。這些差異意味著,從《左傳》中訓(xùn)練得到的分詞統(tǒng)計(jì)數(shù)據(jù),并不能適用于其他文獻(xiàn)的自動分詞任務(wù),反之亦然。
石民[2]曾經(jīng)提出了一種基于CRF模型的《左傳》分詞方法,該方法的分詞精度可以達(dá)到93%左右。但這是在訓(xùn)練、測試語料按10∶1比例分配的基礎(chǔ)上得到的結(jié)果: 一方面,人工必須事先標(biāo)注好大部分的《左傳》語料,這就降低了自動分詞效果的實(shí)用性;另一方面,訓(xùn)練得到的分詞統(tǒng)計(jì)數(shù)據(jù)并不能很好的適用于其他先秦文獻(xiàn),這就使得自動分詞方法的通用性也大打折扣。
《左傳》語料中單音節(jié)詞居多,不適宜使用現(xiàn)代漢語通用的分詞詞表。多字詞大多是專名,專名的結(jié)構(gòu)和語境與現(xiàn)代漢語差異很大,加上詞類活用、繁簡字、通假字、異體字、文獻(xiàn)傳抄訛誤等因素,[3]都給《左傳》的自動分詞增加了困難。由于單音節(jié)詞居多,即使全部切為單字詞,《左傳》的分詞精度也能達(dá)到80%左右?!蹲髠鳌纷詣臃衷~的基線較高,分詞精度的提升空間小。
先秦文獻(xiàn)由于年代久遠(yuǎn),語言生澀,故后人為其注釋,謂之“注”;由于“注”仍然存在語言難懂、解釋不全的問題,后人為“注”進(jìn)行注釋,謂之“疏”。[4]注疏文獻(xiàn)的信息十分豐富,而且往往有不同時期的疊加: 一部《論語》就有《論語注疏》、《論語筆解》、《論語集注》、《論語全解》四部不同時期的注疏文獻(xiàn)。
先秦文獻(xiàn)的注疏中,包含有大量的半結(jié)構(gòu)化詞匯、語義知識,可以為先秦文獻(xiàn)的自動分詞提供重要幫助。例如,根據(jù)《春秋左傳正義》,可以對下面五個《左傳》句子里的相關(guān)詞語做出正確的切分:
《左傳》 《春秋左傳正義》
1.秋,大/雨/雹 雨,于付反。
2./邾子克/也 克,儀父名。
3./六/人叛楚 六國,今廬江六縣。
4.魯有名而無/情/ 有大國名,無情實(shí)。
5.冬,來,/反馬/也 反其所留之馬。
陳小荷[5]指出,注疏猶如現(xiàn)今語文教學(xué)中的“串講”,是對先秦文獻(xiàn)進(jìn)行自動分詞和標(biāo)注的重要依據(jù)。他認(rèn)為,語言信息處理需要啟動知識?,F(xiàn)代漢語信息處理的一般模式是用訓(xùn)練語料作為啟動知識(有監(jiān)督的學(xué)習(xí))。先秦文獻(xiàn)信息處理則應(yīng)將相關(guān)文獻(xiàn)(即注疏文獻(xiàn))作為啟動知識,因?yàn)樘幚硐惹匚墨I(xiàn)所需的知識已經(jīng)存在于相關(guān)文獻(xiàn)之中。而來自于相關(guān)文獻(xiàn)的證據(jù)要比統(tǒng)計(jì)模型更可靠和好用。
注疏文獻(xiàn)中雖然包含了大量的詞匯語義知識,但它尚未和原文建立起對應(yīng)關(guān)系;而自動對齊則正是要找到注疏和原文之間的這種關(guān)聯(lián)并將其形式化,將半結(jié)構(gòu)化的注疏文獻(xiàn)結(jié)構(gòu)化,為自動分詞乃至其他信息處理任務(wù)提供更為可靠和有效的幫助。
注疏文獻(xiàn)是一種半結(jié)構(gòu)化的文獻(xiàn),其內(nèi)部構(gòu)成方式呈現(xiàn)出明顯的規(guī)律性,《左傳》注疏文獻(xiàn)也不例外。本文研究所選用的《左傳》注疏文獻(xiàn)為《春秋左傳正義》,以下是其部分內(nèi)容示例:
【傳】元年,春,王周正月。言周以別夏殷。○別,彼列反。夏,戶雅反。不書即位,攝也。假攝君政。不脩即位之禮,故史不書於策,傳所以見異於常。
【疏】“不書即位,攝也”?!鹫x曰: 攝訓(xùn)持也。隱以桓公幼少,且攝持國政,待其年長,所以不行即位之禮。史官不書即位,仲尼因而不改,故發(fā)傳以解之。
上例中,“元年,春,王周正月”、“ 不書即位,攝也”都是援引自《左傳》原文的引文,引文后面的內(nèi)容是對該引文所做的注釋?!洞呵镒髠髡x》基本由“傳”和“疏”構(gòu)成,“傳”和“疏”均以段落為界,每段文字由引文和注釋構(gòu)成,引文常常間斷為若干小句。
自動對齊的最終目的,是要找到原文在注疏中的引文、注疏對引文所作的解釋以及該解釋中所出現(xiàn)的原文詞匯。因此,《左傳》及其注疏文獻(xiàn)的對齊任務(wù)可以細(xì)化為句子對齊、注釋對齊、詞匯對齊這三個子任務(wù)(圖1):
圖1 對齊任務(wù)示例
注釋對齊是詞匯對齊的基礎(chǔ);句子對齊是注釋對齊的基礎(chǔ)。因此,句子對齊是自動對齊的核心任務(wù)。
順序有關(guān)的自動對齊: 按照順序,對于原文中的每個句子,都到注疏文獻(xiàn)的相應(yīng)部分中查找可能的對齊結(jié)果。原文和引文的標(biāo)點(diǎn)位置不一致,并且相同位置的標(biāo)點(diǎn)也存在不一致的情況,因此只有“過去”的原文對齊成功了,“現(xiàn)在”和“將來”的原文才可能對齊成功。
局部回溯匹配: 一個好的對齊算法,必須要有很強(qiáng)的兼容性。在進(jìn)行局部匹配時,算法不會僅僅只根據(jù)當(dāng)前原文和當(dāng)前引文的相似度計(jì)算結(jié)果就給出對齊成功與否的結(jié)論,而是向前回溯上一次的對齊結(jié)果作為參考。
全局回溯匹配: 對齊允許失敗,而且有些失敗是必要的。只有及時的失敗,才能及時的回溯,才能使得整個對齊過程繼續(xù)有效地進(jìn)展下去。無論是由于算法誤判而造成的對齊失敗還是由于錯誤的對齊成功而造成的錯位現(xiàn)象,都可以被控制在有限的范圍之內(nèi),而不影響全局。
《左傳》及其注疏文獻(xiàn)的自動對齊采用順序有關(guān)的對齊技術(shù),在對原文及其引文進(jìn)行相似度比較的同時,利用局部回溯機(jī)制增強(qiáng)相似度比較結(jié)果的可信度,利用全局回溯機(jī)制減少錯位匹配發(fā)生的機(jī)率和錯位匹配的長度。通過對《左傳》及其注疏文獻(xiàn)《春秋左傳正義》進(jìn)行自動對齊實(shí)驗(yàn),得到如下實(shí)驗(yàn)結(jié)果: 《左傳》全文共37 588個小句,其中對齊成功36 917個,占全部小句數(shù)的98.2%。考慮到少量由于錯位匹配而造成的錯誤對齊結(jié)果,最終的自動對齊正確率略低于98%。
利用注疏的《左傳》自動分詞,就是要根據(jù)注疏文獻(xiàn)來生成注疏詞表,然后以注疏詞表為基礎(chǔ)來進(jìn)行自動分詞,這是一種規(guī)則驅(qū)動、詞表驅(qū)動的分詞方法。因此,本文引入最大匹配分詞算法作為《左傳》自動分詞的算法主框架: 每次從待分詞文本中取長度等于最大詞長的字串,該字串逐字遞減直至在注疏詞表中查找成功為止,否則將該字串最后剩下的單字作為單字詞輸出。
5.2.1 注疏詞表的生成
分詞算法以詞表驅(qū)動,因此,如何利用《左傳》的注疏文獻(xiàn)生成高質(zhì)量的注疏詞表就成為了分詞算法的核心問題。基本的思路是: 在注疏文獻(xiàn)中查找原文所有可能成詞的字串,將找到的那些字串添加進(jìn)注疏詞表中。這實(shí)質(zhì)上是一種子串查找和匹配的過程,其目的是找到注或疏中出現(xiàn)過的《左傳》原文詞語。本文分詞算法使用了兩種串匹配方法:
寬匹配——如果原文中的字串出現(xiàn)在注或疏中,并且該字串沒有包含在其他原文字串內(nèi),則匹配成功;
嚴(yán)匹配——如果原文中的字串出現(xiàn)在注或疏中,并且該字串的前后位置有顯式分隔標(biāo)記(標(biāo)點(diǎn): “”、‘’、【】等;提示詞: 曰、爲(wèi)、稱等),則匹配成功。
除了串匹配方法,查找方式和查找范圍也都是影響注疏詞表生成的因素。按照是否利用自動對齊的信息,查找方式分為兩種:
利用自動對齊——對原文中的每個字串,都到和當(dāng)前原文對齊成功的注或疏部分去查找;
不利用自動對齊——對原文中的每個字串,都到全部的注和疏部分去查找。
此外,由于注是對原文直接的注釋,給自動分詞提供的依據(jù)可信度更大;疏是對注的注釋,和原文不相關(guān)的信息比較多,干擾較大,但仍不能就此完全排除疏對于自動分詞的啟發(fā)作用。本文分詞算法的查找范圍也分為兩種: 一、只在注部分進(jìn)行查找;二、在注和疏部分都進(jìn)行查找。
綜合考慮“串匹配方式”、“是否利用自動對齊”、“查找范圍”這三個因素,可以分別生成八個注疏詞表。注疏詞表中的條目由“詞語”、“詞語所在原文小句”、“頻率”這三個數(shù)據(jù)項(xiàng)構(gòu)成(圖2)。
圖2 生成注疏詞表示例
5.2.2 局部特征和全局特征
在利用注疏文獻(xiàn)的自動分詞過程中,局部特征指的是原文中的某個字串,恰好可以在注疏對其引文進(jìn)行注釋的內(nèi)容中找到成詞證據(jù)。即,設(shè)當(dāng)前待分詞的字串為A,所在小句為B,若在注疏詞表中查到A,并且其所在原文的小句恰好就是B,那么字串A查找成功。
但是,原文中詞語的每一次出現(xiàn),注疏并不會都給出解釋。很多時候,需要把詞語出現(xiàn)在其他地方的解釋傳遞到當(dāng)前的這次出現(xiàn)中。如果能夠在注疏對其他引文進(jìn)行注釋的內(nèi)容中找到成詞證據(jù),那么依然可以把當(dāng)前原文的字串看成是一個詞語。這就是全局特征的運(yùn)用。
全局特征和局部特征的最大區(qū)別在于是否利用注疏自動對齊的結(jié)果。引入這組特征的目的也正是為了驗(yàn)證利用自動對齊的分詞效果是否優(yōu)于不利用自動對齊的效果,從而體現(xiàn)出自動對齊工作的重要性。
5.2.3 分詞算法模型
不同的注疏詞表生成方式也就形成了不同的查找詞表方式,而查找詞表的過程是分詞算法中最重要的一環(huán),查找是否成功直接決定當(dāng)前字串是否被切分成詞語。如何給出《左傳》中每個字串查找詞表成功與否的判斷,是分詞算法的關(guān)鍵。加上局部、全局特征的運(yùn)用,整個分詞算法共受到四個方面因素的制約: “自動對齊”、“查找范圍”、“匹配方式”、“特征運(yùn)用”。根據(jù)這四個制約因素,本文構(gòu)建了一個利用注疏對《左傳》進(jìn)行自動分詞的算法模型,模型公式如下:
Res = Si× Rj× Mk× Fn
說明: S、R、M、F都是長度為2的數(shù)組,i、j、k、n是數(shù)組下標(biāo)。數(shù)組元素的值為0或1,Res的值為1表示查找詞表成功,值為0表示查找失敗。Si表示是否“利用自動對齊”,Rj表示是否“利用注和疏”,Mk表示是否“采用嚴(yán)匹配”,F(xiàn)n表示是否“利用局部特征”。
根據(jù)i,j,k,n取值的不同,算法模型共有12種參數(shù)組合方式(四個參數(shù)組合應(yīng)該有16種情況,但由于在不利用自動對齊的時候,查找過程無法使用局部特征,故少了四種),每組參數(shù)形成一個子算法,共12個子算法,如表1所示。
本文選取1/10的《左傳》語料來對這12個子算法進(jìn)行優(yōu)選,由于《左傳》語料以單音節(jié)詞為主,故以全部切分為單字詞的分詞精度作為《左傳》自動分詞的baseline并與子算法的分詞精度進(jìn)行比較:
表1 分詞算法的模型參數(shù)
表2 模型參數(shù)的優(yōu)選
分詞結(jié)果表明(表2),子算法2的分詞效果最優(yōu)。12種子算法的分詞精度全部都高于Baseline,這說明引入注疏來輔助分詞是可行的,對分詞精度的提高確有幫助。同時,利用自動對齊的子算法2的分詞效果最優(yōu),也進(jìn)一步驗(yàn)證了自動對齊對于分詞工作的重要意義。
在模型參數(shù)優(yōu)選的基礎(chǔ)上,利用注疏文獻(xiàn)的《左傳》自動分詞實(shí)驗(yàn)選取《左傳》全文和《春秋左傳正義》全文作為實(shí)驗(yàn)語料,采用效果最優(yōu)的子算法2作為分詞算法的核心成分,并將《左傳》全部切分為單字詞的分詞精度作為實(shí)驗(yàn)的baseline。實(shí)驗(yàn)得到的分詞結(jié)果與人工切分的《左傳》分詞語料進(jìn)行比對,最終的實(shí)驗(yàn)數(shù)據(jù)如表3所示。
表3 《左傳》全文的自動分詞數(shù)據(jù)
利用注疏的《左傳》分詞方法的F值可以達(dá)到89% ,相對于baseline有近10% 的F值提升,這說明利用注疏文獻(xiàn)來對《左傳》進(jìn)行自動分詞的做法是可行的,并且能夠收到比較好的效果;子算法2的分詞F值接近90%,已經(jīng)具備一定的實(shí)用性;雖然在數(shù)據(jù)上仍不及基于CRF模型的《左傳》分詞效果,但較之統(tǒng)計(jì)模型對于訓(xùn)練數(shù)據(jù)的大量需求,注疏分詞方法的優(yōu)勢也很明顯: 無需任何訓(xùn)練語料,整個分詞過程中只用到了一本注疏文獻(xiàn)而已。
切分不一致問題。只靠查找詞表無法解決組合型歧義,而組合型歧義在《左傳》語料中并不少見。例如,“請 其 不足”、“也 不 足以 容 從者”。
低頻詞問題。有些詞語有著明顯的形式特征,例如,“鄭公”,“梁伯”等,但由于出現(xiàn)次數(shù)過少,未收入詞表。
人工標(biāo)注問題。數(shù)詞及部分量詞究竟切開還是不切開,存在不一致。一些含虛詞的結(jié)構(gòu),到底切不切開,存在不一致。例如,“在上”、“之後”、“不過”等。
統(tǒng)計(jì)模型的本意,是從較小規(guī)模的訓(xùn)練語料中學(xué)習(xí)模型參數(shù),用學(xué)到的模型來自動處理較大規(guī)模的、與訓(xùn)練語料相似的其余語料。但這與《左傳》語料、先秦文獻(xiàn)語料規(guī)模較小、同質(zhì)性低的特點(diǎn)相沖突。而本文所提出的利用注疏的分詞方法的最大特色就在于無需人工事先標(biāo)注,不需要任何訓(xùn)練語料;同時,利用相關(guān)文獻(xiàn)來處理目標(biāo)文獻(xiàn)的分詞思路具有通用性,完全可以移植到其他先秦文獻(xiàn)的自動分詞乃至各種信息處理的任務(wù)中去。
《左傳》自動分詞方法中所使用的八個注疏詞表
以及12個分詞子算法目前只是被孤立地看待,可以嘗試將其組合起來進(jìn)行實(shí)驗(yàn);尚未利用到詞表中的頻率信息,分詞算法模型中應(yīng)當(dāng)引入更多的統(tǒng)計(jì)量來對查找結(jié)果進(jìn)行篩選;查找詞表過程中所使用的串匹配方法還很粗糙,需要相關(guān)句法知識的引入來形成約束規(guī)則,提高匹配結(jié)果的精度;《左傳》的注疏文獻(xiàn)不止一種,同一種注疏文獻(xiàn)也存在著不同的版本[6],下一步的工作應(yīng)將多本《左傳》注疏綜合起來以更加充分地挖掘其中的詞匯語義知識。
[1] 尉遲治平. 計(jì)算機(jī)技術(shù)和漢語史研究[J]. 古漢語研究, 2000,3:56-60.
[2] 石民,李斌,陳小荷. 基于CRF的先秦漢語分詞標(biāo)注一體化研究[J]. 中文信息學(xué)報(bào), 2010,24(2):39-45.
[3] 邱冰. 基于中文信息處理的古代漢語分詞研究[J]. 微計(jì)算機(jī)信息, 2008,1:100-102.
[4] 楊伯峻. 春秋左傳注(修訂版)[M]. 北京:中華書局, 1990.
[5] 肖磊,陳小荷. 古籍版本異文的自動發(fā)現(xiàn)[J]. 中文信息學(xué)報(bào), 2010,24(5):50-55.
[6] 常娥,侯漢清,曹玲. 古籍自動??钡难芯亢蛯?shí)現(xiàn)[J]. 中文信息學(xué)報(bào), 2007,21(2):83-88.