蔣志鵬 關毅
電子病歷是醫務人員在醫療活動過程中使用醫療機構信息系統生成的文字、符號、圖表、圖形、數據、影像等數字化信息,并能實現存儲、管理、傳輸和重現的醫療記錄[1?2].電子病歷是一種極其寶貴的知識資源,通過對電子病歷進行自動分析,可以為用戶健康知識獲取提供有力支持.近幾年,電子病歷的知識獲取成為研究的熱點問題[3?5],其獲取過程一般分為語言分析和信息抽取兩個階段進行,詞法分析和句法分析是主要的語言分析手段,能夠為信息抽取提供必要的條件.例如,電子病歷的句子可能包含多種藥物信息及不同的用藥說明.傳統的規則表示僅在藥名抽取上具有較高精度,而用藥頻率、計量等重要信息的抽取需要結合上下文環境,是規則表示無法處理的.句法分析技術通過對句子進行結構化處理,能夠解析復雜的上下文環境,為信息抽取提供豐富的上下文信息,已經成為構建高精度信息抽取系統的重要組成部分.
中文電子病歷(Chinese electronic medical records,CEMR)文本不同于一般的限定領域文本.語料構建方面,CEMR的標注工作要求兼顧醫學和語言學的相關知識,增加了標注者的學習成本,整個標注過程更加費時費力.文本差異方面,除了詞匯層面的差異外,CEMR文本特有的書寫方式加劇了與開放領域的文本差異.具體表現為,從文本構造上看,CEMR是結構化數據和自由文本的結合,自然語言處理的對象通常指的是自由文本.根據CEMR詞性標注準確率與未登錄詞率的相關性分析[6],CEMR的自由文本可以分為敘述部分和羅列部分,敘述部分多以長句的形式描述癥狀、檢查等信息,例如診療計劃、診斷依據、病例特點、主訴等,羅列部分多為醫學術語及其修飾語的簡單羅列,例如臨床初步診斷、臨床確定診斷、門診收治診斷、治療效果等.其中,羅列部分充斥著開放領域語料鮮有的醫學術語,例如“腦梗死”在賓州中文樹庫(Penn Chinese treebank,PCTB)中從未出現過,使得該部分的句法分析難以利用PCTB中學習的知識.CEMR文本重復度高的特點導致敘述部分呈現強模式化現象,例如“伸舌”、“示齒”這類縮略詞構成的動賓短語在病例特點中頻繁出現,該類短文本多以標點符號分隔描述病情,在PCTB中同樣較少使用.CEMR自由文本的這兩部分特點使得直接應用PCTB訓練的句法分析模型性能下降更為嚴重,Berkeley parser[7]與Stanford parser[8]相比,中文開放領域的最好結果下降了30%左右.
本文將CEMR自由文本中重復出現的模式形式化為樹片段,樹片段主要用于句法樹重排序和面向數據句法分析(Data-oriented parsing,DOP).句法樹重排序一般分為兩步:1)由基本的句法分析器為每個句子產生一組候選句法樹,候選句法樹的初始概率為最初排序的依據;2)根據句法樹的額外的結構特征訓練重排序模型,對這組候選句法樹重新排序,通常使用樹片段作為重排序的額外特征.盡管重排序模型對句法分析精度有較大提升,但是時空復雜度較高的缺點限制了其實際應用.DOP技術首先由Scha在1990年提出,之后由Bod逐步發展,具體表達了如下假設:人類對語言的領悟和創造依賴于以往具體的語言經驗,而不是依賴于抽象的語法規則[9].模型首先預設了一個具有帶標短語結構樹標注的語料庫,然后從這個語料庫中抽取所有任意大小規模和復雜結構的片段.其次,通過對語料庫中片段的組合操作來實現新輸入的分析,然后考慮輸入的所有派生結果的概率總和的大小來選擇最有可能性的分析結果[10].
在前期工作中,我們對CEMR語料進行了詞法統計分析[6],其中逐點互信息的結果說明CEMR相比中文開放語料和英文EMR模式化程度更強,這是由于CEMR的編寫具有更強的目的性,力求表述清晰、簡潔,導致重復使用相似的句法結構,形成模式化的表述.同時,CEMR中包含不同的部分,每個部分意圖不同,重復使用的短語結構也不盡相同,這種模式化表述一般與陳述性語句混合使用.以首次病程記錄為例,包括主訴、既往史、主觀癥狀、客觀檢查、評估和診斷、診療計劃六個部分,其中頻繁出現的重復結構如表1所示,而傳統的PCFG文法將句法樹層數限制為2,難以直接表示這些模式,例如“伴心率失常室早”、“伴心率失常房顫”、“伴心動過速”會形成兩類重復模式,即“伴心率失常+疾病名”和“伴+疾病組”,這兩類模式均不屬于PCFG文法.DOP希望抽取所有可能的樹片段(不限制層數),能夠更加直觀、形象地表現CEMR中的模式.我們以樹片段替換的方式對初始的句法分析結果進行糾錯,類似于引入了句法樹重排序中的結構特征,但相比句法樹重排序按模板抽取結構特征,DOP的優勢在于不限制樹片段的形式,能夠保證其多樣性,并且在增加新語料時不需要重新訓練模型.盡管DOP的文法歸納過程不需要訓練模型,但是樹片段的數量隨樹庫規模呈指數級增長,抽取樹庫中所有可能的樹片段難以實現.
層次句法分析是一種快速的完全句法分析方法,在前期工作中,我們改進了層次句法分析模型[11],并標注了小規模CEMR句法樹庫[12?13],本文希望充分利用CEMR模式化強的特點,進一步提升層次句法分析模型的精度.本文的工作屬于后處理融合,基于改進的樹片段的抽取算法,將DOP中樹片段的選擇和替換操作融入層次句法分析過程中,最終在CEMR上句法分析的F1值超過了目前最優的Berkeley parser和Stanford parser.模型整體架構如圖1所示.

表1 重復模式樣例Table 1 Pattern samples repeated
圖2為面向數據句法分析與層次句法分析的融合示例,輸入為經過詞性標注的CEMR句子“對光反射存在,雙眼運動自如,無面舌癱”.該句子依次經過詞匯詞性混合匹配、初選、篩選和組合過程,獲得了一個最優的樹片段集合,最終通過樹片段替換的方式改進了層次句法分析結果.圖中虛線框部分為該實例中兩個有效的替換.
樹核方法一般用于量化兩棵句法樹的相似程度,并不能明確給出這兩棵句法樹的共有結構,Sangati等[14]在2010年首次將樹核應用到樹片段抽取中,Sangati將樹片段分為標準片段和局部片段,抽取時對樹庫中所有樹結點進行兩兩比較,并提出基于樹核的局部片段抽取算法,該算法不只計算公共結點數量,還保留了重復出現的最大公共樹片段.盡管Sangati能夠從樹庫中抽取有效的樹片段,但是使用二次樹核(Quadratic tree kernel,QTK)在樹片段抽取時效率不高.與Sangati相類似,Moschitti[15]同樣對樹片段進行了劃分,并提出了基于快速樹核(Fast tree kernel,FTK)的樹結點匹配算法,該算法的效率要高于Sangati,但是僅保留了樹庫的公共結點集而不是樹片段.van Cranenburgh[16]將Moschitti的快速樹核算法改進為矩陣形式抽取樹片段,算法時間復雜度降為線性平均時間,但整個抽取過程只適用于二叉樹,并且只抽取樹庫中的局部片段.本文的樹片段抽取以Sangati的工作為基礎,借鑒動態規劃思想改進了標準樹片段抽取算法,并使用Moschitti的快速樹核算法替換Sangati的二次樹核算法,提高了整個算法的執行效率.
中文方面DOP相關研究較少,早期張 杰等[10]提出基于DOP框架的中文句法分析方法.整個分析過程中,句子需要依次經過詞匯層與詞性層的初選,再從樹片段庫中獲得與句子相匹配的片段組合形式,利用Kullback-Leibler距離函數評估句子與初選結果的相似度,分析結果為相似度大于閾值或相似度最高的片段組合.本文的樹片段處理過程相當于在張 杰工作的基礎上,提出了一套適用于CEMR的樹片段選擇和替換方法.由于我們的目的是通過樹片段替換融合層次句法分析模型,所以沒有保留張 杰的組合分析過程.
層次句法分析是一種高效的完全句法分析方法,但是逐層組塊分析導致錯誤累積問題嚴重,在前期工作中,我們提出了一種簡單可行的錯誤預判及協同糾錯算法[11],每層組塊分析時跟蹤預判錯誤標注結果進入下一層,利用兩層預測分數相結合的方式協同糾錯.實驗結果表明,加入糾錯方法后,層次句法分析在保證解析速度的同時,獲得了與主流中文句法分析器相當的解析精度.近幾年,由于單一模型的解析結果仍然存在局限性,模型融合成為提高現有句法分析水平的主要途徑.模型融合一般指將不同句法分析器的結果融合成一個最終結果,常見的融合方式包括將不同結果雜合成為一個結果[17?18],或按照某些標準從多個結果中選擇一個最優的結果[19].

圖1 融合模型框架Fig.1 The framework of integrated model

圖2 面向數據句法分析與層次句法分析融合示例Fig.2 The sample integrating DOP and hierarchical parsing
通過對CEMR標注語料進行統計分析[6],我們發現標點符號在CEMR中所占比例高達21.69%,僅次于名詞位居第二位,并且高于開放領域文本6.4%之多.由于層次句法分析框架是自底向上逐層序列化標注,CEMR標點符號的頻繁使用使得下列問題更為突出:1)句法樹中高層標點符號成分較難確定;2)并列結構中標點符號成分難確定;3)逐層標注的錯誤累積導致標點對的內容無法成為單棵句法樹.CEMR中最常見的標點對為雙引號和圓括號,其內容經常被CRF模型分割成多棵句法樹,后續部分提及的標點對也默認為雙引號和圓括號.
CEMR中標點符號的使用同樣有較強規律性,例如,經常出現在高層句法樹中的標點符號多用于連接并列句法結構.為緩解上述問題,一方面,本文圍繞標點符號設計了辨識度更高的特征,形成上下文詞典,以詞典糾錯的方式改進標點符號的標注效果.另一方面,使用標點對分割句子,優先解析標點對的內部成分,采用分割組合的方式進行句法分析.
結合層次句法分析模型[13]在調試語料上的錯誤分析結果,我們設計了上下文詞典對標點符號進行糾錯,關鍵詞為標點符號,詞典項如表2所示.其中,第1行為通用項?father,lfather,rfather?,father表示父結點,lfather表示父結點的左兄弟結點,rfather為父結點的右兄弟結點.第2行aword為相鄰詞,相鄰詞的選取與Collins的頭詞類似,目的是對子樹邊界位置的標點符號進行消歧,如果父結點是NP,則aword為左相鄰詞,否則aword為右相鄰詞,當 aword為空時?lgfather,rgfather,lbword,rbword?生效,lgfather和rgfather分別為祖先結點的左兄弟和右兄弟結點,lbword為lfather的最右子結點,rbword為rfather的最左子結點.第3行和第4行的詞典項與句法樹高度相關,即句子邊界有助于高層標點符號糾錯,固定搭配有助于低層標點符號糾錯.當標點符號所在層數大于3時,?lbbegin,rbend?判斷當前位置是否為句首或句尾,若不是則直接比對aword項.

表2 上下文詞典項概括Table 2 Summary of elements of context dictionary
標點符號的上下文詞典糾錯算法能夠與多層協同糾錯算法[11]很好地配合使用.當歧義項為標點符號時,優先檢索上下文詞典,選擇匹配成功的候選結果作為最優解,否則進入多層協同糾錯算法消歧.在檢索上下文詞典時,為了減少詞典中人工錯誤帶來的干擾,我們規定只有當前條件對應的元組完全匹配時,才算匹配成功.
由于閉合的標點對必然會成為一個句法樹,所以省去了訓練模型識別獨立語塊的過程,在進行句法分析時,如果存在標點對,則優先解析標點對的內容,再將標點對的句法樹與其余部分重組成新的輸入,進行新一輪解析.引入標點符號分割和糾錯算法的層次句法分析流程如圖3所示,其中“CRF序列化標注”和“多層協同糾錯”是前期構建的基礎模型CLP[11].
由于樹片段不限制層數和結構,導致其數量隨語料規模呈指數級增長,抽取時間遠長于統計機器學習模型的訓練時間,當需要從更大規模語料中抽取樹片段時,抽取時間將成為其實際應用的瓶頸問題,所以在樹片段抽取上的改進工作主要圍繞抽取效率展開.

圖3 引入標點符號分割和糾錯的句法分析流程Fig.3 The parsing process with segmentation and error correction for punctuation
參照Sangati等[14]對樹片段的劃分方式,首先給出標準樹片段和局部樹片段的相關定義,然后為兩類樹片段分別設計算法抽取公共樹片段,形成兩個樹片段庫.
定義 1(標準樹片段).標準樹片段stf是句法樹T的連通子圖,并且stf中任意結點的子結點或為空,或與T中對應結點的子結點相同.
定義 2(局部樹片段).局部樹片段ptf是句法樹T的任意連通子圖.
定義 3(公共樹片段).公共樹片段ctf是在句法樹庫中至少出現兩次的標準樹片段或局部樹片段.
定義4(公共葉結點).公共葉結點ct屬于公共樹片段ctf,并且ct的子結點或為空,或不屬于ctf.
定義5(公共非葉結點).公共非葉結點cnt的子結點不為空,并且cnt及其子結點全部屬于公共樹片段ctf.
從上述定義可以看出,標準樹片段相當于局部樹片段的特殊形式,所以其抽取和匹配的耗時更少,為了對比兩類樹片段對模型融合的貢獻,本文分別抽取了兩個樹片段庫.公共樹片段可以較好地表現CEMR中重復出現的模式,下文提及的標準樹片段和局部樹片段都默認為公共樹片段.
以CEMR中的句法樹為例,圖4(a)為CEMR句法樹,圖4(b)和圖4(c)分別表示從該句法樹中抽取的部分標準樹片段和局部樹片段.共現模式是CEMR中的高頻模式,圖4中實線框內的標準樹片段能夠體現“心率失常”和“室早”這兩個病癥的共現模式,而通過將“室早”泛化為名詞詞性,形成虛線框內的局部樹片段,則能夠表現“心率失?!迸c其他病癥的共現模式,例如常見的“心動過速”、“房顫”等.由此可見,CEMR中的共現模式與樹片段能夠很好地吻合,所以本文將其形式化為樹片段,用于改善句法分析模型在CEMR上的解析效果.
Sangati等[14]抽取標準樹片段的過程由兩部分組成,第1部分遍歷句法樹庫中每一對樹結點,算法時間復雜度為O(n2m2),其中n為句法樹的數量,m為單棵句法樹的最大結點數,第2部分抽取父子結點均相同的片段,最壞情況下,算法時間復雜度為O(m2),最終算法時間復雜度為O(n2m4).為避免重復比對問題,我們利用動態規劃思想改進了Sangati的抽取算法,如算法1所示.

圖4 句法樹及其片段樣例Fig.4 Examples of a parsing tree and its fragments
算法1.標準樹片段抽取算法

不同于Sangati的抽取算法,本文的標準樹片段抽取算法圍繞公共非葉結點展開,其中,SIZE函數用于計算樹庫中句法樹的數量,CHILD-SIZE函數返回子結點數目,算法第1~5行是樹庫結點對的遍歷過程,第6行的變量visited用于保存已訪問的公共非葉結點對.在調用EX-TREE-STF函數抽取標準樹片段之前需要查找visited,visited中存在的公共非葉結點對不再遍歷.算法第11~26行用于識別公共非葉結點,具體地,在遍歷結點對時,當兩個結點相同并且子結點數也相同時,遞歸調用EX-TREE-STF算法遍歷所有子結點,如果所有子結點相同,則該結點對為公共非葉結點對;否則,當兩個結點相同,但其子結點不同或為空時,該結點對則為公共葉結點對.由于不需要重復遍歷公共非葉結點,使得EX-TREE-STF算法時間復雜度降至O(d),d為單個結點的最大子結點數,整個算法的時間復雜度降為O(n2m2d).
與標準樹片段抽取算法類似,Sangati等[14]在抽取局部樹片段時同樣需要先遍歷句法樹庫中每一對樹結點,再抽取局部樹片段.不同之處在于,兩個樹結點可能共享多個公共子結點序列,形成多種公共局部樹片段的組合.為抽取所有可能的公共局部樹片段,Sangati等提出了基于二次樹核的結點映射算法,該算法類似于最長公共子序列查找,需要遍歷每個子結點對,其時間復雜度為O(d4),d為單個結點的最大子結點數,整個算法的時間復雜度為O(n2m2d4).
事實上,在抽取公共樹片段時,如果兩個父結點的產生式不同,其子結點沒有必要再進行比較.Moschitti[15]提出了基于快速樹核的結點映射算法,只考慮父結點產生式相同的結點匹配情況.受該思想啟發,本文利用Moschitti的快速樹核替換二次樹核算法,獲取樹結點映射集,算法2是改進后的局部樹片段抽取算法.
算法2.局部樹片段抽取算法

算法2中,SORT函數將結點的產生式按字母順序排序,POP函數返回有序表中首個結點并將其彈出,PROD函數返回結點所在的整個產生式,NEXT函數返回有序表中當前結點的下一個結點.第1~3行為樹庫的遍歷過程,該過程與算法1相同.第4~17行為基于快速樹核的結點映射算法,該算法首先對樹的結點按字母順序排序,然后逐個比較產生式相同的結點,對所有公共結點進行標記,與標準樹片段抽取不同,這里不需要區分公共葉結點和非葉結點.第18行遞歸調用EX-TREE-PTF算法獲取ni和nj的公共局部樹片段集合,該算法與Sangati等[14]提出的算法3相同,功能是對結點映射組maps進行合并,最終加入到整個局部樹片段集合中.
由于產生式排序過程在進行結點映射之前僅執行一次,時間復雜度為O(mlogm),結點映射過程最壞情況下執行m2次,而EX-TREE-PTF算法對整棵樹也只需遍歷一次,所以改進后的局部樹片段抽取算法時間復雜度為O(n2m4).
前文將CEMR重復出現的模式形式化為樹片段,并分別抽取標準樹片段和局部樹片段,形成了兩個樹片段庫.與樹片段關聯最緊密的句法分析框架就是DOP框架,然而單獨使用DOP模型進行句法分析的效果并不理想.模型融合是提高模型解析精度的有效方法,將DOP與層次句法分析模型進行融合,既合理利用了CEMR模式化強的特點,又避免了單獨使用DOP模型精度不高的問題.
目前常用的模型融合方式包括特征融合和后處理融合,特征融合通過融合多個模型的特征,對其進行共同訓練,聯合解碼.后處理融合則更傾向于多個模型結果的重組或選擇.由于特征融合并不適用于DOP模型,所以我們選擇后處理融合進行擴展,提出了面向CEMR的DOP與層次句法分析融合模型.
預處理階段的工作分為兩部分:1)樹片段的匹配;2)基于匹配結果的樹片段初選.張 杰等[10]在匹配樹片段時先匹配詞匯再匹配詞性,只有詞匯完全匹配的樹片段才能直接成為最終結果.與張 杰等的做法不同,我們沒有將詞匯和詞性單獨處理,而是采用詞匯和詞性混合的方式匹配樹片段,不局限于詞匯完全匹配的約束條件,充分發揮詞性在樹片段匹配過程中的泛化作用.樹片段初選主要選擇兩類樹片段,一類是能夠與輸入句子完全匹配的樹片段,另一類樹片段與輸入句子部分匹配,且存在不包含邊界結點的獨立子樹,這里邊界結點特指處于樹片段最左端或最右端的結點.其中,第一類樹片段能夠直接成為輸出結果,第二類樹片段是后續樹片段組合替換的基礎.
初選的第二類樹片段可能是不規范或不合法的樹片段,圖5虛線框內為不規范的樹片段,該類樹片段可能包含多棵子樹,將在第4.2節中進一步篩選.另外,僅依靠詞匯詞性匹配會抽取到不合法樹片段,如圖5實線框所示,由于只匹配到““(雙引號)腦卒中、(頓號)”,所以形成了錯誤的NP,為了避免抽取這類樹片段,增加了“存在不包含邊界結點的獨立子樹”的約束,在該約束條件下,用于替換的樹片段必須從初選樹片段內部獲得(不含邊界結點),該約束條件雖然減少了初選樹片段的數量,但也解決了后續步驟中不合法樹片段帶來的錯誤替換問題.

圖5 初選樹片段樣例Fig.5 The sample of selected tree fragment
受連續公共子序列查找算法啟發,本文提出了詞匯詞性混合初選算法,如算法3所示.
算法3.詞匯詞性混合初選算法

算法3中,ls1為樹片段的葉結點及其父結點集合,ls2為輸入句子的詞匯和詞性集合.UPDATE函數用于詞匯和詞性的混合匹配,同時將局部樹片段擴展為標準樹片段,具體分為4種情況:1)詞匯與葉結點匹配,直接返回TRUE;2)詞性與葉結點匹配,將詞匯追加為該葉結點的子結點,返回TRUE;3)詞性與父結點匹配,將詞性替換為父結點,返回TRUE;4)詞匯、詞性均不匹配,返回FALSE.算法第11行和第17行是第二類樹片段的約束條件,由于在后續工作中,用于替換的句法樹必須在樹片段內部且獨立,所以我們抽取的第二類樹片段至少包含三個結點,或處于句子邊界位置且包含兩個結點.該算法最后返回所有匹配的邊界對,除了樹片段與句子完全匹配的情況,當局部樹片段邊界包含句子邊界,并且局部樹片段為獨立句法樹時,該局部樹片段也能夠直接輸出,否則該句子進入層次句法分析模型解析階段.算法單次執行的時間復雜度為O(m×w),由于需要遍歷整個樹片段庫,所以最終時間復雜度為O(n×m×w),其中,n為樹片段個數,m和w分別為樹片段葉結點數以及輸入句子的詞數.
后處理階段是基于預處理初選的樹片段集和層次句法分析結果,進行樹片段的篩選、組合與替換,進一步改進句法分析結果.為了不影響層次句法分析結果中其他樹片段,用于替換的樹片段必須從初選樹片段內部獲得,并且是高度大于1的標準樹片段,即不考慮僅包含詞匯和詞性的樹片段.初選樹片段可能包含多棵子樹,也可能與其他樹片段發生交叉,所以需要先對初選樹片段進行篩選.篩選后的樹片段集合是不含邊界結點的全部標準樹片段,以圖6為例,圖6(a)和圖6(b)分別為初選樹片段與篩選后的樹片段集合.
張 杰等采用先拼接再計算相似度的方式組合樹片段[10],在實驗中我們也嘗試了他們的最左優先原則拼接樹片段,但該方式會生成更多無效句法樹,帶來更多噪聲.我們的最終目的是以樹片段替換方式改進已有句法樹,所以組合樹片段時可以繞開拼接過程,轉變為最大化葉結點替換數目.基于動態規劃思想,本文提出最大樹片段組合算法,如算法4所示.
算法4.最大樹片段組合算法


圖6 初選樹片段與篩選樹片段集合Fig.6 The selected tree fragment and its filtered tree fragments
算法4不需要考慮拼接時邊界結點的匹配情況,而是直接獲得葉結點數最大時的樹片段集合.算法三個參數分別為:當前樹片段的右邊界(end),按右邊界從小到大排序的樹片段邊界集合(borders),所有右邊界對應的最大樹片段集合(spans).now和max用于保存當前樹片段集合及當前右邊界對應的最大樹片段集合,SPAN函數為now或max包含的葉結點數.當兩個樹片段集合葉結點數相同時,遵循高度優先原則,選擇層數更高的樹片段集合,因為葉結點相同時層數高的樹片段往往會包含層數低的樹片段.最大樹片段組合算法的時間復雜度為O(p2),p為篩選后的樹片段個數.
基于最大樹片段組合算法獲得樹片段集合,下一步進行樹片段替換工作.樹片段替換依然遵循高度優先原則,首先利用廣度優先搜索遍歷層次句法分析模型輸出的句法樹中所有非終結符,當非終結符的葉結點與樹片段的葉結點完全匹配時,用樹片段替換以該非終結符為根結點的子樹,直到集合內所有樹片段替換完成后,輸出新的句法分析結果.樹片段替換算法的時間復雜度為O(p×s×m),其中p為篩選后的樹片段個數,s為層次句法分析模型輸出的句法樹中非終結符個數,m為單個樹片段的最大葉結點數.另外,在實驗中發現,先對最大樹片段集合按葉結點數進行排序,再選擇前5個樹片段替換,比直接使用集合中的全部樹片段替換效果更好.
在前期的工作中,我們以PCTB標注規范為基礎,通過迭代的方式不斷調整規范,結合CEMR中特有的標注樣例對PCTB規范進行細化、擴充、刪減,首次提出了適用于中文電子病歷的分詞、詞性和句法標注規范,并獲得了較高的標注一致性和準確率,其詞性和句法標注體系與PCTB完全相同.本文實驗所用語料為前期標注的CEMR句法樹庫[12?13].該樹庫為神經內科和普通外科的出院小結和首次病程記錄,共138份CEMR,包含2555棵句法樹,語料統計信息如表3所示.語料采用的5折交叉驗證的方式構造,每次隨機平分為5份,4份作為訓練集,1份作為測試集,同時從訓練集隨機抽取1/5作為調試集.

表3 CEMR句法樹庫統計信息Table 3 Corpus statistics of CEMR treebank
為了對比句法分析模型,每次交叉驗證從上述訓練語料中抽取出現2次以上的標準樹片段和局部樹片段,形成了兩個樹片段庫,并改進兩類樹片段的抽取算法,從而提高抽取效率.樹片段抽取結果如表4所示,實驗環境為64位Ubuntu系統,1.2GHz的CPU.從抽取速度可以看出,利用FTK算法改進后,抽取效率明顯提高,抽取速度相當于QTK的4倍左右.表4中給出樹片段種類數而非樹片段數,是因為樹片段種類的多少與文本模式化強弱相關,直接影響DOP的性能,通常來說,文本模式化越強樹片段的種類應該越少.從表中可以看出,局部樹片段的種類約為句子數的19倍,明顯多于標準樹片段,所以相比標準樹片段抽取速度也更慢.

表4 樹片段抽取結果Table 4 Results of fragment extraction
本文的對比模型包括引入標點符號糾錯和分割算法的層次句法分析模型(CLPU)、引入DOP的融合模型,以及開放領域最優的Stanford parser和Berkeley parser.首先在單一科室CEMR上進行訓練測試,即神經內科CEMR按5折劃分,隨機抽取1/5作為測試集,其余作為訓練集.實驗結果如表5所示,在前期工作中,CLP和Berkeley parser在開放領域測試集(TCT)上句法分析精度相近[11],這里利用上下文詞典進一步修正了CLP結果中的標點符號錯誤,并引入標點對分割組合策略,得到了CLPU模型,句法分析F1值達到78.23%.受語料規模影響,Berkeley parser產生了52個空輸出,導致F1值降為78.17%,落后于CLPU結果.為解決Berkeley parser的空輸出問題,本文對產生空輸出的句子使用另一個PTCB訓練的Berkeley parser解析,最后Berkeley parser(CEMR+PCTB)的F1值能夠提高到79.8%,由于其他模型不涉及空輸出問題,所以不需要額外訓練模型解析.
在模型融合方面,本文首先對比了引入標準樹片段(SDOP)和局部樹片段(PDOP)的模型效果.可以看出,引入標準樹片段和局部樹片段后F1值均有較大的提升,最多提高了2.64%.雖然標準樹片段產生錯誤替換的可能性更小,但也限制了樹片段的多樣性,導致最終與局部樹片段的F1值相差1.32%.另一方面,通過錯誤分析發現,單個樹片段匹配的葉結點越多,錯誤替換的概率越小,所以對篩選組合后的樹片段集合先排序再替換,實驗證明保留前5個樹片段進行替換的F1值最高,達到80.87%,獲得了目前CEMR上句法分析的最優結果.

表5 神經內科CEMR句法分析結果Table 5 Parsing results on CEMR of neurology department
為了對比各模型在不同領域中的性能,本文在PCTB上進行了句法分析實驗.為公平起見,PCTB上采用與CEMR相同的實驗設置,僅從PCTB中隨機抽取1207句訓練,277句測試,實驗結果如表6所示.根據已公布的結果,當訓練語料充足時(訓練測試語料的比例達到50倍),Stanford parser和Berkeley parser在PCTB上句法分析F1值能夠達到84% 左右,而在表6中,當PCTB的訓練語料規模與CEMR同樣小時,Berkeley parser的F1值最高只有64%左右,Stanford parser更下降到61.16%,相比之下,CEMR在僅需要少量標注語料的情況下,F1值卻能夠達到80%左右,在一定程度上也證明了其模式化強,句法清晰的特點.進一步對比各模型的實驗結果,DOP在PCTB上無論是解析速度還是F1的增幅上都有較大下降.究其原因,解析速度變慢是由于從PCTB中抽取的樹片段庫相比CEMR規模要大,其局部樹片段種類達到句子數的43倍之多,所以在樹片段的遍歷匹配時需要消耗大量時間.如此多的樹片段種類說明PCTB并不像CEMR模式化那么強,導致DOP帶來的增幅僅為0.42%.同時,標點符號在PCTB所占比例的下降,使得CLPU的F1值只有63.6%,最終引入DOP后仍落后Berkeley parser 0.36%.盡管本文提出的融合模型在PCTB上的表現并不理想,但是也從另一個角度驗證了其更加適用于模式化強的子語言文本的假設.
在跨科室句法分析實驗中,本文選擇已標注的兩個科室上進行交叉測試,實驗設置與表5相同.分析結果如表所示.從表7可以看出,由于不同科室間的詞匯存在較大差異,使得詞性標注時未登錄詞率升高,各模型詞性標注準確率均有不同程度的下降,最終句法分析F1值只能達到69%左右.其中受未登錄詞率影響最大的是Stanford parser,特別是在普通外科訓練、神經內科測試時,Stanford parser詞性標注準確率僅為75.23%,導致最后句法分析F1值只有57.85%.相比之下,本文提出的CLPU及融合模型表現出色,盡管在詞性標注準確率上也有所下降,但是標點符號的高使用率、文本模式化強的特點是不同科室的共性,所以兩個模型的跨科室性能相比Stanfrod parser和Berkeley parser有較大的優勢,融合DOP后F1值能夠超過最好結果2%以上.但是,在進行錯誤分析時,我們發現詞匯差異使DOP錯誤替換的幾率增加,導致引入DOP后詞性標注準確率反而有較大下降,所以相比CLPU的提升只有1%左右.
最后,綜合比較各模型在單一科室CEMR,PCTB以及跨科室CEMR的句法分析性能.Stanford parser的解析速度最快,但是也最不穩定,容易受未登錄詞影響,當未登錄詞率較高時,句法分析F1值有較大幅度的下降.Berkeley parser的性能中規中矩,但是對語料規模依賴較強,當標注語料充足時,句法分析性能更好,但是考慮到CEMR的文本特殊性,除了數據來源受限,還要求標注者同時具備語言學和醫學相關知識,所以構建大規模CEMR語料庫更加困難.本文提出的CLPU和DOP的融合模型在CEMR上的句法分析性能要優于Stanford parser和Berkeley parser,特別是跨科室句法分析時表現更為突出,證明引入樹片段對于模式化強的子語言分析是行之有效的方法.進一步對比DOP中各算法的時間復雜度,由于初選過程需要遍歷整個樹片段庫,而樹片段庫的量級遠大于其他參數,占用了大量的解析時間,導致融合模型的句法分析速度相比Stanford parser和Berkeley parser差距較大.但是,由于目前還沒有在樹片段的存儲和查找上做任何優化工作,所以未來在解析速度上仍有上升空間,例如遍歷樹片段庫時引入剪枝策略,通過對樹片段進行編碼提高匹配效率等.

表6 PCTB句法分析結果Table 6 Parsing results on PCTB

表7 跨科室CEMR句法分析結果Table 7 Parsing results on cross-department CEMR
本文針對CEMR模式化強的特點,提出以樹片段形式化CEMR復用的模式.首先描述了樹片段的相關概念,舉例說明標準樹片段和局部樹片段的區別,然后針對標準樹片段的重復比對問題,提出更加高效的標準樹片段抽取算法,又利用快速樹核算法替換二次樹核算法,降低了局部樹片段抽取算法的時間復雜度,并通過實驗對比了改進前后局部樹片段抽取速度的變化,最終獲得了標準樹片段庫和局部樹片段庫.基于抽取的樹片段庫,提出了DOP與層次句法分析的融合模型,該模型屬于后處理融合,以模型融合的方式避免了單獨使用DOP模型精度較低的問題.在預處理階段,提出了詞匯詞性混合匹配的初選策略,充分發揮詞性在匹配時的泛化作用.在后處理階段,一方面,從初選樹片段內部篩選標準樹片段,減少了錯誤樹片段的替換,另一方面,提出了最大化樹片段組合算法,簡化DOP組合分析過程,緩解了無效樹片段帶來的噪聲.實驗結果表明,DOP與層次句法分析的融合模型能夠利用CEMR模式化強的特點,有效改善句法分析效果.
CEMR模式化強的特點為DOP創造了更大的發展空間.未來的工作,一方面可以探索更加深入的模型融合方法,進一步提高DOP在融合模型中的比重;另一方面,CEMR高昂的句法標注成本使得無監督句法分析方法更具實用價值,如何充分發揮DOP在無監督句法分析上的優勢,提出適用于CEMR的無監督DOP模型是值得研究的問題.