楊 泉
(北京師范大學(xué) 漢語文化學(xué)院,北京 100875)
自然語言處理中的短語結(jié)構(gòu)語法關(guān)系判定是一項重要的基礎(chǔ)性研究工作,其結(jié)果對于機(jī)器翻譯、信息抽取、情感分析等諸多實際應(yīng)用系統(tǒng)的處理效果至關(guān)重要[1]。短語層級語法關(guān)系判定問題實質(zhì)上就是在一個短語結(jié)構(gòu)可能存在的諸多語法關(guān)系中判定出正確的一個,因此是一種分類問題,可以通過機(jī)器學(xué)習(xí)算法予以解決。然而當(dāng)前對于短語層級語法關(guān)系自動判定的研究較少,特別是用人工智能算法對短語語法關(guān)系做分類判斷的研究更不多見。其主要原因可能是因為大部分機(jī)器學(xué)習(xí)方法都不能直接處理原始的語言文本,需要根據(jù)語言學(xué)知識將文本轉(zhuǎn)化為適合機(jī)器學(xué)習(xí)算法使用的形式,比如詞語向量化、文本特征標(biāo)記等。
N1+N2結(jié)構(gòu)是由2個名詞組成的漢語短語結(jié)構(gòu),也是中文信息處理中的高頻語言現(xiàn)象。當(dāng)其中的N1與N2實例化為不同名詞時,該結(jié)構(gòu)可能會產(chǎn)生4種不同的語法關(guān)系:并列關(guān)系、定中關(guān)系、復(fù)指關(guān)系和主謂關(guān)系[2-3]。從這個角度來說,對于N1+N2結(jié)構(gòu)語法關(guān)系判定問題可以轉(zhuǎn)化為對某條語料可能存在的語法關(guān)系的分類判定問題,本文擬以此結(jié)構(gòu)為例探討如何用機(jī)器學(xué)習(xí)領(lǐng)域的分類方法判斷漢語短語結(jié)構(gòu)的語法關(guān)系。
隨機(jī)森林(random forest)[4]是一種常用于解決分類問題的有監(jiān)督非參數(shù)化機(jī)器學(xué)習(xí)方法[5-6],其核心思想是用隨機(jī)化方法構(gòu)建決策樹(decision tree)[7]。該算法不需要先驗知識,只需訓(xùn)練樣本學(xué)習(xí)分類規(guī)則,是一種數(shù)據(jù)驅(qū)動的非參數(shù)分類方法[8],因其簡單、易于實現(xiàn)、計算量小而成為集成學(xué)習(xí)的典型代表[9],已被廣泛應(yīng)用于圖像語義標(biāo)注[10]、文本可讀性評估[11]、語音情感識別[12]等領(lǐng)域,均取得了良好的效果。
目前,自然語言處理領(lǐng)域?qū)τ贜1+N2結(jié)構(gòu)的研究還停留在對于結(jié)構(gòu)本身的識別和搜索階段[13-14],鮮見有運(yùn)用人工智能算法對該結(jié)構(gòu)的語法關(guān)系做分類判別的研究,其他短語結(jié)構(gòu)也較少。因此,本文擬運(yùn)用簡潔易用、適應(yīng)性較好的隨機(jī)森林算法建立N1+N2結(jié)構(gòu)語法關(guān)系判定方法,在已有研究成果的基礎(chǔ)上構(gòu)建語料庫,并為每條語料標(biāo)注構(gòu)建隨機(jī)森林所需要的特征信息,以期探討如何更好地運(yùn)用人工智能算法解決自然語言處理中的關(guān)鍵問題。
本文剩余部分結(jié)構(gòu)如下:第1部分介紹N1+N2結(jié)構(gòu)語料庫搭建過程;第2部分介紹N1+N2結(jié)構(gòu)特征集構(gòu)造過程;第3部分介紹用于判斷N1+N2結(jié)構(gòu)語法關(guān)系的隨機(jī)森林算法和流程;第4部分總結(jié)分析本文隨機(jī)森林算法實驗結(jié)果。
1)語料獲取及篩選
首先從BCC語料庫中搜索出17 108條N1+N2結(jié)構(gòu)語料(語料來自BCC語料庫的4個子庫:人民日報海外版、人民日報、文學(xué)、科技文獻(xiàn));然后用Python編寫程序?qū)φZ料進(jìn)行自動篩選,去除各種情況不合格語料后,獲得10 398條初選合格語料;再經(jīng)人工校對及去重處理,最終獲得5 098條無重復(fù)合格語料入庫。
2)名詞語義信息標(biāo)注
用Python編寫程序,為N1+N2結(jié)構(gòu)中每個名詞自動標(biāo)注其在《同義詞詞林》①本文使用的《同義詞詞林》是《哈工大信息檢索研究室同義詞詞林?jǐn)U展版》,下文簡稱《詞林》。中的語義編碼,目的是為了計算N1與N2之間的語義距離以便提取特征,從而讓機(jī)器自學(xué)N1+N2結(jié)構(gòu)中名詞的語義類別與短語的語法關(guān)系之間的規(guī)律。
3)短語語法關(guān)系標(biāo)注
對全部入庫的N1+N2結(jié)構(gòu)語料人工標(biāo)注其語法關(guān)系,并進(jìn)行多次校對,在此基礎(chǔ)上建立“定中、并列、復(fù)指、主謂”4種語法關(guān)系的子語料庫,每種語法關(guān)系的語料數(shù)量及占比情況見表1。
表1 入庫語料各類關(guān)系數(shù)量及占比
最終入庫的全部語料都是從實際運(yùn)用的語言中提取的,其中定中關(guān)系語料在語料庫中占比較多,而主謂關(guān)系語料占比較少,這是語料實際情況的反映,為了讓機(jī)器學(xué)習(xí)到語料的真實面貌,本文暫時沒有進(jìn)行人工干預(yù)。
《詞林》使用5層編碼體系來表示全部詞語義項,每個編碼都是8位,按層級展開后每個義項編碼都是一個樹圖,編碼“Aa01A01=”的樹形結(jié)構(gòu)如圖1所示。
圖1 編碼“Aa01A01=”樹形圖
在《詞林》體系中第1層到第5層編碼分別為:大類、中類、小類、詞群和原子詞群。前面7位編碼就可以唯一代表一個原子詞群,第8位編碼的意義在于表示一個原子詞群內(nèi)部詞語之間的關(guān)系,只有3種情況:“=、#、@”,分別表示詞語義項之間的“近義、相關(guān)、唯一”3種關(guān)系[15]?!对~林》編碼的樹形結(jié)構(gòu)與隨機(jī)森林中決策樹的通用形式非常接近,且所有編碼都有其語言學(xué)上的重要含義,因此每層編碼都可以被提取轉(zhuǎn)化為決策樹中的特征進(jìn)行比較,全部特征可以轉(zhuǎn)化為隨機(jī)森林的特征集。
從語言學(xué)角度來看,具有相同語法關(guān)系的短語在語義上也具有某種共性,以N1+N2結(jié)構(gòu)4種語法關(guān)系為例,并列關(guān)系短語中的2個名詞一般具有相同或相對的語義類別;復(fù)指關(guān)系中的2個名詞常常指代同一個人或事物;定中關(guān)系里N1對N2起到修飾、限制作用;主謂關(guān)系中N2往往是對N1的陳述或說明[16-17]。由此可見語法關(guān)系實際是對語義關(guān)系進(jìn)一步的抽象概括,而詞語的語義關(guān)系對短語的語法關(guān)系起到?jīng)Q定性作用。詞語的語義關(guān)系可以經(jīng)過向量化后,通過語義相似度表示出來,因此計算詞語的語義相似度可以作為判斷語法關(guān)系的一個特征屬性。
在《詞林》體系中,每個8位編碼都可以代表某個詞語的語義分類位置,2個詞語的位置距離越接近,它們的意義也就越接近,可以通過計算詞語位置距離的遠(yuǎn)近來判斷2個詞語意義的相似程度?!对~林》編碼體系非常便于將詞語義項進(jìn)行向量化表示,僅需再找到一種易于實現(xiàn)的算法模型就可以計算出詞義相似度。
文獻(xiàn)[18]僅使用《詞林》編碼體系中2個詞語最近公共父結(jié)點深度來計算2個詞語的語義相似度,簡潔易用、可重復(fù)性強(qiáng),因此本文用來計算N1+N2結(jié)構(gòu)中2個名詞間的語義相似度,具體公式如下:
式中:D為任意2個詞語的義項s1和義項s2在《詞林》中最近公共父結(jié)點的深度;S(s1,s2)為s1和s2的語義相似度值;λ為參數(shù),其中:λ1=0.981 1,λ2=0.497 7,λ3=0.124 4,λ4=4.461 2。
至此,語料庫中每條語料的標(biāo)注信息主要包括以下幾個方面:
1)N1和N2均標(biāo)注了《詞林》語義編碼;
2)N1+N2短語標(biāo)注了語法關(guān)系;
3)N1+N2短語標(biāo)注了2個名詞的語義相似度值。最終入庫語料樣例見表2。
表2 語料標(biāo)注樣例
上文為隨機(jī)森林的特征提取做好了準(zhǔn)備,記本文構(gòu)造的特征集為“P”,其中包含7個特征,形式化表示為
P={‘S’;‘N11 N21’;‘N12 N22’;‘N13 N23’;‘N14 N24’;‘N15 N25’;‘N16 N26’}
各個特征具體含義如下:
特征1:S,表示N1與N2的詞義相似度值;
特征2:N11 N21,表示N1與N2在《詞林》中第1層大類中的語義編碼;
特征3:N12 N22,表示N1與N2在《詞林》中第2層中類中的語義編碼;
特征4:N13 N23,表示N1與N2在《詞林》中第3層小類中的語義編碼;
特征5:N14 N24,表示N1與N2在《詞林》中第4層詞群中的語義編碼;
特征6:N15 N25,表示N1與N2在《詞林》中第5層原子詞群中的語義編碼;
特征7:N16 N26,表示N1與N2在《詞林》中的第8位語義編碼。
下面以“青菜(Bh06A02=)蘿卜(Bh06A25=)”、“皇后(Af05B02=)陛下(Af05A01=)、“電子(Ba01H08#)郵 箱(Bp09A03=)”、“謊 言(Dk11A47=)萬歲(Aa03A06=)”4組短語為例,說明隨機(jī)森林的特征集構(gòu)成。將這4組詞語的《詞林》語義編碼按上述特征提取方法加工處理后,再加入詞義相似度特征和語法關(guān)系特征,就可以產(chǎn)生隨機(jī)林算法需要的特征集,具體構(gòu)成如表3所示。
表3 隨機(jī)森林特征集
隨機(jī)森林是一種基于決策樹的并行集成學(xué)習(xí)算法,包含多個由Bagging[19-20]集成學(xué)習(xí)技術(shù)訓(xùn)練得到的決策樹,當(dāng)輸入待分類的樣本時,最終的分類結(jié)果由單個決策樹的輸出結(jié)果投票決定[7]。本文用此算法對N1+N2結(jié)構(gòu)語法關(guān)系進(jìn)行分類判別研究,每個結(jié)構(gòu)具有7個特征供建立決策樹使用,本文中的決策樹均通過C4.5算法生成。
記給定的訓(xùn)練集為T={(N1+N2)i,Ri},其中(N1+N2)i∈{標(biāo)注了信息的名詞結(jié)構(gòu)},Ri∈{blp,fzp,dzp,zwp}是全部分類結(jié)果。本文構(gòu)造的隨機(jī)森林是在此訓(xùn)練集上以21棵決策樹{Tr(Tm,Pm),m=1,2,…,21}為基分類器,進(jìn)行集成學(xué)習(xí)后得到的一個組合分類器。對每一棵決策樹都從整體訓(xùn)練集和全體特征集中獨(dú)立地抽取相同數(shù)量的訓(xùn)練子集Tm和特征子集Pm;每棵決策樹從7個特征中隨機(jī)選擇5個特征進(jìn)行構(gòu)建。
在執(zhí)行決策時,最終分類結(jié)果由每棵決策樹的分類結(jié)果進(jìn)行投票決定,將得票最多的選項作為判別結(jié)果。若出現(xiàn)2種結(jié)果相同的情況,則再生成一棵決策樹,并用該決策樹的判斷結(jié)果作為最終輸出結(jié)果。在上文形式化處理的基礎(chǔ)上,本文為判斷N1+N2結(jié)構(gòu)語法關(guān)系所構(gòu)造的隨機(jī)森林示意圖如圖2所示。
圖2 隨機(jī)森林算法示意圖
根據(jù)圖2,利用隨機(jī)森林算法判定語法關(guān)系的基本步驟如下:
步驟1從訓(xùn)練集T中,按一定比例有放回地隨機(jī)抽取一個子集Tm。
步驟2從總體特征集P中,隨機(jī)抽取5個特征,構(gòu)成特征子集Pm。
步驟3用決策樹算法在訓(xùn)練子集Tm上構(gòu)建決策樹Tr(Tm,Pm)。
步驟4在測試樣本集Te上,隨機(jī)森林中每棵決策樹的判斷結(jié)果為R={R1,…,R21},采用投票機(jī)制,對測試用例(N1+N2)x進(jìn)行分類。
步驟5輸出(N1+N2)x的類別Ri。
本文用Matlab編寫隨機(jī)森林算法,將已標(biāo)注好的語料庫按8∶2的比例劃分為訓(xùn)練集和測試集,其中訓(xùn)練集有4 078條語料,測試集有1 020條語料。因為原始語料庫做了去重處理,訓(xùn)練集和測試集中不存在重復(fù)語料,所得測試結(jié)果應(yīng)該較為客觀。
4.1.1 正確率
最終在隨機(jī)森林算法的基礎(chǔ)上判定測試集中N1+N2結(jié)構(gòu)語法關(guān)系的計算結(jié)果。從算法角度來看,在構(gòu)造決策樹時若使用特征太少,則單棵決策樹的效果會變差;若特征太多,則決策樹種類會變少。因此本文從特征集全部7個特征中選擇5個特征,此時特征組合方式共有C(7,5)=21種,能夠較好地平衡產(chǎn)生決策樹的多樣性和單棵決策樹的決策效果。在實驗中分別計算了10~30棵決策樹構(gòu)成模型的計算結(jié)果,其正確率如圖3所示。
圖3 不同數(shù)量樹的正確率直方圖(%)
從圖3中可以看出:隨著決策樹數(shù)量的增多,計算正確率有增加的趨勢。當(dāng)算法中樹的數(shù)量超過20時,決策樹的數(shù)量與最多能夠產(chǎn)生的不同特征的決策樹種類相當(dāng),計算正確率雖有所波動,但均能保持在94%以上。因此,選取較適中的21棵樹的計算結(jié)果進(jìn)行更加詳細(xì)的分析,按此方法對語料進(jìn)行分類后,正確判斷和錯誤判斷的結(jié)果見表4。
表4 全部語料測試結(jié)果
在表4基礎(chǔ)上,進(jìn)一步計算4種語法關(guān)系里面判斷正確和錯誤的數(shù)量及比例,詳細(xì)結(jié)果如表5所示。
表5 4種語法關(guān)系判斷結(jié)果
4.1.2 查準(zhǔn)率和查全率
對于最終判定結(jié)果從4種語法關(guān)系的角度分別進(jìn)行查準(zhǔn)率和查全率計算后,具體結(jié)果見表6。
表6判定結(jié)果查準(zhǔn)率和查全率表
具體分析上述實驗結(jié)果為:
1)從正確率和錯誤率角度來看,本文設(shè)計算法總體的正確率為94.80%,該正確率與相關(guān)文獻(xiàn)中使用隨機(jī)森林算法解決其他分類問題的結(jié)果,以及解決自然語言處理中類似的語法分類判定問題的結(jié)果相比均處在較高水平。在原始語料庫中,4種語法關(guān)系的語料比例不均衡,其中定中關(guān)系語料占了絕大多數(shù),而主謂關(guān)系語料較少,這給算法提出了巨大的挑戰(zhàn)。分類錯誤的53個結(jié)構(gòu)中,定中關(guān)系判斷錯誤的語料有14個,全部判斷成了并列關(guān)系;其他語法關(guān)系錯誤總數(shù)為39個,全部判斷成了定中關(guān)系。后面的工作中可以考慮從平衡語料類型、增加語料規(guī)模、完善語料庫標(biāo)注信息、增加分類特征等方面進(jìn)行改進(jìn)。
2)在查準(zhǔn)率和查全率方面,對于占比最大的定中關(guān)系,其查準(zhǔn)率和查全率均能保持較高水平。語料占比較少的復(fù)指關(guān)系和主謂關(guān)系,具有100%的查準(zhǔn)率,但在查全率方面有待進(jìn)一步提高。對于并列關(guān)系,從語言學(xué)角度分析,該結(jié)構(gòu)和定中關(guān)系結(jié)構(gòu)在詞語語義類別等方面都具有較高的相似度,因此誤判較多,在查準(zhǔn)率和查全率方面均不夠理想,需要在特征的構(gòu)建方面進(jìn)一步加以研究改進(jìn)。
本文提出的方法可以較為準(zhǔn)確地解決N1+N2結(jié)構(gòu)語法關(guān)系分類判定問題。該方法是將人工智能算法與自然語言處理領(lǐng)域?qū)嶋H問題相結(jié)合的有益嘗試。
短語結(jié)構(gòu)語法關(guān)系判斷是自然語言處理中的關(guān)鍵問題,短語是詞和句子的過度層級,解決該問題對于計算機(jī)判斷詞語的切分標(biāo)注結(jié)果以及理解句子的語法語義關(guān)系而言都至關(guān)重要。未來的研究應(yīng)該擴(kuò)展人工智能各種方法在自然語言處理中的應(yīng)用范圍,進(jìn)一步運(yùn)用機(jī)器學(xué)習(xí)相關(guān)算法解決中文信息處理中的其他問題。本文實驗結(jié)果表明:在科學(xué)技術(shù)日新月異的時代,將嶄新的人工智能算法與古老的語言學(xué)領(lǐng)域相結(jié)合會取得意想不到的成果,也是學(xué)科融合發(fā)展的必經(jīng)之路。